From 0d7a2c3c201698b4328ca9a4449119a5a1f4b28a Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sat, 16 Jan 2021 15:02:36 +0800 Subject: [PATCH 1/5] md.asm flash updates Flash relocating routine now only copies what is required rather than full 64 bytes every time. --- Source/HBIOS/flashlib.inc | 5 +++++ Source/HBIOS/md.asm | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/HBIOS/flashlib.inc b/Source/HBIOS/flashlib.inc index 9342a061..37e89be5 100644 --- a/Source/HBIOS/flashlib.inc +++ b/Source/HBIOS/flashlib.inc @@ -14,6 +14,7 @@ ; NO STATUS IS RETURNED ;====================================================================== ; + .DB MD_I_SZ ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_FIDEN_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY ; LD D,A ; SAVE CURRENT BANK @@ -53,6 +54,7 @@ MD_I_SZ .EQU $-MD_FIDEN_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED ; ON EXIT C RETURNS STATUS 0=SUCCESS NZ=FAIL ;====================================================================== ; + .DB MD_S_SZ ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_FERAS_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY ; PUSH AF ; SAVE CURRENT BANK @@ -120,6 +122,7 @@ MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED ; ON EXIT NO STATUS RETURNED ;====================================================================== ; + .DB MD_R_SZ ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_FREAD_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY ; LD H,C ; SECTOR @@ -168,6 +171,7 @@ MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED ; ON EXIT C RETURNS STATUS 0=SUCCESS NZ=FAIL ;====================================================================== ; + .DB MD_V_SZ ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_FVERI_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY ; LD H,C ; SECTOR @@ -219,6 +223,7 @@ MD_V_SZ .EQU $-MD_FVERI_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED ; ON EXIT NO STATUS IS RETURNED ;====================================================================== ; + .DB MD_W_SZ ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED MD_FWRIT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY ; LD H,C ; SECTOR diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 42a42ce1..b566bafe 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -835,9 +835,13 @@ FF_NXT2: ;====================================================================== ; MD_FNCALL: ; USING HBX_BUF FOR CODE AREA +; + LD B,0 ; RETREIVE THE + DEC HL ; CODE SIZE TO + LD C,(HL) ; BE COPIED + INC HL ; MAXIMUM 64 BYTES ; 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 From 4c65e244f5a8710c83ca3ffa750b3f4ca1357186 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Mon, 18 Jan 2021 02:07:19 +0800 Subject: [PATCH 2/5] Update flashlib.inc Add chip erase support. Consolidate code space check here. Only display on error. --- Source/HBIOS/flashlib.inc | 130 +++++++++++++++++++++++++++++++++----- 1 file changed, 115 insertions(+), 15 deletions(-) diff --git a/Source/HBIOS/flashlib.inc b/Source/HBIOS/flashlib.inc index 37e89be5..f9cc6fa3 100644 --- a/Source/HBIOS/flashlib.inc +++ b/Source/HBIOS/flashlib.inc @@ -37,9 +37,6 @@ MD_FIDEN_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY ; 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. @@ -102,9 +99,6 @@ MD_WT6: POP AF ; RETURN TO ORIGINAL BANK JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY ; 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. @@ -151,9 +145,6 @@ MD_FRD1:LD A,B ; CHANGE TO SOURCE BANK RET ; 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. @@ -203,9 +194,6 @@ MD_FVE2:POP AF RET ; 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. @@ -268,6 +256,118 @@ MD_FWR2:LD A,(HL) ; FROM THE SAME FLASH ADDRESS. JP HBX_BNKSEL ; RETURN TO ORIGINAL BANK WHICH IS OUR RAM BIOS COPY ; 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" +; +;====================================================================== +; ERASE FLASH CHIP. +; +; SELECT THE APPROPRIATE BANK / ADDRESS +; ISSUE ERASE COMMAND +; POLL TOGGLE BIT FOR COMPLETION STATUS. +; SELECT ORIGINAL BANK +; +; ON ENTRY BC CONTAINS BANK AND SECTOR DATA +; A CONTAINS CURRENT BANK +; ON EXIT A RETURNS STATUS 0=SUCCESS FF=FAIL +;====================================================================== +; + .DB MD_E_SZ ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED +MD_FERAC_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY +; + PUSH AF ; SAVE CURRENT BANK + LD A,B ; SELECT BANK + CALL HBX_BNKSEL ; TO PROGRAM +; + LD HL,$5555 ; LD A,$AA ; COMMAND + LD (HL),$AA ; LD ($5555),A ; SETUP + LD A,L ; LD A,$55 + LD ($2AAA),A ; LD ($2AAA),A + LD (HL),$80 ; LD A,$80 + LD (HL),$AA ; LD ($5555),A + LD A,L ; LD A,$AA + LD ($2AAA),A ; LD ($5555),A + LD (HL),$10 ; LD A,$55 + ; LD ($2AAA),A + ; LD A,$10 + ; LD ($5555),A +; +FF_WT2: LD A,(HL) ; DO TWO SUCCESSIVE READS FROM THE SAME FLASH ADDRESS. + LD C,(HL) ; IF TOGGLE BIT (BIT 6) + XOR C ; IS THE SAME ON BOTH READS + BIT 6,A ; THEN ERASE IS COMPLETE SO EXIT. + JR Z,FF_WT1 ; Z TRUE IF BIT 6=0 I.E. "NO TOGGLE" WAS DETECTED. +; + LD A,C ; OPERATION IS NOT COMPLETE. CHECK TIMEOUT BIT (BIT 5). + BIT 5,C ; IF NO TIMEOUT YET THEN LOOP BACK AND KEEP CHECKING TOGGLE STATUS + JR Z,FF_WT2 ; IF BIT 5=0 THEN RETRY; NZ TRUE IF BIT 5=1 +; + LD A,(HL) ; WE GOT A TIMEOUT. RECHECK TOGGLE BIT IN CASE WE DID COMPLETE + XOR (HL) ; THE OPERATION. DO TWO SUCCESSIVE READS. ARE THEY THE SAME? + BIT 6,A ; IF THEY ARE THEN OPERATION WAS COMPLETED + JR Z,FF_WT1 ; OTHERWISE ERASE OPERATION FAILED OR TIMED OUT. +; + LD (HL),$F0 ; WRITE DEVICE RESET + LD C,$FF ; SET FAIL STATUS + JR FF_WT3 +; +FF_WT1: LD C,0 ; SET SUCCESS STATUS +FF_WT3: POP AF +; LD A,B ; RETURN TO ORIGINAL BANK + JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY +; +MD_E_SZ .EQU $-MD_FERAC_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED + +;====================================================================== +; +; RELOCATABLE CODE SPACE REQUIREMENTS CHECK +; +;====================================================================== +; +MD_CSIZE .EQU 0 +; +#IF (MD_W_SZ>MD_CSIZE) +MD_CSIZE .SET MD_W_SZ +#ENDIF +#IF (MD_S_SZ>MD_CSIZE) +MD_CSIZE .SET MD_S_SZ +#ENDIF +#IF (MD_I_SZ>MD_CSIZE) +MD_CSIZE .SET MD_I_SZ +#ENDIF +#IF (MD_R_SZ>MD_CSIZE) +MD_CSIZE .SET MD_R_SZ +#ENDIF +#IF (MD_V_SZ>MD_CSIZE) +MD_CSIZE .SET MD_V_SZ +#ENDIF +#IF (MD_E_SZ>MD_CSIZE) +MD_CSIZE .SET MD_E_SZ +#ENDIF +; +#IF (MD_CSIZE>64) + .ECHO "Warning: Flash code exceeds available space by " + .ECHO MD_CSIZE-64 + .ECHO " bytes.\n" + .ECHO "MD_FIDEN_R " + .ECHO MD_I_SZ + .ECHO "\n" +; + .ECHO "MD_FREAD_R " + .ECHO MD_R_SZ + .ECHO "\n" +; + .ECHO "MD_FVERI_R " + .ECHO MD_V_SZ + .ECHO "\n" +; + .ECHO "MD_FERAS_R " + .ECHO MD_S_SZ + .ECHO "\n" +; + .ECHO "MD_FWRIT_R " + .ECHO MD_W_SZ + .ECHO "\n" +; + .ECHO "MD_FERAC_R " + .ECHO MD_E_SZ + .ECHO "\n" +#ENDIF \ No newline at end of file From e21fa6477e938e0c010662d5b35470f71ae11353 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Mon, 18 Jan 2021 02:08:01 +0800 Subject: [PATCH 3/5] Update md.asm Move code space check into flashlib --- Source/HBIOS/md.asm | 51 --------------------------------------------- 1 file changed, 51 deletions(-) diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index b566bafe..eb4c2446 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -925,57 +925,6 @@ MD_FFMSGENA .DB "ENABLED$" MD_F4KBUF .FILL 4096,$FF MD_FFSEN .DB 00h ; FLASH FILES SYSTEM ENABLE ; -;====================================================================== -; -; RELOCATABLE CODE SPACE REQUIREMENTS CHECK -; -;====================================================================== -; -#IF (MD_FDBG==1) - .ECHO "MD_FIDEN_R " - .ECHO MD_I_SZ - .ECHO "\n" -; - .ECHO "MD_FREAD_R " - .ECHO MD_R_SZ - .ECHO "\n" -; - .ECHO "MD_FVERI_R " - .ECHO MD_V_SZ - .ECHO "\n" -; - .ECHO "MD_FERAS_R " - .ECHO MD_S_SZ - .ECHO "\n" - - .ECHO "MD_FWRIT_R " - .ECHO MD_W_SZ - .ECHO "\n" -#ENDIF -; -MD_CSIZE .EQU 0 -; -#IF (MD_W_SZ>MD_CSIZE) -MD_CSIZE .SET MD_W_SZ -#ENDIF -#IF (MD_S_SZ>MD_CSIZE) -MD_CSIZE .SET MD_S_SZ -#ENDIF -#IF (MD_I_SZ>MD_CSIZE) -MD_CSIZE .SET MD_I_SZ -#ENDIF -#IF (MD_R_SZ>MD_CSIZE) -MD_CSIZE .SET MD_R_SZ -#ENDIF -#IF (MD_V_SZ>MD_CSIZE) -MD_CSIZE .SET MD_V_SZ -#ENDIF -; -#IF (MD_CSIZE>HBX_BUFSIZ) - .ECHO "Warning: Flash code exceeds available space by " - .ECHO MD_CSIZE-HBX_BUFSIZ - .ECHO " bytes.\n" -#ENDIF #ENDIF ; MD_RWFNADR .DW 0 From 47d2ff82a98dcdccd75ca71499c4410fdb3a9c01 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Mon, 18 Jan 2021 02:10:10 +0800 Subject: [PATCH 4/5] Update updater.asm Add support for other 512K flash devices. Devices that do not support sector erase will be chip erased prior to writing. Only AM29F040 tested. Additional debug options added --- Source/HBIOS/updater.asm | 158 +++++++++++++++++++++++++++++---------- 1 file changed, 118 insertions(+), 40 deletions(-) diff --git a/Source/HBIOS/updater.asm b/Source/HBIOS/updater.asm index bf9a7a0e..4b9906cb 100644 --- a/Source/HBIOS/updater.asm +++ b/Source/HBIOS/updater.asm @@ -68,14 +68,16 @@ ; OPTION (T) - DEBUG OPTION - TEST TIMER FOR 32S, 16S, 8S, 4S, 2S & 1S ; ; -; V.DEV 13/1/2021 PHIL SUMMERS, DIFFICULTYLEVELHIGH@GMAIL.COM +; V.DEV 18/1/2021 PHIL SUMMERS, DIFFICULTYLEVELHIGH@GMAIL.COM ; b1ackmai1er ON RETROBREWCOMPUTERS.ORG ; ; ; NOTES: ; TESTED WITH TERATERM XMODEM. -; ONLY SST39F040 FLASH CHIP IS SUPPORTED DUE TO 4K SECTOR REQUIREMENT. +; PARTIAL WRITES CAN BE COMPLETED WITH 39SF040 CHIPS +; OTHER CHIPS REQUIRE ENTIRE FLASH TO BE ERASED BEFORE BEFORE BEING WRITTEN. ; SBC V2-005 MEGAFLASH REQUIRED FOR 1MB FLASH SUPPORT. +; ASSUMES BOTH CHIPS ARE SAME TYPE ; FAILURE HANDLING HAS NOT BEEN TESTED. ; TIMING BROADLY CALIBRATED ON A Z80 SBC-V2 ; UNABIOS NOT SUPPORTED @@ -183,7 +185,6 @@ RESTART: LD A,0 JR Z,CHPFND ; YES IT IS ... ; -#IF (XFUDBG) LD HL,$A401 ; IS IT A 29F040 XOR A SBC HL,BC @@ -211,12 +212,11 @@ RESTART: LD HL,$A4C2 ; IS IT AN MX29F040 SBC HL,BC LD A,5 -; -#ENDIF ; JP NZ,FAILBC ; SUPPORTED CHIP NOT FOUND ; -CHPFND: LD (ERATYP),A ; SAVE ERASE TYPE +CHPFND: LD A,2 + LD (ERATYP),A ; SAVE ERASE TYPE LD BC,$F8F0 ; GET CPU SPEED RST 08 ; AND MULTIPLY @@ -227,6 +227,9 @@ CHPFND: LD (ERATYP),A ; SAVE ERASE TYPE ; MENULP: LD DE,$0000 ; ENSURE WE ARE STARTING LD (MD_FBAS),DE ; AT BANK 0 SECTOR 0 + + LD HL,ERATYP + RES 7,(HL) ; LD HL,msgCRLF CALL PRTSTR0 @@ -256,20 +259,29 @@ MENULP: LD DE,$0000 ; ENSURE WE ARE STARTING JP Z,OPTIOND ; FLASH ; CP '1' ; CALCULATE - JP Z,OPTION1 ; CRC FLASH #1 + JP Z,OPTION1 ; CRC 512K FLASH ; CP '2' ; CALCULATE - JP Z,OPTION2 ; CRC FLASH #2 + JP Z,OPTION2 ; CRC 1024K FLASH ; #IF (XFUDBG) + CP '3' ; CALCULATE + JP Z,OPTION3 ; CRC FLASH #2 +; CP 'T' ; TEST TIMEOUT JP Z,OPTIONT ; LOOP ; CP 'H' ; HALF JP Z,OPTIONH ; SPEED SWITCH ; - CP 'F' ; DUMP - JP Z,OPTIONF ; BUFFER + CP 'F' ; DEBUG + JP Z,OPTIONF ; DUMP +; + CP 'E' ; ERASE + JP Z,OPTIONE ; CHIP #1 +; + CP 'Z' ; ERASE + JP Z,OPTIONR ; CHIP #2 #ENDIF ; JR MENULP @@ -443,9 +455,21 @@ Die1: LD B,BF_SYSRESET ; SYSTEM RESTART WSEC: CALL DISPROG ; DISPLAY PROGRESS ; -WSEC1: LD HL,MD_FERAS ; ERASE - CALL MD_FNCALL ; AND WRITE - LD IX,sector4k ; THIS +WSEC1: LD A,(ERATYP) ; SECTOR + OR A ; ERASE? + JP Z,WSEC4 +; + JP M,WSEC3 ; SKIP ERASE? +; + LD HL,MD_FERAC ; SETUP CHIP ERASE + SET 7,A ; SET FLAG SO + LD (ERATYP),A ; WE DONT ERASE AGAIN + JR WSEC2 +; +WSEC4: LD HL,MD_FERAS ; SET ERASE SECTOR +WSEC2: CALL MD_FNCALL ; ERASE CHIP OR SECTOR +; +WSEC3: LD IX,sector4k ; WRITE THIS LD HL,MD_FWRIT ; BANK / SECTOR CALL MD_FNCALL ; @@ -468,7 +492,12 @@ NOVER: LD DE,sector4k ; POINT BACK TO START OF 4K BUFFER LD (HL),A ; RESET SECTOR TO 0 INC HL INC (HL) ; NEXT BANK - JR NXTS3 +; + CP $10 ; IF WE ARE AT THE + JR NZ,NXTS3 ; START OF A NEW + LD HL,ERATYP ; CHIP THEN ALLOW + RES 7,(HL) ; CHIP ERASE BY + JR NXTS3 ; RESETTING FLAG ; NXTS2: LD A,$10 ; NEXT SECTOR ADD A,(HL) ; EACH SECTOR IS $1000 @@ -605,9 +634,20 @@ OPTIOND:CALL COUTON ; TURN ON OUTPUT CP 'Y' ; PROCEED JP NZ,MENULP DUPL: LD HL,msgCopying - CALL PRTSTR0 + CALL PRTSTR0 +; + LD A,(ERATYP) ; CHECK IF WE + OR A ; NEED TO DO + JR Z,NOERA1 ; A CHIP ERASE ; - LD B,16 ; LOOP THROUGH 16 BANKS + LD HL,$1000 + LD (MD_FBAS),HL + LD HL,MD_FERAC ; ERASE + CALL MD_FNCALL ; CHIP #2 + OR A + JP FAILWF +; +NOERA1: LD B,16 ; LOOP THROUGH 16 BANKS ; XOR A ; START AT LD (MD_BANK),A ; BANK 0 @@ -628,13 +668,17 @@ NXTS: PUSH BC ; LD HL,MD_BANK ; SET CHIP #2 SET 4,(HL) +; + LD A,(ERATYP) ; SKIP ERASE + OR A ; IF SECTOR ERASE + JR NZ,NOERA2 ; IS NOT SUPPORTED ; LD HL,MD_FERAS ; ERASE SECTOR CALL MD_FNCALL ; ON ROM #2 OR A JR NZ,VERF ; - LD IX,sector4k ; WRITE SECTOR +NOERA2: LD IX,sector4k ; WRITE SECTOR LD HL,MD_FWRIT ; ON ROM #2 CALL MD_FNCALL ; @@ -729,18 +773,22 @@ OPTIONH:LD A,8 ; TURN ON THE SBC-V2-004+ ; OPTIONF:LD HL,msgCRLF ; DISPLAY CALL PRTSTR0 ; BANK - LD C,'B' ; SECTOR + LD C,'b' ; SECTOR CALL CONOUT ; TIMEOUT - LD A,(MD_BANK) + LD A,(MD_BANK) ; CHIP CALL PRTHEXB - LD C,'S' + LD C,'s' CALL CONOUT LD A,(MD_SECT) CALL PRTHEXB - LD C,'T' + LD C,'t' CALL CONOUT LD A,(TmoFct) CALL PRTHEXB + LD C,'c' + CALL CONOUT + LD A,(ERATYP) + CALL PRTHEXB ; LD HL,msgCRLF ; DISPLAY CALL PRTSTR0 ; ACK/NAK BYTE @@ -769,11 +817,27 @@ DMPBUF: LD A,(HL) ; PACKET LD HL,msgCRLF CALL PRTSTR0 POP HL -DMPBUF1: - - INC HL +DMPBUF1:INC HL DJNZ DMPBUF JP MENULP +; +OPTIONR:LD HL,msgErase ; DISPLAY + CALL PRTSTR0 ; ERASE CHIP + LD HL,$1000 ; SET CHIP + LD (MD_FBAS),HL ; ADDRESS + LD HL,MD_FERAC ; ERASE + CALL MD_FNCALL ; AND WRITE + OR A + JP NZ,FAILWF + JP Done1 +; +OPTIONE:LD HL,msgErase ; DISPLAY + CALL PRTSTR0 ; ERASE CHIP + LD HL,MD_FERAC ; ERASE + CALL MD_FNCALL ; AND WRITE + OR A + JP NZ,FAILWF + JP Done1 #ENDIF ; SEROUT: PUSH HL ; SERIAL OUTPUT CHARACTER IN C @@ -889,14 +953,19 @@ HEXCONV:AND 0FH ; CONVERT LOW NIBBLE OF A TO ASCII HEX DAA RET -OPTION1:LD HL,$0000 - LD (MD_FBAS),HL - LD C,$00 +OPTION3:LD HL,$1000 ; CRC32 STARTING + LD (MD_FBAS),HL ; BANK $10 SECTOR $00 + LD B,16 ; 16 BANKS (512K) + JR CALCCRC + +OPTION1:LD HL,$0000 ; CRC32 STARTING + LD (MD_FBAS),HL ; BANK $00 SECTOR $00 + LD B,16 ; 16 BANKS (512K) JR CALCCRC ; -OPTION2:LD HL,$1000 - LD (MD_FBAS),HL - LD C,$10 +OPTION2:LD HL,$0000 ; CRC32 STARTING + LD (MD_FBAS),HL ; BANK $00 SECTOR $00 + LD B,32 ; 32 BANKS (1024K) ; CALCCRC:CALL COUTON ; TURN ON OUTPUT ; @@ -907,8 +976,8 @@ CALCCRC:CALL COUTON ; TURN ON OUTPUT LD (CRC),HL ; START CRC LD (CRC+2),HL ; CONDITION - LD B,16 ; LOOP THROUGH -CRCLP1: PUSH BC ; 16 BANKS +; LD B,16 ; +CRCLP1: PUSH BC ; LOOP THROUGH ALL BANKS LD B,8 ; LOOP THROUGH CRCLP2: PUSH BC ; 8 SECTORS ; @@ -1048,10 +1117,15 @@ MD_FSTART: .EQU $ ; FLASH ROUTINES WHICH GET RELOCATED TO HIGH MEMORY ; IX POINTS TO DATA TO BE WRITTEN ; ON EXIT A NO STATUS IS RETURNED ; +; MD_FERAC_R - ERASE FLASH CHIP +; ON ENTRY MD_FBAS HAS BEEN SET WITH BANK AND SECTOR BEING ACCESSED +; HL POINTS TO THE ROUTINE TO BE RELOCATED AND CALLED +; ON EXIT A RETURNS STATUS 0=SUCCESS FF=FAIL +; ; GENERAL OPERATION: -; COPY FLASH CODE TO UPPER MEMORY -; CALL RELOCATED FLASH CODE -; RETURN WITH ID CODE. +; FLASH LIBRARY CODE NEEDS TO BE RELOCATED TO UPPER MEMORY +; STACK NEEDS TO BE SETUP IN UPPER MEMORY +; DEPENDING ON ROUTINE, RETURNS WITH STATUS CODE IN A. ;====================================================================== ; MD_FNCALL: @@ -1080,7 +1154,7 @@ MD_FERAS .EQU HBX_START-MD_CSIZ+MD_FERAS_R-MD_FSTART ; CALL ADDRESS FOR ERASE FL MD_FREAD .EQU HBX_START-MD_CSIZ+MD_FREAD_R-MD_FSTART ; CALL ADDRESS FOR READ FLASH SECTOR MD_FVERI .EQU HBX_START-MD_CSIZ+MD_FVERI_R-MD_FSTART ; CALL ADDRESS FOR VERIFY FLASH SECTOR MD_FWRIT .EQU HBX_START-MD_CSIZ+MD_FWRIT_R-MD_FSTART ; CALL ADDRESS FOR WRITE FLASH SECTOR -;MD_FERAC .EQU HBX_START-MD_CSIZ+MD_FERAC_R-MD_FSTART ; CALL ADDRESS FOR ERASE FLASH CHIP +MD_FERAC .EQU HBX_START-MD_CSIZ+MD_FERAC_R-MD_FSTART ; CALL ADDRESS FOR ERASE FLASH CHIP ; ; Message strings ; @@ -1092,7 +1166,8 @@ msgBank: .DB CR,LF,"BANK ",0 msgUnsupC: .DB CR,LF,"FLASH CHIP NOT SUPPORTED",CR,LF,0 msgReboot: .DB CR,LF,"REBOOTING ...",CR,LF,0 msgCopying: .DB CR,LF,"COPYING ...",CR,LF,0 -msgCalc: .DB CR,LF,"CALCULATING CRC32 ...",CR,LF,0 +msgCalc: .DB CR,LF,"CALCULATING ...",CR,LF,0 +msgErase: .DB CR,LF,"ERASING ...",CR,LF,0 msgCRC32: .DB CR,LF,CR,LF,"CRC32 : ",0 msgFailWrt: .DB CR,LF,"FLASH WRITE FAILED",CR,LF,0 msgFailure: .DB CR,LF,"TRANSMISSION FAILED",CR,LF,0 @@ -1104,12 +1179,15 @@ msgBegin: .DB CR,LF,"(R) Reboot" .DB CR,LF,"(U) Begin Update" .DB CR,LF,"(X) Exit to Rom Loader" .DB CR,LF,"(D) Duplicate Flash #1 to #2" - .DB CR,LF,"(1) CRC Flash #1" - .DB CR,LF,"(2) CRC Flash #2" + .DB CR,LF,"(1) CRC 512K Flash" + .DB CR,LF,"(2) CRC 1024K Flash" #IF (XFUDBG) .DB CR,LF,"(H) Select half speed" .DB CR,LF,"(T) Test timeout" - .DB CR,LF,"(F) Dump last packet" + .DB CR,LF,"(F) Dump Debug Data" + .DB CR,LF,"(E) Erase Flash chip #1" + .DB CR,LF,"(Z) Erase Flash chip #2" + .DB CR,LF,"(3) CRC Flash chip #2" #ENDIF .DB CR,LF,CR,LF,"Select : ",0 msgSuccess: .DB CR,LF,CR,LF,"COMPLETED WITHOUT ERRORS ",CR,LF,0 From 76eb6cff48f1bacbeb0bdb129c5a72fc04eaff46 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Mon, 18 Jan 2021 04:26:10 +0800 Subject: [PATCH 5/5] Update updater.asm Remove test code --- Source/HBIOS/updater.asm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Source/HBIOS/updater.asm b/Source/HBIOS/updater.asm index 4b9906cb..89460c93 100644 --- a/Source/HBIOS/updater.asm +++ b/Source/HBIOS/updater.asm @@ -215,8 +215,7 @@ RESTART: ; JP NZ,FAILBC ; SUPPORTED CHIP NOT FOUND ; -CHPFND: LD A,2 - LD (ERATYP),A ; SAVE ERASE TYPE +CHPFND: LD (ERATYP),A ; SAVE ERASE TYPE LD BC,$F8F0 ; GET CPU SPEED RST 08 ; AND MULTIPLY