]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/commitdiff
local stack for 'sdio' and 'cfio'
authorLeo C <erbl259-lmu@yahoo.de>
Mon, 13 Jun 2016 16:20:31 +0000 (18:20 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Mon, 13 Jun 2016 16:20:31 +0000 (18:20 +0200)
cbios/cfio.180
cbios/sdio.180

index 5dd8a2e8a1045aa6dccc7f19b410f04cc48a1cc3..fc3bea1187504bc6a2051df6979fd2e9a6d32bb7 100644 (file)
@@ -649,6 +649,9 @@ rw$common:
    endif\r
 \r
 rwc_new_sectors:\r
+       ld      (cfstack),sp\r
+       ld      sp,cfstack\r
+\r
        in0     a,(dcntl)\r
        and     a,~(M_DMS1+M_DIM1+M_DIM0)\r
        or      b\r
@@ -705,7 +708,8 @@ retry:
        pop     hl\r
        jr      c,lba_ok\r
        ld      a,1             ; block# >= partition size, return error\r
-       ret\r
+       jp      exit\r
+;      ret\r
 \r
 lba_ok:\r
        WAITREADY\r
@@ -762,7 +766,8 @@ err_out:
        pop     bc\r
        ld      e,a\r
        and     10001001b       ; Busy, DRQ, or Error?\r
-       ret     z               ; Return to BDOS if no error\r
+       jr      z,exit\r
+;      ret     z               ; Return to BDOS if no error\r
 \r
        ld      hl,print_details\r
        call    pr.errors\r
@@ -772,6 +777,8 @@ err_out:
        ld      (residual),a\r
 \r
        ld      a,1             ; return hard error to BDOS\r
+exit:\r
+       ld      sp,(cfstack)\r
        ret\r
 \r
 ;-------------------------------------------------------------------------------\r
@@ -824,4 +831,10 @@ parttbl:
 tmpsecbuf:             ;temporary sector buffer\r
        ds      512\r
 \r
+       rept    80\r
+        db     07CH\r
+       endm\r
+cfstack::\r
+       dw      0\r
+\r
        end\r
index 28ed4dd2d005ffafebab0f64d5052ae2a8a5b376..d934ef401f61b1d145922af9b89bd036298bee89 100644 (file)
@@ -164,6 +164,9 @@ sd$init7:
 ;     relative drive number in @rdrv (8 bits)  +1\r
 \r
 sd$login:\r
+       ld      (sdstack),sp\r
+       ld      sp,sdstack\r
+\r
        xor     a\r
        ld      (residual),a\r
        ld      hl,send_msg+1\r
@@ -195,6 +198,9 @@ sd$login:
 \r
        ld      a,(recv_msg_rc)\r
        or      a\r
+\r
+       ld      sp,(sdstack)\r
+\r
        ret     z\r
        ld      hl,0\r
        ld      (@xdph),hl\r
@@ -230,6 +236,9 @@ sd$write:
        ret\r
 \r
 rwc_new_sectors:\r
+       ld      (sdstack),sp\r
+       ld      sp,sdstack\r
+\r
        ld      b,1             ; assume 1 sector to transfer\r
        ld      a,(@cnt)\r
        or      a\r
@@ -280,7 +289,8 @@ retry:
        call    msg.recv\r
        ld      a,(recv_msg_rc)\r
        or      a\r
-       ret     z               ; check status and return to BDOS if no error\r
+;      ret     z               ; check status and return to BDOS if no error\r
+       jr      z,exit\r
 \r
        ld      hl,print_details\r
        call    pr.errors\r
@@ -298,6 +308,8 @@ retry:
        dec     c\r
 e_exit:\r
        ld      a,c\r
+exit:\r
+       ld      sp,(sdstack)\r
        ret\r
 \r
 ;-------------------------------------------------------------------------------\r
@@ -391,4 +403,10 @@ fr$msg19:  db      'FR_INVALID_PARAMETER,',0
 fr$msg20:      db      'short read/write,',0\r
                db      0\r
 \r
+       rept    80\r
+        db     07CH\r
+       endm\r
+sdstack::\r
+       dw      0\r
+\r
        end\r