[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:
jedeoric 2021-03-11 09:42:14 +01:00 committed by GitHub
parent 23fba6cc37
commit 4f26650228
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 41 additions and 8 deletions

View File

@ -284,6 +284,8 @@ XSOUND = $44
XMUSIC = $45
XZAP = $46 ; Send Zap sound to PSG
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)
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)

View File

@ -10,8 +10,7 @@
initcwd:
ldx #PWD_PTR
BRK_TELEMON XVARS
BRK_TELEMON(XGETCWD)
sta ptr1
sty ptr1+1

View File

@ -12,21 +12,21 @@
;int read (int fd, void* buf, unsigned count);
.proc _read
sta ptr1 ; count
stx ptr1+1 ; count
jsr popax ; get buf
sta ptr1 ; Count
stx ptr1+1 ; Count
jsr popax ; Get buf
sta PTR_READ_DEST
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 ;
; jsr popax ; fp pointer don't care in this version
lda ptr1 ;
ldy ptr1+1 ;
BRK_TELEMON XFREAD ; calls telemon30 routine
; compute nb of bytes read
; Compute nb of bytes read
lda PTR_READ_DEST+1
sec
sbc ptr2+1

View 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