aboutsummaryrefslogtreecommitdiffstats
path: root/core.fth
diff options
context:
space:
mode:
Diffstat (limited to 'core.fth')
-rw-r--r--core.fth41
1 files changed, 41 insertions, 0 deletions
diff --git a/core.fth b/core.fth
new file mode 100644
index 0000000..69ce9a2
--- /dev/null
+++ b/core.fth
@@ -0,0 +1,41 @@
+: cell 8 ;
+: cell+ cell + ;
+: cells cell * ;
+: char+ 1 + ;
+: chars ;
+
+: state _d 7 cells + ;
+: [ 0 state ! ; immediate
+: ] -1 state ! ;
+
+: sp _d ;
+: rp [ _d cell+ ] literal ;
+: dp [ _d 3 cells + ] literal ;
+
+: sp@ sp @ ;
+: rp@ rp @ cell+ ;
+: ip [ _d cell+ cell+ ] literal ;
+: here dp @ ;
+: unused [ _d 8 cells + ] literal @ here - ;
+: latest [ _d 4 cells + ] literal @ ;
+
+: dup sp@ @ ;
+: drop sp@ cell+ sp ! ;
+: pick cells cell+ sp@ + @ ;
+: >r rp@ cell - rp !
+ rp@ cell+ @ rp@ !
+ rp@ cell+ ! ;
+: r> rp@ @
+ rp@ cell+ rp !
+ rp@ @ swap rp@ ! ;
+: rot >r swap r> swap ;
+: -rot rot rot ;
+: over 1 pick ;
+
+: +! dup >r swap r> @ + swap ! ;
+: allot dp +! ;
+: , here ! cell allot ;
+
+: 1+ 1 + ;
+: 1- 1 - ;
+