|
|
@ -299,24 +299,19 @@ MD_RDSECF: ; CALLED FROM MD_RW |
|
|
; |
|
|
; |
|
|
PUSH HL ; IS THE SECTOR |
|
|
PUSH HL ; IS THE SECTOR |
|
|
LD HL,(MD_LBA4K) ; WE WANT TO |
|
|
LD HL,(MD_LBA4K) ; WE WANT TO |
|
|
XOR A ; WRITE ALREADY |
|
|
|
|
|
|
|
|
XOR A ; READ ALREADY |
|
|
SBC HL,BC ; IN THE 4K |
|
|
SBC HL,BC ; IN THE 4K |
|
|
POP HL ; BLOCK WE HAVE |
|
|
POP HL ; BLOCK WE HAVE |
|
|
JR Z,MD_SECM ; IN THE BUFFER |
|
|
|
|
|
|
|
|
JR Z,MD_SECM ; IN THE BUFFER? |
|
|
; |
|
|
; |
|
|
;MD_SECR: |
|
|
|
|
|
; DESIRED SECTOR |
|
|
|
|
|
; IS NOT IN BUFFER |
|
|
|
|
|
LD (MD_LBA4K),BC ; WE WILL READ IN |
|
|
|
|
|
; A NEW 4K SECTOR. |
|
|
|
|
|
; SAVE THE 4K LBA |
|
|
|
|
|
; FOR FUTURE CHECKS |
|
|
|
|
|
|
|
|
; DESIRED SECTOR IS NOT IN BUFFER |
|
|
|
|
|
LD (MD_LBA4K),BC ; WE WILL READ IN A NEW 4K SECTOR. |
|
|
|
|
|
; SAVE THE 4K LBA FOR FUTURE CHECKS |
|
|
; |
|
|
; |
|
|
; DE:HL CONTAIN SOURCE ADDRESS |
|
|
|
|
|
; WHICH WAS SETUP BY MD_IOSETUPF |
|
|
|
|
|
|
|
|
CALL MD_CALBAS ; SETUP BANK AND SECTOR |
|
|
; |
|
|
; |
|
|
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS |
|
|
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS |
|
|
LD BC,MD_FREAD_R ; PUT ROUTINE TO CALL |
|
|
|
|
|
|
|
|
LD HL,MD_FREAD_R ; PUT ROUTINE TO CALL |
|
|
CALL MD_FNCALL ; EXECUTE: READ 4K SECTOR |
|
|
CALL MD_FNCALL ; EXECUTE: READ 4K SECTOR |
|
|
; |
|
|
; |
|
|
MD_SECM: |
|
|
MD_SECM: |
|
|
@ -349,7 +344,7 @@ MD_IOSETUPF: |
|
|
LD A,L ; SAVE LBA 4K |
|
|
LD A,L ; SAVE LBA 4K |
|
|
AND %11111000 ; BLOCK WE ARE |
|
|
AND %11111000 ; BLOCK WE ARE |
|
|
LD C,A ; GOING TO |
|
|
LD C,A ; GOING TO |
|
|
LD A,H ; ACCESS |
|
|
|
|
|
|
|
|
LD B,H ; ACCESS |
|
|
; |
|
|
; |
|
|
LD D,0 ; CONVERT LBA |
|
|
LD D,0 ; CONVERT LBA |
|
|
LD E,H ; TO ADDRESS |
|
|
LD E,H ; TO ADDRESS |
|
|
@ -357,10 +352,54 @@ MD_IOSETUPF: |
|
|
LD L,D ; DE:HL = HLX512 |
|
|
LD L,D ; DE:HL = HLX512 |
|
|
SLA H |
|
|
SLA H |
|
|
RL E |
|
|
RL E |
|
|
RL D |
|
|
|
|
|
|
|
|
RL D |
|
|
; |
|
|
; |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; CALCULATE BANK AND ADDRESS DATA FROM MEMORY ADDRESS |
|
|
|
|
|
; |
|
|
|
|
|
; ON ENTRY DE:HL CONTAINS 32 BIT MEMORY ADDRESS. |
|
|
|
|
|
; ON EXIT B CONTAINS BANK SELECT BYTE |
|
|
|
|
|
; C CONTAINS HIGH BYTE OF SECTOR ADDRESS |
|
|
|
|
|
; |
|
|
|
|
|
; DDDDDDDDEEEEEEEE HHHHHHHHLLLLLLLL |
|
|
|
|
|
; 3322222222221111 1111110000000000 |
|
|
|
|
|
; 1098765432109876 5432109876543210 |
|
|
|
|
|
; XXXXXXXXXXXXSSSS SSSSXXXXXXXXXXXX < S = SECTOR |
|
|
|
|
|
; XXXXXXXXXXXXBBBB BXXXXXXXXXXXXXXX < B = BANK |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; |
|
|
|
|
|
MD_CALBAS: |
|
|
|
|
|
; |
|
|
|
|
|
#IF (MD_FDBG==1) |
|
|
|
|
|
CALL PC_SPACE ; DISPLAY SECTOR |
|
|
|
|
|
CALL PRTHEX32 ; SECTOR ADDRESS |
|
|
|
|
|
CALL PC_SPACE ; IN DE:HL |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
PUSH HL |
|
|
|
|
|
LD A,E ; BOTTOM PORTION OF SECTOR |
|
|
|
|
|
AND $0F ; ADDRESS THAT GETS WRITTEN |
|
|
|
|
|
RLC H ; WITH ERASE COMMAND BYTE |
|
|
|
|
|
RLA ; A15 GETS DROPPED OFF AND |
|
|
|
|
|
LD B,A ; ADDED TO BANK SELECT |
|
|
|
|
|
; |
|
|
|
|
|
LD A,H ; TOP SECTION OF SECTOR |
|
|
|
|
|
RRA ; ADDRESS THAT GETS WRITTEN |
|
|
|
|
|
AND $70 ; TO BANK SELECT PORT |
|
|
|
|
|
LD C,A |
|
|
|
|
|
|
|
|
|
|
|
POP HL |
|
|
|
|
|
; |
|
|
|
|
|
LD (MD_FBAS),BC ; SAVE BANK AND SECTOR FOR USE IN FLASH ROUTINES |
|
|
|
|
|
; |
|
|
|
|
|
#IF (MD_FDBG==1) |
|
|
|
|
|
CALL PRTHEXWORD ; DISPLAY BANK AND |
|
|
|
|
|
CALL PC_SPACE ; SECTOR RESULT |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
|
|
|
|
|
|
RET |
|
|
; |
|
|
; |
|
|
; WRITE FLASH |
|
|
; WRITE FLASH |
|
|
; |
|
|
; |
|
|
@ -375,19 +414,18 @@ MD_WRSECF: ; CALLED FROM MD_RW |
|
|
JR Z,MD_SECM1 ; IN THE BUFFER |
|
|
JR Z,MD_SECM1 ; IN THE BUFFER |
|
|
; |
|
|
; |
|
|
LD (MD_LBA4K),BC ; SAVE 4K LBA |
|
|
LD (MD_LBA4K),BC ; SAVE 4K LBA |
|
|
|
|
|
; |
|
|
|
|
|
CALL MD_CALBAS ; SETUP BANK AND SECTOR |
|
|
; |
|
|
; |
|
|
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS |
|
|
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS |
|
|
LD BC,MD_FREAD_R ; PUT ROUTINE TO CALL |
|
|
|
|
|
|
|
|
LD HL,MD_FREAD_R ; PUT ROUTINE TO CALL |
|
|
CALL MD_FNCALL ; EXECUTE: READ 4K SECTOR |
|
|
CALL MD_FNCALL ; EXECUTE: READ 4K SECTOR |
|
|
; |
|
|
; |
|
|
MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
LD BC,MD_FERAS_R ; PUT ROUTINE TO CALL |
|
|
|
|
|
|
|
|
LD HL,MD_FERAS_R ; PUT ROUTINE TO CALL |
|
|
CALL MD_FNCALL ; EXECUTE: ERASE 4K SECTOR |
|
|
CALL MD_FNCALL ; EXECUTE: ERASE 4K SECTOR |
|
|
OR A |
|
|
OR A |
|
|
RET NZ ; RETURN IF ERROR |
|
|
RET NZ ; RETURN IF ERROR |
|
|
; |
|
|
|
|
|
PUSH HL |
|
|
|
|
|
PUSH DE |
|
|
|
|
|
; |
|
|
; |
|
|
; COPY 512B SECTOR INTO 4K SECTOR |
|
|
; COPY 512B SECTOR INTO 4K SECTOR |
|
|
; |
|
|
; |
|
|
@ -404,30 +442,27 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
LD HL,(MD_DSKBUF) |
|
|
LD HL,(MD_DSKBUF) |
|
|
LD BC,512 ; COPY ONE 512B SECTOR FROM THE |
|
|
LD BC,512 ; COPY ONE 512B SECTOR FROM THE |
|
|
LDIR ; THE DISK BUFFER TO 4K SECTOR |
|
|
LDIR ; THE DISK BUFFER TO 4K SECTOR |
|
|
; |
|
|
|
|
|
POP DE |
|
|
|
|
|
POP HL |
|
|
|
|
|
; |
|
|
; |
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS |
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS |
|
|
LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL |
|
|
|
|
|
|
|
|
LD HL,MD_FWRIT_R ; PUT ROUTINE TO CALL |
|
|
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR |
|
|
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR |
|
|
; |
|
|
; |
|
|
XOR A ; PRESUME SUCCESS STATUS |
|
|
XOR A ; PRESUME SUCCESS STATUS |
|
|
; |
|
|
; |
|
|
#IF (MD_FVAR==1) |
|
|
#IF (MD_FVAR==1) |
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS |
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS |
|
|
LD BC,MD_FVERI_R ; PUT ROUTINE TO CALL |
|
|
|
|
|
|
|
|
LD HL,MD_FVERI_R ; PUT ROUTINE TO CALL |
|
|
CALL MD_FNCALL ; EXECUTE: VERIFY 4K SECTOR |
|
|
CALL MD_FNCALL ; EXECUTE: VERIFY 4K SECTOR |
|
|
; |
|
|
; |
|
|
OR A |
|
|
OR A |
|
|
RET Z ; RETURN IF SUCCESSFUL |
|
|
RET Z ; RETURN IF SUCCESSFUL |
|
|
; |
|
|
; |
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS ; RETRY |
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS ; RETRY |
|
|
LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL ; WRITE |
|
|
|
|
|
|
|
|
LD HL,MD_FWRIT_R ; PUT ROUTINE TO CALL ; WRITE |
|
|
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR ; ONCE |
|
|
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR ; ONCE |
|
|
; |
|
|
; |
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS ; VERIFY |
|
|
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS ; VERIFY |
|
|
LD BC,MD_FVERI_R ; PUT ROUTINE TO CALL ; AGAIN |
|
|
|
|
|
|
|
|
LD HL,MD_FVERI_R ; PUT ROUTINE TO CALL ; AGAIN |
|
|
CALL MD_FNCALL ; EXECUTE: VERIFY 4K SECTOR |
|
|
CALL MD_FNCALL ; EXECUTE: VERIFY 4K SECTOR |
|
|
; |
|
|
; |
|
|
OR A ; SET FINAL STATUS AFTER RETRY |
|
|
OR A ; SET FINAL STATUS AFTER RETRY |
|
|
@ -436,6 +471,7 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
MD_LBA4K .DW $FFFF ; LBA OF CURRENT SECTOR |
|
|
MD_LBA4K .DW $FFFF ; LBA OF CURRENT SECTOR |
|
|
|
|
|
MD_FBAS .DW $FFFF ; BANK AND SECTOR |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
; READ RAM / ROM |
|
|
; READ RAM / ROM |
|
|
@ -634,6 +670,8 @@ MDSTR_LEN .TEXT "LEN=$" |
|
|
; |
|
|
; |
|
|
; INSPIRED BY WILL SOWERBUTTS FLASH4 UTILITY - https://github.com/willsowerbutts/flash4/ |
|
|
; INSPIRED BY WILL SOWERBUTTS FLASH4 UTILITY - https://github.com/willsowerbutts/flash4/ |
|
|
; |
|
|
; |
|
|
|
|
|
; REFERENCE ww1.microchip.com/downloads/en/DeviceDoc/SST39SF040.txt |
|
|
|
|
|
; |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; |
|
|
; |
|
|
#IF (MDFFENABLE) |
|
|
#IF (MDFFENABLE) |
|
|
@ -670,10 +708,11 @@ MD_PROBE: |
|
|
LD A,'=' ; NUMBER |
|
|
LD A,'=' ; NUMBER |
|
|
CALL COUT |
|
|
CALL COUT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
LD BC,MD_FIDENT_R ; PUT ROUTINE TO CALL |
|
|
|
|
|
|
|
|
PUSH HL |
|
|
|
|
|
CALL MD_CALBAS ; SETUP BANK AND SECTOR |
|
|
|
|
|
LD HL,MD_FIDENT_R ; PUT ROUTINE TO CALL |
|
|
CALL MD_FNCALL ; EXECUTE: IDENTIFY FLASH CHIP |
|
|
CALL MD_FNCALL ; EXECUTE: IDENTIFY FLASH CHIP |
|
|
|
|
|
|
|
|
PUSH HL |
|
|
|
|
|
LD HL,MD_TGTDEV ; IF WE MATCH WITH |
|
|
LD HL,MD_TGTDEV ; IF WE MATCH WITH |
|
|
XOR A ; A NON 39SF040 |
|
|
XOR A ; A NON 39SF040 |
|
|
SBC HL,BC ; CHIP SET THE |
|
|
SBC HL,BC ; CHIP SET THE |
|
|
@ -760,45 +799,41 @@ FF_NXT2: |
|
|
; COMMON FUNCTION CALL FOR: |
|
|
; COMMON FUNCTION CALL FOR: |
|
|
; |
|
|
; |
|
|
; MD_FIDENT_R - IDENTIFY FLASH CHIP |
|
|
; MD_FIDENT_R - IDENTIFY FLASH CHIP |
|
|
; ON ENTRY DE:HL POINTS TO AN ADDRESS WITH THE ADDRESS RANGE OF THE |
|
|
|
|
|
; CHIP TO BE IDENTIFIED. |
|
|
|
|
|
; ON EXIT BC CONTAINS THE CHIP ID BYTES. |
|
|
|
|
|
; A NO STATUS IS RETURNED |
|
|
|
|
|
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
|
|
; ON EXIT BC CONTAINS THE CHIP ID BYTES. |
|
|
|
|
|
; A NO STATUS IS RETURNED |
|
|
; |
|
|
; |
|
|
; MD_FERAS_R - ERASE FLASH SECTOR |
|
|
; MD_FERAS_R - ERASE FLASH SECTOR |
|
|
; ON ENTRY DE:HL POINTS TO A 32 BIT MEMORY ADDRESS. |
|
|
|
|
|
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL |
|
|
|
|
|
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
|
|
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL |
|
|
; |
|
|
; |
|
|
; MD_FREAD_R - READ FLASH SECTOR |
|
|
; MD_FREAD_R - READ FLASH SECTOR |
|
|
; 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 |
|
|
|
|
|
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
|
|
; IX POINTS TO WHERE TO SAVE DATA |
|
|
|
|
|
; ON EXIT A NO STATUS IS RETURNED |
|
|
; |
|
|
; |
|
|
; MD_VERI_R - VERIFY FLASH SECTOR |
|
|
; 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 |
|
|
|
|
|
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
|
|
; IX POINTS TO DATA TO COMPARE. |
|
|
|
|
|
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL |
|
|
; |
|
|
; |
|
|
; MD_FWRIT_R - WRITE FLASH SECTOR |
|
|
; MD_FWRIT_R - WRITE FLASH SECTOR |
|
|
; ON ENTRY DE:HL POINTS TO A 32 BIT MEMORY ADDRESS. |
|
|
|
|
|
; IX POINTS TO DATA TO BE WRITTEN |
|
|
|
|
|
; ON EXIT A NO STATUS IS RETURNED |
|
|
|
|
|
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
|
|
; IX POINTS TO DATA TO BE WRITTEN |
|
|
|
|
|
; ON EXIT A NO STATUS IS RETURNED |
|
|
; |
|
|
; |
|
|
; GENERAL OPERATION: |
|
|
; GENERAL OPERATION: |
|
|
; CALCULATE BANK AND ADDRESS DATA FROM ENTRY ADDRESS |
|
|
|
|
|
; COPY FLASH CODE TO CODE BUFFER |
|
|
; COPY FLASH CODE TO CODE BUFFER |
|
|
; CALL RELOCATED FLASH CODE |
|
|
; CALL RELOCATED FLASH CODE |
|
|
; RETURN WITH ID CODE. |
|
|
; RETURN WITH ID CODE. |
|
|
;====================================================================== |
|
|
;====================================================================== |
|
|
; |
|
|
; |
|
|
MD_FNCALL: |
|
|
|
|
|
PUSH HL ; USING HBX_BUF FOR CODE AREA |
|
|
|
|
|
PUSH DE |
|
|
|
|
|
PUSH BC |
|
|
|
|
|
CALL MD_CALCA ; GET BANK AND SECTOR DATA IN BC |
|
|
|
|
|
; |
|
|
|
|
|
POP HL ; GET ROUTINE TO CALL |
|
|
|
|
|
PUSH BC |
|
|
|
|
|
|
|
|
MD_FNCALL: ; USING HBX_BUF FOR CODE AREA |
|
|
; |
|
|
; |
|
|
LD DE,HBX_BUF ; EXECUTE / START ADDRESS |
|
|
LD DE,HBX_BUF ; EXECUTE / START ADDRESS |
|
|
LD BC,MD_CSIZE ; CODE SIZE. MAXIMUM 64 BYTES |
|
|
LD BC,MD_CSIZE ; CODE SIZE. MAXIMUM 64 BYTES |
|
|
@ -807,7 +842,7 @@ MD_FNCALL: |
|
|
LD D,B ; PRESET DE TO ZERO TO REDUCE |
|
|
LD D,B ; PRESET DE TO ZERO TO REDUCE |
|
|
LD E,B ; CODE SIZE IN RELOCATABLE CODE |
|
|
LD E,B ; CODE SIZE IN RELOCATABLE CODE |
|
|
; |
|
|
; |
|
|
POP BC ; PUT BANK AND SECTOR DATA IN BC |
|
|
|
|
|
|
|
|
LD BC,(MD_FBAS) ; PUT BANK AND SECTOR DATA IN BC |
|
|
; |
|
|
; |
|
|
#IF (MD_FDBG==1) |
|
|
#IF (MD_FDBG==1) |
|
|
CALL PRTHEXWORD |
|
|
CALL PRTHEXWORD |
|
|
@ -838,51 +873,9 @@ MD_FNCALL: |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
LD A,C ; RETURN WITH STATUS IN A |
|
|
LD A,C ; RETURN WITH STATUS IN A |
|
|
POP DE |
|
|
|
|
|
POP HL |
|
|
|
|
|
RET ; RETURN TO MD_READF, MD_WRITEF |
|
|
RET ; RETURN TO MD_READF, MD_WRITEF |
|
|
; |
|
|
; |
|
|
MD_SAVSTK .DW 0 |
|
|
|
|
|
; |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; CALCULATE BANK AND ADDRESS DATA FROM MEMORY ADDRESS |
|
|
|
|
|
; |
|
|
|
|
|
; ON ENTRY DE:HL CONTAINS 32 BIT MEMORY ADDRESS. |
|
|
|
|
|
; ON EXIT B CONTAINS BANK SELECT BYTE |
|
|
|
|
|
; C CONTAINS HIGH BYTE OF SECTOR ADDRESS |
|
|
|
|
|
; |
|
|
|
|
|
; DDDDDDDDEEEEEEEE HHHHHHHHLLLLLLLL |
|
|
|
|
|
; 3322222222221111 1111110000000000 |
|
|
|
|
|
; 1098765432109876 5432109876543210 |
|
|
|
|
|
; XXXXXXXXXXXXSSSS SSSSXXXXXXXXXXXX < S = SECTOR |
|
|
|
|
|
; XXXXXXXXXXXXBBBB BXXXXXXXXXXXXXXX < B = BANK |
|
|
|
|
|
;====================================================================== |
|
|
|
|
|
; |
|
|
|
|
|
MD_CALCA: |
|
|
|
|
|
; |
|
|
|
|
|
#IF (MD_FDBG==1) |
|
|
|
|
|
CALL PC_SPACE ; DISPLAY SECTOR |
|
|
|
|
|
CALL PRTHEX32 ; SECTOR ADDRESS |
|
|
|
|
|
CALL PC_SPACE ; IN DE:HL |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
LD A,E ; BOTTOM PORTION OF SECTOR |
|
|
|
|
|
AND $0F ; ADDRESS THAT GETS WRITTEN |
|
|
|
|
|
RLC H ; WITH ERASE COMMAND BYTE |
|
|
|
|
|
RLA ; A15 GETS DROPPED OFF AND |
|
|
|
|
|
LD B,A ; ADDED TO BANK SELECT |
|
|
|
|
|
; |
|
|
|
|
|
LD A,H ; TOP SECTION OF SECTOR |
|
|
|
|
|
RRA ; ADDRESS THAT GETS WRITTEN |
|
|
|
|
|
AND $70 ; TO BANK SELECT PORT |
|
|
|
|
|
LD C,A |
|
|
|
|
|
; |
|
|
|
|
|
#IF (MD_FDBG==1) |
|
|
|
|
|
CALL PRTHEXWORD ; DISPLAY BANK AND |
|
|
|
|
|
CALL PC_SPACE ; SECTOR RESULT |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
MD_SAVSTK .DW 0 |
|
|
; |
|
|
; |
|
|
;====================================================================== |
|
|
;====================================================================== |
|
|
; FLASH IDENTIFY |
|
|
; FLASH IDENTIFY |
|
|
@ -938,7 +931,7 @@ MD_I_SZ .EQU $-MD_FIDENT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
; |
|
|
; |
|
|
MD_FERAS_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
MD_FERAS_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
; |
|
|
; |
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
|
|
|
|
|
EX AF,AF' ; SAVE CURRENT BANK |
|
|
LD A,B ; SELECT BANK |
|
|
LD A,B ; SELECT BANK |
|
|
CALL HBX_BNKSEL ; TO PROGRAM |
|
|
CALL HBX_BNKSEL ; TO PROGRAM |
|
|
; |
|
|
; |
|
|
@ -979,7 +972,7 @@ MD_WT4: LD A,(HL) ; DO TWO SUCCESSIVE READS |
|
|
JR MD_WT6 |
|
|
JR MD_WT6 |
|
|
MD_WT5: LD C,L ; SET SUCCESS STATUS |
|
|
MD_WT5: LD C,L ; SET SUCCESS STATUS |
|
|
; |
|
|
; |
|
|
MD_WT6: POP AF ; RETURN TO ORIGINAL BANK |
|
|
|
|
|
|
|
|
MD_WT6: EX AF,AF' ; RETURN TO ORIGINAL BANK |
|
|
JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
; |
|
|
; |
|
|
; RET |
|
|
; RET |
|
|
@ -1101,13 +1094,10 @@ MD_FWRIT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
; |
|
|
; |
|
|
LD H,C ; SECTOR |
|
|
LD H,C ; SECTOR |
|
|
LD L,D ; ADDRESS |
|
|
LD L,D ; ADDRESS |
|
|
; |
|
|
|
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
|
|
; |
|
|
; |
|
|
MD_FWRI1: |
|
|
MD_FWRI1: |
|
|
POP AF ; SELECT BANK |
|
|
|
|
|
PUSH AF ; TO READ |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
|
|
|
CALL HBX_BNKSEL ; SELECT BANK TO READ |
|
|
|
|
|
EX AF,AF' ; SAVE CURRENT BANK |
|
|
; |
|
|
; |
|
|
LD C,(IX+0) ; READ IN BYTE |
|
|
LD C,(IX+0) ; READ IN BYTE |
|
|
; |
|
|
; |
|
|
@ -1133,13 +1123,14 @@ MD_FW7: LD A,(HL) ; FROM THE SAME FLASH ADDRESS. |
|
|
; |
|
|
; |
|
|
INC HL ; NEXT DESTINATION LOCATION |
|
|
INC HL ; NEXT DESTINATION LOCATION |
|
|
INC IX ; NEXT SOURCE LOCATION |
|
|
INC IX ; NEXT SOURCE LOCATION |
|
|
|
|
|
; |
|
|
|
|
|
EX AF,AF' ; RESTORE CURRENT BANK |
|
|
; |
|
|
; |
|
|
INC DE ; CONTINUE WRITING UNTIL |
|
|
INC DE ; CONTINUE WRITING UNTIL |
|
|
BIT 4,D ; WE HAVE DONE ONE SECTOR |
|
|
BIT 4,D ; WE HAVE DONE ONE SECTOR |
|
|
JR Z,MD_FWRI1 |
|
|
JR Z,MD_FWRI1 |
|
|
; |
|
|
; |
|
|
POP AF ; RETURN TO ORIGINAL BANK |
|
|
|
|
|
JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
|
|
|
|
|
|
JP HBX_BNKSEL ; RETURN TO ORIGINAL BANK WHICH IS OUR RAM BIOS COPY |
|
|
; |
|
|
; |
|
|
; RET |
|
|
; RET |
|
|
; |
|
|
; |
|
|
|