@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