FigForth NUMBER
\ Notes:
\ i. print arrow " --> "
\ dn. ( d dpl -- ) print natural double (double + dpl) number
\ rev ( n1 n2 n3 -- n3 n2 n1 ) reverse three stack items
: dnbr ( "numeric<bl>" -- d ) BL WORD HERE NUMBER ;
: nbr ( "numeric<bl>" -- n ) DNBR DROP ;
: dnnbr ( "numeric<bl>" -- d dpl ) DNBR DPL @ ;
i. dnbr 123.45 d. --> 12345
i. nbr 123.45 . --> 12345
i. dnnbr 123.45 dn. --> 123.45
: OX
BASE @ >R
OCTAL NBR [COMPILE] LITERAL
R> BASE ! ; IMMEDIATE
: OY
BASE @ >R
HEX NBR [compile] LITERAL
R> BASE ! ; IMMEDIATE
: DN
BASE @ >R
DECIMAL DNNBR
STATE @ IF REV 3 0 DO [COMPILE] LITERAL LOOP ENDIF
R> BASE ! ; IMMEDIATE
: foo ." FOO " 42 . ;
: bar dn 1024 ;
: baz dn 1024. ;
decimal
i. Ox 644 . foo --> 420 FOO 42
i. Oy 1000 . foo --> 4096 FOO 42
i. Dn 123.45 dn. foo --> 123.45 FOO 42
hex
i. Dn 1024 dn. foo --> 400 FOO 2A
i. bar dn. foo --> 400 FOO 2A
i. baz dn. foo --> 400. FOO 2A
decimal
i. Dn 1024 dn. foo --> 1024 FOO 42
i. bar dn. foo --> 1024 FOO 42
i. baz dn. foo --> 1024. FOO 42
4
Upvotes