diff --git a/emul/forth/emul.fs b/emul/forth/emul.fs index 16ec637..0f4607b 100644 --- a/emul/forth/emul.fs +++ b/emul/forth/emul.fs @@ -2,7 +2,7 @@ stdio port is 0 ) -CODE (emit) +CODE EMIT HL POPqq, chkPS, A L LDrr, diff --git a/emul/forth/z80c.bin b/emul/forth/z80c.bin index e16eee8..249c1a8 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 51f6bf5..e5e5cd5 100644 --- a/forth/forth.asm +++ b/forth/forth.asm @@ -58,8 +58,6 @@ ; interface in Forth, which we plug in during init. If "(c<)" exists in the ; dict, CINPTR is set to it. Otherwise, we set KEY .equ CINPTR @+2 -; Pointer to (emit) word -.equ EMITPTR @+2 .equ WORDBUF @+2 ; Sys Vars are variables with their value living in the system RAM segment. We ; need this mechanisms for core Forth source needing variables. Because core @@ -146,10 +144,6 @@ forthMain: ld hl, .parseName call find ld (PARSEPTR), de - ; Set up EMITPTR - ld hl, .emitName - call find - ld (EMITPTR), de ; Set up CINPTR ; do we have a (c<) impl? ld hl, .cinName @@ -172,8 +166,6 @@ forthMain: .db "(parse)", 0 .cinName: .db "(c<)", 0 -.emitName: - .db "(emit)", 0 .keyName: .db "KEY", 0 .bootName: @@ -187,8 +179,11 @@ INTERPRET: .dw DROP .dw EXECUTE -.fill 41 +.fill 58 +; STABLE ABI +; Offset: 00cd +.out $ ; *** Collapse OS lib copy *** ; In the process of Forth-ifying Collapse OS, apps will be slowly rewritten to ; Forth and the concept of ASM libs will become obsolete. To facilitate this @@ -660,28 +655,10 @@ abortUnderflow: .name: .db "(uflw)", 0 -.fill 50 - -; STABLE ABI -; Offset: 02aa -.out $ -; ( c -- ) - .db "EMIT" - .dw $-QUIT - .db 4 -EMIT: - .dw compiledWord - .dw NUMBER - .dw EMITPTR - .dw FETCH - .dw EXECUTE - .dw EXIT - - -.fill 71 +.fill 140 .db "," - .dw $-EMIT + .dw $-QUIT .db 1 WR: .dw nativeWord diff --git a/forth/icore.fs b/forth/icore.fs index 8da528c..8891ca8 100644 --- a/forth/icore.fs +++ b/forth/icore.fs @@ -83,7 +83,7 @@ _c C@ ( a c ) ( exit if null ) DUP NOT IF DROP DROP EXIT THEN - EMIT ( a ) + _c EMIT ( a ) 1 + ( a+1 ) AGAIN ;