diff --git a/emul/forth/z80c.bin b/emul/forth/z80c.bin index 9445443..e46633f 100644 Binary files a/emul/forth/z80c.bin and b/emul/forth/z80c.bin differ diff --git a/forth/forth.asm b/forth/forth.asm index e9a9be3..d3aad8c 100644 --- a/forth/forth.asm +++ b/forth/forth.asm @@ -857,22 +857,10 @@ STORE: ld (iy+1), h jp next -; ( a -- n ) - .db "@" - .dw $-STORE - .db 1 -FETCH: - .dw nativeWord - pop hl - call chkPS - call intoHL - push hl - jp next - -.fill 13 +.fill 30 .db "_bend" - .dw $-FETCH + .dw $-STORE .db 5 ; Offset: 0647 .out $ diff --git a/forth/icore.fs b/forth/icore.fs index f0de5ed..6be7318 100644 --- a/forth/icore.fs +++ b/forth/icore.fs @@ -86,12 +86,12 @@ : C< ( JTBL+40 == CINPTR ) - [ JTBL 40 + @ LITN ] @ EXECUTE + [ JTBL 40 + @ LITN ] _c @ EXECUTE ; : C, - HERE @ _c C! - HERE @ 1 _c + HERE ! + HERE _c @ _c C! + HERE _c @ 1 _c + HERE ! ; ( The NOT is to normalize the negative/positive numbers to 1 @@ -126,18 +126,18 @@ ; : (entry) - HERE @ ( h ) + HERE _c @ ( h ) _c WORD ( h s ) SCPY ( h ) ( Adjust HERE -1 because SCPY copies the null ) - HERE @ 1 _c - ( h h' ) + HERE _c @ 1 _c - ( h h' ) _c DUP HERE ! ( h h' ) _c SWAP _c - ( sz ) ( write prev value ) - HERE @ CURRENT @ _c - , + HERE _c @ CURRENT _c @ _c - , ( write size ) _c C, - HERE @ CURRENT ! + HERE _c @ CURRENT ! ; : INTERPRET @@ -149,7 +149,7 @@ EXECUTE 0 FLAGS ! ELSE - (parse*) @ EXECUTE + (parse*) _c @ EXECUTE THEN AGAIN ; @@ -185,7 +185,7 @@ ( is word ) IF _c DUP _c IMMED? IF EXECUTE ELSE , THEN ( maybe number ) - ELSE (parse*) @ EXECUTE _c LITN THEN + ELSE (parse*) _c @ EXECUTE _c LITN THEN AGAIN ; IMMEDIATE diff --git a/forth/z80a.fs b/forth/z80a.fs index 9d36c3e..2c69b7c 100644 --- a/forth/z80a.fs +++ b/forth/z80a.fs @@ -37,6 +37,7 @@ ( -- ) : OP1 CREATE C, DOES> C@ A, ; +0xeb OP1 EXDEHL, 0x76 OP1 HALT, 0xc9 OP1 RET, 0x17 OP1 RLA, diff --git a/forth/z80c.fs b/forth/z80c.fs index e820fb9..49b5cdc 100644 --- a/forth/z80c.fs +++ b/forth/z80c.fs @@ -213,6 +213,16 @@ CODE /MOD BC PUSHqq, ;CODE +CODE @ + HL POPqq, + chkPS, + E (HL) LDrr, + HL INCss, + D (HL) LDrr, + EXDEHL, + HL PUSHqq, +;CODE + CODE C! HL POPqq, DE POPqq,