Browse Source

Update md.asm

inline calls to flash code
pull/164/head
b1ackmai1er 5 years ago
parent
commit
cc970afc30
  1. 70
      Source/HBIOS/md.asm

70
Source/HBIOS/md.asm

@ -315,7 +315,9 @@ MD_RDSECF: ; CALLED FROM MD_RW
; WHICH WAS SETUP BY MD_IOSETUPF
;
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS
CALL MD_FREAD ; READ 4K SECTOR
LD BC,MD_FREAD_R
CALL FF_FNCALL
; CALL MD_FREAD ; READ 4K SECTOR
;
MD_SECM:
LD A,(IY+MD_LBA+0) ; GET SECTOR WITHIN 4K BLOCK
@ -375,10 +377,14 @@ MD_WRSECF: ; CALLED FROM MD_RW
LD (MD_LBA4K),BC ; SAVE 4K LBA
;
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS
CALL MD_FREAD ; READ 4K SECTOR
LD BC,MD_FREAD_R
CALL FF_FNCALL
; CALL MD_FREAD ; READ 4K SECTOR
;
MD_SECM1: ; DESIRED SECTOR IS IN BUFFER
CALL MD_FERAS ; ERASE 4K SECTOR
LD BC,MD_FERAS_R ; PUT ROUTINE TO CALL
CALL FF_FNCALL ; EXECUTE
; CALL MD_FERAS ; ERASE 4K SECTOR
OR A
RET NZ ; RETURN IF ERROR
;
@ -405,7 +411,9 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER
POP HL
;
LD IX,MD_F4KBUF ; WRITE THE SECTOR
CALL MD_FWRIT
LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL
CALL FF_FNCALL ; EXECUTE
; CALL MD_FWRIT
;
XOR A
;
@ -647,7 +655,9 @@ FF_PROBE:
LD A,'=' ; NUMBER
CALL COUT
#ENDIF
CALL MD_FIDENT ; GET ID AT THIS ADDRESS
; CALL MD_FIDENT ; GET ID AT THIS ADDRESS
LD BC,MD_FIDENT_R ; PUT ROUTINE TO CALL
CALL FF_FNCALL ; EXECUTE
PUSH HL
LD HL,MD_TGTDEV ; IF WE MATCH WITH
@ -732,7 +742,9 @@ FF_NXT2:
;
;======================================================================
;
FF_FNCALL: ; USING HBX_BUF FOR CODE AREA
FF_FNCALL:
PUSH HL ; USING HBX_BUF FOR CODE AREA
PUSH DE
PUSH BC
CALL FF_CALCA ; GET BANK AND SECTOR DATA IN BC
;
@ -817,7 +829,6 @@ FF_CALCA:
;======================================================================
; IDENTIFY FLASH CHIP.
; CALCULATE BANK AND ADDRESS DATA FROM ENTRY ADDRESS
; CREATE A CODE BUFFER IN HIGH MEMORY AREA
; COPY FLASH CODE TO CODE BUFFER
; CALL RELOCATED FLASH IDENTITY CODE
; RESTORE STACK
@ -829,12 +840,12 @@ FF_CALCA:
; NO STATUS IS RETURNED
;======================================================================
;
MD_FIDENT:
PUSH HL
PUSH DE
;MD_FIDENT:
; PUSH HL
; PUSH DE
;
LD BC,MD_FIDENT_R ; PUT ROUTINE TO CALL
JP FF_FNCALL ; EXECUTE
; LD BC,MD_FIDENT_R ; PUT ROUTINE TO CALL
; JP FF_FNCALL ; EXECUTE
;
;======================================================================
; FLASH IDENTIFY
@ -887,7 +898,6 @@ MD_I_SZ .EQU $-MD_FIDENT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
;
; ON ENTRY DE:HL CONTAINS 32 BIT MEMORY ADDRESS.
; CALCULATE BANK AND ADDRESS DATA FROM ENTRY ADDRESS
; CREATE A CODE BUFFER IN HIGH MEMORY AREA
; COPY FLASH CODE TO CODE BUFFER
; CALL RELOCATED FLASH ERASE CODE
; RESTORE STACK
@ -897,12 +907,12 @@ MD_I_SZ .EQU $-MD_FIDENT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
; ON EXIT A RETURNS STATUS 0=SUCCESS NZ=FAIL
;======================================================================
;
MD_FERAS:
PUSH HL
PUSH DE
;MD_FERAS:
; PUSH HL
; PUSH DE
;
LD BC,MD_FERAS_R ; PUT ROUTINE TO CALL
JP FF_FNCALL ; EXECUTE
; LD BC,MD_FERAS_R ; PUT ROUTINE TO CALL
; JP FF_FNCALL ; EXECUTE
;
;======================================================================
; ERASE FLASH SECTOR.
@ -984,7 +994,6 @@ MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
;
; SET ADDRESS TO START OF SECTOR
; CALCULATE BANK AND ADDRESS DATA FROM SECTOR START ADDRESS
; CREATE A CODE BUFFER IN HIGH MEMORY AREA
; COPY FLASH CODE TO CODE BUFFER
; CALL RELOCATED FLASH READ SECTOR CODE
; RESTORE STACK
@ -994,19 +1003,19 @@ MD_S_SZ .EQU $-MD_FERAS_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
; ON EXIT NO STATUS IS RETURNED
;======================================================================
;
MD_FREAD:
PUSH HL
PUSH DE
;MD_FREAD:
; PUSH HL
; PUSH DE
;
; LD L,0 ; CHANGE ADDRESS
; LD A,H ; TO SECTOR BOUNDARY
; AND $F0 ; BY MASKING OFF
; LD H,A ; LOWER 12 BITS
;
LD BC,MD_FREAD_R ; PUT ROUTINE TO CALL
JP FF_FNCALL ; EXECUTE
; LD BC,MD_FREAD_R ; PUT ROUTINE TO CALL
; JP FF_FNCALL ; EXECUTE
;
RET
; RET
;======================================================================
; FLASH READ SECTOR.
;
@ -1065,7 +1074,6 @@ MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
;
; SET ADDRESS TO START OF SECTOR
; CALCULATE BANK AND ADDRESS DATA FROM SECTOR START ADDRESS
; CREATE A CODE BUFFER IN HIGH MEMORY AREA
; COPY FLASH CODE TO CODE BUFFER
; CALL RELOCATED FLASH WRITE SECTOR CODE
; RESTORE STACK
@ -1075,17 +1083,17 @@ MD_R_SZ .EQU $-MD_FREAD_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED
; ON EXIT NO STATUS IS RETURNED
;======================================================================
;
MD_FWRIT:
PUSH HL
PUSH DE
;MD_FWRIT:
; PUSH HL
; PUSH DE
;
; LD L,0 ; CHANGE ADDRESS
; LD A,H ; TO SECTOR BOUNDARY
; AND $F0 ; BY MASKING OFF
; LD H,A ; LOWER 12 BITS
;
LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL
JP FF_FNCALL ; EXECUTE
; LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL
; JP FF_FNCALL ; EXECUTE
;
;======================================================================
; FLASH WRITE SECTOR.

Loading…
Cancel
Save