Add FloppyDisk class to start consolidating disk image decoding
This commit is contained in:
parent
6d79a35ce5
commit
e6bdde292d
@ -1,18 +1,18 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { decodeBootSector } from '@/floppy/disk.ts'
|
import { FloppyDisk } from '@/floppy/disk.ts'
|
||||||
|
|
||||||
const { data = new ArrayBuffer(0) } = defineProps<{ data: ArrayBuffer }>()
|
const { data = new ArrayBuffer(0) } = defineProps<{ data: ArrayBuffer }>()
|
||||||
|
|
||||||
const bootSector = computed(() => {
|
const floppyDisk = computed(() => {
|
||||||
return decodeBootSector(data)
|
return new FloppyDisk(data)
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<section v-if="bootSector">
|
<section v-if="floppyDisk.bootSectorInfo">
|
||||||
<h3>Boot Sector</h3>
|
<h3>Boot Sector</h3>
|
||||||
<pre>{{ bootSector }}</pre>
|
<pre>{{ floppyDisk.bootSectorInfo }}</pre>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,20 @@ export interface IBiosParameterBlock {
|
|||||||
totalSectorsLarge: number
|
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) {
|
if (buffer.byteLength < 512) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user