dsforth: added `[CHAR]`
[urasm.git] / dsforth / main_nprint.zas
blobb644e4cb052fb82bbe3ccf9b9e3bc242f61e581b
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; number formatting and printing
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 $FORTH_WORD HOLD
6 ;; AberSoft
7 ;; ( c -- )
8   -1 HLD +! HLD @ C! ;S
9 $FORTH_END_WORD HOLD
12 $FORTH_WORD <#
13 ;; AberSoft
14 ;; ( -- )
15   PAD HLD ! ;S
16 $FORTH_END_WORD <#
18 $FORTH_WORD #>
19 ;; AberSoft
20 ;; ( d -- addr count )
21   DROP DROP HLD @ PAD OVER - ;S
22 $FORTH_END_WORD #>
24 $FORTH_WORD SIGN
25 ;; AberSoft
26 ;; ( n d -- d )
27   ROT 0< 0BRANCH sign0
28   LIT 45 HOLD
29 sign0:
30   ;S
31 $FORTH_END_WORD SIGN
33 $FORTH_WORD #
34 ;; AberSoft
35 ;; ( d1 -- d2 )
36   BASE @ M/MOD ROT LIT 9 OVER < 0BRANCH sharp0
37   LIT 7 +
38 sharp0:
39   LIT 48 + HOLD ;S
40 $FORTH_END_WORD #
42 $FORTH_WORD #S
43 ;; AberSoft
44 ;; ( d1 -- d2 )
45 ns0:
46   # OVER OVER OR 0= 0BRANCH ns0
47   ;S
48 $FORTH_END_WORD #S
50 $FORTH_WORD D.R
51 ;; AberSoft
52 ;; ( d n -- )
53   >R SWAP OVER DABS <# #S SIGN #> R> OVER - SPACES TYPE ;S
54 $FORTH_END_WORD D.R
56 $FORTH_WORD .R
57 ;; AberSoft
58 ;; ( n1 n2 -- )
59   >R S->D R> D.R ;S
60 $FORTH_END_WORD .R
62 $FORTH_WORD D.
63 ;; AberSoft
64 ;; ( d -- )
65   0 D.R SPACE ;S
66 $FORTH_END_WORD D.
68 $FORTH_WORD .
69 ;; AberSoft
70 ;; ( n -- )
71   S->D D. ;S
72 $FORTH_END_WORD .
74 $FORTH_WORD U.
75 ;; AberSoft
76 ;; ( u -- )
77   0 D. ;S
78 $FORTH_END_WORD U.
80 $FORTH_WORD U.R
81 ;; AberSoft
82 ;; ( u n -- )
83   >R 0 R> D.R ;S
84 $FORTH_END_WORD U.R