mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Update updater.asm
Optimize some stack usage and jumps. Enhance timeout check debug option
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user