diff --git a/libsrc/cbm/Makefile b/libsrc/cbm/Makefile index 3230ab3b9..99753dd97 100644 --- a/libsrc/cbm/Makefile +++ b/libsrc/cbm/Makefile @@ -72,6 +72,7 @@ S_OBJS = c_acptr.o \ devicedir.o \ dir.o \ diskcmd.o \ + diskinit.o \ exehdr.o \ filedes.o \ filename.o \ diff --git a/libsrc/cbm/devicedir.s b/libsrc/cbm/devicedir.s index b63a8ebe9..3a4e6d774 100644 --- a/libsrc/cbm/devicedir.s +++ b/libsrc/cbm/devicedir.s @@ -5,9 +5,7 @@ ; .export _getdevicedir - .import opencmdchannel, closecmdchannel - .import writefndiskcmd, readdiskerror - .import isdisk, fnunit, fncmd, devicestr + .import diskinit, devicestr, fnunit .import popa, popax .importzp ptr2, ptr3 @@ -29,63 +27,30 @@ sta ptr2 stx ptr2+1 -; Save device +; Check device readiness jsr popa - sta fnunit - -; Check for disk device - - tax - jsr isdisk - bcs erange - -; Open channel - - jsr opencmdchannel - bne oserr - -; Write command - - lda #'i' ; Init command - sta fncmd - jsr writefndiskcmd - bne close - -; Read error - - ldx fnunit - jsr readdiskerror - -; Close channel - -close: pha - ldx fnunit - jsr closecmdchannel - pla - bne oserr + jsr diskinit + beq size + jsr __mappederrno + bne fail ; Branch always ; Check for sufficient buf size - lda ptr3+1 +size: lda ptr3+1 bne okay ; Buf >= 256 lda ptr3 cmp #3 bcs okay ; Buf >= 3 - -erange: lda #