mirror of
https://github.com/cc65/cc65.git
synced 2025-01-12 02:30:44 +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:
parent
170c59e4c2
commit
272b8e7185
@ -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
|
||||
|
@ -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
|
||||
|
@ -82,6 +82,7 @@ S_OBJS= _scrsize.o \
|
||||
home.o \
|
||||
initcwd.o \
|
||||
iobuf.o \
|
||||
isdevice.o \
|
||||
joy_stddrv.o \
|
||||
kbhit.o \
|
||||
mainargs.o \
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
22
libsrc/apple2/isdevice.s
Normal 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
|
@ -85,6 +85,7 @@ S_OBJS= _scrsize.o \
|
||||
home.o \
|
||||
initcwd.o \
|
||||
iobuf.o \
|
||||
isdevice.o \
|
||||
joy_stddrv.o \
|
||||
kbhit.o \
|
||||
mainargs.o \
|
||||
|
Loading…
x
Reference in New Issue
Block a user