From: ol.sc 
Date: Sun, 9 Sep 2012 13:38:32 +0000 (+0000)
Subject: Replaced Apple II specific solution with implementation of recently introduced mass... 
X-Git-Tag: V2.14~252
X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=0f1cd5088361bc7c8b92bfed54ec0d70e9752e62;p=cc65
Replaced Apple II specific solution with implementation of recently introduced mass-storage device enumaration.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5821 b7a2c559-68d2-44c3-8de9-860c34a00d81
---
diff --git a/doc/apple2.sgml b/doc/apple2.sgml
index 9810b023c..3d55f6f96 100644
--- a/doc/apple2.sgml
+++ b/doc/apple2.sgml
@@ -294,8 +294,6 @@ usage.
 - _auxtype
 - _dos_type
 - _filetype
-- drivecount
-- drivelist
 - get_ostype
 - rebootafterexit
 - rootdir
diff --git a/include/apple2.h b/include/apple2.h
index 84f4fea35..b7826a764 100644
--- a/include/apple2.h
+++ b/include/apple2.h
@@ -149,12 +149,6 @@ extern unsigned int  _auxtype;   /* Default 0 */
 
 
 
-unsigned char drivecount (void);
-/* Returns the number of ProDOS 8 drives. */
-
-unsigned char* drivelist (void);
-/* Returns a pointer to the list of ProDOS 8 drives. */
-
 unsigned char get_ostype (void);
 /* Get the machine type. Returns one of the APPLE_xxx codes. */
 
diff --git a/libsrc/apple2/Makefile b/libsrc/apple2/Makefile
index 9b0a4938e..a8e92f467 100644
--- a/libsrc/apple2/Makefile
+++ b/libsrc/apple2/Makefile
@@ -70,12 +70,12 @@ S_OBJS=	_scrsize.o	\
 	diosectsize.o	\
 	diowrite.o	\
 	dosdetect.o	\
-	drives.o	\
 	exec.o		\
 	exehdr.o	\
 	filedes.o	\
 	filename.o	\
         get_ostype.o    \
+	getdevice.o	\
 	gotoxy.o	\
 	gotoy.o		\
         home.o          \
diff --git a/libsrc/apple2/drives.s b/libsrc/apple2/drives.s
deleted file mode 100644
index b54dfbea9..000000000
--- a/libsrc/apple2/drives.s
+++ /dev/null
@@ -1,36 +0,0 @@
-;
-; Oliver Schmidt, 2010-05-24
-;
-; unsigned char drivecount (void);
-; unsigned char* drivelist (void);
-;
-
-        .export         _drivecount, _drivelist
-        .import         __dos_type
-
-        .include        "mli.inc"
-
-_drivecount:
-        ldx     #$00
-
-        ; Check for ProDOS 8
-        lda     __dos_type
-        beq     :+
-
-        ; Number of on-line devices (minus 1)
-        ldy     DEVCNT
-        iny
-        tya
-:       rts
-
-_drivelist:
-        ldx     #$00
-
-        ; Check for ProDOS 8
-        lda     __dos_type
-        beq     :+
-
-        ; Up to 14 units may be active
-        lda     #DEVLST
-:       rts
diff --git a/libsrc/apple2/getdevice.s b/libsrc/apple2/getdevice.s
new file mode 100644
index 000000000..bc2896991
--- /dev/null
+++ b/libsrc/apple2/getdevice.s
@@ -0,0 +1,48 @@
+;
+; Oliver Schmidt, 2012-09-04
+;
+; unsigned char getfirstdevice (void);
+; unsigned char __fastcall__ getnextdevice (unsigned char device);
+;
+
+        .export         _getfirstdevice
+        .export         _getnextdevice
+
+        .import         __dos_type
+
+        .include        "zeropage.inc"
+        .include        "mli.inc"
+
+_getfirstdevice:
+        lda     #$FF
+        ; Fall through
+
+_getnextdevice:
+next:   tax
+        inx
+        txa
+        cmp     #$FF
+        beq     done
+
+        ; Check for ProDOS 8
+        ldx     __dos_type
+        beq     next
+
+        ; Up to 14 units may be active
+        ldx     #DEVLST
+        stx     ptr1
+        sty     ptr1+1
+
+        ; Number of on-line devices (minus 1)
+        ldy     DEVCNT
+
+	; Does the list contain the device?
+:       cmp     (ptr1),y
+        beq	done
+        dey
+        bpl     :-
+        bmi     next            ; Branch always
+
+done:   ldx     #$00
+        rts
diff --git a/libsrc/apple2enh/Makefile b/libsrc/apple2enh/Makefile
index 4d984901f..7b0cb08b9 100644
--- a/libsrc/apple2enh/Makefile
+++ b/libsrc/apple2enh/Makefile
@@ -73,12 +73,12 @@ S_OBJS=	_scrsize.o	\
 	diosectsize.o	\
 	diowrite.o	\
 	dosdetect.o	\
-	drives.o	\
 	exec.o		\
 	exehdr.o	\
 	filedes.o	\
 	filename.o	\
         get_ostype.o    \
+	getdevice.o	\
 	gotoxy.o	\
 	gotoy.o		\
         home.o          \