diff --git a/emul/forth/z80c.bin b/emul/forth/z80c.bin index d47ac11..a5478a3 100644 Binary files a/emul/forth/z80c.bin and b/emul/forth/z80c.bin differ diff --git a/forth/forth.asm b/forth/forth.asm index 6e68927..fa708fb 100644 --- a/forth/forth.asm +++ b/forth/forth.asm @@ -1123,23 +1123,7 @@ PARSED: jp next - .db "(parse)" - .dw $-PARSED - .db 7 -PARSE: - .dw compiledWord - .dw PARSED - .dw CSKIP - .dw .error - ; success, stack is already good, we can exit - .dw EXIT - -.error: - .dw compiledWord - .dw LIT - .db "unknown word", 0 - .dw PRINT - .dw ABORT +.fill 41 ; Indirect parse caller. Reads PARSEPTR and calls @@ -1154,7 +1138,7 @@ PARSEI: ; Spit name (in (HL)) + prev in (HERE) and adjust (HERE) and (CURRENT) ; HL points to new (HERE) .db "(entry)" - .dw $-PARSE + .dw $-PARSED .db 7 ENTRYHEAD: .dw compiledWord diff --git a/forth/icore.fs b/forth/icore.fs index d7ab7ba..e042293 100644 --- a/forth/icore.fs +++ b/forth/icore.fs @@ -55,6 +55,12 @@ AGAIN ; +( This is only the "early parser" in earlier stages. No need + for an abort message ) +: (parse) + (parsed) SKIP? ABORT +; + ( ; has to be defined last because it can't be executed now ) : X ( can't have its real name now ) ['] EXIT ,