14 lines
540 B
Forth
14 lines
540 B
Forth
create M 32 cells allot
|
|
|
|
: enter refill drop parse-word evaluate ; : M[] cells M + ;
|
|
: init M 32 cells bounds ?do i ! 1 cells +loop ;
|
|
: b-a+! dup dup cell+ @ M[] swap @ M[] @ negate over +! ;
|
|
: c b-a+! @ 1- 0< if 2 cells + @ else swap 3 + then nip ;
|
|
: b? dup cell+ @ 0< if @ M[] @ emit 3 + else c then ;
|
|
: a? dup @ 0< if cell+ @ M[] enter swap ! 3 + else b? then ;
|
|
: subleq cr 0 begin dup 1+ 0> while dup M[] a? repeat drop ;
|
|
|
|
0 10 33 100 108 114 111 119 32 44 111 108 108 101 72
|
|
-1 0 0 15 15 -1 3 16 -1 1 16 -1 -1 17 -1 17 15
|
|
|
|
init subleq
|