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

Loading…
Cancel
Save