Define ':' and ';' in Forth
authorJonas Hvid <mail@johv.dk>
Sun, 8 Dec 2019 20:51:08 +0000 (21:51 +0100)
committerJonas Hvid <mail@johv.dk>
Sun, 8 Dec 2019 20:51:08 +0000 (21:51 +0100)
Makefile
main.asm
sys.f [new file with mode: 0644]

index 5832cb65273096360cdc609330febe90d544462d..786399fbd158040dbb6245e66cf43c73a0616dfb 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,7 @@
+.PHONY: run
+run: main
+       cat sys.f - | ./main
+
 main: main.asm impl.asm
        fasm $< $@
 
index 2e880d9b36871b250057378f14c6b62b1c6c7d87..67e9a7b6a96a1225d9fc37ca322b3bd6030528b3 100644 (file)
--- a/main.asm
+++ b/main.asm
@@ -527,7 +527,7 @@ forth IMMEDIATE, 'IMMEDIATE', 1
   dq LIT, 1
   dq LATEST, GET
   dq LIT, 8, PLUS
-  dq PUT
+  dq PUT_BYTE
   dq EXIT
 
 ;; Given the address of a word, return 0 if the given word is not immediate.
diff --git a/sys.f b/sys.f
new file mode 100644 (file)
index 0000000..bc9dae9
--- /dev/null
+++ b/sys.f
@@ -0,0 +1,11 @@
+S" :" CREATE ] DOCOL
+  READ-WORD CREATE
+  LIT DOCOL ,
+  ]
+EXIT [
+
+: ;
+  LIT EXIT ,
+  [ S" [" FIND >CFA , ]
+  EXIT
+[ IMMEDIATE