Bläddra i källkod

forth: Forth-ify "I", "I'", "J"

pull/95/head
Virgil Dupras 4 år sedan
förälder
incheckning
e82f13acf1
4 ändrade filer med 47 tillägg och 35 borttagningar
  1. Binär
      emul/forth/z80c.bin
  2. +1
    -31
      forth/forth.asm
  3. +28
    -4
      forth/z80a.fs
  4. +18
    -0
      forth/z80c.fs

Binär
emul/forth/z80c.bin Visa fil


+ 1
- 31
forth/forth.asm Visa fil

@@ -1313,39 +1313,9 @@ R2P:
push hl
jp next

.db "I"
.dw $-R2P
.db 1
I:
.dw nativeWord
ld l, (ix)
ld h, (ix+1)
push hl
jp next

.db "I'"
.dw $-I
.db 2
IPRIME:
.dw nativeWord
ld l, (ix-2)
ld h, (ix-1)
push hl
jp next

.db "J"
.dw $-IPRIME
.db 1
J:
.dw nativeWord
ld l, (ix-4)
ld h, (ix-3)
push hl
jp next

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


+ 28
- 4
forth/z80a.fs Visa fil

@@ -26,6 +26,12 @@
extra 0xdd / 0xfd and then spit the equivalent of HL )
: IX 0xdd A, HL ;
: IY 0xfd A, HL ;
: _ix+- 0xff AND 0xdd A, (HL) ;
: _iy+- 0xff AND 0xfd A, (HL) ;
: IX+ _ix+- ;
: IX- 0 -^ _ix+- ;
: IY+ _iy+- ;
: IY- 0 -^ _iy+- ;

( -- )
: OP1 CREATE C, DOES> C@ A, ;
@@ -77,17 +83,35 @@
0x03 OP1qq INCss,
0x09 OP1qq ADDHLss,

( rd rr )
: OP1rr
CREATE C,
DOES>
: _1rr
C@ ( rd rr op )
ROT ( rr op rd )
8 * ( rr op rd<<3 )
OR OR A,
;

( rd rr )
: OP1rr
CREATE C,
DOES>
_1rr
;
0x40 OP1rr LDrr,

( ixy+- HL rd )
: LDIXYr,
( dd/fd has already been spit )
LDrr, ( ixy+- )
A,
;

( rd ixy+- HL )
: LDrIXY,
ROT ( ixy+- HL rd )
SWAP ( ixy+- rd HL )
LDIXYr,
;

( n -- )
: OP2n
CREATE C,


+ 18
- 0
forth/z80c.fs Visa fil

@@ -168,3 +168,21 @@ CODE PC@
L INr(C),
HL PUSHqq,
;CODE

CODE I
L 0 IX+ LDrIXY,
H 1 IX+ LDrIXY,
HL PUSHqq,
;CODE

CODE I'
L 2 IX- LDrIXY,
H 1 IX- LDrIXY,
HL PUSHqq,
;CODE

CODE J
L 4 IX- LDrIXY,
H 3 IX- LDrIXY,
HL PUSHqq,
;CODE

Laddar…
Avbryt
Spara