Der Buchstabe
R in einem Befehl gibt an,
dass die Zahl 'rechtsbündig in einem Feld von
r Stellen'
ausgegeben wird.
) -1 33 .R [rtn]
) -1 32 U.R [rtn]
) -1. 31 D.R [rtn]
) -1. 30 DU.R [rtn]
Auch
DU.R wird im ANS-Standard nicht genannt.
2. Definitionen für die acht Punkt-Befehle
Die Ausgabe von Zahlen geschieht in zwei Phasen:
-
Die Umwandlung (Signed oder Unsigned) des Bitmusters auf dem Stack
in einen String;
-
Die Ausgabe des Strings, 'rechtsbündig' oder nicht.
Für Phase A bilde ich zwei Worte:
) : DU.STRING (ulo uhi -- adr len )
) <# #S #> ;
)
) : D.STRING ( xlo xhi -- adr len )
) TUCK \ Vorzeichen merken
) DABS
) <# #S
) ROT SIGN \ Eventuell ein Minuszeichen
) \ vor den String setzen
) #> ;
<# ( ulo uhi -- ulo uhi ) "less number sign"
Reserviere einen Puffer für die Umwandlung des
Bitmusters
uhi,ulo in einen lesbaren String.
Während der Umwandlung können
#S und
SIGN ihre
Arbeit tun, und
#> schließt die Umwandlung ab.
#S ( ulo uhi -- 0 0 ) "number sign S"
Wandle die doppeltgenaue Zahl auf dem Stack in einen String um.
(Nur zwischen
<# und
#> verwendbar.)
#> ( ulo uhi -- adr len ) "number sign greater"
Schließe die Umwandlung ab.
Der String
adr,len ist das Ergebnis der Umwandlung.
SIGN ( x -- )
Füge, nur falls
x negativ ist,
vorn an den im Entstehen begriffenen String ein Minuszeichen an.
(Nur zwischen
<# und
#> verwendbar.)