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. ; PutC: Write character specified in A onto the device.
; ;
; *** ASCII ***
.equ BS 0x08
.equ CR 0x0d
.equ LF 0x0a
.equ DEL 0x7f
; *** Const *** ; *** Const ***
; Base of the Return Stack ; Base of the Return Stack
.equ RS_ADDR 0xf000 .equ RS_ADDR 0xf000
@@ -738,23 +733,10 @@ PRINT:
inc hl inc hl
jr .loop 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 ) ; ( port -- c )
.db "PC@" .db "PC@"
.fill 4 .fill 4
.dw $-PSTORE
.dw $-PRINT
.db 0 .db 0
PFETCH: PFETCH:
.dw nativeWord .dw nativeWord


+ 14
- 1
forth/z80a.fs View File

@@ -107,12 +107,25 @@
C@ ( b r op ) C@ ( b r op )
ROT ( r op b ) ROT ( r op b )
8 * ( r op b<<3 ) 8 * ( r op b<<3 )
OR OR Z,
OR OR A,
; ;
0xc0 OP2br SETbr, 0xc0 OP2br SETbr,
0x80 OP2br RESbr, 0x80 OP2br RESbr,
0x40 OP2br BITbr, 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 -- ) ( dd nn -- )
: OP3ddnn : OP3ddnn
CREATE C, CREATE C,


+ 7
- 0
forth/z80c.fs View File

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

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

Loading…
Cancel
Save