extrn @dtbl ; table of pointers to XDPHs\r
public @adrv,@rdrv,@trk,@sect ; parameters for disk I/O\r
public @dma,@dbnk,@cnt ; '' '' '' ''\r
+ public @xdph\r
\r
; memory control\r
\r
seldsk:\r
ld a,c ; save drive select code\r
ld (@adrv),a\r
- ld b,0 ; create index from drive code\r
+ xor a\r
+ ld (@cnt),a\r
+ ld b,a ; create index from drive code\r
ld hl,@dtbl\r
add hl,bc ; get pointer to dispatch table\r
add hl,bc\r
or h\r
ret z ; if no entry in table, no disk\r
\r
- ld a,e ; examine login bit\r
- and 1\r
- ret nz\r
-\r
- push ix\r
- ld ix,(@xdph)\r
- ld a,(ix-2)\r
- ld (@RDRV),a ; get relative drive\r
- ld l,(ix-6) ; get address of LOGIN routine\r
- ld h,(ix-5)\r
- ex (sp),ix\r
- pop de\r
+ bit 0,e ; login bit to zero flag\r
+ ex de,hl\r
+ ld hl,-2 ; get relative drive\r
+ add hl,de\r
+ ld a,(hl)\r
+ ld (@RDRV),a\r
+ jr nz,notfirst ; examine login bit\r
+ ld hl,-6\r
+ add hl,de\r
+ ld a,(hl)\r
+ inc hl\r
+ ld h,(hl)\r
+ ld l,a\r
call ipchl ; call LOGIN\r
+notfirst:\r
ld hl,(@xdph) ; recover DPH pointer\r
ret\r
\r