tcl set engine engine3a.c Hprims COL RSR CON TO AT C1 C2 C3 SFprims EXIT PLUS DUP 2DUP 1 SWAP DROP Fprims COUNT TYPE CR STO TOS SGOBBLE1 SGOBBLE2 WSTORE WFETCH Fprims SBRANCH S0BRANCH FIPprims RETURN RSREXIT syns COL: : syns EXIT ; PLUS + STO S> TOS >S WSTORE W! WFETCH W@ # /----------\ # Tools: strlen, 0<.">, S0<.">, tclword:, 0.", # BRANCH, 0BRANCH, YES/NO, SLITW, LITW, lit # ' strlen C1: asm extern strlen asm dd strlen nasmnames 0<."> 0angdotquo S0<."> S0angdotquo ' 0<."> RSR: ' S0<."> : S> DUP strlen 2DUP TYPE + 1 + >S ; tcl arrset action "tclword:" { arrset action [getword] [getrest] } tclword: 0." asm_now "\td2a ADR_0angdotquo"; asm_now "\tdb [getrest], 0" '' BRANCH RSR: : SBRANCH ; '' 0BRANCH RSR: : S0BRANCH ; ' YES/NO : 0BRANCH ->no 0." 'yes', 10 BRANCH ->end ->no: 0." 'no', 10 ->end: ; syns SGOBBLE2 SLITW '' LITW RSR: : SLITW ; tclword: lit asm_now "\td2a ADR_LITW"; asm_now "\tdw [getword]" # # \----------/ g' DEMO : 0." 'Hello',10 lit 22 YES/NO lit 0 YES/NO ;