initcwd from Oliver Schmidt
git-svn-id: svn://svn.cc65.org/cc65/trunk@3466 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -65,6 +65,7 @@ OBJS= _scrsize.o \
|
|||||||
getenv.o \
|
getenv.o \
|
||||||
gotoxy.o \
|
gotoxy.o \
|
||||||
gotoy.o \
|
gotoy.o \
|
||||||
|
initcwd.o \
|
||||||
joy_stddrv.o \
|
joy_stddrv.o \
|
||||||
kbhit.o \
|
kbhit.o \
|
||||||
mainargs.o \
|
mainargs.o \
|
||||||
|
|||||||
37
libsrc/apple2/initcwd.s
Normal file
37
libsrc/apple2/initcwd.s
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
;
|
||||||
|
; Oliver Schmidt, 18.04.2005
|
||||||
|
;
|
||||||
|
|
||||||
|
.export initcwd
|
||||||
|
.import __cwd
|
||||||
|
|
||||||
|
.include "zeropage.inc"
|
||||||
|
.include "mli.inc"
|
||||||
|
|
||||||
|
initcwd:
|
||||||
|
; Use imported buffer
|
||||||
|
lda #<__cwd
|
||||||
|
ldx #>__cwd
|
||||||
|
sta mliparam + MLI::PREFIX::PATHNAME
|
||||||
|
stx mliparam + MLI::PREFIX::PATHNAME+1
|
||||||
|
|
||||||
|
; Get current working directory
|
||||||
|
lda #GET_PREFIX_CALL
|
||||||
|
ldx #PREFIX_COUNT
|
||||||
|
jsr callmli
|
||||||
|
|
||||||
|
; Check length byte
|
||||||
|
ldx __cwd
|
||||||
|
beq done
|
||||||
|
|
||||||
|
; Replace trailing slash with zero
|
||||||
|
sta __cwd,x ; A = 0
|
||||||
|
|
||||||
|
; Remove length byte
|
||||||
|
tax
|
||||||
|
: inx
|
||||||
|
lda __cwd,x
|
||||||
|
sta __cwd-1,x
|
||||||
|
bne :-
|
||||||
|
|
||||||
|
done: rts
|
||||||
@@ -11,9 +11,19 @@ RW_BLOCK_COUNT = 3
|
|||||||
CREATE_CALL = $C0
|
CREATE_CALL = $C0
|
||||||
CREATE_COUNT = 7
|
CREATE_COUNT = 7
|
||||||
|
|
||||||
|
DESTROY_CALL = $C1
|
||||||
|
DESTROY_COUNT = 1
|
||||||
|
|
||||||
|
RENAME_CALL = $C2
|
||||||
|
RENAME_COUNT = 2
|
||||||
|
|
||||||
ON_LINE_CALL = $C5
|
ON_LINE_CALL = $C5
|
||||||
ON_LINE_COUNT = 2
|
ON_LINE_COUNT = 2
|
||||||
|
|
||||||
|
SET_PREFIX_CALL = $C6
|
||||||
|
GET_PREFIX_CALL = $C7
|
||||||
|
PREFIX_COUNT = 1
|
||||||
|
|
||||||
OPEN_CALL = $C8
|
OPEN_CALL = $C8
|
||||||
OPEN_COUNT = 3
|
OPEN_COUNT = 3
|
||||||
|
|
||||||
@@ -35,60 +45,73 @@ EOF_COUNT = 2
|
|||||||
.struct MLI
|
.struct MLI
|
||||||
.union
|
.union
|
||||||
.struct RW_BLOCK
|
.struct RW_BLOCK
|
||||||
PARAM_COUNT .byte
|
PARAM_COUNT .byte
|
||||||
UNIT_NUM .byte
|
UNIT_NUM .byte
|
||||||
DATA_BUFFER .addr
|
DATA_BUFFER .addr
|
||||||
BLOCK_NUM .word
|
BLOCK_NUM .word
|
||||||
.endstruct
|
.endstruct
|
||||||
.struct CREATE
|
.struct CREATE
|
||||||
|
PARAM_COUNT .byte
|
||||||
|
PATHNAME .addr
|
||||||
|
ACCESS .byte
|
||||||
|
FILE_TYPE .byte
|
||||||
|
AUX_TYPE .word
|
||||||
|
STORAGE_TYPE .byte
|
||||||
|
CREATE_DATE .word
|
||||||
|
CREATE_TIME .word
|
||||||
|
.endstruct
|
||||||
|
.struct DESTROY
|
||||||
|
PARAM_COUNT .byte
|
||||||
|
PATHNAME .addr
|
||||||
|
.endstruct
|
||||||
|
.struct RENAME
|
||||||
|
PARAM_COUNT .byte
|
||||||
|
PATHNAME .addr
|
||||||
|
NEW_PATHNAME .addr
|
||||||
|
.endstruct
|
||||||
|
.struct ON_LINE
|
||||||
|
PARAM_COUNT .byte
|
||||||
|
UNIT_NUM .byte
|
||||||
|
DATA_BUFFER .addr
|
||||||
|
.endstruct
|
||||||
|
.struct PREFIX
|
||||||
PARAM_COUNT .byte
|
PARAM_COUNT .byte
|
||||||
PATHNAME .addr
|
PATHNAME .addr
|
||||||
ACCESS .byte
|
|
||||||
FILE_TYPE .byte
|
|
||||||
AUX_TYPE .word
|
|
||||||
STORAGE_TYPE .byte
|
|
||||||
CREATE_DATE .word
|
|
||||||
CREATE_TIME .word
|
|
||||||
.endstruct
|
|
||||||
.struct ON_LINE
|
|
||||||
PARAM_COUNT .byte
|
|
||||||
UNIT_NUM .byte
|
|
||||||
DATA_BUFFER .addr
|
|
||||||
.endstruct
|
.endstruct
|
||||||
.struct OPEN
|
.struct OPEN
|
||||||
PARAM_COUNT .byte
|
PARAM_COUNT .byte
|
||||||
PATHNAME .addr
|
PATHNAME .addr
|
||||||
IO_BUFFER .addr
|
IO_BUFFER .addr
|
||||||
REF_NUM .byte
|
REF_NUM .byte
|
||||||
.endstruct
|
.endstruct
|
||||||
.struct RW
|
.struct RW
|
||||||
PARAM_COUNT .byte
|
PARAM_COUNT .byte
|
||||||
REF_NUM .byte
|
REF_NUM .byte
|
||||||
DATA_BUFFER .addr
|
DATA_BUFFER .addr
|
||||||
REQUEST_COUNT .word
|
REQUEST_COUNT .word
|
||||||
TRANS_COUNT .word
|
TRANS_COUNT .word
|
||||||
.endstruct
|
.endstruct
|
||||||
.struct CLOSE
|
.struct CLOSE
|
||||||
PARAM_COUNT .byte
|
PARAM_COUNT .byte
|
||||||
REF_NUM .byte
|
REF_NUM .byte
|
||||||
.endstruct
|
.endstruct
|
||||||
.struct MARK
|
.struct MARK
|
||||||
PARAM_COUNT .byte
|
PARAM_COUNT .byte
|
||||||
REF_NUM .byte
|
REF_NUM .byte
|
||||||
POSITION .byte 3
|
POSITION .byte 3
|
||||||
.endstruct
|
.endstruct
|
||||||
.struct EOF
|
.struct EOF
|
||||||
PARAM_COUNT .byte
|
PARAM_COUNT .byte
|
||||||
REF_NUM .byte
|
REF_NUM .byte
|
||||||
EOF .byte 3
|
EOF .byte 3
|
||||||
.endstruct
|
.endstruct
|
||||||
.endunion
|
.endunion
|
||||||
.endstruct
|
.endstruct
|
||||||
|
|
||||||
.global mliparam
|
.global mliparam
|
||||||
.global callmli
|
.global callmli
|
||||||
|
|
||||||
ENTRY := $BF00 ; MLI call entry point
|
ENTRY := $BF00 ; MLI call entry point
|
||||||
DEVNUM := $BF30 ; Most recent accessed device
|
DEVNUM := $BF30 ; Most recent accessed device
|
||||||
PFIXPTR := $BF9A ; If = 0, no prefix active
|
PFIXPTR := $BF9A ; If = 0, no prefix active
|
||||||
KVERSION:= $BFFF ; Kernel version number
|
KVERSION:= $BFFF ; Kernel version number
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ OBJS= _scrsize.o \
|
|||||||
getenv.o \
|
getenv.o \
|
||||||
gotoxy.o \
|
gotoxy.o \
|
||||||
gotoy.o \
|
gotoy.o \
|
||||||
|
initcwd.o \
|
||||||
joy_stddrv.o \
|
joy_stddrv.o \
|
||||||
kbhit.o \
|
kbhit.o \
|
||||||
mainargs.o \
|
mainargs.o \
|
||||||
|
|||||||
Reference in New Issue
Block a user