Browse Source

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...
pull/95/head
Virgil Dupras 4 years ago
parent
commit
ca7c21d49f
4 changed files with 9 additions and 5 deletions
  1. +1
    -1
      forth/core.fs
  2. +1
    -1
      forth/dummy.fs
  3. +6
    -2
      forth/forth.asm
  4. +1
    -1
      forth/z80a.fs

+ 1
- 1
forth/core.fs 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 )
;


+ 1
- 1
forth/dummy.fs 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


+ 6
- 2
forth/forth.asm 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


+ 1
- 1
forth/z80a.fs View File

@@ -2,7 +2,7 @@

: CODE
( same as CREATE, but with ROUTINE V )
WORD (entry)
(entry)
ROUTINE V [LITN] ,
;



Loading…
Cancel
Save