commit 5ed02979dda27d3818f3e4e1ed72e8dd63fc3e6a
parent ddb4715034d482ef8cb1df14f13868e0c7fa8410
Author: Christian Ermann <christian.ermann@joescan.com>
Date: Tue, 1 Jul 2025 19:45:53 -0700
Add error message when word is unrecognized
Diffstat:
1 file changed, 37 insertions(+), 0 deletions(-)
diff --git a/src/forth.s b/src/forth.s
@@ -236,6 +236,14 @@ defvar "okay", okay, 0xBA9EEB49
.int _okay_len
.int _okay_addr
+defvar "unknown", unknown, 0x9B759FB9
+ .int _unknown_len
+ .int _unknown_addr
+
+defvar "context", context, 0x8C87107C
+ .int _context_len
+ .int _context_addr
+
# -----------------------------------------------------------------------------
# input and output
# -----------------------------------------------------------------------------
@@ -767,6 +775,23 @@ defcode "execute", execute, 0xA01E3D98
jr x
# 'next' should be called by the executed word
+defword "error-unknown", error_unknown, 0xCF846196
+ jal unknown
+ jal two_fetch
+ jal type
+ jal parse_word_advance
+ jal type
+ jal nl
+ jal emit
+ jal context
+ jal two_fetch
+ jal type
+ jal tick_source
+ jal two_fetch
+ jal type
+ jal nl
+ jal emit
+ exit
defword "interpret", interpret, 0x1F98C57A
_interpret_start:
@@ -814,6 +839,10 @@ _interpret_retry:
# ( addr len -- addr len )
jal one_minus
bnez w, _interpret_find_word
+_interpret_unrecognized:
+ jal two_drop
+ jal error_unknown
+ j _interpret_start
_interpret_parse_area_empty:
# ( addr len=0 -- )
addi psp, psp, cell
@@ -1642,6 +1671,14 @@ _okay_addr:
.ascii "ok\n"
_okay_len = (. - _okay_addr)
+_unknown_addr:
+ .ascii "unknown: "
+ _unknown_len = (. - _unknown_addr)
+
+_context_addr:
+ .ascii "context: "
+ _context_len = (. - _context_addr)
+
__file_end:
.int 0