Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
lua-until EOL dofile("macro2.lua") -- (find-miniforth "macro2.lua") dofile("crim/crim.lua") -- (find-miniforth "crim/crim.lua") dofile("crim/crimextras.lua") -- (find-miniforth "crim/crimextras.lua") dofile("crim/crimlabels.lua") -- (find-miniforth "crim/crimlabels.lua") externdecl = function( heads, Cname ) fwordclass:declare(Cname) mf(heads) nasm(0, format(" extern %s\n", Cname)) nasm(4, format("\tdd %s\n", Cname)) end luaword("externdecl") zdotquo = function( ... ) mf[[ 0<."> ]]; call(dbstuff, arg) end luaword("zdotquo") litw = function( n ) mf("LITW"); nasm(2, format("\tdw %s\n", n)) end luaword("litw") EOL externdecl( "H_C1", "strlen" ) :RSR 0<."> : S0<."> S> DUP strlen 2DUP TYPE + 1 + >S ; :RSR LITW H_COL SGOBBLE2 ; :RSR BRANCH H_COL SBRANCH ; :RSR 0BRANCH H_COL S0BRANCH ; : YES/NO if zdotquo( "yes\n", 0 ) else zdotquo( "no\n", 0 ) then ; : DEMO zdotquo( "Hello\n", 0 ) litw( 22 ) YES/NO litw( 0 ) YES/NO ; asm/C-files: crim/demo4.asm crim/demo4.c e exit() #* cd ~/miniforth/crim/ make clean make CFLAGS=-g demo4 ./demo4 7 #*