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 Anwenderprogrammen 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 der Adresse 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.

Adresse Name Funktion
FFFDh INKEY holt ein Zeichen von Tastatur in den Akku; kommt beim 2. Aufruf nur zurück, wenn die Taste zwischendurch losgelassen wurde
FFFAh POLL bringt immer ein Zeichen im Akku zurück, egal ob die Taste losgelassen wurde oder nicht
FFF7h STAT übergibt den Tastaturstatus im Akku
A = 00h - keine Taste gedrü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 trotz gedrückter Taste den Status 'letztes Zeichen war 0' ([Zelle 0004h]=0) um eine eventuell nachfolgende INKEY-Routine nicht zu sperren
FFF4h SARUF ruft die SAVE-Routine des Headersave
! zerstört 1. Registersatz + AF'
Parameterübergabe Zellen:
001Bh (ARG1) = Anfangsadresse
001Dh (ARG2) = Endadresse
0023h (ARG3) = Startadresse
Akku 3Ah - Wiederholen der SAVE-Funktion mit gleichem Kopf
H(IY) Typvorgabe (in ASCII) sonst 0
FFF1h LORUF ruft die LOAD-Routine des Headersave
! zerstört 1. Registersatz + AF'
Parameterübergabe Zellen:
001Bh (ARG1) = neue Anfangsadresse des Files / sonst 0
Akku 00h = ohne signifikante Kontrolle
Akku 4Eh = mit signifikante Kontrolle (TYP) + Namensabfrage
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 ZMINI Initialisierung des Z-Monitorrufes auf 00B0h
FFEBh DRDEL setzt den logischen Druckertreiber zurück
FFE8h DRAAK übergibt den Akkuinhalt an den logischen Druckertreiber
FFE5h BSDR druckt den Inhalt des BWS und kehrt in das rufende Programm zurück
FFE2h 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 DRZEL wie DRAKK, nur das der Inhalt von 001Bh (ARG1) übergeben wird (vorgesehen, um in BASIC mit POKE zu drucken)
FFDCh BEEP erzeugen eines kurzen Signals
FFD9h ASTA Ausgabe Akkuinhalt als ASCII-Zeichen an PUNCH (Lochbandstanzer)
FFD6h BSTA Ausgabe Akkuinhalt als Byte an PUNCH
FFD3h AIN Eingabe eines ASCII-Zeichens vom Lochbandleser (LBL) in den Akku
FFD0h BIN Eingabe eines Bytes vom LBL in den Akku
FFCDh DRINI Initialisierung des logischen Druckertreibers
FFCAh ZEIDR übergibt ein Zeichen im Akku an physischen Druckertreiber
FFC7h BLMK Lesen eines Blocks vom Headersave
Parameterübergabe Zellen:
0025h/0026h * Kopfinhalt des zu lesenden Block
HL * Ladeadresse des Blocks

Return Zellen:

0025h/0026h * Kopfinhalt + 20h
HL * HL = HL + 20h

Abbruch des Lesens bei Kopfinhalt = FFFFh oder DMA > Endadr in ARG2 (001Dh)

FFC4h BSMK Schreibes eines Blocks im Headersave
Parameterübergabe:
HL * Quelladresse Block
IX * Kopfinhalt
DE * Anzahl der Sync.-Bits
Return:
HL * HL = HL + 20h
FFC1h SUCHK Suchen eines Kopfblocks und Übergabe des Inhalts im Kopfpuffer (00E0h-00FFh), keine Auswertung
FFBEh AKP Aufbereitung Kopfpuffer, mit Namenabfrage, Parameterübergabe wie bei SARUF
FFBBh 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 SOUND Ausgabe einer vollen Periode auf die Tonbandbuchse, sowie auf Bit 7 vom Systemport
Übergabe der Periodendauer in C mit T=n*33µs+20µs (2MHz)
FFB5h BSAVE Speichern im BASIC-Code Format
FFB2h BLOAD Laden im BASIC-Code Format

 

Quellen:
- V.Lühne - Sprungverteiler für Z1013-Betriebssystemerweiterungen - FUNKAMATEUR 10/1988 S.484
- practic 1/1990 S.41

Stand: 01. Januar 2008