|
|
|
@ -65,7 +65,7 @@ |
|
|
|
; OPTION (1) AND (2) - CALCULATE AND DISPLAY CRC32 OF 1ST OR 2ND 512K ROM. |
|
|
|
; |
|
|
|
; OPTION (H) - DEBUG OPTION - SWITCH ON CPU CLOCK DIVIDER ON SBC-V2-004+ |
|
|
|
; OPTION (T) - DEBUG OPTION - TEST TIMER FOR 20 SECONDS. * = START AND FINISH |
|
|
|
; OPTION (T) - DEBUG OPTION - TEST TIMER FOR 32S, 16S, 8S, 4S, 2S & 1S |
|
|
|
; |
|
|
|
; |
|
|
|
; V.DEV 13/1/2021 PHIL SUMMERS, DIFFICULTYLEVELHIGH@GMAIL.COM |
|
|
|
@ -113,7 +113,7 @@ HBX_START .EQU $FE00 |
|
|
|
#DEFINE HB_DI DI |
|
|
|
#DEFINE HB_EI EI |
|
|
|
; |
|
|
|
XFUDBG .EQU 0 |
|
|
|
XFUDBG .EQU 1 |
|
|
|
; |
|
|
|
.ORG USR_LOC |
|
|
|
; |
|
|
|
@ -259,15 +259,14 @@ SERCLR: LD HL,msgInstr ; PROVIDE |
|
|
|
LD DE,sector4k ; POINT TO START OF SECTOR TO WRITE |
|
|
|
; |
|
|
|
GetNewPacket: |
|
|
|
LD A,20 ; WE RETRY 20 TIMES BEFORE GIVING UP |
|
|
|
LD (retrycnt),A |
|
|
|
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 |
|
|
|
CALL GetCharTmo |
|
|
|
JP NC,NotPacketTimeout |
|
|
|
; |
|
|
|
LD HL,retrycnt ; REACHED MAX NUMBER OF RETRIES? |
|
|
|
dec (HL) |
|
|
|
DEC (HL) ; REACHED MAX NUMBER OF RETRIES? |
|
|
|
JP Z,FAILRT ; YES, PRINT MESSAGE AND EXIT |
|
|
|
; |
|
|
|
LD C,NAK ; SEND A NAK TO THE UPLOADER |
|
|
|
@ -289,17 +288,17 @@ NotPacketTimeout: |
|
|
|
CALL GetCharTmo1 ; GET CHARACTER |
|
|
|
LD (HL),A ; SHOULD BE PACKET NUMBER |
|
|
|
INC HL |
|
|
|
JP C,FAILTO |
|
|
|
JR C,FAILTO |
|
|
|
; |
|
|
|
CALL GetCharTmo1 ; GET CHARACTER |
|
|
|
LD (HL),A ; SHOULD BE PACKET NUMBER |
|
|
|
INC HL ; COMPLEMENT |
|
|
|
JP C,FAILTO |
|
|
|
JR C,FAILTO |
|
|
|
; |
|
|
|
LD C,128 ; GET 128 MORE CHARACTERS FOR A FULL PACKET |
|
|
|
GetRestOfPacket: |
|
|
|
CALL GetCharTmo1 ; GET CHARACTER |
|
|
|
JP C,FAILTO |
|
|
|
JR C,FAILTO |
|
|
|
; |
|
|
|
LD (HL),A |
|
|
|
INC HL ; SAVE THE RECEIVED CHAR INTO THE... |
|
|
|
@ -307,11 +306,11 @@ GetRestOfPacket: |
|
|
|
INC DE ; ...POINT TO THE NEXT LOCATION |
|
|
|
; |
|
|
|
DEC C |
|
|
|
JR NZ,GetRestOfPacket |
|
|
|
JP NZ,GetRestOfPacket |
|
|
|
; |
|
|
|
CALL GetCharTmo1 ; GET CHARACTER |
|
|
|
LD (HL),A ; SHOULD BE CHECKSUM |
|
|
|
JP C,FAILTO |
|
|
|
JR C,FAILTO |
|
|
|
; |
|
|
|
LD HL,packet+3 ; CALCULATE CHECKSUM FROM 128 BYTES OF DATA |
|
|
|
LD B,128 |
|
|
|
@ -321,17 +320,15 @@ csloop: ADD A,(HL) ; JUST ADD UP THE BYTES |
|
|
|
DJNZ csloop |
|
|
|
; |
|
|
|
XOR (HL) ; HL POINTS TO THE RECEIVED CHECKSUM SO |
|
|
|
JP NZ,FAILCS ; BY XORING IT TO OUR SUM WE CHECK FOR EQUALITY |
|
|
|
JR NZ,FAILCS ; BY XORING IT TO OUR SUM WE CHECK FOR EQUALITY |
|
|
|
; |
|
|
|
LD HL,(pktNo) ; CHECK |
|
|
|
LD BC,(packet+1) ; AGREEMENT |
|
|
|
; XOR A ; PACKET |
|
|
|
SBC HL,BC ; NUMBERS |
|
|
|
JP NZ,FAILPN |
|
|
|
JR NZ,FAILPN |
|
|
|
; |
|
|
|
; LD HL,pktNo ; HAVE WE RECEIVED |
|
|
|
; LD A,(HL) ; A BLOCK OF 32 |
|
|
|
LD A,C |
|
|
|
LD A,C ; HAVE WE RECEIVED A BLOCK OF 32 |
|
|
|
DEC A ; XMODEM PACKETS? |
|
|
|
AND %00011111 ; IF YES THEN WERE WE |
|
|
|
CP %00011111 ; HAVE ENOUGH TO |
|
|
|
@ -339,7 +336,7 @@ csloop: ADD A,(HL) ; JUST ADD UP THE BYTES |
|
|
|
CALL Z,WSEC ; ASSUME FLASH SUCCESSFUL |
|
|
|
; |
|
|
|
OR A ; EXIT IF WE GOT A |
|
|
|
JP NZ,FAILWF ; WRITE VERIFICATION ERROR |
|
|
|
JR NZ,FAILWF ; WRITE VERIFICATION ERROR |
|
|
|
; |
|
|
|
LD HL,pktNo ; UPDATE THE PACKET COUNTERS |
|
|
|
INC (HL) |
|
|
|
@ -351,6 +348,9 @@ csloop: ADD A,(HL) ; JUST ADD UP THE BYTES |
|
|
|
; |
|
|
|
JP GetNewPacket |
|
|
|
; |
|
|
|
FAILTO: LD HL,msgTimout ; TIMEOUT WAITING |
|
|
|
JR ERRRX ; FOR CHARACTER |
|
|
|
; |
|
|
|
COUTON: LD A,$FF ; TURN ON |
|
|
|
LD (BLKCOUT),A ; OUTPUT |
|
|
|
RET |
|
|
|
@ -360,9 +360,6 @@ Done: LD C,ACK ; TELL UPLOADER |
|
|
|
Done1: LD HL,msgSuccess ; BACK TO |
|
|
|
JR MSGRS ; MENU |
|
|
|
; |
|
|
|
FAILTO: LD HL,msgTimout ; TIMEOUT WAITING |
|
|
|
JR ERRRX ; FOR CHARACTER |
|
|
|
; |
|
|
|
FAILWF: LD HL,msgFailWrt ; FLASH |
|
|
|
JR MSGRS ; VERIFY FAIL |
|
|
|
; |
|
|
|
@ -407,9 +404,9 @@ Die1: LD B,BF_SYSRESET ; SYSTEM RESTART |
|
|
|
CALL $FFF0 ; CALL HBIOS |
|
|
|
RET |
|
|
|
|
|
|
|
WSEC: PUSH HL ; WRITE A |
|
|
|
PUSH BC ; FLASH |
|
|
|
PUSH DE ; SECTOR |
|
|
|
WSEC: ;PUSH HL ; WRITE A |
|
|
|
;PUSH BC ; FLASH |
|
|
|
;PUSH DE ; SECTOR |
|
|
|
; |
|
|
|
CALL DISPROG ; DISPLAY PROGRESS |
|
|
|
; |
|
|
|
@ -428,9 +425,9 @@ WSEC1: LD HL,MD_FERAS ; ERASE |
|
|
|
CALL MD_FNCALL |
|
|
|
LD (VERRES),A ; SAVE STATUS |
|
|
|
; |
|
|
|
NOVER: POP DE ; POINT BACK TO |
|
|
|
LD DE,sector4k ; START OF 4K BUFFER |
|
|
|
PUSH DE |
|
|
|
NOVER: ;POP DE ; |
|
|
|
LD DE,sector4k ; POINT BACK TO START OF 4K BUFFER |
|
|
|
;PUSH DE |
|
|
|
; |
|
|
|
LD HL,MD_FBAS |
|
|
|
LD A,(HL) ; DID WE JUST |
|
|
|
@ -444,12 +441,12 @@ NOVER: POP DE ; POINT BACK TO |
|
|
|
; |
|
|
|
NXTS2: LD A,$10 ; NEXT SECTOR |
|
|
|
ADD A,(HL) ; EACH SECTOR IS $1000 |
|
|
|
LD (HL),A ; BUT WE JUST INCREASE HIGH BYTE |
|
|
|
LD (HL),A ; SO WE JUST INCREASE HIGH BYTE |
|
|
|
; |
|
|
|
NXTS3: LD A,(VERRES) ; EXIT WITH STATUS |
|
|
|
POP DE |
|
|
|
POP BC |
|
|
|
POP HL |
|
|
|
; POP DE |
|
|
|
; POP BC |
|
|
|
; POP HL |
|
|
|
RET |
|
|
|
; |
|
|
|
DISPROG:LD A,(BLKCOUT) ; SKIP OUTPUT |
|
|
|
@ -680,15 +677,21 @@ OPTIONS:LD HL,msgEnterUnit ; GET |
|
|
|
JP MENULP ; BACK TO MENU |
|
|
|
; |
|
|
|
#IF (XFUDBG) |
|
|
|
OPTIONT:LD HL,msgCRLF |
|
|
|
OPTIONT:LD HL,msgCRLF ; TEST DELAY 32S, 16S, 8S, 4S, 2S, 1S |
|
|
|
CALL PRTSTR0 |
|
|
|
LD C,'*' ; DISPLAY START |
|
|
|
LD B,32 ; START DELAY IS 32 SECONDS |
|
|
|
TSTDLY: PUSH BC |
|
|
|
LD C,'>' ; DISPLAY START |
|
|
|
CALL CONOUT ; INDICATOR |
|
|
|
LD B,20 ; DELAY 20 |
|
|
|
CALL GetCharTmo ; SECONDS |
|
|
|
LD C,'*' ; DISPLAY FINISH |
|
|
|
LD A,B |
|
|
|
CALL PRTHEXB |
|
|
|
CALL GetCharTmo ; DELAY B SECONDS |
|
|
|
LD C,'<' ; DISPLAY STOP |
|
|
|
CALL CONOUT ; INDICATOR |
|
|
|
JP MENULP ; BACK TO MENU |
|
|
|
POP BC |
|
|
|
SRL B ; NEXT DELAY IS HALF PREVIOUS |
|
|
|
JR NZ,TSTDLY ; RETURN TO MENU |
|
|
|
JP MENULP ; WHEN DELAY GETS TO 1 SECOND |
|
|
|
; |
|
|
|
OPTIONH:LD A,8 ; TURN ON THE SBC-V2-004+ |
|
|
|
OUT (RTCIO),A ; CLOCK DIVIDER |
|
|
|
@ -1281,7 +1284,7 @@ msgBegin: .DB CR,LF,"(R) Reboot" |
|
|
|
.DB CR,LF,"(2) CRC Flash #2" |
|
|
|
#IF (XFUDBG) |
|
|
|
.DB CR,LF,"(H) Select half speed" |
|
|
|
.DB CR,LF,"(T) Test 20s timeout" |
|
|
|
.DB CR,LF,"(T) Test timeout" |
|
|
|
#ENDIF |
|
|
|
.DB CR,LF,CR,LF,"Select : ",0 |
|
|
|
msgSuccess: .DB CR,LF,CR,LF,"COMPLETED WITHOUT ERRORS ",CR,LF,0 |
|
|
|
|