diff --git a/Source/HBIOS/updater.asm b/Source/HBIOS/updater.asm index 3fe4f6b0..6202ed77 100644 --- a/Source/HBIOS/updater.asm +++ b/Source/HBIOS/updater.asm @@ -80,7 +80,19 @@ ; TIMING BROADLY CALIBRATED ON A Z80 SBC-V2 ; UNABIOS NOT SUPPORTED ; -; MAXIMUM SERIAL SPEED LIMITATIONS +; TERATERM: +; +; MACROS CAN BE USED TO AUTOMATE SENDING ROM UPDATES OR ROMS IMAGES +; +; EXAMPLE MACRO FILE TO SEND *.UPD FILE, SELECT CHECKSUM MODE AND DISPLAY CRC32 +; +; ;XMODEM send, checksum, display CRC32 +; xmodemsend '\\DESKTOP-FI43VI2\Users\Phillip\Documents\GitHub\RomWBW\Binary\SBC_std_cust.upd' 1 +; crc32file crc '\\DESKTOP-FI43VI2\Users\Phillip\Documents\GitHub\RomWBW\Binary\SBC_std_cust.rom' +; sprintf '0x%08X' crc +; messagebox inputstr 'CRC32 = ' +; +; MAXIMUM SERIAL SPEED LIMITATIONS: ; ; SBC-V2 UART NO FLOW CONTROL 2MHZ | 9600 ; SBC-V2 UART NO FLOW CONTROL 4MHZ | 19200 @@ -163,10 +175,47 @@ RESTART: LD HL,MD_FIDEN ; IDENTIFY CHIP CALL MD_FNCALL ; AT THIS BANK/SECTOR - LD HL,$B7BF ; FAIL - XOR A ; IF FLASH - SBC HL,BC ; CHIP IS - JP NZ,FAILBC ; NOT SUPPORTED + + LD HL,$B7BF ; IS IT A 39SF040 + XOR A + SBC HL,BC + LD A,0 + JR Z,CHPFND ; YES IT IS ... +; +#IF (XFUDBG) + LD HL,$A401 ; IS IT A 29F040 + XOR A + SBC HL,BC + LD A,1 + JR Z,CHPFND ; YES IT IS ... +; + LD HL,$131F ; IS IT AN AT49F040 + XOR A + SBC HL,BC + LD A,2 + JR Z,CHPFND ; YES IT IS +; + LD HL,$A41F ; IS IT AN AT29C040 + XOR A + SBC HL,BC + LD A,3 + JR Z,CHPFND ; YES IT IS +; + LD HL,$E220 ; IS IT AN M29F040 + XOR A + SBC HL,BC + LD A,4 + JR Z,CHPFND ; YES IT IS +; + 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 LD BC,$F8F0 ; GET CPU SPEED RST 08 ; AND MULTIPLY @@ -182,22 +231,6 @@ MENULP: LD DE,$0000 ; ENSURE WE ARE STARTING CALL PRTSTR0 CALL MENU ; DISPLAY MENU ; -#IF (XFUDBG) - LD C,'B' - CALL CONOUT - LD A,(MD_BANK) - CALL PRTHEXB - LD C,'S' - CALL CONOUT - LD A,(MD_SECT) - CALL PRTHEXB - LD C,'T' - CALL CONOUT - LD A,(TmoFct) - CALL PRTHEXB - LD C,':' - CALL CONOUT -#ENDIF CALL GETINP ; GET SELECTION ; CP 'U' ; BEGIN @@ -233,6 +266,9 @@ MENULP: LD DE,$0000 ; ENSURE WE ARE STARTING ; CP 'H' ; HALF JP Z,OPTIONH ; SPEED SWITCH +; + CP 'F' ; DUMP + JP Z,OPTIONF ; BUFFER #ENDIF ; JR MENULP @@ -262,7 +298,7 @@ GetNewPacket: LD HL,retrycnt ; WE RETRY 20 TIMES BEFORE GIVING UP LD (HL),20 ; -NPloop: LD B,5 ; 5 SECONDS OF TIMEOUT BEFORE EACH NEW BLOCK +NPloop: LD B,6 ; 6 SECONDS OF TIMEOUT BEFORE EACH NEW BLOCK CALL GetCharTmo JP NC,NotPacketTimeout ; @@ -404,11 +440,7 @@ Die1: LD B,BF_SYSRESET ; SYSTEM RESTART CALL $FFF0 ; CALL HBIOS RET -WSEC: ;PUSH HL ; WRITE A - ;PUSH BC ; FLASH - ;PUSH DE ; SECTOR -; - CALL DISPROG ; DISPLAY PROGRESS +WSEC: CALL DISPROG ; DISPLAY PROGRESS ; WSEC1: LD HL,MD_FERAS ; ERASE CALL MD_FNCALL ; AND WRITE @@ -425,9 +457,7 @@ WSEC1: LD HL,MD_FERAS ; ERASE CALL MD_FNCALL LD (VERRES),A ; SAVE STATUS ; -NOVER: ;POP DE ; - LD DE,sector4k ; POINT BACK TO START OF 4K BUFFER - ;PUSH DE +NOVER: LD DE,sector4k ; POINT BACK TO START OF 4K BUFFER ; LD HL,MD_FBAS LD A,(HL) ; DID WE JUST @@ -444,9 +474,6 @@ NXTS2: LD A,$10 ; NEXT SECTOR LD (HL),A ; SO WE JUST INCREASE HIGH BYTE ; NXTS3: LD A,(VERRES) ; EXIT WITH STATUS -; POP DE -; POP BC -; POP HL RET ; DISPROG:LD A,(BLKCOUT) ; SKIP OUTPUT @@ -698,6 +725,54 @@ OPTIONH:LD A,8 ; TURN ON THE SBC-V2-004+ LD HL,TmoFct ; AND ADJUST SRL (HL) ; DELAY FACTOR (/2) JP MENULP ; BACK TO MENU +; +OPTIONF:LD HL,msgCRLF ; DISPLAY + CALL PRTSTR0 ; BANK + LD C,'B' ; SECTOR + CALL CONOUT ; TIMEOUT + LD A,(MD_BANK) + CALL PRTHEXB + LD C,'S' + CALL CONOUT + LD A,(MD_SECT) + CALL PRTHEXB + LD C,'T' + CALL CONOUT + LD A,(TmoFct) + CALL PRTHEXB +; + LD HL,msgCRLF ; DISPLAY + CALL PRTSTR0 ; ACK/NAK BYTE + LD HL,packet ; DISPLAY + LD B,3 ; LAST +DMPBUF2:LD A,(HL) ; NUMBERS + CALL PRTHEXB + LD C,' ' + CALL CONOUT + INC HL + DJNZ DMPBUF2 + LD HL,msgCRLF + CALL PRTSTR0 + LD B,128 ; DISPLAY + LD HL,packet+3 ; LAST +DMPBUF: LD A,(HL) ; PACKET + CALL PRTHEXB ; CONTENTS + LD C,' ' + CALL CONOUT + LD A,B + SUB 2 + AND %00001111 + CP %00001111 + JR NZ,DMPBUF1 + PUSH HL + LD HL,msgCRLF + CALL PRTSTR0 + POP HL +DMPBUF1: + + INC HL + DJNZ DMPBUF + JP MENULP #ENDIF ; SEROUT: PUSH HL ; SERIAL OUTPUT CHARACTER IN C @@ -1285,6 +1360,7 @@ msgBegin: .DB CR,LF,"(R) Reboot" #IF (XFUDBG) .DB CR,LF,"(H) Select half speed" .DB CR,LF,"(T) Test timeout" + .DB CR,LF,"(F) Dump last packet" #ENDIF .DB CR,LF,CR,LF,"Select : ",0 msgSuccess: .DB CR,LF,CR,LF,"COMPLETED WITHOUT ERRORS ",CR,LF,0 @@ -1304,6 +1380,7 @@ SERDEV: .DB $00 ; HBIOS SERIAL DEVICE NUMBER USED FOR XMODEM TRANSFER WRTVER: .DB $FF ; WRITE VERIFY OPTION FLAG VERRES: .DB $00 ; WRITE VERIFY RESULT BLKCOUT: .DB $FF ; BLOCK TEXT OUTPUT DURING TRANSFER IF ZERO +ERATYP .DB $00 ; HOLDS THE ERASE TYPE FLAG FOR VARIOUS CHIPS oldSP: .DW 0 ; The orginal SP to be restored before exiting retrycnt: .DB 0 ; Counter for retries before giving up chksum: .DB 0 ; For calculating the checksum of the packet