Routinen zum Arbeiten mit Pull-Down-Fenstern

Die hier vorgestellten Routinen sind solche für das Arbeiten mit Pull-Dowm-Menues. Diese sind als Test zu betrachten, da ich in der Praxis kaum damit gearbeitet habe. Die Routinen benötigen die Library PDM.LIB, die mittels MACLIB PDM.LIB eingefügt wird. Einige Hinweise zu der Struktur findet sich hier. Zu beachten ist, dass diese Routinen speziell für den JOYCE konzipiert sind.

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

Funktionen

PDMCUL.MAC
PDMCUL B: Eingabe eines Elementes aus einem Fenster
  I: Registerpaar DE hält UPB. Registerpaar HL hält alle Elemente. Register B hält Kontrollbyte für Modul PDMCUI, Register C hält Kontrollbyte für Modul PDMTXO, Akku hält Nummer des Elements, mit dem begonnen werden soll. Zusätzlich definiert Bit 5 im Register B, ob das Fenster neu aufgebaut werden soll (Bit nicht gesetzt). Dies ist sinnvoll bei einem Fenster als Hauptmenue, das bis zum Ende eines Programms bestehen bleibt
  O: Register C hält die Nummer des gewählten Elementes, die Zeroflag zeigt RETURN oder ENTER an

PDMRET.MAC
PDMRET B: Darstellung eines Fensters
  I: Registerpaar DE hält UPB. Registerpaar HL hält auszugebenden Text. Register B hält Kontrollbyte
  O: ---

PDMINP.MAC
PDMINP B: Eingabe aus einem Fenster
  I: Registerpaar DE hält UPB. Die Adresse PDMINP-2 muss die Eingaberoutine beinhalten
  O: Zeile aus Adresse UPB+9,10 gefüllt, Carryflag zeigt leere Zeile an

PDMCIN.MAC
PDMCIN B: Eingabe aus einem Fenster mit vorheriger Textausgabe
  I: Registerpaar DE hält UPB. Die Adresse PDMINP-2 muss die Eingaberoutine beinhalten. UPB+15 hält Start Cursor für Texteingabe
  O: Zeile aus Adresse UPB+9,10 gefüllt, Carryflag zeigt leere Zeile an

PDMMAN.MAC
PDMMAN B: Ausgabe eines Fensters
  I: Registerpaar DE hält UPB
  O: Falls im Kontrollbyte UPB+4 definiert: UPB+5,6 gefüllt mit Cursorposition. Fensterfeld gerettet in Adresse aus UPB+7,8.

PDMCUI.MAC
PDMCUI B: Auswahl eines Fensterelementes mit Cursortasten
  I: Registerpaar DE hält UPB. Registerpaar HL hält auszuwählende Elemente. Register B hält Kontrollbyte, Register C hält Nummer des Startelements.
  O: Register C hält gewählte Nummer des Elementes, Zeroflag zeigt Ende durch RETURN oder ENTER an. In PDMDAT findet sich die Tastennummer und der Tastenstatus

PDMTXO.MAC
PDMTXO B: Ausgabe eines Textes in einem Fensterelement
  I: Registerpaar DE hält UPB. Registerpaar HL hält auszugebenden Text. Register B hält Kontrollbyte.
  O: ---

PDMTXA.MAC
PDMTXA B: Auswahl und Ausgabe eines Textes in einem Fensterelement
  I: Registerpaar DE hält UPB. Registerpaar HL hält auszugebenden Text. Register B hält Kontrollbyte, Register C hält die Nummer des auszugebenden Textes.
  O: ---

PDMNOR.MAC
PDMNOR B: Bildschirmtext normal setzen
  I: ---
  O: ---

PDMINV.MAC
PDMINV B: Bildschirmtext invers setzen
  I: ---
  O: ---

PDMCUR.MAC
PDMCUR B: Cursor setzen
  I: Register L hält die Spalte, Register H die Zeile
  O: ---

PDMINS.MAC
PDMINS B: Cursor unsichtbar machen
  I: ---
  O: ---

PDMVIS.MAC
PDMVIS B: Cursor sichtbar machen
  I: ---
  O: ---

PDMSTR.MAC
PDMSTR B: Text ausgeben
  I: Registerpaar DE hält Adresse des Textes, das erste Byte ist die Anzahl auszugebender Zeichen
  O: ---

PDMRST.MAC
PDMRST B: Bildschirm restaurieren
  I: Registerpaar DE hält UPB
  O: ---

PDMFCU.MAC
PDMFCU B: Cursorpositon ermitteln
  I: ---
  O: Register L hält die Spalte, Register H die Zeile

PDMKEY.MAC
PDMKEY PDMDAT B: Tastatur lesen
  I: ---
  O: Register C und Akkumulator halten die Nummer der Taste, Register B hält den Zustand der Taste

PDMGTK.MAC
PDMGTK B: Tastenwert ermitteln
  I: Register C hält die Tastennummer, Register C den Zustand
  O: Der Akkumulator hält den zugeordneten Wert, die Carryflag zeigt eine ungültige Tastennummer an

PDMGTT.MAC
PDMGTT B: Tastenzeichenkette ermitteln
  I: Der Akkumulator hält den Wert hex 80 .. 9E, das Registerpaar HL weist auf ein zu füllendes Datenfeld
  O: Das Datenfeld ist gefüllt mit der Zeichenkette, das erste Byte hält die Länge der Kette. Die Carryflag zeigt einen ungültigen Wert an

PDMCHA.MAC
PDMCHA B: Ausgabe eines Zeichens
  I: Der Akkumulator hält das auszugebende Zeichen
  O: ---

PDMVEC.MAC
PDMVEC PDMTOP B: Initialisieren des Pull Down Paketes
PDMBIC
PDMXBS
  I: Registerpaar HL hält verfügbare Speicheradresse im Common Bereich (größer hex C000)
  O: Die Carryflag zeigt an, dass Common Bereich nicht ausreicht. Registerpaar HL und Feld PDMTOP halten neue verfügbare höchste Adresse. PDMBIC ist geladen mit Einsprung der BIOS Zeichenausgabe und PDMXBS mit einem Sprung zum XBIOS

PDMXOS.MAC
PDMXOS P@@GTK
P@@GTT
B: Installation für unterschiedliche XBIOS Versionen. (Derzeit werden unterstützt Version 1.4 und 1.8)
  I: ---
  O: Für die Routinen PDMTKX und PDMTTX werden versionsabhängige Adressen ermittelt. Die Carryflag zeigt an, dass keine gültige Version gefunden wurde.

PDMTKX.MAC
PDMTKX B: Tastenwert ermitteln
  I: Register C hält die Tastennummer, Register C den Zustand
  O: Der Akkumulator hält den zugeordneten Wert, die Carryflag zeigt eine ungültige Tastennummer an.
Diese Routine sollte dem Modul PDMGTK vorgezogen werden. Zuvor muss PDMXOS aufgerufen werden.

PDMTTX.MAC
PDMTTX B: Tastenzeichenkette ermitteln
  I: Der Akkumulator hält den Wert hex 80 .. 9E, das Registerpaar HL weist auf ein zu füllendes Datenfeld
  O: Das Datenfeld ist gefüllt mit der Zeichenkette, das erste Byte hält die Länge der Kette. Die Carryflag zeigt einen ungültigen Wert an. Diese Routine sollte dem Modul PDMGTT vorgezogen werden. Zuvor muss PDMXOS aufgerufen werden.

Interne Funktionen. Hier nur eine Übersicht mit Beschreibung ohne Angabe von Parametern.

PDMOUT.MAC
PDMOUT B: Ausgabe eines Fensters

PDMHOR.MAC
PDMHOR B: Ausgabe einer horizontalen Linie

PDMDOL.MAC
PDMDOL PDMDOX
PDMDOY
B: Ausgabe einer Frame-Zeile

PDMCOD.MAC
PDMCOD B: Ausgabe invers oder normal

PDMRCU.MAC
PDMRCU B: Cursor restaurieren

PDMCON.MAC
PDMCON B: Mehrfache Zeichenausgabe

PDMTXT.MAC
PDMTXT B: Textausgabe in ein Fenster

PDMELE.MAC
PDMELE B: Ausgabe eines Fensterelementes

PDMSCU.MAC
PDMSCU B: Cursorposition in UPB speichern

PDMSWD.MAC
PDMSWD B: Routine zum Speichern oder Laden eines Fensters

PDMBLD.MAC
PDMBLD B: Ermitteln der Fensterparameter

PDMMAX.MAC
PDMMAX B: Elemente auf Maximalwerte begrenzen