Selaa lähdekoodia

forth: Forth-ify "R>" and ">R"

pull/95/head
Virgil Dupras 4 vuotta sitten
vanhempi
commit
005dd98fc2
5 muutettua tiedostoa jossa 35 lisäystä ja 34 poistoa
  1. BIN
      emul/forth/z80c.bin
  2. +1
    -1
      forth/dictionary.txt
  3. +10
    -24
      forth/forth.asm
  4. +11
    -9
      forth/icore.fs
  5. +13
    -0
      forth/z80c.fs

BIN
emul/forth/z80c.bin Näytä tiedosto


+ 1
- 1
forth/dictionary.txt Näytä tiedosto

@@ -54,7 +54,7 @@ IMMEDIATE -- Flag the latest defined word as immediate.
LITN n -- Write number n as a literal.
[LITN] n -- *I* Immediate version of LITN.
ROUTINE x -- a Push the addr of the specified core routine
C=cellWord L=compiledWord V=nativeWord N=next S=LIT
C=cellWord J=JUMPTBL V=nativeWord N=next S=LIT
M=NUMBER Y=sysvarWord D=doesWord
VARIABLE c -- Creates cell x with 2 bytes allocation.



+ 10
- 24
forth/forth.asm Näytä tiedosto

@@ -113,8 +113,10 @@
; change bootstrap binaries have to be adjusted because they rely on them.
; We're at 0 here
jp forthMain
.fill 0x17-$
.fill 0x11-$
JUMPTBL:
jp pushRS
jp popRS
jp nativeWord
jp next
jp chkPS
@@ -782,13 +784,13 @@ ROUTINE:
ld de, cellWord
cp 'C'
jr z, .end
ld de, compiledWord
cp 'L'
jr z, .end
ld de, JUMPTBL
cp 'J'
jr z, .end
ld de, JUMPTBL+6
cp 'V'
jr z, .end
ld de, JUMPTBL+3
ld de, JUMPTBL+9
cp 'N'
jr z, .end
ld de, sysvarWord
@@ -803,7 +805,7 @@ ROUTINE:
ld de, NUMBER
cp 'M'
jr z, .end
ld de, JUMPTBL+6
ld de, JUMPTBL+12
cp 'P'
jr nz, .notgood
; continue to end on match
@@ -1300,28 +1302,12 @@ OVER:
push de
jp next

.db ">R"
.dw $-OVER
.db 2
P2R:
.dw nativeWord
pop hl
call chkPS
call pushRS
jp next

.db "R>"
.dw $-P2R
.db 2
R2P:
.dw nativeWord
call popRS
push hl
jp next
.fill 31

; ( a b -- c ) A + B
.db "+"
.dw $-R2P
.dw $-OVER
.db 1
PLUS:
.dw nativeWord


+ 11
- 9
forth/icore.fs Näytä tiedosto

@@ -41,15 +41,6 @@
, ( write! )
; IMMEDIATE

: X ( can't have its real name now )
['] EXIT ,
R> DROP ( exit COMPILE )
R> DROP ( exit : )
; IMMEDIATE

( Give ";" its real name )
';' CURRENT @ 4 - C!

: INTERPRET
BEGIN
WORD
@@ -63,3 +54,14 @@
THEN
AGAIN
;

( ; has to be defined last because it can't be executed now )
: X ( can't have its real name now )
['] EXIT ,
_c R> DROP ( exit COMPILE )
_c R> DROP ( exit : )
; IMMEDIATE

( Give ";" its real name )
';' CURRENT @ 4 - C!


+ 13
- 0
forth/z80c.fs Näytä tiedosto

@@ -207,3 +207,16 @@ CODE J
H 3 IX- LDrIXY,
HL PUSHqq,
;CODE

CODE >R
HL POPqq,
chkPS,
( JUMPTBL+0 == pushRS )
ROUTINE J CALLnn,
;CODE

CODE R>
( JUMPTBL+3 == popRS )
ROUTINE J 3 + CALLnn,
HL PUSHqq,
;CODE

Loading…
Peruuta
Tallenna