|
|
|
@ -27,6 +27,7 @@ MD_AFSH .EQU %00111000 ; FLASH ATTRIBUTE |
|
|
|
; |
|
|
|
MD_FDBG .EQU 0 ; FLASH DEBUG CODE |
|
|
|
MD_FVBS .EQU 1 ; FLASH VERBOSE OUTPUT |
|
|
|
MD_FVAR .EQU 1 ; FLASH VERIFY AFTER WRITE |
|
|
|
; |
|
|
|
; DEVICE CONFIG TABLE (RAM DEVICE FIRST TO MAKE IT ALWAYS FIRST DRIVE) |
|
|
|
; |
|
|
|
@ -54,7 +55,7 @@ MD_CFGTBL: |
|
|
|
; |
|
|
|
MD_INIT: |
|
|
|
#IF (MDFFENABLE) |
|
|
|
CALL MD_FINIT ; PROBE FLASH CAPABILITY |
|
|
|
CALL MD_FINIT ; PROBE FLASH CAPABILITY |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
CALL NEWLINE ; FORMATTING |
|
|
|
@ -316,7 +317,7 @@ MD_RDSECF: ; CALLED FROM MD_RW |
|
|
|
; |
|
|
|
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS |
|
|
|
LD BC,MD_FREAD_R ; PUT ROUTINE TO CALL |
|
|
|
CALL FF_FNCALL ; EXECUTE: READ 4K SECTOR |
|
|
|
CALL MD_FNCALL ; EXECUTE: READ 4K SECTOR |
|
|
|
; |
|
|
|
MD_SECM: |
|
|
|
LD A,(IY+MD_LBA+0) ; GET SECTOR WITHIN 4K BLOCK |
|
|
|
@ -377,11 +378,11 @@ MD_WRSECF: ; CALLED FROM MD_RW |
|
|
|
; |
|
|
|
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS |
|
|
|
LD BC,MD_FREAD_R ; PUT ROUTINE TO CALL |
|
|
|
CALL FF_FNCALL ; EXECUTE: READ 4K SECTOR |
|
|
|
CALL MD_FNCALL ; EXECUTE: READ 4K SECTOR |
|
|
|
; |
|
|
|
MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
|
LD BC,MD_FERAS_R ; PUT ROUTINE TO CALL |
|
|
|
CALL FF_FNCALL ; EXECUTE: ERASE 4K SECTOR |
|
|
|
CALL MD_FNCALL ; EXECUTE: ERASE 4K SECTOR |
|
|
|
OR A |
|
|
|
RET NZ ; RETURN IF ERROR |
|
|
|
; |
|
|
|
@ -409,9 +410,28 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
|
; |
|
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS |
|
|
|
LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL |
|
|
|
CALL FF_FNCALL ; EXECUTE: WRITE 4K SECTOR |
|
|
|
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR |
|
|
|
; |
|
|
|
XOR A |
|
|
|
XOR A ; PRESUME SUCCESS STATUS |
|
|
|
; |
|
|
|
#IF (MD_FVAR==1) |
|
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS |
|
|
|
LD BC,MD_FVERI_R ; PUT ROUTINE TO CALL |
|
|
|
CALL MD_FNCALL ; EXECUTE: VERIFY 4K SECTOR |
|
|
|
; |
|
|
|
OR A |
|
|
|
RET Z ; RETURN IF SUCCESSFUL |
|
|
|
; |
|
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS ; RETRY |
|
|
|
LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL ; WRITE |
|
|
|
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR ; ONCE |
|
|
|
; |
|
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS ; VERIFY |
|
|
|
LD BC,MD_FVERI_R ; PUT ROUTINE TO CALL ; AGAIN |
|
|
|
CALL MD_FNCALL ; EXECUTE: VERIFY 4K SECTOR |
|
|
|
; |
|
|
|
OR A ; SET FINAL STATUS AFTER RETRY |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
RET |
|
|
|
; |
|
|
|
@ -610,8 +630,7 @@ MDSTR_LEN .TEXT "LEN=$" |
|
|
|
; AND THE FLASH CHIP IS SWITCHED INTO THE LOWER BANK. |
|
|
|
; |
|
|
|
; EACH FLASH ROUTINE MUST FIT INTO TO THE HBX_BUF, INCLUDING IT'S LOCAL STACK WHICH |
|
|
|
; IS REQUIRED FOR CALLING THE BANK SWITCH ROUTINES. IN SOME CASES THIS MEANS |
|
|
|
; OVERLAYING THE STACK ON THE INITIALIZATION CODE. |
|
|
|
; IS REQUIRED FOR CALLING THE BANK SWITCH ROUTINES. |
|
|
|
; |
|
|
|
; INSPIRED BY WILL SOWERBUTTS FLASH4 UTILITY - https://github.com/willsowerbutts/flash4/ |
|
|
|
; |
|
|
|
@ -636,7 +655,7 @@ MD_FINIT: |
|
|
|
#ENDIF |
|
|
|
LD B,A ; NUMBER OF DEVICES TO PROBE |
|
|
|
LD C,$00 ; START ADDRESS IS 0000:0000 IN DE:HL |
|
|
|
FF_PROBE: |
|
|
|
MD_PROBE: |
|
|
|
LD D,$00 ; SET ADDRESS IN DE:HL |
|
|
|
LD E,C ; |
|
|
|
LD H,D ; WE INCREASE E BY $08 |
|
|
|
@ -652,7 +671,7 @@ FF_PROBE: |
|
|
|
CALL COUT |
|
|
|
#ENDIF |
|
|
|
LD BC,MD_FIDENT_R ; PUT ROUTINE TO CALL |
|
|
|
CALL FF_FNCALL ; EXECUTE: IDENTIFY FLASH CHIP |
|
|
|
CALL MD_FNCALL ; EXECUTE: IDENTIFY FLASH CHIP |
|
|
|
|
|
|
|
PUSH HL |
|
|
|
LD HL,MD_TGTDEV ; IF WE MATCH WITH |
|
|
|
@ -672,7 +691,7 @@ FF_PROBE: |
|
|
|
ADD A,$08 ; TO NEXT DEVICE |
|
|
|
LD C,A |
|
|
|
; |
|
|
|
DJNZ FF_PROBE ; ALWAYS AT LEAST ONE DEVICE |
|
|
|
DJNZ MD_PROBE ; ALWAYS AT LEAST ONE DEVICE |
|
|
|
|
|
|
|
#IF (MD_FVBS==1) |
|
|
|
CALL PRTSTRD |
|
|
|
@ -705,21 +724,21 @@ MD_LAND: |
|
|
|
; |
|
|
|
LD HL,MD_TABLE ; SEARCH THROUGH THE FLASH |
|
|
|
LD DE,MD_T_CNT ; TABLE TO FIND A MATCH |
|
|
|
FF_NXT1:LD A,(HL) |
|
|
|
MD_NXT1:LD A,(HL) |
|
|
|
CP B |
|
|
|
JR NZ,FF_NXT0 ; FIRST BYTE DOES NOT MATCH |
|
|
|
JR NZ,MD_NXT0 ; FIRST BYTE DOES NOT MATCH |
|
|
|
; |
|
|
|
INC HL |
|
|
|
LD A,(HL) |
|
|
|
CP C |
|
|
|
DEC HL |
|
|
|
JR NZ,FF_NXT0 ; SECOND BYTE DOES NOT MATCH |
|
|
|
JR NZ,MD_NXT0 ; SECOND BYTE DOES NOT MATCH |
|
|
|
; |
|
|
|
INC HL |
|
|
|
INC HL |
|
|
|
JR FF_NXT2 ; MATCH SO EXIT |
|
|
|
; |
|
|
|
FF_NXT0:PUSH BC ; WE DIDN'T MATCH SO POINT |
|
|
|
MD_NXT0:PUSH BC ; WE DIDN'T MATCH SO POINT |
|
|
|
LD BC,MD_T_SZ ; TO THE NEXT TABLE ENTRY |
|
|
|
ADD HL,BC |
|
|
|
POP BC |
|
|
|
@ -727,7 +746,7 @@ FF_NXT0:PUSH BC ; WE DIDN'T MATCH SO POINT |
|
|
|
LD A,D ; CHECK IF WE REACHED THE |
|
|
|
OR E ; END OF THE TABLE |
|
|
|
DEC DE |
|
|
|
JR NZ,FF_NXT1 ; NOT AT END YET |
|
|
|
JR NZ,MD_NXT1 ; NOT AT END YET |
|
|
|
; |
|
|
|
LD HL,MD_FFMSGUNK ; WE REACHED THE END WITHOUT A MATCH |
|
|
|
; |
|
|
|
@ -754,7 +773,12 @@ FF_NXT2: |
|
|
|
; ON ENTRY DE:HL POINTS TO A 32 BIT MEMORY ADDRESS. |
|
|
|
; IX POINTS TO WHERE TO SAVE DATA |
|
|
|
; ON EXIT A NO STATUS IS RETURNED |
|
|
|
|
|
|
|
; |
|
|
|
; MD_VERI_R - VERIFY FLASH SECTOR |
|
|
|
; ON ENTRY DE:HL POINTS TO A 32 BIT MEMORY ADDRESS. |
|
|
|
; IX POINTS TO DATA TO COMPARE. |
|
|
|
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL |
|
|
|
; |
|
|
|
; MD_FWRIT_R - WRITE FLASH SECTOR |
|
|
|
; ON ENTRY DE:HL POINTS TO A 32 BIT MEMORY ADDRESS. |
|
|
|
; IX POINTS TO DATA TO BE WRITTEN |
|
|
|
@ -767,17 +791,17 @@ FF_NXT2: |
|
|
|
; RETURN WITH ID CODE. |
|
|
|
;====================================================================== |
|
|
|
; |
|
|
|
FF_FNCALL: |
|
|
|
MD_FNCALL: |
|
|
|
PUSH HL ; USING HBX_BUF FOR CODE AREA |
|
|
|
PUSH DE |
|
|
|
PUSH BC |
|
|
|
CALL FF_CALCA ; GET BANK AND SECTOR DATA IN BC |
|
|
|
CALL MD_CALCA ; GET BANK AND SECTOR DATA IN BC |
|
|
|
; |
|
|
|
POP HL ; GET ROUTINE TO CALL |
|
|
|
PUSH BC |
|
|
|
; |
|
|
|
LD DE,HBX_BUF ; EXECUTE / START ADDRESS |
|
|
|
LD BC,HBX_BUFSIZ ; MAX. CODE SIZE POSSIBLE |
|
|
|
LD BC,MD_CSIZE ; CODE SIZE. MAXIMUM 64 BYTES |
|
|
|
LDIR ; COPY OUR RELOCATABLE CODE TO THE BUFFER |
|
|
|
; |
|
|
|
LD D,B ; PRESET DE TO ZERO TO REDUCE |
|
|
|
@ -789,8 +813,14 @@ FF_FNCALL: |
|
|
|
CALL PRTHEXWORD |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
LD HL,MD_FNRET ; ADDRESS RELOCATABLE CODE TO RETURN TO |
|
|
|
HB_DI |
|
|
|
CALL HBX_BUF ; EXECUTE RELOCATED CODE |
|
|
|
LD (FF_SAVSTK),SP ; SAVE CURRENT STACK |
|
|
|
LD SP,(HBX_BUF_END-2 ; SETUP A NEW HIMEM STACK AT END OF HX_BUF |
|
|
|
EX (SP),HL ; BEHIND CODE WITH RETURN ADDRESS PREPOPULATED |
|
|
|
JP HBX_BUF ; EXECUTE RELOCATED CODE |
|
|
|
MD_FNRET: |
|
|
|
LD SP,(FF_SAVSTK) ; RESTORE STACK |
|
|
|
HB_EI |
|
|
|
; |
|
|
|
#IF (MD_FDBG==1) |
|
|
|
@ -808,6 +838,8 @@ FF_FNCALL: |
|
|
|
POP HL |
|
|
|
RET ; RETURN TO MD_READF, MD_WRITEF |
|
|
|
; |
|
|
|
FF_SAVSTK .DW 0 |
|
|
|
; |
|
|
|
;====================================================================== |
|
|
|
; CALCULATE BANK AND ADDRESS DATA FROM MEMORY ADDRESS |
|
|
|
; |
|
|
|
@ -823,7 +855,7 @@ FF_FNCALL: |
|
|
|
; XXXXXXXXXXXXBBBB BXXXXXXXXXXXXXXX < B = BANK |
|
|
|
;====================================================================== |
|
|
|
; |
|
|
|
FF_CALCA: |
|
|
|
MD_CALCA: |
|
|
|
; |
|
|
|
#IF (MD_FDBG==1) |
|
|
|
CALL PC_SPACE ; DISPLAY SECTOR |
|
|
|
@ -849,7 +881,7 @@ FF_CALCA: |
|
|
|
; |
|
|
|
LD A,(HB_CURBNK) ; WE ARE STARTING IN HB_CURBNK |
|
|
|
; |
|
|
|
RET |
|
|
|
RET ; RETURN TO MD_FNRET |
|
|
|
; |
|
|
|
;====================================================================== |
|
|
|
; FLASH IDENTIFY |
|
|
|
@ -866,9 +898,6 @@ FF_CALCA: |
|
|
|
;====================================================================== |
|
|
|
; |
|
|
|
MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
; |
|
|
|
LD (HBX_BUF+MD_FIST-MD_FIDENT_R),SP ; SAVE STACK |
|
|
|
LD SP,HBX_BUF + (MD_FIST-MD_FIDENT_R) ; SETUP TEMP STACK |
|
|
|
; |
|
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
; |
|
|
|
@ -889,12 +918,8 @@ MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
POP AF ; RETURN TO ORIGINAL BANK |
|
|
|
CALL HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
|
; |
|
|
|
LD SP,(HBX_BUF + (MD_FIST-MD_FIDENT_R)) ; RESTORE STACK |
|
|
|
RET ; RETURN TO MD_FNRET |
|
|
|
; |
|
|
|
RET |
|
|
|
; |
|
|
|
.FILL 8,0 ; STACK SPACE |
|
|
|
MD_FIST .DW 0 ; SAVE STACK |
|
|
|
MD_I_SZ .EQU $-MD_FIDENT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
; |
|
|
|
;====================================================================== |
|
|
|
@ -912,29 +937,19 @@ MD_I_SZ .EQU $-MD_FIDENT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
; |
|
|
|
MD_FERAS_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
; |
|
|
|
MD_FEST .EQU $+2 ; SAVE STACK |
|
|
|
; |
|
|
|
LD HL,$5555 ; COMMAND ; LOCAL STACK |
|
|
|
LD DE,$2AAA ; PRELOAD ; LOCAL STACK |
|
|
|
LD (HBX_BUF+MD_FEST-MD_FERAS_R),SP ; SAVE STACK ; LOCAL STACK |
|
|
|
LD SP,HBX_BUF + (MD_FERAS_S-MD_FERAS_R) ; SETUP TEMP STACK ; LOCAL STACK |
|
|
|
; |
|
|
|
MD_FERAS_S |
|
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
LD A,B ; SELECT BANK |
|
|
|
CALL HBX_BNKSEL ; TO PROGRAM |
|
|
|
; |
|
|
|
|
|
|
|
LD A,L ; LD ($5555),A ; COMMAND |
|
|
|
LD (HL),E ; LD A,$55 ; SETUP |
|
|
|
LD (DE),A ; LD ($2AAA),A |
|
|
|
LD (HL),$80 ; LD A,$80 |
|
|
|
LD (HL),E ; LD ($5555),A |
|
|
|
LD (DE),A ; LD A,$AA |
|
|
|
; LD ($5555),A |
|
|
|
; LD A,$55 |
|
|
|
; LD ($2AAA),A |
|
|
|
|
|
|
|
LD HL,$5555 ; LD ($5555),A |
|
|
|
LD DE,$2AAA ; LD A,$55 |
|
|
|
LD A,L ; LD ($2AAA),A |
|
|
|
LD (HL),E ; LD A,$80 |
|
|
|
LD (DE),A ; LD ($5555),A |
|
|
|
LD (HL),$80 ; LD A,$AA |
|
|
|
LD (HL),E ; LD ($5555),A |
|
|
|
LD (DE),A ; LD A,$55 |
|
|
|
; ; LD ($2AAA),A |
|
|
|
LD H,C ; SECTOR |
|
|
|
LD L,$00 ; ADDRESS |
|
|
|
; |
|
|
|
@ -966,9 +981,7 @@ MD_WT5: LD C,L ; SET SUCCESS STATUS |
|
|
|
MD_WT6: POP AF ; RETURN TO ORIGINAL BANK |
|
|
|
CALL HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
|
; |
|
|
|
LD SP,(HBX_BUF + (MD_FEST-MD_FERAS_R)) ; RESTORE STACK |
|
|
|
; |
|
|
|
RET |
|
|
|
RET ; RETURN TO MD_FNRET |
|
|
|
; |
|
|
|
MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
; |
|
|
|
@ -990,11 +1003,8 @@ MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
; |
|
|
|
MD_FREAD_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
; |
|
|
|
LD H,C ; SECTOR ; LOCAL STACK |
|
|
|
LD L,D ; ADDRESS ; LOCAL STACK |
|
|
|
LD (HBX_BUF+MD_FRST-MD_FREAD_R),SP ; SAVE STACK ; LOCAL STACK |
|
|
|
LD SP,HBX_BUF + (MD_FRD_S-MD_FREAD_R) ; SETUP TEMP STACK ; LOCAL STACK |
|
|
|
MD_FRD_S: |
|
|
|
LD H,C ; SECTOR |
|
|
|
LD L,D ; ADDRESS |
|
|
|
; |
|
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
; |
|
|
|
@ -1018,14 +1028,65 @@ MD_FRD1: |
|
|
|
POP AF ; RETURN TO ORIGINAL BANK |
|
|
|
CALL HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
|
; |
|
|
|
LD SP,(HBX_BUF+MD_FRST-MD_FREAD_R) ; RESTORE STACK |
|
|
|
; |
|
|
|
RET |
|
|
|
RET ; RETURN TO MD_FNRET |
|
|
|
; |
|
|
|
MD_FRST .DW 0 ; SAVE STACK |
|
|
|
MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
; |
|
|
|
;====================================================================== |
|
|
|
; FLASH VERIFY SECTOR. |
|
|
|
; |
|
|
|
; SELECT THE APPROPRIATE BANK / ADDRESS |
|
|
|
; VERIFY SECTOR OF 4096 BYTES, BYTE AT A TIME |
|
|
|
; SELECT SOURCE BANK, READ DATA, |
|
|
|
; SELECT DESTINATION BANK, COMPARE DATA |
|
|
|
; DESTINATION BANK IS ALWAYS CURRENT BANK |
|
|
|
; |
|
|
|
; ON ENTRY BC CONTAINS BANK AND SECTOR DATA |
|
|
|
; DE = 0000 BYTE COUNT |
|
|
|
; IX POINTS TO DATA TO BE VERIFIED |
|
|
|
; A CONTAINS CURRENT BANK |
|
|
|
; ON EXIT NO STATUS RETURNED |
|
|
|
;====================================================================== |
|
|
|
; |
|
|
|
MD_FVERI_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
; |
|
|
|
LD H,C ; SECTOR |
|
|
|
LD L,D ; ADDRESS |
|
|
|
; |
|
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
; |
|
|
|
MD_FVE1: |
|
|
|
LD A,B ; SELECT BANK |
|
|
|
CALL HBX_BNKSEL ; TO READ |
|
|
|
LD C,(HL) ; READ BYTE |
|
|
|
; |
|
|
|
POP AF |
|
|
|
PUSH AF ; SELECT BANK |
|
|
|
CALL HBX_BNKSEL ; TO WRITE |
|
|
|
; |
|
|
|
LD A,C |
|
|
|
SUB (IX+0) ; COMPARE BYTE |
|
|
|
LD C,A ; SET NON ZERO STATUS |
|
|
|
JR NZ,MD_FVE2 ; EXIT IF MISMATCH |
|
|
|
; |
|
|
|
INC HL ; NEXT SOURCE LOCATION |
|
|
|
INC IX ; NEXT DESTINATION LOCATION |
|
|
|
; |
|
|
|
INC DE ; CONTINUE READING UNTIL |
|
|
|
BIT 4,D ; WE HAVE DONE ONE SECTOR |
|
|
|
JR Z,MD_FVE1 |
|
|
|
; |
|
|
|
LD C,E ; SET SUCCESS STATUS = 0 |
|
|
|
; |
|
|
|
MD_FVE2: |
|
|
|
POP AF ; RETURN TO ORIGINAL BANK |
|
|
|
CALL HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
|
; |
|
|
|
RET ; RETURN TO MD_FNRET |
|
|
|
; |
|
|
|
MD_V_SZ .EQU $-MD_FVERI_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
; |
|
|
|
;====================================================================== |
|
|
|
; FLASH WRITE SECTOR. |
|
|
|
; |
|
|
|
; SELECT THE APPROPRIATE BANK / ADDRESS |
|
|
|
@ -1043,13 +1104,8 @@ MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
; |
|
|
|
MD_FWRIT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
; |
|
|
|
MD_FWST .EQU $+2 ; SAVE STACK |
|
|
|
; |
|
|
|
LD H,C ; SECTOR ; LOCAL STACK |
|
|
|
LD L,D ; ADDRESS ; LOCAL STACK |
|
|
|
LD (HBX_BUF+MD_FWST-MD_FWRIT_R),SP ; SAVE STACK ; LOCAL STACK |
|
|
|
LD SP, HBX_BUF+(MD_FWRIT_S-MD_FWRIT_R) ; SETUP TEMP STACK ; LOCAL STACK |
|
|
|
MD_FWRIT_S: |
|
|
|
LD H,C ; SECTOR |
|
|
|
LD L,D ; ADDRESS |
|
|
|
; |
|
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
; |
|
|
|
@ -1089,8 +1145,6 @@ MD_FW7: LD A,(HL) ; FROM THE SAME FLASH ADDRESS. |
|
|
|
; |
|
|
|
POP AF ; RETURN TO ORIGINAL BANK |
|
|
|
CALL HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
|
; |
|
|
|
LD SP,(HBX_BUF+MD_FWST-MD_FWRIT_R) ; RESTORE STACK |
|
|
|
; |
|
|
|
RET |
|
|
|
; |
|
|
|
@ -1156,6 +1210,10 @@ MD_FFSEN .DB 00h ; FLASH FILES SYSTEM ENABLE |
|
|
|
.ECHO "MD_FREAD_R " |
|
|
|
.ECHO MD_R_SZ |
|
|
|
.ECHO "\n" |
|
|
|
; |
|
|
|
.ECHO "MD_VERI_R " |
|
|
|
.ECHO MD_V_SZ |
|
|
|
.ECHO "\n" |
|
|
|
; |
|
|
|
.ECHO "MD_FERAS_R " |
|
|
|
.ECHO MD_S_SZ |
|
|
|
@ -1180,6 +1238,9 @@ MD_CSIZE .SET MD_I_SZ |
|
|
|
#IF (MD_R_SZ>MD_CSIZE) |
|
|
|
MD_CSIZE .SET MD_R_SZ |
|
|
|
#ENDIF |
|
|
|
#IF (MD_V_SZ>MD_CSIZE) |
|
|
|
MD_CSIZE .SET MD_V_SZ |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (MD_CSIZE>HBX_BUFSIZ) |
|
|
|
.ECHO "Warning: Flash code exceeds available space by " |
|
|
|
|