From 1bbbed5e96242f1784958101a3d4b6aa43c323c1 Mon Sep 17 00:00:00 2001 From: "ol.sc" Date: Mon, 24 May 2010 20:10:19 +0000 Subject: [PATCH] Added functions to learn about the unit numbers of the ProDOS 8 devices found. git-svn-id: svn://svn.cc65.org/cc65/trunk@4663 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- include/apple2.h | 6 ++++++ libsrc/apple2/Makefile | 1 + libsrc/apple2/drives.s | 38 ++++++++++++++++++++++++++++++++++++++ libsrc/apple2/mli.inc | 2 ++ libsrc/apple2enh/Makefile | 1 + 5 files changed, 48 insertions(+) create mode 100644 libsrc/apple2/drives.s diff --git a/include/apple2.h b/include/apple2.h index 15fb8baca..1fbf181e7 100644 --- a/include/apple2.h +++ b/include/apple2.h @@ -143,6 +143,12 @@ unsigned char get_ostype (void); void rebootafterexit (void); /* Reboot machine after program termination has completed. */ +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. */ + #define ser_apple2_slot(num) ser_ioctl (0, (void *) (num)) /* Select a slot number from 1 to 7 prior to ser_open. * The default slot number is 2. diff --git a/libsrc/apple2/Makefile b/libsrc/apple2/Makefile index a38de7482..8ecb7d5b7 100644 --- a/libsrc/apple2/Makefile +++ b/libsrc/apple2/Makefile @@ -70,6 +70,7 @@ S_OBJS= _scrsize.o \ diosectsize.o \ diowrite.o \ dosdetect.o \ + drives.o \ filedes.o \ fileerr.o \ filename.o \ diff --git a/libsrc/apple2/drives.s b/libsrc/apple2/drives.s new file mode 100644 index 000000000..abeafb580 --- /dev/null +++ b/libsrc/apple2/drives.s @@ -0,0 +1,38 @@ +; +; 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 + bne :+ + rts + + ; Number of on-line devices (minus 1) +: ldy DEVCNT + iny + tya + rts + +_drivelist: + ldx #$00 + + ; Check for ProDOS 8 + lda __dos_type + bne :+ + rts + + ; Up to 14 units may be active +: lda #DEVLST + rts diff --git a/libsrc/apple2/mli.inc b/libsrc/apple2/mli.inc index 2134c8785..26b40fdd7 100644 --- a/libsrc/apple2/mli.inc +++ b/libsrc/apple2/mli.inc @@ -115,6 +115,8 @@ EOF_COUNT = 2 .global callmli DEVNUM := $BF30 ; Most recent accessed device +DEVCNT := $BF31 ; Number of on-line devices (minus 1) +DEVLST := $BF32 ; Up to 14 units may be active DATELO := $BF90 ; Bits 15-9 = Year, 8-5 = Month, 4-0 = Day TIMELO := $BF92 ; Bits 12-8 = Hour, 5-0 = Minute PFIXPTR := $BF9A ; If = 0, no prefix active diff --git a/libsrc/apple2enh/Makefile b/libsrc/apple2enh/Makefile index 919362402..d2ed51120 100644 --- a/libsrc/apple2enh/Makefile +++ b/libsrc/apple2enh/Makefile @@ -73,6 +73,7 @@ S_OBJS= _scrsize.o \ diosectsize.o \ diowrite.o \ dosdetect.o \ + drives.o \ filedes.o \ fileerr.o \ filename.o \ -- 2.39.5