From 408d93bd230219a71a4c1077446e772cd63d65d1 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Fri, 27 Mar 2020 21:58:24 -0400 Subject: [PATCH] forth: Forth-ify "IMMED?" --- emul/forth/z80c.bin | Bin 777 -> 805 bytes forth/forth.asm | 20 ++------------------ forth/icore.fs | 2 +- forth/z80c.fs | 12 ++++++++++++ 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/emul/forth/z80c.bin b/emul/forth/z80c.bin index e7cf673c540e8d6621c1706ff2c790177842d47d..85d8145a98963fb3d965c0ed308df0ced9dd8c4f 100644 GIT binary patch delta 101 zcmV-r0Gj`a2BikDuK^=TO-)5aKM?>17XabS9RMp4007H=C;=1I!x{i6Wo>D6DH)Tt z0Vo9+5(5j1lj8x+C-4c;1tkXG1rP>70y;MUferu?3LpRu00;y31bhVU20jNAR|Y5v Hlh*<=d=nZI delta 73 zcmV-P0Ji_728jl+uK@=rWo>D6DG`&>0Vo9l66^|elm7wDC)5ei1tkXG1rP>70y;MU fferxn2_OIt00;y31bhVU20jNAR|Y8rlk);HI)D_Z diff --git a/forth/forth.asm b/forth/forth.asm index 94dcadc..59ff6a4 100644 --- a/forth/forth.asm +++ b/forth/forth.asm @@ -781,27 +781,11 @@ DOES: jp EXIT+2 -.fill 23 - - .db "IMMED?" - .dw $-DOES - .db 6 -ISIMMED: - .dw nativeWord - pop hl - call chkPS - dec hl - ld de, 0 - bit FLAG_IMMED, (hl) - jr z, .notset - inc de -.notset: - push de - jp next +.fill 51 ; ( n -- ) .db "LITN" - .dw $-ISIMMED + .dw $-DOES .db 4 LITN: .dw nativeWord diff --git a/forth/icore.fs b/forth/icore.fs index da046f2..be1fa54 100644 --- a/forth/icore.fs +++ b/forth/icore.fs @@ -113,7 +113,7 @@ WORD (find) ( is word ) - IF DUP IMMED? IF EXECUTE ELSE , THEN + IF DUP _c IMMED? IF EXECUTE ELSE , THEN ( maybe number ) ELSE (parse*) @ EXECUTE LITN THEN AGAIN diff --git a/forth/z80c.fs b/forth/z80c.fs index 4af00e3..4610308 100644 --- a/forth/z80c.fs +++ b/forth/z80c.fs @@ -233,3 +233,15 @@ CODE IMMEDIATE HL DECss, 7 (HL) SETbr, ;CODE + +CODE IMMED? + HL POPqq, + chkPS, + HL DECss, + DE 0 LDddnn, + 7 (HL) BITbr, + 3 JRZe, ( notset ) + DE INCss, +( notset ) + DE PUSHqq, +;CODE