diff options
Diffstat (limited to 'jefs.fs')
| -rw-r--r-- | jefs.fs | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -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 |
