Hilfs-Routinen

Die hier vorgestellten Routinen sind verschiedene Hilfs-Routinen. Bei einigen Routinen (z.B. MOVE1, MOVE2 und MOVE3) wird auf eine Levelabhängigkeit verwiesen. Diese ist hier erkärt.

Modul-Entry B: Beschreibung, I: Eingabe-, O: Ausgabeparameter

SWITCH.MAC
SWITCH B: Indizierter Unterprogrammaufruf
  I: Akku hält Wert (Zeichen) für Suche in Tabelle. Das Registerpaar HL zeigt auf diese Tabelle
        DB      ZEICHEN1
        DW      ADRESSE1
        ..      ..
        DB      -1
        DW      FEHLER
  O: Sprung auf die entsprechende Routine des dazugehörigen Zeichens. Die Routine muss mit einer RET Anweisung abgeschlossen sein.

JMPTAB.MAC
JMPTAB B: Indizierter Sprung
  I: Akku hält Wert (Zeichen) für Suche in Tabelle. Direkt hinter dem Aufruf muss sich die Adresse auf eine Tabelle befinden
Byte 0 :Anzahl der Zeichen in der Tabelle
Byte 1 :Zeichen 1
 ..
Byte n :Zeichen n
Wort 1 :Adresse der Routine für Zeichen n
 ..
Wort n :Adresse der Routine für Zeichen 1
        CALL    JMPTAB
        DW      TABELLE
  O: Sprung auf die entsprechende Routine oder weiter mit Instruktion hinter Tabellenzeiger, falls keine Zeichenübereinstimmung vorliegt

CALTAB.MAC
CALTAB B: Indizierter Unterprogrammaufruf
  I: Akku hält Wert (Zeichen) für Suche in Tabelle. Direkt hinter dem Aufruf muss sich die Adresse auf eine Tabelle befinden (wie im Modul JMPTAB)
  O: Unterprogrammsprung auf die entsprechende Routine oder weiter mit Instruktion hinter Tabellenzeiger, falls keine Zeichenübereinstimmung vorliegt

CALJMP.MAC
@CALJP B: Hauptroutine für Module CALTAB und JMPTAB

MOVE1.MAC
MOVE23.MAC
MOVE1 B: Verschieben von Quelle zur Senke
MOVE2 I: Levelabhängig
MOVE3 O: Registerpaar HL zeigt auf letztes Byte der Quelle, Registerpaar DE zeigt auf erstes Byte hinter der Senke

COMP1.MAC
COMP23.MAC
COMP1 B: Vergleich von Quelle und Senke
COMP2 I: Levelabhängig
COMP3 O: Zeroflag nicht gesetzt falls Vergleich nicht übereinstimmt. Bei gleichen Werten ist Zeroflag gesetzt

CMPITM.MAC
CMPITM B: Vergleich einer Zeichenkette mit einem Datenfeld variabler Länge
  I: Registerpaar HL zeigt auf das Datenfeld, dessen Elemente jeweils mit der Länge beginnen und dessen letzte Eintragung eine Null sein muss. Registerpaar DE zeigt auf die zu suchende Zeichenkette, dessen Länge im Register C enthalten sein muss.
  O: Zeroflag nicht gesetzt falls Vergleich nicht übereinstimmt. Bei gleichen Werten ist Zeroflag gesetzt

CMPCON.MAC
CMPCON B: Vergleich einer Zeichenkette mit einem Datenfeld fester Länge
  I: Registerpaar HL zeigt auf das Datenfeld, dessen letzte Eintragung eine Null sein muss. Registerpaar DE zeigt auf die zu suchende Zeichenkette und Register C hält die Länge der Elemente im Datenfeld
  O: Zeroflag nicht gesetzt falls Vergleich nicht übereinstimmt. Bei gleichen Werten ist Zeroflag gesetzt

FTCHOP.MAC
@FTCOP B: Hilsprogramm für Module MOVE1 und COMP1

INDEXA.MAC
INDEXA B: Indizierte Adresse aus Tabelle laden
  I: Akku hält Index und Registerpaar HL hält den Start der Tabelle
  O: Registerpaar DE hält 16 Bit Wert aus indizierter Tabelle, Registerpaar HL hält Adresse auf indiziertes Element

MEMMOV.MAC
MEMMOV B: Speicher kopieren mit Test, ob genügend Speicher vorhanden ist.
  I: Register HL zeigt auf Quelle, Register DE zeigt auf Senke und Register BC hält Anzahl zu kopierender Bytes.
Vor Aufruf sind folgende Inhalte festzulegen:
MEMMOV-2: Adresse einer Fehlermeldung für Konsolausgabe (Voreinstellung 0000H, keine Fehlermeldung)
MEMMOV-4: Adresse, die auf höchste Speicheradresse zeigt (Voreinstellung 0006H, TPA Obergrenze)
MEMMOV-6: Adresse einer Routine, auf die nach einem Fehler verzweigt wird (Voreinstellung 0000H, Warmstart)
  O: ---

BOUND.MAC
BOUND B: Adresse auf Seitenanfang setzen
  I: Registerpaar HL hält beliebige Adresse (0xAAAA)
  O: Registerpaar HL hält Adresse auf Seitenanfang (0xAA00)

RAND8.MAC
RAND8 B: 8 Bit Zufallszahl erzeugen
  I:  
  O: Akku hält Zufallszahl mit der Periode 256

RAND16.MAC
RAND16 B: 16 Bit Zufallszahl erzeugen
  I:  
  O: Registerpaar HL hält Zufallszahl mit der Periode 65536