[Telestrat] chdir management (#1419)
* add syschdir * revert read.s * remove extra line * Now we update __cwd * Fix tab * Fix another tab * Fix tab * Fix tab and jmp * fix xgetcwd * Fix comments
This commit is contained in:
@@ -284,6 +284,8 @@ XSOUND = $44
|
|||||||
XMUSIC = $45
|
XMUSIC = $45
|
||||||
XZAP = $46 ; Send Zap sound to PSG
|
XZAP = $46 ; Send Zap sound to PSG
|
||||||
XSHOOT = $47
|
XSHOOT = $47
|
||||||
|
XGETCWD = $48 ; Get current CWD
|
||||||
|
XPUTCWD = $49 ; Chdir
|
||||||
XMKDIR = $4B ; Create a folder. Only available in TELEMON 3.x (bank 7 of Orix)
|
XMKDIR = $4B ; Create a folder. Only available in TELEMON 3.x (bank 7 of Orix)
|
||||||
XRM = $4D ; Remove a folder or a file. Only available in TELEMON 3.x (bank 7 of Orix)
|
XRM = $4D ; Remove a folder or a file. Only available in TELEMON 3.x (bank 7 of Orix)
|
||||||
XFWR = $4E ; Put a char on the first screen. Only available in TELEMON 3.x (bank 7 of Orix)
|
XFWR = $4E ; Put a char on the first screen. Only available in TELEMON 3.x (bank 7 of Orix)
|
||||||
|
|||||||
@@ -10,8 +10,7 @@
|
|||||||
|
|
||||||
|
|
||||||
initcwd:
|
initcwd:
|
||||||
ldx #PWD_PTR
|
BRK_TELEMON(XGETCWD)
|
||||||
BRK_TELEMON XVARS
|
|
||||||
|
|
||||||
sta ptr1
|
sta ptr1
|
||||||
sty ptr1+1
|
sty ptr1+1
|
||||||
|
|||||||
@@ -12,21 +12,21 @@
|
|||||||
;int read (int fd, void* buf, unsigned count);
|
;int read (int fd, void* buf, unsigned count);
|
||||||
|
|
||||||
.proc _read
|
.proc _read
|
||||||
sta ptr1 ; count
|
|
||||||
stx ptr1+1 ; count
|
sta ptr1 ; Count
|
||||||
jsr popax ; get buf
|
stx ptr1+1 ; Count
|
||||||
|
jsr popax ; Get buf
|
||||||
|
|
||||||
sta PTR_READ_DEST
|
sta PTR_READ_DEST
|
||||||
stx PTR_READ_DEST+1
|
stx PTR_READ_DEST+1
|
||||||
sta ptr2 ; in order to calculate nb of bytes read
|
sta ptr2 ; In order to calculate nb of bytes read
|
||||||
stx ptr2+1 ;
|
stx ptr2+1 ;
|
||||||
|
|
||||||
; jsr popax ; fp pointer don't care in this version
|
|
||||||
|
|
||||||
lda ptr1 ;
|
lda ptr1 ;
|
||||||
ldy ptr1+1 ;
|
ldy ptr1+1 ;
|
||||||
BRK_TELEMON XFREAD ; calls telemon30 routine
|
BRK_TELEMON XFREAD ; calls telemon30 routine
|
||||||
; compute nb of bytes read
|
; Compute nb of bytes read
|
||||||
lda PTR_READ_DEST+1
|
lda PTR_READ_DEST+1
|
||||||
sec
|
sec
|
||||||
sbc ptr2+1
|
sbc ptr2+1
|
||||||
|
|||||||
32
libsrc/telestrat/syschdir.s
Normal file
32
libsrc/telestrat/syschdir.s
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
;
|
||||||
|
; Jede (jede@oric.org), 2021-02-22
|
||||||
|
;
|
||||||
|
; unsigned char _syschdir (const char* name, ...);
|
||||||
|
;
|
||||||
|
|
||||||
|
.export __syschdir
|
||||||
|
.import addysp, popax
|
||||||
|
.importzp tmp1
|
||||||
|
.import initcwd
|
||||||
|
|
||||||
|
.include "telestrat.inc"
|
||||||
|
.include "zeropage.inc"
|
||||||
|
|
||||||
|
|
||||||
|
__syschdir:
|
||||||
|
; Throw away all parameters except the name
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
jsr addysp
|
||||||
|
|
||||||
|
; Get name
|
||||||
|
jsr popax
|
||||||
|
|
||||||
|
stx tmp1
|
||||||
|
ldy tmp1
|
||||||
|
|
||||||
|
; Call telemon primitive
|
||||||
|
|
||||||
|
BRK_TELEMON(XPUTCWD)
|
||||||
|
|
||||||
|
jmp initcwd ; Update cwd
|
||||||
Reference in New Issue
Block a user