DECIMAL
16 FFBASE HX 2 FFBASE BN 10 FFBASE DM
HX beïnvloedt alleen het volgende woord.
Als Forth zich in dat woord verslikt, geeft hij een foutmelding en haakt af.
HX komt daardoor niet meer toe aan het herstellen van het grondtal.
Dat is te verhelpen door het foutgevoelige
EVALUATE in een
CATCH te zetten.
De laatste twee regels van
FFBASE worden dan:
COUNT ['] EVALUATE CATCH
R> BASE ! THROW ;
Zo'n beveiliging is misschien een schot met een kanon op een mug, maar werkt wel.
De zes mogelijkheden van Theo
- HX 10 . [rtn] 16 ok
10 wordt als hexgetal opgevat.
- : DOZIJN HX C . ;
HX ziet C als een hexgetal en compileert het.
Aan de definitie kun je niet meer zien dat HX een rol gespeeld heeft.
? Wat zal BN DOZIJN doen?
- HX SEE FFBASE [rtn] ...
SEE decompileert FFBASE in hex,
behalve natuurlijk wanneer binnen SEE het grondtal expliciet gemanipuleerd wordt.
- : .BITS BN U. ; -1 .BITS [rtn] 11...11 ok
.BITS drukt altijd tweetallig af.
Alleen in deze omstandigheden wordt de verandering van BASE ook werkelijk gecompileerd.
Vraag: Wat zal HX .BITS doen?
- : [.S] .S ; immediate BN [.S] [rtn] ...
- : TEST HX [.S] 0<> ;
HX [.S] geeft tijdens het compileren van TEST de toestand op stack
in hex weer en laat geen sporen na in TEST.
Het laatste woord
) BN #16 . [rtn] 16 ok
Zoals gezegd kun je in sommige Forthsystemen met een speciaal teken vooraan een getal
het grondtal afdwingen
(
# voor decimaal,
$ voor hexadecimaal en
% voor binair).
Nadat
BN zijn invloed heeft doen gelden komt het hekje aan de beurt.
Het hekje heeft het laatste woord ... en wint.