A dos2unix.tal => dos2unix.tal +17 -0
@@ 0,0 1,17 @@
+@on-reset ( -> )
+ ;on-input #10 DEO2
+ BRK
+
+@on-input ( last-byte -> last-byte )
+ #12 DEI
+
+ [ LIT &need-byte 01 ]
+ [ LIT2 00 _/need-byte ] STR
+ ?{
+ SWP
+ DUP2 #0a0d NEQ2 ?{
+ POP
+ [ LIT2 01 _/need-byte ] STR
+ }
+ #18 DEO ( #010e DEO )
+ }
A fold.tal => fold.tal +38 -0
@@ 0,0 1,38 @@
+@on-reset ( -> )
+ ;on-char #10 DEO2 BRK
+
+
+@on-char ( linelen toklen -> linelen toklen )
+ OVR INC #49 NEQ ?{
+ NEQk ?{ put-token }
+ #0a18 DEO #00 SWP
+ }
+
+ #0a12 DEI EQU ?newline
+ #2012 DEI EQU ?space
+
+ #12 DEI OVR STZ
+ INC SWP INC SWP
+
+ BRK
+
+@newline ( linelen toklen -- linelen toklen )
+ put-nonempty
+ #0a18 DEO #00 SWP
+ BRK
+@space ( linelen toklen -- linelen toklen )
+ SWP INC SWP
+ put-nonempty
+ #2018 DEO
+ BRK
+
+@put-nonempty ( linelen toklen -- linelen toklen )
+ DUP #00 EQU ?{ put-token }
+ JMP2r
+
+@put-token ( linelen toklen -- linelen toklen )
+ #00
+ &loop
+ LDZk #18 DEO
+ INC NEQk ?/loop
+ POP2 #00 JMP2r
A ibm.tal => ibm.tal +22 -0
@@ 0,0 1,22 @@
+@on-reset
+ [ LITr 01 ]
+ #18
+ @loop24
+ #14
+ @loop80
+ ;str puts
+ #2018 DEO
+ STHrk SUB
+ DUP ?loop80
+ POP
+ #0a18 DEO
+ STHrk SUB
+ DUP ?loop24
+ BRK
+
+@puts ( s* -- )
+ LDAk #18 DEO
+ INC2 LDAk ?puts
+ POP2 JMP2r
+
+@str "IBM
M mkfile => mkfile +5 -1
@@ 6,7 6,11 @@ roms=\
grep.rom\
rot.rom\
decroaker.rom\
- morse.rom
+ morse.rom\
+ fold.rom\
+ ibm.rom\
+ dos2unix.rom\
+ unix2dos.rom
all:VQ: $roms
A unix2dos.tal => unix2dos.tal +8 -0
@@ 0,0 1,8 @@
+@on-reset ( -> )
+ ;on-input #10 DEO2
+ BRK
+
+@on-input ( -> )
+ #12 DEI
+ DUP #0a NEQ ?{ #0d18 DEO }
+ #18 DEO