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.2