fundamental compiling words
parent
12cb6b9e56
commit
171b82dab0
@ -1,72 +1,79 @@
|
|||||||
( : variable create 0 , ; )
|
( : variable create 0 , ; )
|
||||||
( : create here const ; )
|
( : create here const ; )
|
||||||
|
|
||||||
: 1+ 1 + ;
|
: 1+ 1 + ;
|
||||||
: 1- 1 - ;
|
: 1- 1 - ;
|
||||||
|
|
||||||
: ! 2 _! ;
|
: ! 2 _! ;
|
||||||
: @ 2 _@ ;
|
: @ 2 _@ ;
|
||||||
: , here ! 2 allot ;
|
: , here ! 2 allot ;
|
||||||
: cell+ 2 + ;
|
: cell+ 2 + ;
|
||||||
: cells 2 * ;
|
: cells 2 * ;
|
||||||
|
|
||||||
: c! 1 _! ;
|
: over 1 pick ;
|
||||||
: c@ 1 _@ ;
|
: -rot rot rot ;
|
||||||
: c, here c! 1 allot ;
|
: nip swap drop ;
|
||||||
: char+ 1+ ;
|
: tuck swap over ;
|
||||||
: chars ;
|
|
||||||
|
|
||||||
: align here 1 & if 1 allot then ;
|
: base 0 ;
|
||||||
: aligned dup 1 & if 1+ then ;
|
: state 2 ;
|
||||||
|
: decimal 1 1+ base ! 1010 base ! ;
|
||||||
|
|
||||||
|
: postpone 1 4 ! ; imm
|
||||||
|
: ['] ' postpone literal ; imm
|
||||||
|
|
||||||
( set decimal numbers )
|
: if ['] _jmp0 , here 0 , ; imm
|
||||||
10 0 !
|
: then here swap ! ; imm
|
||||||
|
: else ['] _jmp , here 0 , here rot ! ; imm
|
||||||
|
|
||||||
: . 0 sys ;
|
: c! 1 _! ;
|
||||||
: emit 1 sys ;
|
: c@ 1 _@ ;
|
||||||
|
: c, here c! 1 allot ;
|
||||||
|
: char+ 1+ ;
|
||||||
|
: chars ;
|
||||||
|
|
||||||
|
: align here 1 & if 1 allot then ;
|
||||||
|
: aligned dup 1 & if 1+ then ;
|
||||||
|
|
||||||
: over 1 pick ;
|
: . 0 sys ;
|
||||||
: -rot rot rot ;
|
: emit 1 sys ;
|
||||||
: nip swap drop ;
|
|
||||||
: tuck swap over ;
|
|
||||||
|
|
||||||
: +! swap over @ + swap ! ;
|
: +! swap over @ + swap ! ;
|
||||||
|
|
||||||
: and & ;
|
: and & ;
|
||||||
: or | ;
|
: or | ;
|
||||||
: xor ^ ;
|
: xor ^ ;
|
||||||
: lshift << ;
|
: lshift << ;
|
||||||
: rshift >> ;
|
: rshift >> ;
|
||||||
: mod % ;
|
: mod % ;
|
||||||
: 2* 2 * ;
|
: 2* 2 * ;
|
||||||
: 2/ 2 / ;
|
: 2/ 2 / ;
|
||||||
|
|
||||||
: 2drop drop drop ;
|
: 2drop drop drop ;
|
||||||
: 2dup over over ;
|
: 2dup over over ;
|
||||||
: 2over 3 pick 3 pick ;
|
: 2over 3 pick 3 pick ;
|
||||||
: 2swap rot >r rot r> ;
|
: 2swap rot >r rot r> ;
|
||||||
|
|
||||||
: r@ r> dup >r ;
|
: r@ r> dup >r ;
|
||||||
: 2! swap over ! cell+ ! ;
|
: 2! swap over ! cell+ ! ;
|
||||||
: 2@ dup cell+ @ swap @ ;
|
: 2@ dup cell+ @ swap @ ;
|
||||||
|
|
||||||
: 0= 0 = ;
|
: 0= 0 = ;
|
||||||
: 0< 0 < ;
|
: 0< 0 < ;
|
||||||
: <= 2dup - 1- 0< ;
|
: <= - 1- 0< ;
|
||||||
: > <= 0= ;
|
: > <= 0= ;
|
||||||
|
|
||||||
: cr 9 emit ;
|
: cr 9 emit ;
|
||||||
: bl 32 ;
|
: bl 32 ;
|
||||||
: space bl emit ;
|
: space bl emit ;
|
||||||
|
|
||||||
: state 1 ;
|
: ?dup dup if dup then ;
|
||||||
: base 0 ;
|
|
||||||
: decimal 1 2* base ! 1010 base ! ;
|
|
||||||
|
|
||||||
: ?dup dup if dup then ;
|
: negate -1 * ;
|
||||||
|
: abs dup 0< if negate then ;
|
||||||
|
: min 2dup <= if drop else nip then ;
|
||||||
|
: max 2dup <= if nip else drop then ;
|
||||||
|
|
||||||
: negate -1 * ;
|
|
||||||
: abs dup 0< if negate then ;
|
|
||||||
: min 2dup <= if drop else nip then ;
|
|
||||||
: max 2dup <= if nip else drop then ;
|
|
||||||
|
|
||||||
|
: begin here ; imm
|
||||||
|
: do postpone >r postpone >r here ; imm
|
||||||
|
Loading…
Reference in New Issue