]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/blobdiff - cbios/sdio.180
Support new error codes/messages: 'Write protected', 'No media', 'Access beyond disk...
[z180-stamp-cpm3.git] / cbios / sdio.180
index 783e6810a210fc011f6514f8be6caa6a08edd434..37b7276da7af37ed2fd119e8a272b7db04ad5b8e 100644 (file)
@@ -322,21 +322,24 @@ prompt:
 \r
        call    u$conin$echo    ; get operator response\r
        cp      'Y'\r
-       jr      z,retry         ; Yes, then retry 10 more times\r
+       jr      z,retry         ; Yes, then retry once more\r
 \r
 hard$error:\r
                                ; otherwise,\r
        xor     a\r
        ld      (residual),a\r
-\r
-       ld      a,1             ; return hard error to BDOS\r
+       ld      a,(recv_msg_rc) ; return hard error to BDOS\r
+       ld      c,0ffh\r
+       cp      6               ; media changed?\r
+       jr      z,e_exit\r
+       ld      c,2\r
+       cp      5               ; disk read only?\r
+       jr      z,e_exit\r
+       dec     c\r
+e_exit:\r
+       ld      a,c\r
        ret\r
 \r
-cancel:                                ; here to abort job\r
-       jp      ?wboot          ; leap directly to warmstart vector\r
-\r
-\r
-\r
 ; Print message to error code in A\r
 ;\r
 \r
@@ -426,15 +429,19 @@ read$msg:
 write$msg:\r
        db      ', Write, ',0\r
 \r
+    ; general driver errors\r
+\r
 drvmsg0:       db      'Unknown Error, ',0\r
 drvmsg1:       db      'Invalid Parameter(s), ',0\r
 drvmsg2:       db      'Invalid Drive, ',0\r
 drvmsg3:       db      'Bus Timeout, ',0\r
+drvmsg4:       db      'Access beyond disk size, ',0\r
+drvmsg5:       db      'Write protected, ',0\r
+drvmsg6:       db      'No media, ',0\r
 drvmsg_size    equ     $ - drvmsg0\r
-drvmsg_count   equ     3\r
-\r
+drvmsg_count   equ     7\r
 \r
-; table of pointers to error message strings\r
+    ; fat file system errors\r
 \r
 fr$msg0:       db      'Unknown Error,',0\r
 fr$msg1:       db      'DISK_ERR,',0\r
@@ -458,6 +465,6 @@ fr$msg18:   db      'TOO_MANY_OPEN_FILES,',0
 fr$msg19:      db      'FR_INVALID_PARAMETER,',0\r
 fr$msg20:      db      'short read/write,',0\r
 fr$msg$size    equ     $ - fr$msg0\r
-fr$msg$count   equ     20\r
+fr$msg$count   equ     21\r
 \r
        end\r