|
|
|
@ -261,7 +261,13 @@ MD_RW: |
|
|
|
MD_RW1: |
|
|
|
PUSH BC ; SAVE COUNTERS |
|
|
|
LD HL,(MD_RWFNADR) ; GET PENDING IO FUNCTION ADDRESS |
|
|
|
#IF (MDFFENABLE) |
|
|
|
PUSH IX |
|
|
|
CALL JPHL ; ... AND CALL IT |
|
|
|
POP IX |
|
|
|
#ELSE |
|
|
|
CALL JPHL ; ... AND CALL IT |
|
|
|
#ENDIF |
|
|
|
JR NZ,MD_RW2 ; IF ERROR, SKIP INCREMENT |
|
|
|
; INCREMENT LBA |
|
|
|
LD A,MD_LBA ; LBA OFFSET IN CFG ENTRY |
|
|
|
@ -297,7 +303,7 @@ MD_RDSECF: ; CALLED FROM MD_RW |
|
|
|
POP HL ; BLOCK WE HAVE |
|
|
|
JR Z,MD_SECM ; IN THE BUFFER |
|
|
|
; |
|
|
|
MD_SECR: |
|
|
|
;MD_SECR: |
|
|
|
; DESIRED SECTOR |
|
|
|
; IS NOT IN BUFFER |
|
|
|
LD (MD_LBA4K),BC ; WE WILL READ IN |
|
|
|
@ -307,10 +313,9 @@ MD_SECR: |
|
|
|
; |
|
|
|
; DE:HL CONTAIN SOURCE ADDRESS |
|
|
|
; WHICH WAS SETUP BY MD_IOSETUPF |
|
|
|
PUSH IX |
|
|
|
; |
|
|
|
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS |
|
|
|
CALL MD_FREAD ; READ 4K SECTOR |
|
|
|
POP IX |
|
|
|
; |
|
|
|
MD_SECM: |
|
|
|
LD A,(IY+MD_LBA+0) ; GET SECTOR WITHIN 4K BLOCK |
|
|
|
@ -332,7 +337,7 @@ MD_SECM: |
|
|
|
; |
|
|
|
; ON EXIT |
|
|
|
; BC = LBA 4K BLOCK WE ARE ACCESSING |
|
|
|
; DE:HL = MEMORY ADDRESS TO READ FROM IN FLASH |
|
|
|
; DE:HL = MEMORY ADDRESS TO ACCESS IN FLASH |
|
|
|
; |
|
|
|
MD_IOSETUPF: |
|
|
|
LD L,(IY+MD_LBA+0) ; HL := LOW WORD OF LBA |
|
|
|
@ -369,15 +374,11 @@ MD_WRSECF: ; CALLED FROM MD_RW |
|
|
|
; |
|
|
|
LD (MD_LBA4K),BC ; SAVE 4K LBA |
|
|
|
; |
|
|
|
PUSH IX |
|
|
|
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS |
|
|
|
CALL MD_FREAD ; READ 4K SECTOR |
|
|
|
POP IX |
|
|
|
; |
|
|
|
MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
|
PUSH IX |
|
|
|
CALL MD_FERAS ; ERASE 4K SECTOR |
|
|
|
POP IX |
|
|
|
OR A |
|
|
|
RET NZ ; RETURN IF ERROR |
|
|
|
; |
|
|
|
@ -403,10 +404,8 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
|
POP DE |
|
|
|
POP HL |
|
|
|
; |
|
|
|
PUSH IX |
|
|
|
LD IX,MD_F4KBUF ; WRITE THE SECTOR |
|
|
|
CALL MD_FWRIT |
|
|
|
POP IX |
|
|
|
; |
|
|
|
XOR A |
|
|
|
; |
|
|
|
@ -651,15 +650,13 @@ FF_PROBE: |
|
|
|
CALL MD_FIDENT ; GET ID AT THIS ADDRESS |
|
|
|
|
|
|
|
PUSH HL |
|
|
|
; PUSH DE |
|
|
|
LD HL,MD_TGTDEV ; IF WE MATCH WITH |
|
|
|
XOR A ; A NON 39SF040 |
|
|
|
SBC HL,BC ; CHIP SET THE |
|
|
|
LD A,(MD_FFSEN) ; R/W FLAG TO R/O |
|
|
|
OR H |
|
|
|
OR L |
|
|
|
LD (MD_FFSEN),A ; A NON ZERO VALUE |
|
|
|
; POP DE ; MEANS WE CAN'T |
|
|
|
OR L ; A NON ZERO VALUE |
|
|
|
LD (MD_FFSEN),A ; MEANS WE CAN'T |
|
|
|
POP HL ; ENABLE FLASH WRITING |
|
|
|
#IF (MD_FVBS==1) |
|
|
|
CALL MD_LAND ; LOOKUP AND DISPLAY |
|
|
|
@ -693,8 +690,6 @@ MD_LAND: |
|
|
|
; |
|
|
|
#IF (MD_FDBG==1) |
|
|
|
PRTS(" ID:$") |
|
|
|
; LD H,C |
|
|
|
; LD L,B |
|
|
|
CALL PRTHEXWORD ; DISPLAY FLASH ID |
|
|
|
CALL PC_SPACE |
|
|
|
#ENDIF |
|
|
|
|