blockdev: move the new seek mode logic into the seek command
It wasn't a good idea to complicate all blockdev impls with complicated seeks. Let's just stay in absolute mode for now.
This commit is contained in:
parent
f87cd0485a
commit
07fde3cab5
@ -132,6 +132,33 @@ blkPutC:
|
|||||||
; 4 : Move to the beginning
|
; 4 : Move to the beginning
|
||||||
; Set position of selected device to the value specified in HL
|
; Set position of selected device to the value specified in HL
|
||||||
blkSeek:
|
blkSeek:
|
||||||
|
push de
|
||||||
|
cp 1
|
||||||
|
jr z, .forward
|
||||||
|
cp 2
|
||||||
|
jr z, .backward
|
||||||
|
cp 3
|
||||||
|
jr z, .beginning
|
||||||
|
cp 4
|
||||||
|
jr z, .end
|
||||||
|
; all other modes are considered absolute
|
||||||
|
jr .seek ; for absolute mode, HL is already correct
|
||||||
|
.forward:
|
||||||
|
ex hl, de ; DE has our offset
|
||||||
|
call blkTell ; HL has our curpos
|
||||||
|
add hl, de
|
||||||
|
jr nc, .seek ; no carry? alright!
|
||||||
|
; we have carry? out of bounds, set to maximum
|
||||||
|
.backward:
|
||||||
|
; TODO - subtraction are more complicated...
|
||||||
|
jr .seek
|
||||||
|
.beginning:
|
||||||
|
ld hl, 0
|
||||||
|
jr .seek
|
||||||
|
.end:
|
||||||
|
ld hl, 0xffff
|
||||||
|
.seek:
|
||||||
|
pop de
|
||||||
ld iyl, 4
|
ld iyl, 4
|
||||||
jr _blkCall
|
jr _blkCall
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ blkSeekCmd:
|
|||||||
ld h, a
|
ld h, a
|
||||||
pop af ; bring mode back
|
pop af ; bring mode back
|
||||||
call blkSeek
|
call blkSeek
|
||||||
ld hl, 42
|
|
||||||
call blkTell
|
call blkTell
|
||||||
ld a, h
|
ld a, h
|
||||||
call printHex
|
call printHex
|
||||||
|
@ -57,32 +57,6 @@ mmapPutC:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
mmapSeek:
|
mmapSeek:
|
||||||
cp 1
|
|
||||||
jr z, .forward
|
|
||||||
cp 2
|
|
||||||
jr z, .backward
|
|
||||||
cp 3
|
|
||||||
jr z, .beginning
|
|
||||||
cp 4
|
|
||||||
jr z, .end
|
|
||||||
; all other modes are considered absolute
|
|
||||||
jr .set ; for absolute mode, HL is already correct
|
|
||||||
.forward:
|
|
||||||
ld de, (MMAP_PTR)
|
|
||||||
add hl, de
|
|
||||||
jr nc, .set
|
|
||||||
; we have carry? out of bounds, set to maximum
|
|
||||||
ld hl, 0xffff
|
|
||||||
jr .set
|
|
||||||
.backward:
|
|
||||||
; TODO - subtraction are more complicated...
|
|
||||||
jr .set
|
|
||||||
.beginning:
|
|
||||||
ld hl, 0
|
|
||||||
jr .set
|
|
||||||
.end:
|
|
||||||
ld hl, 0xffff-MMAP_START
|
|
||||||
.set:
|
|
||||||
ld (MMAP_PTR), hl
|
ld (MMAP_PTR), hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user