Browse Source

Update md.asm

Sstack use optimization
pull/172/head
b1ackmai1er 5 years ago
parent
commit
32c1071265
  1. 27
      Source/HBIOS/md.asm

27
Source/HBIOS/md.asm

@ -319,7 +319,7 @@ MD_RDSECF: ; CALLED FROM MD_RW
; WHICH WAS SETUP BY MD_IOSETUPF
;
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS
LD BC,MD_FREAD_R ; PUT ROUTINE TO CALL
LD HL,MD_FREAD_R ; PUT ROUTINE TO CALL
CALL MD_FNCALL ; EXECUTE: READ 4K SECTOR
;
MD_SECM:
@ -426,11 +426,11 @@ MD_WRSECF: ; CALLED FROM MD_RW
CALL MD_CALBAS ; SETUP BANK AND SECTOR
;
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS
LD BC,MD_FREAD_R ; PUT ROUTINE TO CALL
LD HL,MD_FREAD_R ; PUT ROUTINE TO CALL
CALL MD_FNCALL ; EXECUTE: READ 4K SECTOR
;
MD_SECM1: ; DESIRED SECTOR IS IN BUFFER
LD BC,MD_FERAS_R ; PUT ROUTINE TO CALL
LD HL,MD_FERAS_R ; PUT ROUTINE TO CALL
CALL MD_FNCALL ; EXECUTE: ERASE 4K SECTOR
OR A
RET NZ ; RETURN IF ERROR
@ -452,25 +452,25 @@ MD_SECM1: ; DESIRED SECTOR IS IN BUFFER
LDIR ; THE DISK BUFFER TO 4K SECTOR
;
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS
LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL
LD HL,MD_FWRIT_R ; PUT ROUTINE TO CALL
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR
;
XOR A ; PRESUME SUCCESS STATUS
;
#IF (MD_FVAR==1)
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS
LD BC,MD_FVERI_R ; PUT ROUTINE TO CALL
LD HL,MD_FVERI_R ; PUT ROUTINE TO CALL
CALL MD_FNCALL ; EXECUTE: VERIFY 4K SECTOR
;
OR A
RET Z ; RETURN IF SUCCESSFUL
;
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS ; RETRY
LD BC,MD_FWRIT_R ; PUT ROUTINE TO CALL ; WRITE
LD HL,MD_FWRIT_R ; PUT ROUTINE TO CALL ; WRITE
CALL MD_FNCALL ; EXECUTE: WRITE 4K SECTOR ; ONCE
;
LD IX,MD_F4KBUF ; SET SOURCE ADDRESS ; VERIFY
LD BC,MD_FVERI_R ; PUT ROUTINE TO CALL ; AGAIN
LD HL,MD_FVERI_R ; PUT ROUTINE TO CALL ; AGAIN
CALL MD_FNCALL ; EXECUTE: VERIFY 4K SECTOR
;
OR A ; SET FINAL STATUS AFTER RETRY
@ -716,11 +716,11 @@ MD_PROBE:
LD A,'=' ; NUMBER
CALL COUT
#ENDIF
PUSH HL
CALL MD_CALBAS ; SETUP BANK AND SECTOR
LD BC,MD_FIDENT_R ; PUT ROUTINE TO CALL
LD HL,MD_FIDENT_R ; PUT ROUTINE TO CALL
CALL MD_FNCALL ; EXECUTE: IDENTIFY FLASH CHIP
PUSH HL
LD HL,MD_TGTDEV ; IF WE MATCH WITH
XOR A ; A NON 39SF040
SBC HL,BC ; CHIP SET THE
@ -836,12 +836,7 @@ FF_NXT2:
; RETURN WITH ID CODE.
;======================================================================
;
MD_FNCALL:
PUSH HL ; USING HBX_BUF FOR CODE AREA
PUSH DE
PUSH BC ; GET ROUTINE TO CALL
POP HL
MD_FNCALL: ; USING HBX_BUF FOR CODE AREA
;
LD DE,HBX_BUF ; EXECUTE / START ADDRESS
LD BC,MD_CSIZE ; CODE SIZE. MAXIMUM 64 BYTES
@ -881,8 +876,6 @@ MD_FNCALL:
#ENDIF
;
LD A,C ; RETURN WITH STATUS IN A
POP DE
POP HL
RET ; RETURN TO MD_READF, MD_WRITEF
;
MD_SAVSTK .DW 0

Loading…
Cancel
Save