|
|
@ -812,13 +812,20 @@ MD_FNCALL: |
|
|
#IF (MD_FDBG==1) |
|
|
#IF (MD_FDBG==1) |
|
|
CALL PRTHEXWORD |
|
|
CALL PRTHEXWORD |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
EX AF,AF' |
|
|
|
|
|
PUSH AF |
|
|
|
|
|
LD A,(HB_CURBNK) ; WE ARE STARTING IN HB_CURBNK |
|
|
; |
|
|
; |
|
|
HB_DI |
|
|
HB_DI |
|
|
LD (FF_SAVSTK),SP ; SAVE CURRENT STACK |
|
|
|
|
|
|
|
|
LD (MD_SAVSTK),SP ; SAVE CURRENT STACK |
|
|
LD SP,HBX_BUF_END ; SETUP A NEW HIMEM STACK AT END OF HX_BUF |
|
|
LD SP,HBX_BUF_END ; SETUP A NEW HIMEM STACK AT END OF HX_BUF |
|
|
CALL HBX_BUF ; EXECUTE RELOCATED CODE |
|
|
CALL HBX_BUF ; EXECUTE RELOCATED CODE |
|
|
LD SP,(FF_SAVSTK) ; RESTORE STACK |
|
|
|
|
|
|
|
|
LD SP,(MD_SAVSTK) ; RESTORE STACK |
|
|
HB_EI |
|
|
HB_EI |
|
|
|
|
|
; |
|
|
|
|
|
POP AF |
|
|
|
|
|
EX AF,AF' |
|
|
; |
|
|
; |
|
|
#IF (MD_FDBG==1) |
|
|
#IF (MD_FDBG==1) |
|
|
CALL PC_SPACE |
|
|
CALL PC_SPACE |
|
|
@ -835,7 +842,7 @@ MD_FNCALL: |
|
|
POP HL |
|
|
POP HL |
|
|
RET ; RETURN TO MD_READF, MD_WRITEF |
|
|
RET ; RETURN TO MD_READF, MD_WRITEF |
|
|
; |
|
|
; |
|
|
FF_SAVSTK .DW 0 |
|
|
|
|
|
|
|
|
MD_SAVSTK .DW 0 |
|
|
; |
|
|
; |
|
|
;====================================================================== |
|
|
;====================================================================== |
|
|
; CALCULATE BANK AND ADDRESS DATA FROM MEMORY ADDRESS |
|
|
; CALCULATE BANK AND ADDRESS DATA FROM MEMORY ADDRESS |
|
|
@ -843,7 +850,6 @@ FF_SAVSTK .DW 0 |
|
|
; ON ENTRY DE:HL CONTAINS 32 BIT MEMORY ADDRESS. |
|
|
; ON ENTRY DE:HL CONTAINS 32 BIT MEMORY ADDRESS. |
|
|
; ON EXIT B CONTAINS BANK SELECT BYTE |
|
|
; ON EXIT B CONTAINS BANK SELECT BYTE |
|
|
; C CONTAINS HIGH BYTE OF SECTOR ADDRESS |
|
|
; C CONTAINS HIGH BYTE OF SECTOR ADDRESS |
|
|
; A CONTAINS CURRENT BANK HB_CURBNK |
|
|
|
|
|
; |
|
|
; |
|
|
; DDDDDDDDEEEEEEEE HHHHHHHHLLLLLLLL |
|
|
; DDDDDDDDEEEEEEEE HHHHHHHHLLLLLLLL |
|
|
; 3322222222221111 1111110000000000 |
|
|
; 3322222222221111 1111110000000000 |
|
|
@ -875,8 +881,6 @@ MD_CALCA: |
|
|
CALL PRTHEXWORD ; DISPLAY BANK AND |
|
|
CALL PRTHEXWORD ; DISPLAY BANK AND |
|
|
CALL PC_SPACE ; SECTOR RESULT |
|
|
CALL PC_SPACE ; SECTOR RESULT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
|
|
|
LD A,(HB_CURBNK) ; WE ARE STARTING IN HB_CURBNK |
|
|
|
|
|
; |
|
|
; |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
@ -896,7 +900,7 @@ MD_CALCA: |
|
|
; |
|
|
; |
|
|
MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
; |
|
|
; |
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
|
|
|
|
|
LD D,A ; SAVE CURRENT BANK |
|
|
; |
|
|
; |
|
|
LD A,B ; SELECT BANK |
|
|
LD A,B ; SELECT BANK |
|
|
CALL HBX_BNKSEL ; TO PROGRAM |
|
|
CALL HBX_BNKSEL ; TO PROGRAM |
|
|
@ -909,10 +913,10 @@ MD_FIDENT_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
; ; LD ($5555),A |
|
|
; ; LD ($5555),A |
|
|
LD BC,($0000) ; READ ID |
|
|
LD BC,($0000) ; READ ID |
|
|
; |
|
|
; |
|
|
LD A,$F0 ; ; EXIT |
|
|
|
|
|
|
|
|
LD A,$F0 ; LD A,$F0 ; EXIT |
|
|
LD (HL),A ; LD ($5555),A ; COMMAND |
|
|
LD (HL),A ; LD ($5555),A ; COMMAND |
|
|
; |
|
|
; |
|
|
POP AF ; RETURN TO ORIGINAL BANK |
|
|
|
|
|
|
|
|
LD A,D ; RETURN TO ORIGINAL BANK |
|
|
JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
JP HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY |
|
|
; |
|
|
; |
|
|
; RET |
|
|
; RET |
|
|
@ -1040,7 +1044,7 @@ MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
; DE = 0000 BYTE COUNT |
|
|
; DE = 0000 BYTE COUNT |
|
|
; IX POINTS TO DATA TO BE VERIFIED |
|
|
; IX POINTS TO DATA TO BE VERIFIED |
|
|
; A CONTAINS CURRENT BANK |
|
|
; A CONTAINS CURRENT BANK |
|
|
; ON EXIT NO STATUS RETURNED |
|
|
|
|
|
|
|
|
; ON EXIT C RETURNS STATUS 0=SUCCESS NZ=FAIL |
|
|
;====================================================================== |
|
|
;====================================================================== |
|
|
; |
|
|
; |
|
|
MD_FVERI_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
MD_FVERI_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
@ -1048,20 +1052,18 @@ MD_FVERI_R: ; THIS CODE GETS RELOCATED TO HIGH MEMORY |
|
|
LD H,C ; SECTOR |
|
|
LD H,C ; SECTOR |
|
|
LD L,D ; ADDRESS |
|
|
LD L,D ; ADDRESS |
|
|
; |
|
|
; |
|
|
PUSH AF ; SAVE CURRENT BANK |
|
|
|
|
|
|
|
|
EX AF,AF' ; PUT SOURCE BANK IN AF' (RAM) |
|
|
; |
|
|
; |
|
|
MD_FVE1: |
|
|
MD_FVE1: |
|
|
LD A,B ; SELECT BANK |
|
|
LD A,B ; SELECT BANK |
|
|
CALL HBX_BNKSEL ; TO READ |
|
|
|
|
|
LD C,(HL) ; READ BYTE |
|
|
|
|
|
|
|
|
CALL HBX_BNKSEL ; TO READ ; SWITCH TO FLASH BANK |
|
|
|
|
|
LD A,(HL) ; READ BYTE |
|
|
; |
|
|
; |
|
|
POP AF |
|
|
|
|
|
PUSH AF ; SELECT BANK |
|
|
|
|
|
|
|
|
EX AF,AF' ; SELECT BANK ; SWITCH TO RAM BANK |
|
|
CALL HBX_BNKSEL ; TO VERIFY AGAINST |
|
|
CALL HBX_BNKSEL ; TO VERIFY AGAINST |
|
|
|
|
|
EX AF,AF' |
|
|
; |
|
|
; |
|
|
LD A,C |
|
|
|
|
|
SUB (IX+0) ; COMPARE BYTE |
|
|
SUB (IX+0) ; COMPARE BYTE |
|
|
LD C,A ; SET NON ZERO STATUS |
|
|
|
|
|
JR NZ,MD_FVE2 ; EXIT IF MISMATCH |
|
|
JR NZ,MD_FVE2 ; EXIT IF MISMATCH |
|
|
; |
|
|
; |
|
|
INC HL ; NEXT SOURCE LOCATION |
|
|
INC HL ; NEXT SOURCE LOCATION |
|
|
@ -1070,11 +1072,11 @@ MD_FVE1: |
|
|
INC DE ; CONTINUE READING UNTIL |
|
|
INC DE ; CONTINUE READING UNTIL |
|
|
BIT 4,D ; WE HAVE DONE ONE SECTOR |
|
|
BIT 4,D ; WE HAVE DONE ONE SECTOR |
|
|
JR Z,MD_FVE1 |
|
|
JR Z,MD_FVE1 |
|
|
; |
|
|
|
|
|
LD C,E ; SET SUCCESS STATUS = 0 |
|
|
|
|
|
; |
|
|
; |
|
|
MD_FVE2: |
|
|
MD_FVE2: |
|
|
POP AF |
|
|
|
|
|
|
|
|
LD C,A ; SET STATUS |
|
|
|
|
|
EX AF,AF' |
|
|
|
|
|
; |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
MD_V_SZ .EQU $-MD_FVERI_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
MD_V_SZ .EQU $-MD_FVERI_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED |
|
|
|