|
|
|
@ -472,6 +472,7 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER |
|
|
|
; |
|
|
|
MD_LBA4K .DW $FFFF ; LBA OF CURRENT SECTOR |
|
|
|
MD_FBAS .DW $FFFF ; BANK AND SECTOR |
|
|
|
;MD_FLOP .DW $FFFF ; ADDRESS OF LAST OPERATION CALLED |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; READ RAM / ROM |
|
|
|
@ -710,17 +711,18 @@ MD_PROBE: |
|
|
|
#ENDIF |
|
|
|
PUSH HL |
|
|
|
CALL MD_CALBAS ; SETUP BANK AND SECTOR |
|
|
|
LD HL,MD_FIDENT_R ; PUT ROUTINE TO CALL |
|
|
|
LD HL,MD_FIDEN_R ; PUT ROUTINE TO CALL |
|
|
|
CALL MD_FNCALL ; EXECUTE: IDENTIFY FLASH CHIP |
|
|
|
|
|
|
|
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 ; A NON ZERO VALUE |
|
|
|
LD (MD_FFSEN),A ; MEANS WE CAN'T |
|
|
|
POP HL ; ENABLE FLASH WRITING |
|
|
|
JR Z,MD_PR2 ; R/W FLAG TO R/O |
|
|
|
LD HL,MD_FFSEN ; A NON ZERO VALUE |
|
|
|
SET 0,(HL) ; MEANS WE CAN'T |
|
|
|
; ENABLE FLASH WRITING; |
|
|
|
MD_PR2: |
|
|
|
POP HL |
|
|
|
#IF (MD_FVBS==1) |
|
|
|
CALL MD_LAND ; LOOKUP AND DISPLAY |
|
|
|
#ENDIF |
|
|
|
@ -798,32 +800,32 @@ FF_NXT2: |
|
|
|
;====================================================================== |
|
|
|
; COMMON FUNCTION CALL FOR: |
|
|
|
; |
|
|
|
; MD_FIDENT_R - IDENTIFY FLASH CHIP |
|
|
|
; MD_FIDEN_R - IDENTIFY FLASH CHIP |
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED |
|
|
|
; ON EXIT BC CONTAINS THE CHIP ID BYTES. |
|
|
|
; A NO STATUS IS RETURNED |
|
|
|
; |
|
|
|
; MD_FERAS_R - ERASE FLASH SECTOR |
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED |
|
|
|
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL |
|
|
|
; |
|
|
|
; MD_FREAD_R - READ FLASH SECTOR |
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED |
|
|
|
; IX POINTS TO WHERE TO SAVE DATA |
|
|
|
; ON EXIT A NO STATUS IS RETURNED |
|
|
|
; |
|
|
|
; MD_VERI_R - VERIFY FLASH SECTOR |
|
|
|
; MD_FVERI_R - VERIFY FLASH SECTOR |
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED |
|
|
|
; IX POINTS TO DATA TO COMPARE. |
|
|
|
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL |
|
|
|
; |
|
|
|
; MD_FWRIT_R - WRITE FLASH SECTOR |
|
|
|
; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED |
|
|
|
; HL POINTS TO THE ROUTINE TO RELOCATED AND CALLED |
|
|
|
; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED |
|
|
|
; IX POINTS TO DATA TO BE WRITTEN |
|
|
|
; ON EXIT A NO STATUS IS RETURNED |
|
|
|
; |
|
|
|
@ -835,12 +837,22 @@ FF_NXT2: |
|
|
|
; |
|
|
|
MD_FNCALL: ; USING HBX_BUF FOR CODE AREA |
|
|
|
; |
|
|
|
; EX DE,HL ; IF WE ARE |
|
|
|
; LD HL,(MD_FLOP) ; REPEATING THE |
|
|
|
; XOR A ; SAME OPERATION |
|
|
|
; SBC HL,DE ; AS PREVIOUS |
|
|
|
; EX DE,HL ; DONT COPY |
|
|
|
; JR Z,MD_FSAME ; IF THE SAME, DE=0 |
|
|
|
; LD (MD_FLOP),HL ; SAVE CURRENT OPERATION FOR NEXT TIME |
|
|
|
|
|
|
|
LD DE,HBX_BUF ; EXECUTE / START ADDRESS |
|
|
|
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 |
|
|
|
LD E,B ; CODE SIZE IN RELOCATABLE CODE |
|
|
|
; |
|
|
|
;MD_FSAME: |
|
|
|
; |
|
|
|
LD BC,(MD_FBAS) ; PUT BANK AND SECTOR DATA IN BC |
|
|
|
; |
|
|
|
@ -891,7 +903,7 @@ MD_SAVSTK .DW 0 |
|
|
|
; NO STATUS IS RETURNED |
|
|
|
;====================================================================== |
|
|
|
; |
|
|
|
MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
MD_FIDEN_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
; |
|
|
|
LD D,A ; SAVE CURRENT BANK |
|
|
|
; |
|
|
|
@ -914,7 +926,7 @@ MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
|
; |
|
|
|
; RET |
|
|
|
; |
|
|
|
MD_I_SZ .EQU $-MD_FIDENT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
MD_I_SZ .EQU $-MD_FIDEN_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|
; |
|
|
|
;====================================================================== |
|
|
|
; ERASE FLASH SECTOR. |
|
|
|
@ -1189,7 +1201,7 @@ MD_FFSEN .DB 00h ; FLASH FILES SYSTEM ENABLE |
|
|
|
;====================================================================== |
|
|
|
; |
|
|
|
#IF (MD_FDBG==1) |
|
|
|
.ECHO "MD_FIDENT_R " |
|
|
|
.ECHO "MD_FIDEN_R " |
|
|
|
.ECHO MD_I_SZ |
|
|
|
.ECHO "\n" |
|
|
|
; |
|
|
|
@ -1197,7 +1209,7 @@ MD_FFSEN .DB 00h ; FLASH FILES SYSTEM ENABLE |
|
|
|
.ECHO MD_R_SZ |
|
|
|
.ECHO "\n" |
|
|
|
; |
|
|
|
.ECHO "MD_VERI_R " |
|
|
|
.ECHO "MD_FVERI_R " |
|
|
|
.ECHO MD_V_SZ |
|
|
|
.ECHO "\n" |
|
|
|
; |
|
|
|
|