aboutsummaryrefslogtreecommitdiffstats
path: root/src/blk.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/blk.asm')
-rw-r--r--src/blk.asm65
1 files changed, 12 insertions, 53 deletions
diff --git a/src/blk.asm b/src/blk.asm
index ea04e95..2be961e 100644
--- a/src/blk.asm
+++ b/src/blk.asm
@@ -83,57 +83,6 @@ write_block::
restore_bank
ret
-; -----------------------------------------------------------------------------
-; blk_format - write a fresh superblock (magic) to block 0. (mkfs, stage 1)
-; -----------------------------------------------------------------------------
-blk_format::
- ld hl, wCopyBuf ; zero the buffer
- ld b, 0
- xor a
-.z
- ld [hl+], a
- dec b
- jr nz, .z
- ld hl, wCopyBuf
- ld a, SUPER_MAG0
- ld [hl+], a
- ld a, SUPER_MAG1
- ld [hl+], a
- ld a, SUPER_MAG2
- ld [hl+], a
- ld a, SUPER_MAG3
- ld [hl], a
- ld a, SUPER_BLOCK
- ld hl, wCopyBuf
- call write_block
- ret
-
-; -----------------------------------------------------------------------------
-; blk_init - format the disk only if it isn't already formatted (magic check).
-; Called at boot; the disk otherwise persists across power cycles (.sav).
-; -----------------------------------------------------------------------------
-blk_init::
- ld a, SUPER_BLOCK
- ld hl, wCopyBuf
- call read_block
- ld hl, wCopyBuf
- ld a, [hl+]
- cp SUPER_MAG0
- jr nz, .fmt
- ld a, [hl+]
- cp SUPER_MAG1
- jr nz, .fmt
- ld a, [hl+]
- cp SUPER_MAG2
- jr nz, .fmt
- ld a, [hl]
- cp SUPER_MAG3
- jr nz, .fmt
- ret ; already formatted
-.fmt
- call blk_format
- ret
-
; =============================================================================
; [debug] block poke/peek syscalls, to validate the layer + persistence.
; =============================================================================
@@ -152,10 +101,20 @@ sys_bfill::
xor a
ret
-; sys_bpeek(B = block) -> A = block's first byte
+; sys_bpeek(B = block, E = offset) -> A = block[offset]
sys_bpeek::
+ ld a, e
+ ld [wFsByte], a ; stash offset
ld a, b
ld hl, wCopyBuf
call read_block
- ld a, [wCopyBuf]
+ ld hl, wCopyBuf
+ ld a, [wFsByte]
+ add l
+ ld l, a
+ ld a, h
+ adc 0
+ ld h, a
+ ld a, [hl]
ret
+