Browse Source

Update md.asm

Preserve AF across calls to BNKSEL in Flash Filesystem.
pull/199/head
Wayne Warthen 5 years ago
parent
commit
2987c4950e
  1. 23
      Source/HBIOS/md.asm

23
Source/HBIOS/md.asm

@ -916,6 +916,9 @@ MD_FIDEN_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
; RET ; RET
; ;
MD_I_SZ .EQU $-MD_FIDEN_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_I_SZ .EQU $-MD_FIDEN_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
.ECHO "MD_FIDEN_R occupies "
.ECHO MD_I_SZ
.ECHO " bytes.\n"
; ;
;====================================================================== ;======================================================================
; ERASE FLASH SECTOR. ; ERASE FLASH SECTOR.
@ -979,6 +982,9 @@ MD_WT6: EX AF,AF' ; RETURN TO ORIGINAL BANK
; RET ; RET
; ;
MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
.ECHO "MD_FERAS_R occupies "
.ECHO MD_S_SZ
.ECHO " bytes.\n"
; ;
;====================================================================== ;======================================================================
; FLASH READ SECTOR. ; FLASH READ SECTOR.
@ -1003,14 +1009,16 @@ MD_FREAD_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD L,D ; ADDRESS LD L,D ; ADDRESS
; ;
EX AF,AF' ; PUT DESTINATION BANK IN AF' EX AF,AF' ; PUT DESTINATION BANK IN AF'
LD A,B ; PUT SOURCE BANK IN AF
; ;
MD_FRD1: MD_FRD1:
LD A,B ; PUT SOURCE BANK IN AF
CALL HBX_BNKSEL ; READ ; SWITCH TO SOURCE BANK CALL HBX_BNKSEL ; READ ; SWITCH TO SOURCE BANK
LD C,(HL) ; BYTE LD C,(HL) ; BYTE
; ;
EX AF,AF' ; SELECT BANK ; SWITCH DESTINATION BANK EX AF,AF' ; SELECT BANK ; SWITCH DESTINATION BANK
PUSH AF
CALL HBX_BNKSEL ; TO WRITE CALL HBX_BNKSEL ; TO WRITE
POP AF
LD (IX+0),C ; WRITE BYTE LD (IX+0),C ; WRITE BYTE
EX AF,AF' ; ; PUT SOURCE BANK IN AF EX AF,AF' ; ; PUT SOURCE BANK IN AF
; ;
@ -1024,6 +1032,9 @@ MD_FRD1:
RET RET
; ;
MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
.ECHO "MD_FREAD_R occupies "
.ECHO MD_R_SZ
.ECHO " bytes.\n"
; ;
;====================================================================== ;======================================================================
; FLASH VERIFY SECTOR. ; FLASH VERIFY SECTOR.
@ -1054,7 +1065,9 @@ MD_FVE1:
LD A,(HL) ; READ BYTE LD A,(HL) ; READ BYTE
; ;
EX AF,AF' ; SELECT BANK ; SWITCH TO RAM BANK EX AF,AF' ; SELECT BANK ; SWITCH TO RAM BANK
PUSH AF
CALL HBX_BNKSEL ; TO VERIFY AGAINST CALL HBX_BNKSEL ; TO VERIFY AGAINST
POP AF
EX AF,AF' EX AF,AF'
; ;
SUB (IX+0) ; COMPARE BYTE SUB (IX+0) ; COMPARE BYTE
@ -1074,6 +1087,9 @@ MD_FVE2:
RET RET
; ;
MD_V_SZ .EQU $-MD_FVERI_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_V_SZ .EQU $-MD_FVERI_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
.ECHO "MD_FVERI_R occupies "
.ECHO MD_V_SZ
.ECHO " bytes.\n"
; ;
;====================================================================== ;======================================================================
; FLASH WRITE SECTOR. ; FLASH WRITE SECTOR.
@ -1097,7 +1113,9 @@ MD_FWRIT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD L,D ; ADDRESS LD L,D ; ADDRESS
; ;
MD_FWRI1: MD_FWRI1:
PUSH AF
CALL HBX_BNKSEL ; SELECT BANK TO READ CALL HBX_BNKSEL ; SELECT BANK TO READ
POP AF
EX AF,AF' ; SAVE CURRENT BANK EX AF,AF' ; SAVE CURRENT BANK
; ;
LD C,(IX+0) ; READ IN BYTE LD C,(IX+0) ; READ IN BYTE
@ -1136,6 +1154,9 @@ MD_FW7: LD A,(HL) ; FROM THE SAME FLASH ADDRESS.
; RET ; RET
; ;
MD_W_SZ .EQU $-MD_FWRIT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_W_SZ .EQU $-MD_FWRIT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
.ECHO "MD_FWRIT_R occupies "
.ECHO MD_W_SZ
.ECHO " bytes.\n"
; ;
;====================================================================== ;======================================================================
; ;

Loading…
Cancel
Save