]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/blobdiff - cbios/sdio.180
Make ASCI1 the default console device after cold boot.
[z180-stamp-cpm3.git] / cbios / sdio.180
index 0d296450717046bf6b1f654a1ad6b4745553d6eb..774ed122469f25c1965418d9131839febb971ba5 100644 (file)
@@ -58,6 +58,11 @@ bell equ     7
 \r
     ; Extended Disk Parameter Headers (XPDHs)\r
 \r
+       ; dph   translate$table,        - disk parameter header\r
+       ;       disk$parameter$block,\r
+       ;       checksum$size,                  (optional)\r
+       ;       alloc$size                      (optional)\r
+\r
        dw      sd$write\r
        dw      sd$read\r
        dw      sd$login\r
@@ -118,8 +123,16 @@ sd7:       dph 0,dpbsimhd512
 \r
        cseg                    ; DPB must be resident\r
 \r
+       ; dpb   physical$sector$size,   - disk parameter block\r
+       ;       physical$sectors$per$track,\r
+       ;       number$tracks,\r
+       ;       block$size,\r
+       ;       number$dir$entries,\r
+       ;       track$offset,\r
+       ;       checksum$vec$size               (optional)\r
+\r
 dpbsimhd512:\r
-       dpb 512,8,2048,4096,1024,6\r
+       dpb 512,8,2048,4096,1024,6,8100h\r
 \r
 \r
        dseg                    ; rest is banked\r
@@ -130,6 +143,8 @@ dpbsimhd512:
 ; called for first time initialization.\r
 \r
 sd$init0:\r
+       call    pr.inln                 ;\r
+       db      'sdio: SD Card driver'cr,lf,0\r
        ret\r
 \r
 sd$init1:\r
@@ -320,21 +335,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
@@ -424,15 +442,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
@@ -456,6 +478,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