mirror of
https://github.com/hsoft/collapseos.git
synced 2025-01-12 19:58:06 +11:00
sdc: fix bug preventing us from reading beyond first sector
This commit is contained in:
parent
8cfe834edb
commit
312e95479e
@ -109,8 +109,7 @@ sdcCmd:
|
||||
call sdcSendRecv
|
||||
|
||||
; And now we just have to wait for a valid response...
|
||||
call sdcWaitResp
|
||||
ret
|
||||
jp sdcWaitResp ; return
|
||||
|
||||
; Send a command that expects a R1 response, handling CS.
|
||||
sdcCmdR1:
|
||||
@ -319,28 +318,23 @@ sdcGetC:
|
||||
|
||||
xor a
|
||||
ld hl, (SDC_PTR)
|
||||
bit 0, h
|
||||
jr nz, .highbuf ; first bit set? no need to read a sector. Also,
|
||||
; we already know that we're in the "highbuf"
|
||||
; zone.
|
||||
cp l ; is L zero?
|
||||
jr nz, .mem ; non-zero? no need to read a sector
|
||||
ld a, h
|
||||
and 0x1
|
||||
jr nz, .mem ; if H has first bit set, no need to read a
|
||||
; sector
|
||||
jr nz, .lowbuf ; non-zero? no need to read a sector
|
||||
; Oh, first 9 bits unset. Se need to read a sector
|
||||
; H is already in A. We just need a right shift.
|
||||
rra ; now that's our sector
|
||||
ld a, h
|
||||
rrca ; now that's our sector
|
||||
call sdcReadBlk
|
||||
jr nz, .error
|
||||
.mem:
|
||||
; Read byte from memory at proper offset
|
||||
; Higher 256 bytes or lower ones?
|
||||
ld a, h
|
||||
and 0x1
|
||||
jr nz, .highbuf
|
||||
; We're on the lower part
|
||||
.lowbuf:
|
||||
; Read byte from memory at proper offset in lowbuf (first 0x100 bytes)
|
||||
ld hl, SDC_BUF
|
||||
jr .read
|
||||
.highbuf:
|
||||
; We're on the higher part
|
||||
; Read byte from memory at proper offset in highbuf (0x100-0x1ff)
|
||||
ld hl, SDC_BUF+0x100
|
||||
.read:
|
||||
; HL is now placed either on the lower or higher half of SDC_BUF and
|
||||
@ -364,3 +358,12 @@ sdcGetC:
|
||||
.end:
|
||||
pop hl
|
||||
ret
|
||||
|
||||
sdcSeek:
|
||||
ld (SDC_PTR), hl
|
||||
ret
|
||||
|
||||
sdcTell:
|
||||
ld hl, (SDC_PTR)
|
||||
ret
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user