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

Loading…
Cancel
Save