From 32c10712659fee8d5ff49c8146ef9bc5181184bb Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 27 Dec 2020 11:39:47 +0800 Subject: [PATCH] Update md.asm Sstack use optimization --- Source/HBIOS/md.asm | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 3d49e84d..14aed67d 100644 --- a/Source/HBIOS/md.asm +++ b/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