소스 검색

forth: Forth-ify ","

pull/95/head
Virgil Dupras 4 년 전
부모
커밋
1e85d60d89
3개의 변경된 파일12개의 추가작업 그리고 20개의 파일을 삭제
  1. BIN
      emul/forth/z80c.bin
  2. +2
    -15
      forth/forth.asm
  3. +10
    -5
      forth/icore.fs

BIN
emul/forth/z80c.bin 파일 보기


+ 2
- 15
forth/forth.asm 파일 보기

@@ -126,24 +126,11 @@ CBR:
ld (IP), hl
jp next

.db ","
.dw $-CBR
.db 1
WR:
.dw nativeWord
pop de
call chkPS
ld hl, (HERE)
ld (hl), e
inc hl
ld (hl), d
inc hl
ld (HERE), hl
jp next
.fill 23

; ( addr -- )
.db "EXECUTE"
.dw $-WR
.dw $-CBR
.db 7
EXECUTE:
.dw nativeWord


+ 10
- 5
forth/icore.fs 파일 보기

@@ -146,6 +146,11 @@
[ 48 @ LITN ] _c @ EXECUTE
;

: ,
_c HERE _c @ _c !
_c HERE _c @ 2 _c + _c HERE _c !
;

: C,
_c HERE _c @ _c C!
_c HERE _c @ 1 _c + _c HERE _c !
@@ -191,7 +196,7 @@
_c DUP _c HERE _c ! ( h h' )
_c SWAP _c - ( sz )
( write prev value )
_c HERE _c @ _c CURRENT _c @ _c - ,
_c HERE _c @ _c CURRENT _c @ _c - _c ,
( write size )
_c C,
_c HERE _c @ _c CURRENT _c !
@@ -225,7 +230,7 @@
it to avoid bootstrapping issues )
: LITN
( 32 == NUMBER )
32 , ,
32 _c , _c ,
;

( : and ; have to be defined last because it can't be
@@ -236,19 +241,19 @@
_c (entry)
( We cannot use LITN as IMMEDIATE because of bootstrapping
issues. 32 == NUMBER 14 == compiledWord )
[ 32 , 14 , ] ,
[ 32 , 14 , ] _c ,
BEGIN
_c WORD
_c (find)
( is word )
IF _c DUP _c IMMED? IF EXECUTE ELSE , THEN
IF _c DUP _c IMMED? IF EXECUTE ELSE _c , THEN
( maybe number )
ELSE _c (parse*) _c @ EXECUTE _c LITN THEN
AGAIN
; IMMEDIATE

: Y
['] EXIT ,
['] EXIT _c ,
_c R> _c DROP ( exit : )
; IMMEDIATE



불러오는 중...
취소
저장