Sprungverteiler

Von der Interessengemeinschaft Heimcomputer der KdT des IZ der TU-Dresden wurde ein Sprungverteiler vereinbart, der zur Einbindung von Erweiterungen des "Z1013"-Monitorprogramms in Anwenderprgrammen dient. Das Ziel der Vereinbarung bestand in der weitestgehenden Portabilität von Programmen für den "Z1013", auch wenn diese z.B. einen Sprung zu einem Druckertreiber enthalten sollen. Der Verteiler beginnt auf derAdresse FFFFH abwärtsführend und enthält Sprungbefehle zu den entsprechenden Unterprogrammen der Systemerweiterung, welche mit einem RET-Befehl enden müssen, um die Rückkehr in das Anwenderprogramm zu erreichen. Nicht vorhandene Unterprogramme sind durch RET (C9H) kurzzuschließen.
(Text: V.Lühne FA 10/88)
Sprungverteiler für Z1013-Erweiterugnen:
 
FFFDH JMP INKEY holt ein Zeichen von Tastatur in den Akku; kommt beim 2. Aufruf nur zurück, wenn die Taste zwischendurch losgelassen wurde
FFFAH JMP POLL bringt immer ein Zeichen im Akku zurück, egal ob die Taste losgelassen wurde oder nicht
FFF7H JMP STAT übergibt den Tastaturstatus im Akku 
A=0   - keine Taste geddrückt 
A=FFh - Taste gedrückt 
die Abfrage erfolgt ohne Rücksicht, ob die Taste schon vor dem Aufruf gedrückt worden war und hinterläßt trootz gedrückter Taste den Status 'letztes Zeichen war 0' ([Zelle 4]=0) um eine eventuell nachfolgende INKEY-Routine nicht zu sperren
FFF4H JMP SARUF ruft die SAVE-Routine des Headersave 
! zerstört 1. Registersatz + AF' 
Parameterübergabe Zellen: 
1BH     - anfadr. 
1DH     - endadr. 
23H     - strtadr. 
Akku 3AH- Wiederholen der SAVE-Funktion mit gleichem Kopf 
H(IY) Typvorgabe (in ASCII) sonst 0
FFF1H JMP LORUF ruft die LOAD-Routine des HEADERsave 
! zerstört 1. Registersatz + AF' 
Parameterübergabe Zellen: 
1BH     - neue Anfangsadresse des Files / sonst 0  
Akku 00H- ohne signifikante Kontrolle 
Akku 4EH- mit signifikante Kontrolle (TYP) + Namenabfrage 
H(IY)00H- Typ wird abgefragt 
    sonst Typkennzeichen in ASCII 
L(IY)20H- Freigabe des Autostart bei COM-Files
LORUF ruft BLMK auf, dementsprechend sind auch die Return-Werte
FFFEH JMP ZMINI Initialisierung des Z-Monitorrufes auf B0H
FFEBH JMP DRDEL setzt den logischen Druckertreiber zurück
FFE8H JMP DRAAK übergibt den Akkuinhalt an den logischen Druckertreiber
FFE5H JMP BSDR druckt den Inhalt des BWS und kehrt in das rufende Programm zurück
FFE2H JMP HARDC übergibt den Akkuinhalt an den logischen Druckertreiber wenn ein Flag im Rechner gesetzt ist; 
wandelt CR (0DH) in NL (1EH/0DH-0AH) 
!nur verwenden, wenn das Programm eine eigene Bildschirmverwaltung hat
FFDFH JMP DRZEL wir DRAKK, nur das der Inahkt von 1BH übergeben wird (vorgesehen, um in BASIC mit POKE zu drucken)
FFDCH JMP BEEP erzeugen eines kurzen Signals
FFD9H JMP ASTA Ausgabe Akkuinhalt als ASCII-Zeichen an PUNCH
FFD6H JMP BSTA Ausgabe Akkuinhalt als Byte an PUNCH
FFD3H JMP AIN Eingabe eines ASCII-Zeichens vom LBL in den Akku
FFD0H JMP BIN Eingabe eines Bytes vom LBL in den Akku
FFCDH JMP DRINI Initialisierung des logischen Druckertreibers
FFCAH JMP ZEIDR übergibt ein Zeichen im Akku an physischen Druckertreiber
FFC7H JMP BLMK Lesen eines Blocks vom Headersave
Parameterübergabe Zellen:
25H/26H * Kopfinhalt des zu lesenden Bl.
HL      * Ladeadresse des Blocks
Return Zellen:
25H/26H * Kopfinhalt+20H
HL      * HL:=HL+20H
Abbruch des Lesens bei Kopfinhalt=0FFFFH oder DMA>Endadr in ARG2 (1DH)
FFC4H JMP BSMK Schreibes eines Blocks im Headersave
Parameterübergabe:
HL * Quelladresse BLock
IX * Kopfinhalt
DE * Anzahl der Sync.-Bits
Return:
HL * HL:=HL+20H
FFC1H JMP SUCHK Suchen eines Kopfblocks und Übergabe des Inhalts im Kopfpuffer (E0-FF), keine Auswertung
FFBEH JMP AKP Aufbereitung Kopfpuffer, mit Namenabfrage
Parameterübergabe wie bei SARUF
FFBBH JMP GETST Abfrage der Joysticks und Übergabe des Ergebnisses in BC (B-links, C-rechts) mit folgenden Bedeutungen (Belegung mit 1):
Bit 0 - links
    1 - rechts
    2 - runter
    3 - hoch
    4 - Aktionstaste
 Z-Flag=1, wenn keine Betätigung vorliegt
CY-Flag=1, wenn Spielhebel nicht angeschlossen
FFB8H JMP SOUND Ausgabe einer vollen Periode auf die Tonbandbuchse, sowie auf Bit 7 vom Systemport (User-P)
Übergabe der Periodendauer in C mit T=n*33µs+20µs (2MHz)