Browse Source

forth: Forth-ify "EMIT"

pull/95/head
Virgil Dupras 4 years ago
parent
commit
1227ee7155
4 changed files with 8 additions and 31 deletions
  1. +1
    -1
      emul/forth/emul.fs
  2. BIN
      emul/forth/z80c.bin
  3. +6
    -29
      forth/forth.asm
  4. +1
    -1
      forth/icore.fs

+ 1
- 1
emul/forth/emul.fs View File

@@ -2,7 +2,7 @@
stdio port is 0
)

CODE (emit)
CODE EMIT
HL POPqq,
chkPS,
A L LDrr,


BIN
emul/forth/z80c.bin View File


+ 6
- 29
forth/forth.asm View File

@@ -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


+ 1
- 1
forth/icore.fs View File

@@ -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
;


Loading…
Cancel
Save