forth: make "(entry)" call WORD itself

Otherwise, when a defining word would be called outside a definition
itself, it would get the name of the last parsed word, that is,
itself!

For example, dummy.fs, instead of creating a "_______" entry, created
a "(entry)" entry...
This commit is contained in:
Virgil Dupras 2020-03-22 22:27:54 -04:00
parent 5387e08437
commit ca7c21d49f
4 changed files with 9 additions and 5 deletions

View File

@ -42,7 +42,7 @@
; IMMEDIATE
: CREATE
WORD (entry) ( empty header with name )
(entry) ( empty header with name )
ROUTINE C [LITN] ( push cellWord addr )
, ( write it )
;

View File

@ -1,7 +1,7 @@
( When building a compiled dict, always include this unit at
the end of it so that Forth knows how to hook LATEST into
it )
WORD _______ (entry)
(entry) _______
( After each dummy word like this, we poke IO port 2 with our
current HERE value. The staging executable needs it to know

View File

@ -883,7 +883,6 @@ ENDDEF:
.db 1 ; IMMEDIATE
DEFINE:
.dw compiledWord
.dw WORD
.dw ENTRYHEAD
.dw NUMBER
.dw compiledWord
@ -1238,6 +1237,12 @@ PARSEI:
.dw $-PARSE
.db 0
ENTRYHEAD:
.dw compiledWord
.dw WORD
.dw .private
.dw EXIT
.private:
.dw nativeWord
pop hl
ld de, (HERE)
@ -1272,7 +1277,6 @@ ENTRYHEAD:
.db 0
SYSV:
.dw compiledWord
.dw WORD
.dw ENTRYHEAD
.dw NUMBER
.dw sysvarWord

View File

@ -2,7 +2,7 @@
: CODE
( same as CREATE, but with ROUTINE V )
WORD (entry)
(entry)
ROUTINE V [LITN] ,
;