                                                     11.Jan.2026
================================================================
- Die Datei rom.txt
- Der Assembler für PC
- Disassembler für PC
- Verzeichnis-Editor
- Emulationsprogramm

================================================================
Compilieren des Emulationsprogramms:

  gcc -o emul emul.c -lX11     (benötigt libx11-devel)

Alle anderen Programme:  gcc -o name name.c

================================================================
Zu den Programmen sendcard und rececard siehe den
Abschnitt zur Testkarte auf der Seite Hardware.txt

================================================================
Die Datei rom.txt
=================

Die Datei enthält die Software des ROM in Seite 1.

Der Bereich 0000 bis 4cff enthält Code
Der Bereich 7580 bis 7fff enthält Tabellen

Der freie Bereich dazwischen enthält die Software für Slot4.

================================================================
Der Assembler mass
==================

Programm aus Konsolenfenster starten mit ./mass

Das Programm benötigt die Datei rom.txt
mit dem dort enthaltenen Original-Assembler.

Die erzeugte Code-Datei ist eine Text-Datei.

Man beachte: Auch die letzte Zeile der Quell-Datei
muss mit einem EOL abschließen.

================================================================
Der Disassembler dass
=====================

Programm aus Konsolenfenster starten mit ./dass

Das Programm benötigt die Datei rom.txt
mit dem dort enthaltenen Kommando  =EASS.

Nach dem Code muss in der zu disassembierenden Datei ein + 
oder - stehen, dann eine Code-Data-Liste, zum Schluss ein =

Jede Adresse der Code-Data-Liste zeigt einen Wechsel
von Programmcode zu Daten oder von Daten zu Programmcode.
Die erste Adresse ist die Startadresse, die letzte Adresse ist
Endadresse+1. Das vor der Startadresse stehende + oder - zeigt
an, ob der Code mit Programmcode (+) beginnt oder mit Daten (-).

================================================================
Das Programm mlab
=================

Programm aus Konsolenfenster starten mit ./mlab

Das Programm bearbeitet die Output-Datei des Disassemblers
und ersetzt dort alle relativen Adressen durch Labels.

Um eine assemblierbare Datei zu erhalten, ist die erste Zeile
mit dem Startlabel anzupassen. Falls mlab das Startlabel in
der zweiten Zeile nochmal angelegt hat, ist diese zu löschen.

Falls mlab einen Label-Aufruf L.nnnn erzeugt hat und
nnnn zeigt auf das zweite oder dritte Byte einer Codezeile,
dann wurde das Label nicht angelegt und der Assembler findet
den Fehler. Man ersetze manuell nnnn durch kkkk+1 oder kkkk+2

Es ist zu empfehlen, vor dem Aufruf von mlab alle   /GTA nnnn
durch  /GTA L.nnnn  zu ersetzen, falls nnnn eine Code-Adresse
ist. Falls die Adresse innerhalb des disassemblierten Codes
liegt, erzeugt mlab das Label. Falls kein Label erzeugt wird,
findet der Assembler den Fehler und man kann das Label
manuell in die Liste externer Labels aufnehmen.

================================================================
Verzeichnis-Editor
==================

rdir wandelt das am Anfang einer Slot-Software stehende
Verzeichnis in lesbaren Text. wdir wandelt den Text wieder
in die codierte Form. Dazu ist im Text an der Stelle des ####
die Default-Adresse für nichtbelegte Kommandos einzusetzen.

Die Datei tdir.txt ist das Verzeichnis der Software für Slot4.

================================================================
Das Emulationsprogramm
======================

################################################################
#  Sicherheitshinweise                                         #
#  ===================                                         #
#                                                              #
#  Programm aus Konsolenfenster starten mit  ./emul            #
#                                                              #
#  Bei geöffnetem Grafikfenster nicht auf den Schließen-       #
#  Knopf des Fensters klicken.   Gefahr von FATAL ERROR.       #
#  Jedoch blieb der Error bei mir ohne Folgen.                 #
#                                                              #
#  Grafik beenden mit ESCAPE wenn Grafik im Vordergrund.       #
#  Ersatzweise beendet auch Klick IM INNEREN die Grafik.       #
#                                                              #
#  Das Beenden der Grafik mit ESCAPE (oder Klick im Inneren)   #
#  geht nur, während das emulierte System die Tastatur liest.  #
#  Wenn das emulierte System in einer Schleife ohne Tastatur-  #
#  abfrage hängt, bricht das Programm  nach einer bestimmten   #
#  Zahl von Taktzyklen des emulierten Systems von selbst ab.   #
#                                                              #
#  Falls Sie mit der Maus versehentlich das Konsolenfenster    #
#  oder ein anderes Fenster in den Vordergrund geholt haben,   #
#  verliert das Grafikfenster den Input-Fokus und Sie können   #
#  die Grafik nicht beenden.   Holen Sie das Grafikfenster     #
#  durch Klick in die Kopfleiste in den Vordergrund zurück.    #
#                                                              #
################################################################

emul.c ist der Quelltext des Emulationsprogramms für Linux-PC.

Starten des Emulationsprogramms setzt voraus:
Die Datei rom.txt ist im aktuellen Verzeichnis

Programm aus Konsolenfenster heraus starten (./emul).

Die Ausgaben am Ende des Konsolenfensters müssen
auch bei geöffnetem Grafikfenster sichtbar bleiben.

----------------------------------------------------------------
Zum folgenden Abschnitt zur Zeicheneingabe lesen Sie
zunächst auf der Seite SYS-doku den Abschnitt Zeichensatz
und ganz unten den Abschnitt KD-Routinen aus Benutzersicht.
----------------------------------------------------------------

Die Tasten  0..9  liefern die Ziffern  0..9.  Die Tasten  a..z
liefern die Großbuchstaben  A..Z.    Wenn modeN (Ziffernmode)
gesetzt ist, liefern  a..f  jedoch die Hexziffern  xA..xF.

Die Leertaste liefert das Leerzeichen. Direkt eingeben
kann man die Zeichen   # = + - * $ / \ . : < > ( ) [ ]

shift-o  liefert den Kreis.      , ; ^ " ' ` & % ! ? @
liefern den auf der Grundlinie liegenden Bindestrich hb.

Backspace liefert BS,  Return liefert EN (Enter).

Der Unterstrich liefert das Steuerzeichen  UL
              (Falls UL-mode =on: Zeichen unterstreichen oder
               Unterstrich entfernen. Sonst: Zeichen ersetzen)

Die Cursortasten liefern  le ri up dn.  Wenn modeW (Wide-mode)
gesetzt ist, liefern sie  lew riw upw dnw (dh. weite Distanz).

shift-a  liefert  AM   (Alt-mod  on/off)
shift-s  liefert  SM   ( sh-mod  on/off)
shift-u  liefert  UM   ( UL-mod  on/off)

shift-c  liefert  -C   (Goto Seite C - Betrachtungsmodus
                        oder von dort zurück in den Basismode)
shift-d  liefert  -D   (Goto Seite D - Betrachtungsmodus
                        oder von dort zurück in den Basismode)
shift-e  liefert  -E   (Goto Seite E - Texteditmodus
                        oder von dort zurück in den Basismode)

shift-f  liefert  FB   (Fill Buffer  / nicht im Basismode)
shift-r  liefert  RB   (Read Buffer)
shift-z  liefert  ZB   (Zero Buffer)

shift-t  liefert  ups  (Cursor und Text nach oben )
shift-v  liefert  dns  (Cursor und Text nach unten)
shift-j  liefert  can  (Zeichen herausnehmen)
shift-k  liefert  ins  (Leerzeichen einfügen)
shift-h  liefert  canb (Zeichen her. mit Umbruch bis Blockende)
shift-l  liefert  insb (Leerz. einf. mit Umbruch bis Blockende)
shift-i  liefert  canl (Zeile leeren/herausnehmen in Block)
shift-m  liefert  insl (Leerzeile einfügen innerhalb Block)

shift-g  liefert  DL   (Zeile leeren / Cursor in nächste Zeile)
shift-p  liefert  CR   (Cursor auf Links-Position/MR-Position)
shift-b  liefert  BK   (Blockmarken setzen/entfernen)

shift-w  bewirkt  modW on/off  (Wide-mode)
shift-n  bewirkt  modN on/off  (Ziffernmode)

shift-x  bewirkt  hexmode on
shift-y  bewirkt  hexmode off

shift-q  bewirkt  TAST on/off  (DG-Taster)

Wenn hexmode on ist, muss das erste Zeichen aus 0..7 sein,
das zweite Zeichen aus 0..9 a..f . Dann wird hexmode off.
Nur  ESCAPE  und  shift-y  kann hexmode abbrechen.

Im hexmode kann man jedes Zeichen 00..7f eingeben. Zeichen
77 (MV  Block kopieren/tauschen) kann man nur so eingeben.

TAST on simuliert gedrückten DG-Taster
während der nächsten Zeicheneingabe.

================================================================
Das Zeichen 40/hb wird im nachfolgenden Text durch einen Punkt
dargestellt. Zur Eingabe des Zeichens 40 im Emulationsprogramm
wird die ^-Taste der PC-Tastatur verwendet.

================================================================
Starten Sie das Emulationsprogramm mittels ./emul

Geben Sie ein  4DEMO #   Dadurch wird der Quelltext eines
Beispielprogramms in die Seite E des TextRAM geladen und
das Programm automatisch compiliert und gestaret.

Sie können den Ablauf auch einzeln ausführen:
Geben Sie ein  4DEMO     Dadurch wird der Quelltext eines
Beispielprogramms in die Seite E des TextRAM geladen. Wechseln
Sie mit shift-e in die Seite E. Schieben Sie zum angenehmeren
Arbeiten mit shift-V die Anzeige eine oder zwei Zeilen nach
unten. Mit shift-b setzen Sie die Blockmarken in Zeile 80 und
Zeile ff. Um mit der Cursortaste in die Zeile ff und wieder
zurück zu gelangen, ist es günstig, mit shift-w den wide-Mode
ein- und nachher wieder auszuschalten. Positionieren Sie den
Cursor an den Textanfang und kehren Sie mit shift-e in die
Seite C zurück. Geben Sie folgende Kommandos ein:

      =NEW =PGM +111
      =NEW =EDI +111
      =IN.C +PGM
      =IN.D +EDI
      =MPRO
      =ENDM
      -PGM

Geben Sie die erfragten Werte ein. Bei OPA ist stets
das Vorzeichen +/- anzugeben, OPB ist ohne Vorzeichen.
Bei MUL und DIV ist Multiplikator bzw. Divisor = OPB+1.

In Seite E können Sie den Quelltext des Programms und das beim
Compilieren erstellte Listing ansehen.   Im Qelltext wurde das
abschließende  *RETN  überschrieben durch die erste Zeile des
Listings.  Das Kommando =ENDM beginnt das Listing in der Zeile
des Cursors.  Es ist deshalb günstig, nach dem Kommando =MPRO
und vor dem Kommando =ENDM den Cursor in die erste freie Zeile
unter dem Quelltext zu platzieren.

================================================================
Die Datei  em-z  ist ein Beispieltext mit Kennbuchstabe z,
welcher in die Seite E des TextRAM geladen werden kann.
Zum Laden die Grafik beenden und load wählen.

Der Text wird erst nach Auffrischung des Bildschirms angezeigt.

================================================================
>> Conway's Game of Life:

Erstellen Sie Text im Bereich der ersten 64 Zeilen der Seite E.
Der Text dient als Startbild. Geben Sie in Seite C das Kommando
4GOL ein. Bei SIZE wählen Sie 1 oder 2. Bei RULE wählen Sie
zunächst 8 oder c. Mit den Cursortasten und der Taste hb (^)
erstellen Sie eine Regel. Bestätigen Sie mit Return. Mit der
Leertaste führen Sie Iterationen aus. Scrollen mit den
Cursortasten. Beenden mit Return.








