Browse Source

forth: Forth-ify "PC!"

pull/95/head
Virgil Dupras 4 years ago
parent
commit
7beac94b5a
4 changed files with 22 additions and 20 deletions
  1. BIN
      emul/forth/z80c.bin
  2. +1
    -19
      forth/forth.asm
  3. +14
    -1
      forth/z80a.fs
  4. +7
    -0
      forth/z80c.fs

BIN
emul/forth/z80c.bin View File


+ 1
- 19
forth/forth.asm View File

@@ -21,11 +21,6 @@
;
; PutC: Write character specified in A onto the device.
;
; *** ASCII ***
.equ BS 0x08
.equ CR 0x0d
.equ LF 0x0a
.equ DEL 0x7f
; *** Const ***
; Base of the Return Stack
.equ RS_ADDR 0xf000
@@ -738,23 +733,10 @@ PRINT:
inc hl
jr .loop

; ( c port -- )
.db "PC!"
.fill 4
.dw $-PRINT
.db 0
PSTORE:
.dw nativeWord
pop bc
pop hl
call chkPS
out (c), l
jp next

; ( port -- c )
.db "PC@"
.fill 4
.dw $-PSTORE
.dw $-PRINT
.db 0
PFETCH:
.dw nativeWord


+ 14
- 1
forth/z80a.fs View File

@@ -107,12 +107,25 @@
C@ ( b r op )
ROT ( r op b )
8 * ( r op b<<3 )
OR OR Z,
OR OR A,
;
0xc0 OP2br SETbr,
0x80 OP2br RESbr,
0x40 OP2br BITbr,

( cell contains both bytes. MSB is spit as-is, LSB is ORed with r )
( r -- )
: OP2r
CREATE ,
DOES>
@ 256 /MOD ( r lsb msb )
A, ( r lsb )
SWAP 8 * ( lsb r<<3 )
OR A,
;
0xed41 OP2r OUT(C)r,
0xeb40 OP2r INr(C),

( dd nn -- )
: OP3ddnn
CREATE C,


+ 7
- 0
forth/z80c.fs View File

@@ -83,3 +83,10 @@ CODE AND
H A LDrr,
HL PUSHqq,
;CODE

CODE PC!
BC POPqq,
HL POPqq,
chkPS,
L OUT(C)r,
;CODE

Loading…
Cancel
Save