1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-07 07:29:33 +00:00

I wasn't aware that the unit numbers in the ProDOS device list contain device type identifiers in the low nibble. So if we can't use the device list entries as-is we can as well present the high nibble as low nibble to the user thus providing more meaningful device numbers.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5852 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
ol.sc 2012-10-15 21:59:51 +00:00
parent 170c59e4c2
commit 272b8e7185
8 changed files with 125 additions and 112 deletions

View File

@ -494,10 +494,10 @@ url="ca65.html" name="assembler manual">.
to the formula
<tscreen>
device = slot * 0x10 + (drive - 1) * 0x80
device = slot + (drive - 1) * 8
</tscreen>
so that for example slot 6 drive 2 is mapped to <tt/device/ 0xE0.
so that for example slot 6 drive 2 is mapped to <tt/device/ 14.
<tag/Sector count/
The function <htmlurl url="dio-3.html" name="dio_query_sectcount()"> returns

View File

@ -500,10 +500,10 @@ url="ca65.html" name="assembler manual">.
to the formula
<tscreen>
device = slot * 0x10 + (drive - 1) * 0x80
device = slot + (drive - 1) * 8
</tscreen>
so that for example slot 6 drive 2 is mapped to <tt/device/ 0xE0.
so that for example slot 6 drive 2 is mapped to <tt/device/ 14.
<tag/Sector count/
The function <htmlurl url="dio-3.html" name="dio_query_sectcount()"> returns

View File

@ -82,6 +82,7 @@ S_OBJS= _scrsize.o \
home.o \
initcwd.o \
iobuf.o \
isdevice.o \
joy_stddrv.o \
kbhit.o \
mainargs.o \

View File

@ -27,13 +27,13 @@ _getdevicedir:
; Set device
jsr popa
asl
asl
asl
asl
sta mliparam + MLI::ON_LINE::UNIT_NUM
; Check for valid slot
tax
and #$0F
bne erange
txa
and #$70
beq erange

View File

@ -5,7 +5,7 @@
;
.export _dio_open
.import return0, __dos_type
.import return0, __dos_type, isdevice
.include "errno.inc"
.include "mli.inc"
@ -17,12 +17,10 @@ _dio_open:
lda #$01 ; "Bad system call number"
bne oserr ; Branch always
; Walk device list
: ldx DEVCNT
: cmp DEVLST,x
beq :+ ; Found drive_id in device list
dex
bpl :-
; Check for valid device
: tax
jsr isdevice
beq :+
lda #$28 ; "No device connected"
; Return oserror
@ -30,6 +28,11 @@ oserr: sta __oserror
jmp return0
; Return success
: ldx #$00
: txa
asl
asl
asl
asl
ldx #$00
stx __oserror
rts

View File

@ -7,42 +7,28 @@
.export _getfirstdevice
.export _getnextdevice
.import __dos_type
.import __dos_type, isdevice
.include "zeropage.inc"
.include "mli.inc"
_getfirstdevice:
lda #$FF
; Fall through
_getnextdevice:
next: tax
inx
txa
cmp #$FF
tax
next: inx
cpx #$FF
beq done
; Check for ProDOS 8
ldx __dos_type
lda __dos_type
beq next
; Up to 14 units may be active
ldx #<DEVLST
ldy #>DEVLST
stx ptr1
sty ptr1+1
; Check for valid device
jsr isdevice
bne next
; 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
done: txa
ldx #$00
rts

22
libsrc/apple2/isdevice.s Normal file
View File

@ -0,0 +1,22 @@
;
; Oliver Schmidt, 2012-10-15
;
.export isdevice
.include "zeropage.inc"
.include "mli.inc"
isdevice:
ldy DEVCNT
: lda DEVLST,y
lsr
lsr
lsr
lsr
sta tmp1
cpx tmp1
beq :+
dey
bpl :-
: rts

View File

@ -85,6 +85,7 @@ S_OBJS= _scrsize.o \
home.o \
initcwd.o \
iobuf.o \
isdevice.o \
joy_stddrv.o \
kbhit.o \
mainargs.o \