forth: add word ".X"

This commit is contained in:
Virgil Dupras 2020-03-17 14:05:53 -04:00
parent 549cf74e9d
commit 6314c60ede
2 changed files with 25 additions and 1 deletions

View File

@ -50,7 +50,7 @@
: / /MOD SWAP DROP ;
: MOD /MOD DROP ;
( Format decimals )
( Format numbers )
( TODO FORGET this word )
: PUSHDGTS
999 SWAP ( stop indicator )
@ -73,3 +73,25 @@
EMIT
AGAIN
;
: PUSHDGTS
999 SWAP ( stop indicator )
DUP 0 = IF '0' EXIT THEN ( 0 is a special case )
BEGIN
DUP 0 = IF DROP EXIT THEN
16 /MOD ( r q )
SWAP ( r q )
DUP 9 > IF 10 - 'a' +
ELSE '0' + THEN ( q d )
SWAP ( d q )
AGAIN
;
: .X ( n -- )
( For hex display, there are no negatives )
PUSHDGTS
BEGIN
DUP 'f' > IF DROP EXIT THEN ( stop indicator, we're done )
EMIT
AGAIN
;

View File

@ -147,6 +147,8 @@ KEY input, however, is direct. Regardless of the input buffer's state, KEY will
return the next typed key.
. n -- Print n in its decimal form
.X n -- Print n in its hexadecimal form. In hex, numbers
are never considered negative. "-1 .X -> ffff"
EMIT c -- Spit char c to output stream
IN> -- a Address of variable containing current pos in input
buffer.