Implement subroutine to read character
[rrq/jonasforth.git] / main.asm
index 086d1dc243dcfa4d8641d2eba627eedd804c1138..1a41bb9a2c1dc30f1050200a9e724a56885eff47 100644 (file)
--- a/main.asm
+++ b/main.asm
@@ -235,16 +235,6 @@ forth_asm TERMINATE, 'TERMINATE'
   mov rdi, 0
   syscall
 
-forth HELLO, 'HELLO'
-  dq LIT, 'H', EMIT
-  dq LIT, 'e', EMIT
-  dq LIT, 'l', EMIT
-  dq LIT, 'l', EMIT
-  dq LIT, 'o', EMIT
-  dq LIT, '!', EMIT
-  dq NEWLINE
-  dq EXIT
-
 ;; Duplicate a pair of elements.
 forth_asm PAIRDUP, '2DUP'
   pop rbx
@@ -563,8 +553,35 @@ forth_asm TICK, "'"
   push rax
   next
 
+forth_asm ROT, 'ROT'
+  pop rax
+  pop rbx
+  pop rdx
+  push rax
+  push rdx
+  push rbx
+  next
+
+forth_asm PICK, 'PICK'
+  pop rax
+  lea rax, [rsp + 8 * rax]
+  mov rax, [rax]
+  push rax
+  next
+
+forth_asm EQL, '='
+  pop rax
+  pop rbx
+  cmp rax, rbx
+  je .eq
+.noteq:
+  push 0
+  next
+.eq:
+  push 1
+  next
+
 forth MAIN, 'MAIN'
-  dq HELLO
   dq INTERPRET
   dq BRANCH, -8 * 2
   dq TERMINATE