X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp-cpm3.git/blobdiff_plain/7055170fb2f1f27893ab9e86a1d59a3bf894bb00..aeb747d4d09db894700b4c7e53323284f20dece2:/cbios/bioskrnl.180?ds=sidebyside diff --git a/cbios/bioskrnl.180 b/cbios/bioskrnl.180 index 6ead6c3..6c8366f 100644 --- a/cbios/bioskrnl.180 +++ b/cbios/bioskrnl.180 @@ -51,6 +51,7 @@ ccp equ 0100h ; Console Command Processor gets loaded extrn @dtbl ; table of pointers to XDPHs public @adrv,@rdrv,@trk,@sect ; parameters for disk I/O public @dma,@dbnk,@cnt ; '' '' '' '' + public @xdph,@op ; memory control @@ -432,7 +433,10 @@ bnksel: seldsk: ld a,c ; save drive select code ld (@adrv),a - ld b,0 ; create index from drive code + xor a + ld (@op),a + ld (@cnt),a + ld b,a ; create index from drive code ld hl,@dtbl add hl,bc ; get pointer to dispatch table add hl,bc @@ -444,19 +448,21 @@ seldsk: or h ret z ; if no entry in table, no disk - ld a,e ; examine login bit - and 1 - ret nz - - push ix - ld ix,(@xdph) - ld a,(ix-2) - ld (@RDRV),a ; get relative drive - ld l,(ix-6) ; get address of LOGIN routine - ld h,(ix-5) - ex (sp),ix - pop de + bit 0,e ; login bit to zero flag + ex de,hl + ld hl,-2 ; get relative drive + add hl,de + ld a,(hl) + ld (@RDRV),a + jr nz,notfirst ; examine login bit + ld hl,-6 + add hl,de + ld a,(hl) + inc hl + ld h,(hl) + ld l,a call ipchl ; call LOGIN +notfirst: ld hl,(@xdph) ; recover DPH pointer ret @@ -533,6 +539,8 @@ sectrn: ; extended disk parameter header (XDPH). read: + ld a,1 + ld (@op),a ld ix,(@xdph) ; get drive descriptor pointer ld l,(ix-8) ; get read routine entry ld h,(ix-7) @@ -545,6 +553,8 @@ read: ; extended disk parameter header (XDPH). write: + ld a,2 + ld (@op),a ld ix,(@xdph) ; get drive descriptor pointer ld l,(ix-10) ; get write routine entry ld h,(ix- 9) @@ -573,6 +583,7 @@ flush: ; do not change order. sd driver depends on this @xdph: ds 2 ; pointer to currently selected drives dph +@op ds 1 ; current disk operation 0:select, 1:read, 2 write @adrv: ds 1 ; currently selected disk drive @rdrv: ds 1 ; controller relative disk drive @trk: ds 2 ; current track number