Ein- / Ausgabe im volksFORTH#

Ein- / Ausgabebefehle im volksFORTH#

Alle Eingabe- und Ausgabeworte (KEY EXPECT EMIT TYPE etc.) sind im volksFORTH vektorisiert, d.h. bei ihrem Aufruf wird die Codefeldadresse des zugehörigen Befehls aus einer Tabelle entnommen und ausgeführt. So ist im System wine Tabelle mit Namen DISPLAY enthalten, die für die Ausgabe auf dem Bildschirmterminal sorgt.

Dieses Verfahren der Vektorisierung bietet entscheidende Vorteile:

  • Nit der Input-Vektorisierung kann man z.B. mit einem Schlag die Eingabe von der Tastatur auf ein Modem umschalten.
  • Durch die Output-Vektorisierung konnen mit einer neuen Tabelle alle Ausgaben auf ein anderes Gerät (z.B. einen Drucker) geleitet werden, ohne die Ausgabebefehle selbst ändern zu müssen.
  • Mit einem Wort (DISPLAY, PRINT) kann das gesamte Ausgabeverhalten geändert werden. Gibt man z.B, ein: print 1 list display wird Screen 1 auf einen Drucker ausgegeben und anschließend wieder auf den Bildschirm zurückgeschaltet. Man braucht also kein neues Wort, etwa PRINTERLIST, zu definieren.

Eine neue Tabelle wird mit dem Wort OUTPUT: erzeugt. Die Definition konnen Sie mit view output: nachsehen. OUTPUT: erwartet eine Liste von Ausgabeworten, die mit ; abgeschlossen werden muß.

Beipsiel:

Output: >PRINTER
   pemit  pcr  ptype  pdel  ppage  pat  pat? ;

Damit wird eine neue Tabelle mit dem Namen >PRINTER angelegt. Beim späteren Aufruf von >PRINTER wird die Adresse dieser Tabelle in die Uservariable OUTPUT geschrieben. Ab sofort führt EMIT ein PEMIT aus, TYPE ein PTYPE usw.

Die Reihenfolge der Worte nach OUTPUT: userEMIT userCR userTYPE userDEL userPAGE userAT userAT? muß unbedingt eingehalten werden. Entsprechend wird die Input-Vektorisierung gehandhabt.

Ein- / Ausgaben über Terminal#

Das volksFORTH verfügt über eine Reihe von Konstanten, die der besseren Lesbarkeit dienen:

c/row c/col c/dis c/l l/s bl #esc #cr #lf #bel #bs standardi/o inputkol outputkol area areakol terminal window full curat? cur! setpage video@ savevideo restorevideo catt list (page page (del del (cr cr ?cr (at (at? at at? col row curoff curon curshape printer print +print lst!