Browse Source

Merge pull request #169 from b1ackmai1er/dev

Update md.asm
pull/173/head
Wayne Warthen 5 years ago
committed by GitHub
parent
commit
eb946d468c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 42
      Source/HBIOS/md.asm

42
Source/HBIOS/md.asm

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

Loading…
Cancel
Save