From e6bdde292d9d5e90fe34b3b00aea83b47e2f14a5 Mon Sep 17 00:00:00 2001 From: Jordan Goulder Date: Tue, 14 Jan 2025 17:44:59 -0500 Subject: [PATCH] Add FloppyDisk class to start consolidating disk image decoding --- src/components/DiskInfo.vue | 10 +++++----- src/floppy/disk.ts | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) 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 @@ 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 }