syschdir by Stefan Haubenthal
git-svn-id: svn://svn.cc65.org/cc65/trunk@4658 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
c24fc36d36
commit
84b1e343b5
3 changed files with 123 additions and 0 deletions
|
@ -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
33
libsrc/atari/initcwd.s
Normal 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
88
libsrc/atari/syschdir.s
Normal 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
|
Loading…
Add table
Reference in a new issue