|
|
|
@ -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 |
|
|
|
|