summaryrefslogtreecommitdiff
path: root/jefs.fs
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-02-27 14:32:28 +1100
committerkitty <nepeta@canaglie.net>2026-02-27 14:32:28 +1100
commita6601fef71e3c9711e21af680ef0b6ef26deb473 (patch)
treec64280ec90ffca0470c00e963b0d0bc0878e8560 /jefs.fs
parentfcd9ad7b2af1668edb83f8b5a59974acc0505f4c (diff)
move syswrite to filehandle area
read-file does not work right now
Diffstat (limited to 'jefs.fs')
-rw-r--r--jefs.fs15
1 files changed, 8 insertions, 7 deletions
diff --git a/jefs.fs b/jefs.fs
index 4551250..18ea7e1 100644
--- a/jefs.fs
+++ b/jefs.fs
@@ -9,9 +9,8 @@
\ interactive input
: cell+ 8 + ;
-: syswrite ( u c-addr fd -- n ) 1 syscall3 ;
-: say ( c-addr u -- ) swap 1 syswrite drop ;
-: emit ( chr -- ) sp cell+ 1 swap 1 syswrite 2drop ;
+: say ( c-addr u -- ) swap 1 1 syscall3 drop ;
+: emit ( chr -- ) sp cell+ 1 swap 1 1 syscall3 2drop ;
: cr 10 emit ;
: decimal 10 base ! ;
@@ -230,12 +229,12 @@ variable hld
\ }}}
\ FILE I/O {{{
-\ for syswrite see the top of the file
0 constant stdin
1 constant stdout
2 constant stderr
: sysread ( u c-addr fd -- ) 0 syscall3 ;
+: syswrite ( u c-addr fd -- n ) 1 syscall3 ;
: sysopen ( mode flags filename -- ) 2 syscall3 ;
: sysclose ( fd -- ) 3 syscall1 ;
@@ -243,13 +242,15 @@ variable hld
1 constant w/o
2 constant r/w
+8192 constant file-buffer-length
+make file-buffer file-buffer-length allot
+
\ TODO error handling (0< abs → errno i think)
\ flags are zero on success
: open-file ( mode zstr -- ?fd flag ) 0 -rot sysopen errno ;
: close-file ( fd -- flag ) sysclose errno-flag ;
-: read-file ( c-addr u fd -- ?u flag ) >r swap r> sysread errno ;
+: read-file ( c-addr u fd -- ?u flag ) >r swap r> sysread errno ;
+: write-file ( c-addr u fd -- ?u flag ) >r swap r> syswrite errno ;
\ }}}
-make buf 8192 allot
-
.free bye