Browse Source

Update updater.asm

Revert AF/AF' PUSH/POP changes to cater for other banking routines other than SBC
pull/181/head
b1ackmai1er 5 years ago
parent
commit
f483edfeaa
  1. 59
      Source/HBIOS/updater.asm

59
Source/HBIOS/updater.asm

@ -125,7 +125,7 @@ HBX_START .EQU $FE00
#DEFINE HB_DI DI #DEFINE HB_DI DI
#DEFINE HB_EI EI #DEFINE HB_EI EI
; ;
XFUDBG .EQU 1
XFUDBG .EQU 0
; ;
.ORG USR_LOC .ORG USR_LOC
; ;
@ -1057,16 +1057,16 @@ MD_FNCALL:
LD DE,$0000 LD DE,$0000
LD BC,(MD_FBAS) ; PUT BANK AND SECTOR DATA IN BC LD BC,(MD_FBAS) ; PUT BANK AND SECTOR DATA IN BC
; ;
EX AF,AF'
PUSH AF
; EX AF,AF'
; PUSH AF
LD A,(HB_CURBNK) ; WE ARE STARTING IN HB_CURBNK LD A,(HB_CURBNK) ; WE ARE STARTING IN HB_CURBNK
; ;
HB_DI HB_DI
CALL MD_FJPHL CALL MD_FJPHL
HB_EI HB_EI
; ;
POP AF
EX AF,AF'
; POP AF
; EX AF,AF'
; ;
LD A,C ; RETURN WITH STATUS IN A LD A,C ; RETURN WITH STATUS IN A
RET RET
@ -1124,7 +1124,8 @@ MD_FIDEN_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
; ;
MD_FERAS_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY MD_FERAS_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
; ;
EX AF,AF' ; SAVE CURRENT BANK
; EX AF,AF' ; SAVE CURRENT BANK
PUSH AF
LD A,B ; SELECT BANK LD A,B ; SELECT BANK
CALL HBX_BNKSEL ; TO PROGRAM CALL HBX_BNKSEL ; TO PROGRAM
; ;
@ -1165,7 +1166,8 @@ 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: EX AF,AF' ; RETURN TO ORIGINAL BANK
MD_WT6: ;EX AF,AF' ; RETURN TO ORIGINAL BANK
POP AF
JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY
; ;
;====================================================================== ;======================================================================
@ -1190,19 +1192,21 @@ MD_FREAD_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD H,C ; SECTOR LD H,C ; SECTOR
LD L,D ; ADDRESS LD L,D ; ADDRESS
; ;
EX AF,AF' ; PUT DESTINATION BANK IN AF'
; EX AF,AF' ; PUT DESTINATION BANK IN AF'
; ;
PUSH AF
MD_FRD1: MD_FRD1:
LD A,B ; PUT SOURCE BANK IN AF 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
POP AF
PUSH AF PUSH AF
CALL HBX_BNKSEL ; TO WRITE CALL HBX_BNKSEL ; TO WRITE
POP AF
; 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
; ;
INC HL ; NEXT SOURCE LOCATION INC HL ; NEXT SOURCE LOCATION
INC IX ; NEXT DESTINATION LOCATION INC IX ; NEXT DESTINATION LOCATION
@ -1211,6 +1215,7 @@ MD_FRD1:
BIT 4,D ; WE HAVE DONE ONE SECTOR BIT 4,D ; WE HAVE DONE ONE SECTOR
JR Z,MD_FRD1 JR Z,MD_FRD1
; ;
POP AF
RET RET
; ;
;====================================================================== ;======================================================================
@ -1234,20 +1239,24 @@ MD_FVERI_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD H,C ; SECTOR LD H,C ; SECTOR
LD L,D ; ADDRESS LD L,D ; ADDRESS
; ;
EX AF,AF' ; PUT SOURCE BANK IN AF' (RAM)
; EX AF,AF' ; PUT SOURCE BANK IN AF' (RAM)
PUSH AF
; ;
MD_FVE1: MD_FVE1:
LD A,B ; SELECT BANK LD A,B ; SELECT BANK
CALL HBX_BNKSEL ; TO READ ; SWITCH TO FLASH BANK CALL HBX_BNKSEL ; TO READ ; SWITCH TO FLASH BANK
LD A,(HL) ; READ BYTE
LD C,(HL) ; READ BYTE
; ;
EX AF,AF' ; SELECT BANK ; SWITCH TO RAM BANK
; EX AF,AF' ; SELECT BANK ; SWITCH TO RAM BANK
POP AF
PUSH AF PUSH AF
CALL HBX_BNKSEL ; TO VERIFY AGAINST CALL HBX_BNKSEL ; TO VERIFY AGAINST
POP AF
EX AF,AF'
; POP AF
; EX AF,AF'
; ;
LD A,C
SUB (IX+0) ; COMPARE BYTE SUB (IX+0) ; COMPARE BYTE
LD C,A
JR NZ,MD_FVE2 ; EXIT IF MISMATCH JR NZ,MD_FVE2 ; EXIT IF MISMATCH
; ;
INC HL ; NEXT SOURCE LOCATION INC HL ; NEXT SOURCE LOCATION
@ -1257,9 +1266,9 @@ MD_FVE1:
BIT 4,D ; WE HAVE DONE ONE SECTOR BIT 4,D ; WE HAVE DONE ONE SECTOR
JR Z,MD_FVE1 JR Z,MD_FVE1
; ;
MD_FVE2:
LD C,A ; SET STATUS
EX AF,AF'
MD_FVE2:POP AF
; LD C,A ; SET STATUS
; EX AF,AF'
; ;
RET RET
; ;
@ -1284,11 +1293,12 @@ 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
; ;
MD_FWRI1:
PUSH AF PUSH AF
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
; POP AF
; EX AF,AF' ; SAVE CURRENT BANK
; ;
LD C,(IX+0) ; READ IN BYTE LD C,(IX+0) ; READ IN BYTE
; ;
@ -1315,12 +1325,15 @@ 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
; EX AF,AF' ; RESTORE CURRENT BANK
POP AF
PUSH AF
; ;
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
JP HBX_BNKSEL ; RETURN TO ORIGINAL BANK WHICH IS OUR RAM BIOS COPY JP HBX_BNKSEL ; RETURN TO ORIGINAL BANK WHICH IS OUR RAM BIOS COPY
; ;
MD_FEND .EQU $ MD_FEND .EQU $

Loading…
Cancel
Save