forth: add words "."" and "(print)"
This commit is contained in:
parent
a40926d710
commit
25b6e75cf7
@ -192,10 +192,55 @@ EMIT:
|
|||||||
call stdioPutC
|
call stdioPutC
|
||||||
jp next
|
jp next
|
||||||
|
|
||||||
|
.db "(print)"
|
||||||
|
.dw EMIT
|
||||||
|
.db 0
|
||||||
|
PRINT:
|
||||||
|
.dw nativeWord
|
||||||
|
pop hl
|
||||||
|
call chkPS
|
||||||
|
call printstr
|
||||||
|
jp next
|
||||||
|
|
||||||
|
|
||||||
|
.db '.', '"'
|
||||||
|
.fill 5
|
||||||
|
.dw PRINT
|
||||||
|
.db 1 ; IMMEDIATE
|
||||||
|
PRINTI:
|
||||||
|
.dw nativeWord
|
||||||
|
ld hl, (HERE)
|
||||||
|
ld de, LIT
|
||||||
|
call DEinHL
|
||||||
|
ex de, hl ; (HERE) now in DE
|
||||||
|
ld hl, (INPUTPOS)
|
||||||
|
.loop:
|
||||||
|
ld a, (hl)
|
||||||
|
or a ; null? not cool
|
||||||
|
jp z, abort
|
||||||
|
cp '"'
|
||||||
|
jr z, .loopend
|
||||||
|
ld (de), a
|
||||||
|
inc hl
|
||||||
|
inc de
|
||||||
|
jr .loop
|
||||||
|
.loopend:
|
||||||
|
inc hl ; inputpos to char afterwards
|
||||||
|
ld (INPUTPOS), hl
|
||||||
|
; null-terminate LIT
|
||||||
|
inc de
|
||||||
|
xor a
|
||||||
|
ld (de), a
|
||||||
|
ex de, hl ; (HERE) in HL
|
||||||
|
ld de, PRINT
|
||||||
|
call DEinHL
|
||||||
|
ld (HERE), hl
|
||||||
|
jp next
|
||||||
|
|
||||||
; ( c port -- )
|
; ( c port -- )
|
||||||
.db "PC!"
|
.db "PC!"
|
||||||
.fill 4
|
.fill 4
|
||||||
.dw EMIT
|
.dw PRINTI
|
||||||
.db 0
|
.db 0
|
||||||
PSTORE:
|
PSTORE:
|
||||||
.dw nativeWord
|
.dw nativeWord
|
||||||
|
@ -146,8 +146,11 @@ wait until another line is entered.
|
|||||||
KEY input, however, is direct. Regardless of the input buffer's state, KEY will
|
KEY input, however, is direct. Regardless of the input buffer's state, KEY will
|
||||||
return the next typed key.
|
return the next typed key.
|
||||||
|
|
||||||
|
(print) a -- Print string at addr a.
|
||||||
. n -- Print n in its decimal form
|
. n -- Print n in its decimal form
|
||||||
.X n -- Print n in its hexadecimal form. In hex, numbers
|
.X n -- Print n in its hexadecimal form. In hex, numbers
|
||||||
|
." xxx" -- *I* Compiles string literal xxx followed by a call
|
||||||
|
to (print)
|
||||||
are never considered negative. "-1 .X -> ffff"
|
are never considered negative. "-1 .X -> ffff"
|
||||||
EMIT c -- Spit char c to output stream
|
EMIT c -- Spit char c to output stream
|
||||||
IN> -- a Address of variable containing current pos in input
|
IN> -- a Address of variable containing current pos in input
|
||||||
|
Loading…
Reference in New Issue
Block a user