Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
#!/usr/bin/tclsh

# (find-angg "CRIM1/crim1a-lib.tcl")
# (find-angg "CRIM1/crim1a-prims.tcl")

proc scriptdir {} { file dirname [info script]] }
proc tmpdir    {} { return /tmp }

source [scriptdir]/crim1a-lib.tcl
source [scriptdir]/crim1a-prims.tcl


proc shell {str} { writefile [tmpdir]/crim1.sh "set -v\n$str\nset +v" }

proc asm {str} { global asm_code; append asm_code $str }
proc gtick {name} { asm "global ADR_$name\n"; tick $name }



set whichdemo 0

switch $whichdemo 0 {

  tick 2      ; run CON:                 ; asm "\tdd 2\n"
  tick SQUARE ; run    : DUP * \;
  tick CUBE   ; run    : DUP SQUARE * \;
  gtick DEMO  ; run    : 2 CUBE \;

  set_final_prim_data
  doCfilestuff [scriptdir]/engine0.skel.c [tmpdir]/engine.c
  doasmfilestuff [tmpdir]/x.asm
  shell "
    cd [tmpdir]
    nasm -f elf -o x.o -l x.lst x.asm
    gcc -c -o engine.o engine.c
    gcc -o demo engine.o x.o
    ./demo
  "

}




# print_vars
# doCfilestuff engine0.skel.c -
# doasmfilestuff -