A etc/hx.tal => etc/hx.tal +51 -0
@@ 0,0 1,51 @@
+( Usage: uxncli bh.rom file.rom )
+
+|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1
+|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
+
+|0000
+
+ @src $40
+
+|0100 ( -> ) ;await-src .Console/vector DEO2 ;dict/input ;pstr JSR2 BRK
+@await-src ( -> ) .Console/read DEI .src ;skey JSR2 ,on-ready JCN BRK
+
+@on-ready ( -> )
+
+ #0a18 DEO
+
+ ;src .File/name DEO2
+ #0002 .File/length DEO2
+ LIT2r 0000
+ &stream
+ #0000 ,&buf STR2
+ ;&buf .File/read DEO2
+ .File/success DEI2 #0000 EQU2 ,&eof JCN
+ ;&buf LDA2 ,print JSR #2018 DEO
+ INC2r
+ ( linebreak )
+ STH2kr #000f AND2 ORA ,&no-lb JCN
+ #0a18 DEO &no-lb
+ ,&stream JMP &eof
+ POP2r
+ #0a18 DEO
+ #010f DEO
+
+BRK
+ &buf $2
+
+@skey ( key buf -- proc ) OVR #21 LTH ,&eval JCN #00 SWP ;sput JSR2 #00 JMP2r &eval POP2 #01 JMP2r
+@scap ( str* -- end* ) LDAk #00 NEQ JMP JMP2r &w INC2 LDAk ,&w JCN JMP2r
+@sput ( chr str* -- ) ,scap JSR INC2k #00 ROT ROT STA STA JMP2r
+@pstr ( str* -- ) &w LDAk #18 DEO INC2 LDAk ,&w JCN POP2 JMP2r
+
+@print ( short* -- )
+
+ SWP ,&byte JSR
+ &byte ( byte -- ) DUP #04 SFT ,&char JSR
+ &char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO
+
+JMP2r
+
+@dict
+ &input "Input(.rom): 20 $1
M src/drifblim.tal => src/drifblim.tal +1 -8
@@ 385,6 385,7 @@ BRK
(
@|stdlib )
+@chex ( c -- val|ff ) LIT "0 SUB DUP #09 GTH JMP JMP2r #27 SUB DUP #0f GTH JMP JMP2r POP #ff JMP2r
@pstr ( str* -- ) LDAk ,&w JCN POP2 JMP2r &w LDAk #18 DEO INC2 LDAk ,&w JCN POP2 JMP2r
@perr ( src* str* -- ) &w LDAk #19 DEO INC2 LDAk ,&w JCN POP2 JMP2r
@scap ( str* -- end* ) LDAk ,&w JCN JMP2r &w INC2 LDAk ,&w JCN JMP2r
@@ 419,14 420,6 @@ JMP2r
JMP2r
-@chex ( c -- )
-
- LIT "0 SUB DUP #09 GTH JMP JMP2r
- #27 SUB DUP #0f GTH JMP JMP2r
- POP #ff
-
-JMP2r
-
@pdec ( short* -- )
#00 ,&z STR