From b674f3932e0ac76ef008e5ca3dd3f7fe8e3c4299 Mon Sep 17 00:00:00 2001 From: d_m Date: Mon, 23 Sep 2024 23:36:36 -0400 Subject: [PATCH] basic filetest --- filetest.tal | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 filetest.tal diff --git a/filetest.tal b/filetest.tal new file mode 100644 index 0000000..c421f52 --- /dev/null +++ b/filetest.tal @@ -0,0 +1,59 @@ +|00 @System [ &vec $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 ] +|10 @Console [ &vec $2 &read $1 &pad $4 &type $1 &write $1 &error $1 ] +|a0 @File [ &vec $2 &ok $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 ] + +|0100 + ;on-console .Console/vec DEO2 BRK + +( emit an unsigned short as a decimal ) +@decimal ( n* -> ) + LIT2r ff00 ( n* [ff^ 0^] ) + &r ( ... x* ) + #000a DIV2k STH2k ( x* 10* x/10* [ff^ i^ x/10*] ) + MUL2 SUB2 NIP #30 ADD ( digit^ x/10* [ff^ i^] ) + STH2r INCr ORAk ?&r ( digit^ x/10* [ff^ i+1^] ) + POP2 ( d0* ... dn* [ff^ i+1^] ) + &w ( d0^ ... dn^ [ff^ j^] ) + .Console/write DEO ( d0^ ... dn-1^ [ff^ j^] ) + OVRr ADDr STHkr ?&w ( d^ ... dn-1^ [ff^ j-1^] ) + POP2r JMP2r ( ) + +@print ( s* -> ) + LDAk ?{ POP2 JMP2r } LDAk .Console/write DEO INC2 !print + +@on-console ( -> BRK ) + .Console/type DEI #02 NEQ ?run .Console/read DEI append BRK + +@append ( c^ -> ) + ;ptr LDA2 STA ;ptr LDA2k INC2 SWP2 STA2 JMP2r + +@not-readable ( -> bool^ ) + #0100 .File/length DEO2 ;buf .File/read DEO2 .File/ok DEI2 #0000 EQU2 JMP2r + +@writable ( -> bool^ ) + #0015 .File/length DEO2 ;dat .File/write DEO2 .File/ok DEI2 #0000 NEQ2 JMP2r + +@run ( -> BRK ) + #00 append + ;path .File/name DEO2 + ;msg1 print ;path print + LIT "' .Console/write DEO #0a .Console/write DEO + not-readable ?{ ;msg2 print !exit } + ;msg3 print + writable ?{ ;msg6 print !exit } + ;msg4 print .File/ok DEI2 decimal ;msg5 print ( >> ) + +@exit ( -> BRK ) + #80 .System/halt DEO BRK + +@msg1 "Read 20 "path: 20 "' 00 +@msg2 "File 20 "was 20 "readable 0a 00 +@msg3 "File 20 "was 20 "not 20 "readable 0a 00 +@msg4 "File 20 "was 20 "writable, 20 "wrote 20 00 +@msg5 20 "bytes. 0a 00 +@msg6 "File 20 "was 20 "not 20 "writable 0a 00 + +@dat "This 20 "is 20 "sample 20 "data. 0a 00 +@ptr =path +@buf $100 +@path $1000