From a28ee78cdd671f113af301e41ecf857d2f2c9d41 Mon Sep 17 00:00:00 2001 From: Leo C Date: Sat, 21 May 2016 22:35:43 +0200 Subject: [PATCH] sd drive login: return 0 (== no disk), if login function detects error --- cbios/boot.180 | 2 +- cbios/gencpm.dat | 50 ++++++++++++++++++++++++------------------------ cbios/sdio.180 | 11 +++++++++-- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/cbios/boot.180 b/cbios/boot.180 index 5b55c29..e0463e6 100644 --- a/cbios/boot.180 +++ b/cbios/boot.180 @@ -155,7 +155,7 @@ hwini_tab: db dcntl,CWAITIO ;wait states db ccr,M_NCD ;No Clock Divide db cmr,PHI_X2 ;X2 Clock Multiplier -;TODO: db omr, ;Operation Mode Control Register + db omcr,~M_IOC ;Operation Mode Control Register hwini0_e: db 0 ;stop mark diff --git a/cbios/gencpm.dat b/cbios/gencpm.dat index 33eeda6..bbd632b 100644 --- a/cbios/gencpm.dat +++ b/cbios/gencpm.dat @@ -9,9 +9,9 @@ BNKSWT = Y COMBAS = F0 LERROR = Y NUMSEGS = 03 -MEMSEG00 = 50,30,00 -MEMSEG01 = 10,B0,02 -MEMSEG02 = 01,BF,03 +MEMSEG00 = 50,4E,00 +MEMSEG01 = 10,E0,02 +MEMSEG02 = 01,EF,03 MEMSEG03 = 00,C0,04 MEMSEG04 = 00,C0,05 MEMSEG05 = 00,C0,06 @@ -57,14 +57,14 @@ ALTBNKSM = N ALTBNKSN = N ALTBNKSO = N ALTBNKSP = N -NDIRRECA = 01 -NDIRRECB = 01 -NDIRRECC = 01 -NDIRRECD = 01 -NDIRRECE = 01 -NDIRRECF = 01 -NDIRRECG = 01 -NDIRRECH = 01 +NDIRRECA = 10 +NDIRRECB = 10 +NDIRRECC = 00 +NDIRRECD = 00 +NDIRRECE = 00 +NDIRRECF = 00 +NDIRRECG = 00 +NDIRRECH = 00 NDIRRECI = 01 NDIRRECJ = 01 NDIRRECK = 01 @@ -73,14 +73,14 @@ NDIRRECM = 01 NDIRRECN = 01 NDIRRECO = 01 NDIRRECP = 01 -NDTARECA = 20 -NDTARECB = 20 -NDTARECC = 20 -NDTARECD = 20 -NDTARECE = 01 -NDTARECF = 01 -NDTARECG = 01 -NDTARECH = 01 +NDTARECA = 53 +NDTARECB = 53 +NDTARECC = 00 +NDTARECD = 00 +NDTARECE = 00 +NDTARECF = 00 +NDTARECG = 00 +NDTARECH = 00 NDTARECI = 01 NDTARECJ = 01 NDTARECK = 01 @@ -92,11 +92,11 @@ NDTARECP = 01 ODIRDRVA = A ODIRDRVB = A ODIRDRVC = A -ODIRDRVD = A +ODIRDRVD = B ODIRDRVE = A -ODIRDRVF = A +ODIRDRVF = B ODIRDRVG = A -ODIRDRVH = A +ODIRDRVH = B ODIRDRVI = A ODIRDRVJ = A ODIRDRVK = A @@ -108,11 +108,11 @@ ODIRDRVP = A ODTADRVA = A ODTADRVB = A ODTADRVC = A -ODTADRVD = A +ODTADRVD = B ODTADRVE = A -ODTADRVF = A +ODTADRVF = B ODTADRVG = A -ODTADRVH = A +ODTADRVH = B ODTADRVI = A ODTADRVJ = A ODTADRVK = A diff --git a/cbios/sdio.180 b/cbios/sdio.180 index c706aa6..0d29645 100644 --- a/cbios/sdio.180 +++ b/cbios/sdio.180 @@ -10,6 +10,7 @@ ; Variables containing parameters passed by BDOS + extrn @xdph extrn @adrv,@rdrv extrn @trk,@sect,@cnt extrn @dma,@dbnk @@ -145,6 +146,9 @@ sd$init7: ; be logged into for the purpose of density determination. ; It may adjust the parameters contained in the disk ; parameter header pointed at by +; +; absolute drive number in @adrv (8 bits) +0 +; relative drive number in @rdrv (8 bits) +1 sd$login: xor a @@ -176,8 +180,11 @@ sd$login: ld b,recv_msg_len ; max receive message len call msg.recv -; ld a,(recv_msg_rc) -; or a + ld a,(recv_msg_rc) + or a + ret z + ld hl,0 + ld (@xdph),hl ret ; -- 2.39.2