mirror of
https://github.com/cc65/cc65.git
synced 2025-01-14 00:32:08 +00:00
initial version by Stefan A. Haubenthal
git-svn-id: svn://svn.cc65.org/cc65/trunk@4828 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
ef5f3970e5
commit
1aeb5651f5
117
libsrc/atari/posixdirent.s
Normal file
117
libsrc/atari/posixdirent.s
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
; Native: Shawn Jefferson, December 2005
|
||||||
|
; POSIX: Stefan Haubenthal, April 2008
|
||||||
|
|
||||||
|
.include "atari.inc"
|
||||||
|
.export _opendir, _readdir, _closedir
|
||||||
|
.import findfreeiocb, clriocb
|
||||||
|
.import __oserror, return0, __do_oserror
|
||||||
|
.importzp ptr1, tmp1
|
||||||
|
|
||||||
|
_opendir: sta ptr1
|
||||||
|
stx ptr1+1
|
||||||
|
jsr findfreeiocb
|
||||||
|
beq @iocbok
|
||||||
|
bne cioerr
|
||||||
|
@iocbok: stx diriocb
|
||||||
|
jsr clriocb
|
||||||
|
ldx diriocb
|
||||||
|
lda #<defdev
|
||||||
|
sta ICBAL,x
|
||||||
|
lda #>defdev
|
||||||
|
sta ICBAH,x
|
||||||
|
ldy #0 ; '.' -> "D:*.*"
|
||||||
|
lda (ptr1),y
|
||||||
|
cmp #'.'
|
||||||
|
beq @default
|
||||||
|
lda ptr1
|
||||||
|
sta ICBAL,x
|
||||||
|
lda ptr1+1
|
||||||
|
sta ICBAH,x
|
||||||
|
@default: lda #OPEN
|
||||||
|
sta ICCOM,x
|
||||||
|
lda #OPNIN|DIRECT
|
||||||
|
sta ICAX1,x
|
||||||
|
jsr CIOV
|
||||||
|
bmi cioerr
|
||||||
|
lda #0
|
||||||
|
sta __oserror
|
||||||
|
tax
|
||||||
|
lda diriocb
|
||||||
|
rts
|
||||||
|
cioerr: sty __oserror
|
||||||
|
jmp return0
|
||||||
|
|
||||||
|
.proc _readdir
|
||||||
|
tax
|
||||||
|
lda #GETREC
|
||||||
|
sta ICCOM,x
|
||||||
|
lda #<entry
|
||||||
|
sta ICBAL,x
|
||||||
|
sta ptr1
|
||||||
|
lda #>entry
|
||||||
|
sta ICBAH,x
|
||||||
|
sta ptr1+1
|
||||||
|
lda #DSCTSZ
|
||||||
|
sta ICBLL,x
|
||||||
|
lda #0
|
||||||
|
sta ICBLH,x
|
||||||
|
jsr CIOV
|
||||||
|
bmi cioerr
|
||||||
|
ldy #0 ; FREE SECTORS
|
||||||
|
lda (ptr1),y
|
||||||
|
cmp #'0'
|
||||||
|
bcs cioerr
|
||||||
|
dey
|
||||||
|
@next: iny ; remove trailing spaces
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
lda (ptr1),y
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
sta (ptr1),y
|
||||||
|
cpy #9
|
||||||
|
bcs @break
|
||||||
|
cmp #' '
|
||||||
|
bne @next
|
||||||
|
@break: lda #'.' ; extension dot
|
||||||
|
sta (ptr1),y
|
||||||
|
iny ; copy extension
|
||||||
|
sty tmp1
|
||||||
|
ldy #10
|
||||||
|
jsr copychar
|
||||||
|
ldy #11
|
||||||
|
jsr copychar
|
||||||
|
ldy #12
|
||||||
|
jsr copychar
|
||||||
|
lda #0 ; end of string
|
||||||
|
sta (ptr1),y
|
||||||
|
lda ptr1
|
||||||
|
ldx ptr1+1
|
||||||
|
rts
|
||||||
|
|
||||||
|
copychar: lda (ptr1),y ; src=y dest=tmp1
|
||||||
|
cmp #' '
|
||||||
|
ldy tmp1
|
||||||
|
beq @break
|
||||||
|
sta (ptr1),y
|
||||||
|
iny
|
||||||
|
sty tmp1
|
||||||
|
@break: rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
.proc _closedir
|
||||||
|
tax
|
||||||
|
lda #CLOSE
|
||||||
|
sta ICCOM,x
|
||||||
|
jsr CIOV
|
||||||
|
bmi @cioerr
|
||||||
|
rts
|
||||||
|
@cioerr: jmp __do_oserror
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
.rodata
|
||||||
|
defdev: .asciiz "D:*.*"
|
||||||
|
|
||||||
|
.bss
|
||||||
|
diriocb: .res 1
|
||||||
|
entry: .res 128
|
Loading…
x
Reference in New Issue
Block a user