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