diff --git a/Source/HBIOS/updater.asm b/Source/HBIOS/updater.asm index 6202ed77..e230ed77 100644 --- a/Source/HBIOS/updater.asm +++ b/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 $