From 0f1cd5088361bc7c8b92bfed54ec0d70e9752e62 Mon Sep 17 00:00:00 2001
From: "ol.sc"
Date: Sun, 9 Sep 2012 13:38:32 +0000
Subject: [PATCH] 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
---
doc/apple2.sgml | 2 --
include/apple2.h | 6 -----
libsrc/apple2/Makefile | 2 +-
libsrc/apple2/drives.s | 36 -----------------------------
libsrc/apple2/getdevice.s | 48 +++++++++++++++++++++++++++++++++++++++
libsrc/apple2enh/Makefile | 2 +-
6 files changed, 50 insertions(+), 46 deletions(-)
delete mode 100644 libsrc/apple2/drives.s
create mode 100644 libsrc/apple2/getdevice.s
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 \
--
2.39.5