From 758ec025dcd0a4bfc848a68b0a21e6636bf03c2d Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 28 Mar 2020 10:38:05 -0400 Subject: [PATCH] forth: Forth-ify "LITN" --- emul/forth/z80c.bin | Bin 920 -> 943 bytes forth/forth.asm | 19 ++----------------- forth/icore.fs | 13 ++++++++++--- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/emul/forth/z80c.bin b/emul/forth/z80c.bin index 249c1a8baa53ba3619cc146fec39d1731d1bae74..288f8fc973cf69619dc1a395d96fe80399092191 100644 GIT binary patch delta 66 zcmbQizMg%9I1?+A@JepO$udmu<$XLu{A3td_!y3{DlkYe%w*$W=3sVY(n!rKDXP>I WpDfI5$2ezl5VIyz6W8QgW@!NZvJWT# delta 66 zcmZ3_K7)OOI1}qzp()%llVzCRb7-XIl@wKK%1_o}wqtCaoXM;y>&z0)uI9*OZNkvV W$DqLA$i%_?pTm;Pktv>^fe`>*-Vb8{ diff --git a/forth/forth.asm b/forth/forth.asm index e5e5cd5..24da0b8 100644 --- a/forth/forth.asm +++ b/forth/forth.asm @@ -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 diff --git a/forth/icore.fs b/forth/icore.fs index 8891ca8..63ec285 100644 --- a/forth/icore.fs +++ b/forth/icore.fs @@ -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