diff --git a/src/components/DiskInfo.vue b/src/components/DiskInfo.vue index 208c2cd..c6dc491 100644 --- a/src/components/DiskInfo.vue +++ b/src/components/DiskInfo.vue @@ -1,18 +1,18 @@ - + Boot Sector - {{ bootSector }} + {{ floppyDisk.bootSectorInfo }} diff --git a/src/floppy/disk.ts b/src/floppy/disk.ts index 3405e0a..7e32417 100644 --- a/src/floppy/disk.ts +++ b/src/floppy/disk.ts @@ -30,7 +30,20 @@ export interface IBiosParameterBlock { totalSectorsLarge: number } -export function decodeBootSector(buffer: ArrayBuffer): IBootSectorInfo | null { +export class FloppyDisk { + private readonly _buffer = new ArrayBuffer(0) + private _bootSector: IBootSectorInfo | null = null + + constructor(buffer: ArrayBuffer) { + this._buffer = buffer + } + + get bootSectorInfo() { + return (this._bootSector = this._bootSector ?? decodeBootSector(this._buffer)) + } +} + +function decodeBootSector(buffer: ArrayBuffer): IBootSectorInfo | null { if (buffer.byteLength < 512) { return null }
{{ bootSector }}
{{ floppyDisk.bootSectorInfo }}