forth-riscv

My forth
git clone git://git.electrosoup.com/forth-riscv
Log | Files | Refs

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:
Msrc/forth.s | 37+++++++++++++++++++++++++++++++++++++
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