commit 545d769623e91ad9316fdae0d9da00ba41dd6867
parent 2e793f6c848c7b76a1c13d76b6c30815356bedeb
Author: Christian Ermann <christianermann@gmail.com>
Date: Wed, 30 Oct 2024 12:47:54 -0700
Fix 'link'
Diffstat:
| M | forth.s | | | 26 | +++++++++++++------------- |
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/forth.s b/forth.s
@@ -185,7 +185,7 @@ accept_impl:
pop_ret ra
ret
-defword "refill-buffer", 13, 0, 0x4B9E9FEE, refill_buffer, accept
+defword "refill-buffer", 13, 0, 0x4B9E9FEE, refill_buffer, accept_file
# ( addr max-len -- recv'd-len )
.int two_dup, accept, dup, q_branch, _refill_buffer_failed
.int source_len, store
@@ -234,7 +234,7 @@ defcode "source-id", 9, 0, 0x965ED1E2, source_id, source_offset
push w
next
-defcode "tib", 3, 0, 0xC90B0194, tib, source_len
+defcode "tib", 3, 0, 0xC90B0194, tib, source_id
# ( -- addr len )
la w, _tib
push w
@@ -252,7 +252,7 @@ defcode "fib", 3, 0, 0xBCE49236, fib, tib
push w
next
-defcode "parse-word", 10, 0, 0xB218226F, parse_word, source
+defcode "parse-word", 10, 0, 0xB218226F, parse_word, fib
la w, _source
load_cell w, 0(w) # buff addr
la x, _source_len
@@ -452,7 +452,7 @@ defcode "lit", 3, 0, 0x404CD5B6, lit, latest
push w
next
-defword "allot", 5, 0, 0xADB1A69F, allot, drop
+defword "allot", 5, 0, 0xADB1A69F, allot, lit
.int dp, add_store
.int exit
@@ -466,7 +466,7 @@ defword "c,", 2, 0, 0xA32A0A5A, char_comma, comma
.int lit, 1, allot # increment 'here'
.int exit
-defcode "align", 5, 0, 0xC73174DF, align, aligned
+defcode "align", 5, 0, 0xC73174DF, align, char_comma
la w, _here
load_cell x, 0(w)
addi x, x, 3
@@ -478,7 +478,7 @@ defcode "align", 5, 0, 0xC73174DF, align, aligned
# stack manipulation
# -----------------------------------------------------------------------------
-defcode "dup", 3, 0, 0xD330F226, dup, lit
+defcode "dup", 3, 0, 0xD330F226, dup, align
load_cell w, 0(psp)
push w
next
@@ -494,7 +494,7 @@ defcode "drop", 4, 0, 0xA9A58D8C, drop, swap
pop zero
next
-defcode "2dup", 3, 0, 0xD330F226, two_dup, lit
+defcode "2dup", 3, 0, 0xD330F226, two_dup, drop
load_cell w, 0(psp)
load_cell x, cell(psp)
push x
@@ -505,14 +505,14 @@ defcode "2dup", 3, 0, 0xD330F226, two_dup, lit
# math and logic
# -----------------------------------------------------------------------------
-defcode "+", 1, 0, 0xC4ADC675, plus, align
+defcode "+", 1, 0, 0xC4ADC675, plus, two_dup
pop w
pop x
add w, w, x
push w
next
-defcode "aligned", 7, 0, 0xC73174DF, aligned, char_comma
+defcode "aligned", 7, 0, 0xC73174DF, aligned, plus
pop w
addi w, w, 3
andi w, w, 0xFFFFFFFC
@@ -523,7 +523,7 @@ defcode "aligned", 7, 0, 0xC73174DF, aligned, char_comma
# compiler
# -----------------------------------------------------------------------------
-defword "create", 6, 0, 0x26BB595D, create, plus
+defword "create", 6, 0, 0x26BB595D, create, aligned
.int latest, fetch, comma # link
.int hash, comma # hash
.int lit, 0, comma # meta
@@ -585,14 +585,14 @@ defword ";", 1, flag_immediate, 0x3E0CB6DA, semicolon, colon
.int l_bracket # enter 'immediate' mode
.int exit
-defcode "compiling?", 10, 0, 0x94652AE2, compiling_q, execute
+defcode "compiling?", 10, 0, 0x94652AE2, compiling_q, semicolon
la w, _state
load_cell w, 0(w)
andi w, w, state_compile
push w
next
-defcode "immediate?", 10, 0, 0x89F23E9F, immediate_q, execute
+defcode "immediate?", 10, 0, 0x89F23E9F, immediate_q, compiling_q
pop w
addi w, w, flag_offset - code_offset
lb w, 0(w)
@@ -637,7 +637,7 @@ version_string:
word_buffer: .space 255
.balign cell
-_latest: .int name_semicolon
+_latest: .int name_immediate_q
_here: .int __here_start
_meta: .int __meta_start