Installation

Stand vom 7. November 1989 Version 1.3

Die Installation von FORTH beschränkt sich im wesentlichen auf die Anpassung der Ein- und Ausgaberoutinen, die Angabe der oberen Speichergrenze für das System und den Adressbereich, den die verwendete RAM-Disk belegt.

Ab ORIGIN (das ist die Leitadresse des FORTh-Systems) sind 100H für die Anpassung der I/O-Routinen und für die User-Area reserviert. Es gilt folgende Aufteilung:

ORIGIN +
--------

 00H  NOP
      JMP COLD
 04H  NOP
      JMP WARM
 08H  JMP CI   ;warte auf Tastaturbetätigung
 0BH  JMP CO   ;Zeichenausgabe auf Console
 0EH  JMP CSTS ;True (-1), wenn Taste gedrückt, kein Warten
 11h  JMP LO   ;Zeichenausgabe auf Drucker
 14H  JMP BYE  ;Sprung zum Betriebssytem
 17H  DW  TOP  ;oberste vom FORTH nutzbare Adresse
 19H  DW  SOD  ;erste Adresse, die die RAM-Disk belegen kann
 1BH  DW  EOD  ;letzte Adresse, die die RAM-Disk belegen kann

 1DH - 0BFH    ;Platz fuer I/O-Anpassungen

 0C0H - 0FFH   ;fuer USER-Area reserviert

Für nahezu alle Rechner liegt ORIGIN bei 320H. Alle I/O-Routinen verhalten sich FORTH-typisch, d.h. sie erwarten ihre Parameter auf dem Stack bzw. hinterlassen sie dort. Als Datenstack benutzt FORTH den Hardware-Stack des Rechners. Die Routinen müssen bei Bedarf den Instruction-Pointer (BC-Register) und den Returnstack-Pointer (IY-Register) retten und mit einem Sprung nach NEXT (ORIGIN+102H) enden.

Zur Installation müssen die Routinen in den reservierten Bereich eingetragen und die gezeigten Sprungvektoren aktualisiert werden. Die Aufrufe der I/O-Routinen und die Behandlung der RAM-Disk ist im Vokabular I/O untergebracht. Es empfiehlt sich, die betreffenden Worte mit Hilfe des Decompiler's SEE 'name' zu studieren. Die Größe der RAM-Disk wird vom FORTH selbstständig aus den in der Boot-Area enthaltenen Werten errechnet und bei Neustart in das FORTH-Systen übernommen. Eine Änderung von Konstanten im FORTH ist daher nicht nötig. Es sind die Blöcke 1 bis MAX# (Diskgroesse / B/BUF) verfügbar. Ein Zugriff auf nicht vorhandene Blöcke führt zu einer Fehlermeldung.

Die Routinen zum Laden bzw. Abspeichern der RAM-Disk auf Kassette müssen für jeden Rechner speziell entwickelt werden. Selbstverständlich sollten dazu die Routinen benutzt werden, die das jeweilige Rechner-Betriebsprogramm dem Nutzer bietet. Aus Vereinheitlichungsgruenden werden dafür die Befehle PUT und GET empfohlen, die als nicht initialisierte Vektoren schon im Wörterbuch enthalten sind. Die entsprechenden Routinen sollten ins Vokabular I/O gelegt werden. Für die installiert vertriebenen FORTh-83-Systeme der FG FORTH ist das bereits geschehen bzw. liegen FORTH-Programme dafür vor!

Danach ist der Kern mit der Sequenz:

MARK EMPTY
HERE FENCE !			

zu versiegeln.

Die Flexibilität des FORTH-Systems erlaubt es, den spezifischen Nutzerwünschen angepasste Versionen zu erstellen. Man sollte aber nur die Grundversion weitergeben, eventuell mit entsprechenden Zusatzquelltexten (Screens), da wir als FG FORTH nur für diese Version die Betreuung übernehmen können.

Als Literatur zu FORTH-83 kann bis auf weiteres nur R. Zech: „Forth 83“ (Franzis-Verlag) empfohlen werden. Das von der FG FORTH vertriebene System ist abwärtskompatibel zu dem im vorgenannten Buch beschriebenen. Zum Erlernen von Forth eignet sich der Forth-Kurs in der Zeitschrift „Mikroprozessortechnik“. Vertiefende Studien erlaubt die Übersetzung von G.-U. Vack: „Der Standard Forth 83“, herausgegeben von der KdT, BVo Suhl. Vom gleichen Autor ist ein weiteres Buch zu Forth 83 angekündigt. Ein Glossar zum FORTH-83 der Fachgruppe FORTH ist als Disketten- bzw. Kassetten-Files (Z1013) bei der Fachgruppe erhältlich. Es ist geplant, dieses Forth-System auch für den Bildungscomputer A 5105 zu vertreiben. Damit in Zusammenhang wird das Institut für Film, Bild und Ton eine Broschüre herausgeben, in der das Glossar ebenfalls enthalten ist.

Michael Balig, Dr. Thomas Beierlein
Fachgruppe FORTH im Kulturbund der DDR

Die zum Vertrieb kommende Version 1, angepaßt von Andreas Driesel, ist ohne Änderungen nur mit dem Betriebssystem A.2 von Robotron und dem installierten Sprungverteiler ab 0FFFH lauffähig. Dazu liegt im Bereich von 200H bis 31FH die Verzögerungsschleife für die INKEY-Funktion (in FORTH-83: KEY? ). Sie ist über RST 18 eingebunden. Damit darf dieser Restart nicht uminitialisiert werden, sonst ist mit einem Systemabsturz zu rechnen.

Soll das Forth-System auf andere Betriebsbedingungen angepaßt werden, ist folgendermaßen vorzugehen:

  1. Grundversion 16k und mehr mit originalem Betriebssystem für die Folientastatur oder Brosig-Betriebssystem
    1. System
      • ab Adresse 363 (jetzt DF 00 26) in E7 04 26 ändern.
      • abspeichern von 200H bis Ende.
      • Programmstart 320H.
      • wenn Bereich 200H-31FH für andere Zwecke benötigt wird, ab 320H abspeichern. Diese Version aber keinesfalls weitergeben, da die Anpassung für den A.2-Monitor dann fehlt.
      • steht mehr Speicherplatz als 16k zur Verfügung, so ist es zweckmäßig, die Inhalte von TOP, SOD und EOD (s.o.) zu ändern. Mach einem Neustart des Forth-Systems aus dem Betriebssystem heraus wird diese Änderung dann wirksam.
        Beispiel 64k: (TOP) 377H # 00 31 –> 00 80
        (SOD) 339H # 00 34 –> 00 80
        (EOD) 33BH # 00 80 –> 00 E0
        neue Systemobergrenze: 7FFFH, RAM-Disk: 8000H bis DFFFH
    2. Kassettenbedienroutinen, Screenpaket „GET/PUT“
      • Konstante PRST (Programmstart) ändern: 320 CONSTANT PRST
        Direktänderung im System:
        • Screenfile „GET/PUT“ aus dem Betriebssystem auf SOD laden.
        • Forth-System starten.
        • Nun in FORTH: 1 4 THRU
          ALSO I/O HEX
          320 ' PRST 2+ !
      • Bei Bedarf PRAN ändern (nämlich wenn der Speicherbereich ab 200 für andere Zwecke gebraucht wird): 320 CONSTANT PRAN
        Diese Variante nicht weitergeben!
        Direktänderung (s.o.): 320 ' PRAN 2+ !
      • Abschluß aller Änderungen mit dem Aufruf von COLD . Danach kann das System mit SAVE-SYSTEM gespeichert werden.
  2. bei fehlendem Sprungverteiler im ROM (HEADERSAVE muß im RAM geladen sein!) müssen Konstanten verändert werden:
    • HEADERSAVE ab E000H: E003 CONSTANT SARUF
      E000 CONSTANT LORUF
    • HEADERSAVE ab 3C00H: 3C03 CONSTANT SARUF
      3C00 CONSTANT LORUF
    • Abschluß aller Änderungen mit dem Aufruf von COLD . Danach kann das System mit SAVE-SYSTEM gespeichert werden.
  3. bei installiertem Sprungverteiler und ansonsten originalem Z1013 oder Brosigmonitor ist das spezielle Kassettenfile GET/PUT ORIG/BR ohne Änderung verwendbar.

Systemstart des Grundsystems

  1. System FORTH83 über HEADER laden (bzw. ohne HEADER mit dem 2. Vorton).
  2. PUT/GET über HEADER (@L 3400 bzw. ohne) auf 3400H laden.
  3. Ggf. Änderung nach a) 1. aus dem Bertriebssystem heraus durchführen.
  4. Systemstart (J 200 bei A.2-Monitor bzw. J 320 bei Grundversion oder bei Brosigmonitor)
  5. Nach Programmeldung 1 4 THRU eingeben. Nach „ok“ ist das System einschließlich der Kassettenroutinen arbeitsfähig. Danach können andere Quellprogramme (s.u.) eingelesen, übersetzt und gestartet werden.