forth

A WIP implementation of Forth targeting UEFI x86-64.
git clone git://git.christianermann.dev/forth
Log | Files | Refs

commit 97f0001d189e7a4d65182e9f85f801ea2e2a66f3
parent 937eeaf9644e79c69f4d975c0f2025070f137fba
Author: Christian Ermann <christianermann@gmail.com>
Date:   Sat, 15 Jun 2024 21:08:02 -0400

Add '(' and '\'

Diffstat:
Mforth.asm | 26++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/forth.asm b/forth.asm @@ -402,7 +402,6 @@ _WORD: ; After a non-whitespace character is found, RDI is used to hold the address ; of the next character to be stored. ; - call _KEY cmp al, ' ' je .skip_whitespace @@ -410,7 +409,6 @@ _WORD: je .skip_whitespace cmp al, 0xD je .skip_whitespace - mov rdi, .buffer .store_char: @@ -446,6 +444,7 @@ _WORD: ret + defcode "FIND", 4, 0, FIND ; Find a word in the dictionary. ; @@ -1146,6 +1145,29 @@ defcode "WORDS", 5, 0, WORDS .end: NEXT +defcode "\", 1, 0, SLASH +.skip_comment: + call _KEY + cmp al, 0xA + je .end + cmp al, 0xD + je .end + jmp .skip_comment +.end: + NEXT + +defcode "(", 1, 0, LEFT_PAREN +.skip_comment: + call _KEY + cmp al, 0xA + je .end + cmp al, 0xD + je .end + cmp al, ')' + je .end + jmp .skip_comment +.end: + NEXT section '.data' data readable writable