Browse Source

md,asm cleanup af/af' push/pops

pull/182/head
b1ackmai1er 5 years ago
parent
commit
c12316f5b4
  1. 71
      Source/HBIOS/md.asm
  2. 29
      Source/HBIOS/updater.asm

71
Source/HBIOS/md.asm

@ -849,8 +849,6 @@ MD_FNCALL: ; USING HBX_BUF FOR CODE AREA
CALL PRTHEXWORD
#ENDIF
;
EX AF,AF'
PUSH AF
LD A,(HB_CURBNK) ; WE ARE STARTING IN HB_CURBNK
;
HB_DI
@ -859,9 +857,6 @@ MD_FNCALL: ; USING HBX_BUF FOR CODE AREA
CALL HBX_BUF ; EXECUTE RELOCATED CODE
LD SP,(MD_SAVSTK) ; RESTORE STACK
HB_EI
;
POP AF
EX AF,AF'
;
#IF (MD_FDBG==1)
CALL PC_SPACE
@ -913,8 +908,6 @@ MD_FIDEN_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD A,D ; RETURN TO ORIGINAL BANK
JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY
;
; RET
;
MD_I_SZ .EQU $-MD_FIDEN_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
.ECHO "MD_FIDEN_R occupies "
.ECHO MD_I_SZ
@ -935,7 +928,7 @@ MD_I_SZ .EQU $-MD_FIDEN_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
;
MD_FERAS_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
;
EX AF,AF' ; SAVE CURRENT BANK
PUSH AF ; SAVE CURRENT BANK
LD A,B ; SELECT BANK
CALL HBX_BNKSEL ; TO PROGRAM
;
@ -976,11 +969,9 @@ MD_WT4: LD A,(HL) ; DO TWO SUCCESSIVE READS
JR MD_WT6
MD_WT5: LD C,L ; SET SUCCESS STATUS
;
MD_WT6: EX AF,AF' ; RETURN TO ORIGINAL BANK
MD_WT6: POP AF ; RETURN TO ORIGINAL BANK
JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY
;
; RET
;
MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
.ECHO "MD_FERAS_R occupies "
.ECHO MD_S_SZ
@ -1008,19 +999,17 @@ MD_FREAD_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD H,C ; SECTOR
LD L,D ; ADDRESS
;
EX AF,AF' ; PUT DESTINATION BANK IN AF'
PUSH AF ; SAVE CURRENT BANK
;
MD_FRD1:
LD A,B ; PUT SOURCE BANK IN AF
CALL HBX_BNKSEL ; READ ; SWITCH TO SOURCE BANK
MD_FRD1:LD A,B ; CHANGE TO SOURCE BANK
CALL HBX_BNKSEL ; READ
LD C,(HL) ; BYTE
;
EX AF,AF' ; SELECT BANK ; SWITCH DESTINATION BANK
PUSH AF
CALL HBX_BNKSEL ; TO WRITE
POP AF
POP AF ; RESTORE CURRENT BANK
PUSH AF ; AND SAVE A COPY FOR NEXT LOOP
CALL HBX_BNKSEL ; SELECT BANK TO WRITE TO
;
LD (IX+0),C ; WRITE BYTE
EX AF,AF' ; ; PUT SOURCE BANK IN AF
;
INC HL ; NEXT SOURCE LOCATION
INC IX ; NEXT DESTINATION LOCATION
@ -1029,6 +1018,7 @@ MD_FRD1:
BIT 4,D ; WE HAVE DONE ONE SECTOR
JR Z,MD_FRD1
;
POP AF
RET
;
MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
@ -1057,20 +1047,19 @@ MD_FVERI_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD H,C ; SECTOR
LD L,D ; ADDRESS
;
EX AF,AF' ; PUT SOURCE BANK IN AF' (RAM)
PUSH AF ; SAVE CURRENT BANK
;
MD_FVE1:
LD A,B ; SELECT BANK
CALL HBX_BNKSEL ; TO READ ; SWITCH TO FLASH BANK
LD A,(HL) ; READ BYTE
MD_FVE1:LD A,B ; SELECT BANK
CALL HBX_BNKSEL ; TO READ
LD C,(HL) ; READ BYTE
;
EX AF,AF' ; SELECT BANK ; SWITCH TO RAM BANK
PUSH AF
POP AF ; RESTORE CURRENT BANK
PUSH AF ; AND SAVE A COPY FOR NEXT LOOP
CALL HBX_BNKSEL ; TO VERIFY AGAINST
POP AF
EX AF,AF'
;
LD A,C
SUB (IX+0) ; COMPARE BYTE
LD C,A ; SET STATUS
JR NZ,MD_FVE2 ; EXIT IF MISMATCH
;
INC HL ; NEXT SOURCE LOCATION
@ -1080,10 +1069,7 @@ MD_FVE1:
BIT 4,D ; WE HAVE DONE ONE SECTOR
JR Z,MD_FVE1
;
MD_FVE2:
LD C,A ; SET STATUS
EX AF,AF'
;
MD_FVE2:POP AF
RET
;
MD_V_SZ .EQU $-MD_FVERI_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
@ -1112,11 +1098,8 @@ MD_FWRIT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD H,C ; SECTOR
LD L,D ; ADDRESS
;
MD_FWRI1:
PUSH AF
CALL HBX_BNKSEL ; SELECT BANK TO READ
POP AF
EX AF,AF' ; SAVE CURRENT BANK
PUSH AF ; SAVE CURRENT BANK
MD_FWR1:CALL HBX_BNKSEL ; SELECT BANK TO READ
;
LD C,(IX+0) ; READ IN BYTE
;
@ -1134,25 +1117,25 @@ MD_FWRI1:
LD (HL),C ; WRITE OUT BYTE
;
; ; DO TWO SUCCESSIVE READS
MD_FW7: LD A,(HL) ; FROM THE SAME FLASH ADDRESS.
MD_FWR2:LD A,(HL) ; 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 WRITE IS COMPLETE SO EXIT.
JR NZ,MD_FW7 ; Z TRUE IF BIT 6=0 I.E. "NO TOGGLE" WAS DETECTED.
JR NZ,MD_FWR2 ; Z TRUE IF BIT 6=0 I.E. "NO TOGGLE" WAS DETECTED.
;
INC HL ; NEXT DESTINATION LOCATION
INC IX ; NEXT SOURCE LOCATION
;
EX AF,AF' ; RESTORE CURRENT BANK
POP AF ; RESTORE CURRENT BANK
PUSH AF ; AND SAVE A COPY FOR NEXT LOOP
;
INC DE ; CONTINUE WRITING UNTIL
BIT 4,D ; WE HAVE DONE ONE SECTOR
JR Z,MD_FWRI1
JR Z,MD_FWR1
;
POP AF ; RESTORE CURRENT BANK
JP HBX_BNKSEL ; RETURN TO ORIGINAL BANK WHICH IS OUR RAM BIOS COPY
;
; RET
;
MD_W_SZ .EQU $-MD_FWRIT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
.ECHO "MD_FWRIT_R occupies "
.ECHO MD_W_SZ

29
Source/HBIOS/updater.asm

@ -222,7 +222,7 @@ CHPFND: LD (ERATYP),A ; SAVE ERASE TYPE
RST 08 ; AND MULTIPLY
LD A,L ; BY 4
ADD A,A ; TO CREATE
ADD A,A ; TIMOUT DELAY
ADD A,A ; TIMEOUT DELAY
LD (TmoFct),A ; FACTOR
;
MENULP: LD DE,$0000 ; ENSURE WE ARE STARTING
@ -501,15 +501,15 @@ DISP1: LD C,' ' ; DISPLAY
CALL PRTHEXB
RET
;
; WAITS FOR UP TO A SECONDS FOR A CHARACTER TO BECOME AVAILABLE AND
; WAITS FOR UP TO B SECONDS FOR A CHARACTER TO BECOME AVAILABLE AND
; RETURNS IT IN A WITHOUT ECHO AND CARRY CLEAR. IF TIMEOUT THEN CARRY
; IT SET.
;
; 4MHZ 20 SECONDS B=16
; 10MHZ 20 SECONDS B=39
; 4MHZ 20 SECONDS TmoFct = 16
; 10MHZ 20 SECONDS TmoFct = 39
;
GetCharTmo1:
LD B,1
LD B,1 ; WAIT 1 SECOND FOR SERIAL INPUT
GetCharTmo:
CALL SERST ; IF THERE IS A
OR A ; CHARACTER AVAILABLE
@ -1187,9 +1187,9 @@ MD_FREAD_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD L,D ; ADDRESS
;
PUSH AF ; SAVE CURRENT BANK
MD_FRD1:
LD A,B ; PUT SOURCE BANK IN AF
CALL HBX_BNKSEL ; READ ; SWITCH TO SOURCE BANK
;
MD_FRD1:LD A,B ; CHANGE TO SOURCE BANK
CALL HBX_BNKSEL ; READ
LD C,(HL) ; BYTE
;
POP AF ; RESTORE CURRENT BANK
@ -1230,8 +1230,8 @@ MD_FVERI_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD L,D ; ADDRESS
;
PUSH AF ; SAVE CURRENT BANK
MD_FVE1:
LD A,B ; SELECT BANK
;
MD_FVE1:LD A,B ; SELECT BANK
CALL HBX_BNKSEL ; TO READ
LD C,(HL) ; READ BYTE
;
@ -1276,8 +1276,7 @@ MD_FWRIT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY
LD L,D ; ADDRESS
;
PUSH AF ; SAVE CURRENT BANK
MD_FWRI1:
CALL HBX_BNKSEL ; SELECT BANK TO READ
MD_FWR1:CALL HBX_BNKSEL ; SELECT BANK TO READ
;
LD C,(IX+0) ; READ IN BYTE
;
@ -1295,11 +1294,11 @@ MD_FWRI1:
LD (HL),C ; WRITE OUT BYTE
;
; ; DO TWO SUCCESSIVE READS
MD_FW7: LD A,(HL) ; FROM THE SAME FLASH ADDRESS.
MD_FWR2:LD A,(HL) ; 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 WRITE IS COMPLETE SO EXIT.
JR NZ,MD_FW7 ; Z TRUE IF BIT 6=0 I.E. "NO TOGGLE" WAS DETECTED.
JR NZ,MD_FR2 ; Z TRUE IF BIT 6=0 I.E. "NO TOGGLE" WAS DETECTED.
;
INC HL ; NEXT DESTINATION LOCATION
INC IX ; NEXT SOURCE LOCATION
@ -1309,7 +1308,7 @@ MD_FW7: LD A,(HL) ; FROM THE SAME FLASH ADDRESS.
;
INC DE ; CONTINUE WRITING UNTIL
BIT 4,D ; WE HAVE DONE ONE SECTOR
JR Z,MD_FWRI1
JR Z,MD_FWR1
;
POP AF ; RESTORE CURRENT BANK
JP HBX_BNKSEL ; RETURN TO ORIGINAL BANK WHICH IS OUR RAM BIOS COPY

Loading…
Cancel
Save