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

syschdir by Stefan Haubenthal

git-svn-id: svn://svn.cc65.org/cc65/trunk@4658 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cpg 2010-05-01 22:33:25 +00:00
parent c24fc36d36
commit 84b1e343b5
3 changed files with 123 additions and 0 deletions

View File

@ -88,6 +88,7 @@ OBJS = _scrsize.o \
gotoy.o \
gotoxy.o \
graphics.o \
initcwd.o \
inviocb.o \
joy_stddrv.o \
kbhit.o \
@ -107,6 +108,7 @@ OBJS = _scrsize.o \
scroll.o \
setcolor.o \
siocall.o \
syschdir.o \
sysmkdir.o \
sysremove.o \
sysrmdir.o \

33
libsrc/atari/initcwd.s Normal file
View File

@ -0,0 +1,33 @@
;
; Stefan Haubenthal, 2008-04-29
;
.export initcwd
.import findfreeiocb
.import __cwd
.include "atari.inc"
.segment "INIT"
.proc initcwd
jsr findfreeiocb
bne oserr
lda #48
sta ICCOM,x
lda #<__cwd
sta ICBLL,x
lda #>__cwd
sta ICBLH,x
jsr CIOV
bmi oserr
ldx #0 ; ATEOL -> \0
: lda __cwd,x
inx
cmp #ATEOL
bne :-
lda #0
sta __cwd-1,x
oserr: rts
.endproc

88
libsrc/atari/syschdir.s Normal file
View File

@ -0,0 +1,88 @@
;
; Stefan Haubenthal, 2005-12-24
; Based on on code by Christian Groessler
;
; unsigned char __fastcall__ _syschdir (const char* name);
; for SpartaDOS and MyDOS
;
.include "atari.inc"
.import findfreeiocb
.import __dos_type
.import initcwd
.importzp tmp4
.ifdef UCASE_FILENAME
.importzp tmp3
.import addysp
.import ucase_fn
.endif
.export __syschdir
.proc __syschdir
pha ; save input parameter
txa
pha
jsr findfreeiocb
beq iocbok ; we found one
pla
pla ; fix up stack
lda #TMOF ; too many open files
rts
iocbok: stx tmp4 ; remember IOCB index
pla
tax
pla ; get argument again
.ifdef UCASE_FILENAME
jsr ucase_fn
bcc ucok1
lda #182 ; see oserror.s
rts
ucok1:
.endif ; defined UCASE_FILENAME
ldy tmp4 ; IOCB index
sta ICBAL,y ; store pointer to filename
txa
sta ICBAH,y
tya
tax
lda __dos_type
cmp #SPARTADOS
beq :+
lda #41
.byte $2C ; BIT <abs>
: lda #44
sta ICCOM,x
lda #0
sta ICAX1,x
sta ICAX2,x
sta ICBLL,x
sta ICBLH,x
jsr CIOV
.ifdef UCASE_FILENAME
tya
pha
ldy tmp3 ; get size
jsr addysp ; free used space on the stack
pla
tay
.endif ; defined UCASE_FILENAME
bmi cioerr
jsr initcwd
lda #0
rts
cioerr: tya
rts
.endproc ; __syschdir