Browse Source

forth: Forth-ify "LITN"

pull/95/head
Virgil Dupras 4 years ago
parent
commit
758ec025dc
3 changed files with 12 additions and 20 deletions
  1. BIN
      emul/forth/z80c.bin
  2. +2
    -17
      forth/forth.asm
  3. +10
    -3
      forth/icore.fs

BIN
emul/forth/z80c.bin View File


+ 2
- 17
forth/forth.asm View File

@@ -714,25 +714,10 @@ DOES:
jp EXIT+2


.fill 51

; ( n -- )
.db "LITN"
.dw $-DOES
.db 4
LITN:
.dw nativeWord
ld hl, (HERE)
ld de, NUMBER
call DEinHL
pop de ; number from stack
call chkPS
call DEinHL
ld (HERE), hl
jp next
.fill 82

.db "SCPY"
.dw $-LITN
.dw $-DOES
.db 4
SCPY:
.dw nativeWord


+ 10
- 3
forth/icore.fs View File

@@ -97,6 +97,12 @@
HERE @ 1 + HERE !
;

: LITN
( JTBL+24 == NUMBER )
JTBL 24 + ,
,
;

: (entry)
HERE @ ( h )
WORD ( h s )
@@ -118,15 +124,16 @@

: X
_c (entry)
( JTBL+6 == compiledWord )
[ JTBL 6 + LITN ] ,
( We cannot use LITN as IMMEDIATE because of bootstrapping
issues. JTBL+24 == NUMBER JTBL+6 == compiledWord )
[ JTBL 24 + , JTBL 6 + , ] ,
BEGIN
WORD
(find)
( is word )
IF DUP _c IMMED? IF EXECUTE ELSE , THEN
( maybe number )
ELSE (parse*) @ EXECUTE LITN THEN
ELSE (parse*) @ EXECUTE _c LITN THEN
AGAIN
; IMMEDIATE



Loading…
Cancel
Save