mirror of
https://github.com/cc65/cc65.git
synced 2024-12-24 11:31:31 +00:00
Add provisions to open a disk directory using open().
git-svn-id: svn://svn.cc65.org/cc65/trunk@5663 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
4663245219
commit
64d3d9e41f
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
.export fnparse, fnparsename, fnset
|
.export fnparse, fnparsename, fnset
|
||||||
.export fnadd, fnaddmode, fncomplete, fndefunit
|
.export fnadd, fnaddmode, fncomplete, fndefunit
|
||||||
.export fnunit, fnlen, fncmd, fnbuf
|
.export fnunit, fnlen, fnisfile, fncmd, fnbuf
|
||||||
|
|
||||||
.import SETNAM
|
.import SETNAM
|
||||||
.import __curunit, __filetype
|
.import __curunit, __filetype
|
||||||
@ -106,10 +106,30 @@ drivedone:
|
|||||||
lda #2 ; Length of drive spec
|
lda #2 ; Length of drive spec
|
||||||
sta fnlen
|
sta fnlen
|
||||||
|
|
||||||
; Copy the name into the file name buffer. The subroutine returns an error
|
; Assume this is a standard file on disk
|
||||||
; code in A and zero flag set if the were no errors.
|
|
||||||
|
|
||||||
jmp fnparsename
|
sta fnisfile
|
||||||
|
|
||||||
|
; Special treatment for directory. If the file name is "$", things are
|
||||||
|
; actually different: $ is directory for unit 0, $0 dito, $1 is directory
|
||||||
|
; for unit 1. For simplicity, we won't check anything else if the first
|
||||||
|
; character of the file name is '$'.
|
||||||
|
|
||||||
|
lda (ptr1),y ; Get first character
|
||||||
|
cmp #'$' ;
|
||||||
|
bne fnparsename
|
||||||
|
|
||||||
|
; Juggle stuff
|
||||||
|
|
||||||
|
ldx fnbuf+0 ; unit
|
||||||
|
stx fnbuf+1
|
||||||
|
sta fnbuf+0
|
||||||
|
|
||||||
|
; No need to check the name. Length is already 2
|
||||||
|
|
||||||
|
lda #0 ; ok flag
|
||||||
|
sta fnisfile ; This is not a real file
|
||||||
|
rts
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
@ -163,10 +183,11 @@ fnadd: ldx fnlen
|
|||||||
|
|
||||||
.bss
|
.bss
|
||||||
|
|
||||||
fnunit: .res 1
|
fnunit: .res 1
|
||||||
fnlen: .res 1
|
fnlen: .res 1
|
||||||
|
fnisfile: .res 1 ; Flags standard file (as opposed to "$")
|
||||||
|
|
||||||
.data
|
.data
|
||||||
fncmd: .byte 's' ; Use as scratch command
|
fncmd: .byte 's' ; Use as scratch command
|
||||||
fnbuf: .res 35 ; Either 0:0123456789012345,t,m
|
fnbuf: .res 35 ; Either 0:0123456789012345,t,m
|
||||||
; Or 0:0123456789012345=0123456789012345
|
; Or 0:0123456789012345=0123456789012345
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
.import addysp, popax
|
.import addysp, popax
|
||||||
.import scratch, fnparse, fnaddmode, fncomplete, fnset
|
.import scratch, fnparse, fnaddmode, fncomplete, fnset
|
||||||
.import opencmdchannel, closecmdchannel, readdiskerror
|
.import opencmdchannel, closecmdchannel, readdiskerror
|
||||||
.import fnunit
|
.import fnunit, fnisfile
|
||||||
.import _close
|
.import _close
|
||||||
.importzp sp, tmp2, tmp3
|
.importzp sp, tmp2, tmp3
|
||||||
|
|
||||||
@ -158,7 +158,10 @@ common: sta tmp3
|
|||||||
clc
|
clc
|
||||||
adc #LFN_OFFS
|
adc #LFN_OFFS
|
||||||
ldx fnunit
|
ldx fnunit
|
||||||
tay ; Use the LFN also as SA
|
ldy fnisfile ; Is this a standard file on disk?
|
||||||
|
beq nofile ; Branch if not
|
||||||
|
tay ; Use the LFN also as SA for files
|
||||||
|
nofile: ; ... else use SA=0 (read)
|
||||||
jsr SETLFS ; Set the file params
|
jsr SETLFS ; Set the file params
|
||||||
|
|
||||||
jsr OPEN
|
jsr OPEN
|
||||||
|
Loading…
Reference in New Issue
Block a user