Program je z důvodů jednoduchosti napsán v jedom souboru (jedné poznámce)
Teď si otevřeme zdrojovou databázi aplikace s formulářem
(ID) Kalk (ID) rsrs use-resources
A nadefinujeme si symbolické konstanty pro formulář a jednotlivá tlačítka.
1000 constant MainFormID 1010 dblField display 1116 constant btnClrID 1117 constant btnDropID 1118 constant btnOffID
Následující slova uvedu v obráceném pořadí, než jsou v souboru. Je to pro souvislost myšenky. Ve forthu totiž musí být slova při definici použitá definována předem.
Smyčka zpracování událostí. Kód je jednoduchý. V nekonečné smyčce begin ... again
si v každém průchodu vyzvedneme slovem ekey událost z fronty, a tu pak procedurou dispatch-event zpracujeme. Nakonec je třeba událost ze zásobníku zahodit (drop) aby se nám na něm nehromadily.
: handle-events ( → ) begin ekey dispatch-event drop again ;
Přidělování „dispatch“ události dalším častem je v našem případě velmi jednoduché. Zajímají nás jen událost stisku tlačítka, tedy ctlSelectEvent.
: dispatch-event ( ekey → ekey ) on: ctlSelectEvent do: cltSelect ;
Rozhodování které tlčítko bylo zmáčknuto.
: ctlSelect ( ekey → ekey ) event >abs ItemID on: btnOffID ddo: (bye) on: btnClrID ddo: btnClr on: btnDropID ddo: btnDrop ;
Zmáčknutí tlačítka CLR vymaže zobrazovač.
: btnClr ( → ) 0. SET display ;
Program je z důvodů organizace a snadné manipulace napsán do jediné poznámky (memo). První řádek, který je současně názvem poznámky
\ Kalkulačka
Import zdrojů z jiných souborů
needs ids needs Resources needs OnDo needs Events needs ezUI needs tester
Pro jistotu se přepneme do dekadické číselné soustavy.
decimal
Otevření zdrojové databáze programu.
(ID) Kalk (ID) resr use-resource
Nadefinujeme si konstanty a prvky grafického rozhraní.
1000 constant MainFormID 1010 dblField display 1116 constant btnClrID 1117 constant btnDropID 1118 constant btnOffID