aboutsummaryrefslogtreecommitdiffstats
path: root/core.fth
diff options
context:
space:
mode:
Diffstat (limited to 'core.fth')
-rw-r--r--core.fth97
1 files changed, 57 insertions, 40 deletions
diff --git a/core.fth b/core.fth
index 06aad0a..4d1393c 100644
--- a/core.fth
+++ b/core.fth
@@ -4,47 +4,64 @@
( set decimal numbers )
10 0 !
-: . 0 sys ;
-: emit 1 sys ;
-
-: over 1 pick ;
-: -rot rot rot ;
-: nip swap drop ;
-: tuck swap over ;
-
-: +! swap over @ + swap ! ;
-
-: 1+ 1 + ;
-: 1- 1 - ;
-
-: 0= 0 = ;
-: >= < 0= ;
-
-: 2drop drop drop ;
-: 2dup over over ;
-: 2over 3 pick 3 pick ;
-: 2swap rot >r rot r> ;
-
-: and & ;
-: or | ;
-: xor ^ ;
-: lshift << ;
-: rshift >> ;
-: 2* 2 * ;
-: 2/ 2 / ;
-
-: , here ! 1 allot ;
-: c! ! ;
-: c, , ;
-: c@ @ ;
-: cell+ 1+ ;
-: cells ;
-: char+ 1+ ;
-: chars ;
-
-: cr 9 emit ;
-: bl 32 ;
+: . 0 sys ;
+: emit 1 sys ;
+: over 1 pick ;
+: -rot rot rot ;
+: nip swap drop ;
+: tuck swap over ;
+
+: and & ;
+: or | ;
+: xor ^ ;
+: lshift << ;
+: rshift >> ;
+: mod % ;
+: 2* 2 * ;
+: 2/ 2 / ;
+
+: 0= 0 = ;
+: 0< 0 < ;
+: <= 2dup < -rot = and ;
+: > <= 0= ;
+
+: 1+ 1 + ;
+: 1- 1 - ;
+
+: 2drop drop drop ;
+: 2dup over over ;
+: 2over 3 pick 3 pick ;
+: 2swap rot >r rot r> ;
+
+: r@ r> dup >r ;
+: , here ! 1 allot ;
+: +! swap over @ + swap ! ;
+: c! ! ;
+: c, , ;
+: c@ @ ;
+: cell+ 1+ ;
+: cells ;
+: char+ 1+ ;
+: chars ;
+: 2! swap over ! cell+ ! ;
+: 2@ dup cell+ @ swap @ ;
+
+: cr 9 emit ;
+: bl 32 ;
+: space bl emit ;
+
+: state 1 ;
: 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 ;
+
+: align ;
+: aligned ;
+