===============================================================
= =
= STANDARD-ADRESSEN =
= =
==================================== Stand: 20.08.89 =========
ausgearbeitet:
IG-HC TU Dresden
Inhalt: SPRUNGVERTEILER
SYSTEMADRESSEN UND BELEGUNG
I/O-ADRESSEN
***************************************************************
SPRUNGVERTEILER:
Von der Interessengemeinschaft Heimcomputr der KdT des IZ
der TU-Dresden wurde ein Sprungverteiler vereinbart, der zur
Einbindung von Erweiterungen des "Z 1013"-Monitorprogramms
in Anwenderprogrammen dient. Das Ziel der Vereinbarung bestand
in einer weitestgehenden Portabilitaet von Programmen fuer
den "Z 1013", auch wenn diese z.B. einen Sprung zu einem Druk-
kertreiber enthalten sollen. Der Verteiler beginnt auf der A-
dresse FFFFH abwaertsfuehrend und enthaelt Sprungbefehle zu
den entsprechenden Unterprogrammen der Systemerweiterung, wel-
che mit einem RET-Befehl enden muessen, um die Rueckkehr in
das Anwenderprogramm zu erreichen. Nicht vorhandene Unterpro-
gramme sind durch RET (C9H) kurzzuschliessen.
(TEXT:V.LUEHNE FA 10/88)
Sprungverteiler fuer Z 1013-Erweiterungen:
__________________________________________
FFFDH - JMP INKEY holt ein Zeichen von Tastatur in den
Akku; kommt beim 2. Aufruf nur zurueck,
wenn Taste zwischendurch losgelassen
wurde
FFFAH - JMP POLL bringt immer ein Zeichen im Akku zu-
rueck, egal ob Taste losgelassen wurde
oder nicht
FFF7H - JMP STAT uebergibt Tastaturstatus im Akku
A=0 - keine Taste gedrueckt
A=FFH - Taste gedrueckt
die Abfrage erfolgt ohne Ruecksicht,
ob die Taste schon vor dem Aufruf ge-
drueckt war und hinterlaesst trotz ge-
drueckter Taste den Status
'letztes Zeichen war 0' ((Zelle 4)=0)
um eine evtl. nachfolgenden INKEY-Rou-
tine nicht zu sperren
FFF4 - JMP SARUF ruft die SAVE-Routine des Headersave
! zerstoert 1. Registersatz + AF'
Parameteruebergabe:
Zellen 1BH - anfadr.
1DH - endadr.
23H - strtadr.
Akku 3AH - Wiederholen der SAVE-Funk-
tion mit gleichem Kopf
H(IY) Typvorgabe (in ASCII), sonst 0
FFF1H - JMP LORUF ruft LOAD-Routine des Headersave
! zerstoert 1. Registersatz + AF'
Parameteruebergabe:
Zellen 1BH - neue Anfangsadresse des
Files sonst 0
Akku 0 - ohne signifikante Kontrol-
le
4EH - mit signifikanter Kopfkontrolle
(Typ) + Namenabfrage
H(IY) 0 - Typ wird abgefragt
Typkennzeichen (in ASCII),
keine Typabfr.
L(IY) 20H - Freigabe Autostart bei
COM-Files
FFEEH - JMP ZMINI Initialisierung der Z-Monitorrufe
auf B0H
FFEBH - JMP DRDEL setzt den logischen Druckertreiber
zurueck
FFE8H - JMP DRAKK uebergibt den Akkuinhalt an den lo-
gischen Druckertreiber
FFE5H - JMP BSDR druckt den Inhalt des BWS und kehrt
in das rufende Programm zurueck
FFE2H - JMP HARDC uebergibt den Akkuinhalt an logischen
Druckertreiber wenn ein Flag im Rechner
gesetzt ist;
wandelt CR (0DH) in NL (1EH/0DH-0AH)
! nur verwenden, wenn Programm eine
eigene Bildschirmverwaltung hat
FFDFH - JMP DRZEL wie DRAKK, nur das der Inhalt von
1BH uebergeben
wird (vorgesehen, um im 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 Drucker-
treibers
FFCAH - JMP ZEIDR uebergibt ein Zeichen im Akku an phy-
sischen Druckertreiber
FFC7H - JMP BLMK Lesen eines Blocks vom Headersave
Parameteruebergabe:
Zellen 25H/26H * Kopfinhalt des zu le-
senden 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 Schreiben eines Blocks im Headersave
Parameteruebergabe:
HL * Quelladresse Block
IX * Kopfinhalt
DE * Anzahl der Sync.-Bits
Return:
HL * HL:=HL+20H
FFC1H - JMP SUCHK Suchen eines Kopfblocks und Uebergabe
des Inhalts im Kopfpuffer (E0-FF), keine
Auswertung
FFBEH - JMP AKP Aufbereitung Kopfpuffer mit Namenab-
frage
Parameteruebergabe wie bei SARUF
FFBBH - JMP GETST Abfrage der Joysticks und Uebergabe
des Ergebnisses in BC (B-links,C-rechts)
mit folgenden Bit-Bedeutungen
(Belegung mit 1):
Bit 0 - links
1 - rechts
2 - runter
3 - hoch
4 - Aktionstaste
Z-Flag=1, wenn keine Betaetigung vor-
liegt
CY-Flag=1, wenn Spielhebel nicht ange-
schlossen
FFB8H - JMP SOUND Ausgabe einer vollen Periode auf die
Tonbandbuchse, sowie auf Bit 7 vom Sys-
temport (User-P)
Uebergabe der Periodendauer in C mit
T=n*33us+20us (2MHz)
**************************************************************
BELEGTE SYSTEMZELLEN DES Z1013:
-------------------------------
ADR BYTE FUNKTION ZUSATZFKT.
0000 3 Sprung zum Warmstart
0003 1 Befehlscode bei RST 20H Geraetezuweisg.
(I/O-Byte)
0004 1 letztes Zeichen Tastatur
0005 3 CALL 0005H
0008 3 RST 8H
000B 2 Breakpointadr.
000D 3 Operandenfolge bei Breakpoint
0010 3 RST 10H
0013 2 Adr. bei INHEX
0015 1 Merkzelle HSave; (SHILO)
0016 2 SOIL
0018 3 RST 18H Sprung zu Monitor
2/3
001B 2 ARG 1
001D 2 ARG 2
001F 1 vom Cursor verdecktes Zeichen
0020 3 RST 20H
0023 2 ARG 3
0025 2 Cursorpos. nach Kommandokonv.
0027 1 ASCII/Graphikschalter
0028 3 RST 28H
002B 2 akt. Cursorposition
002D 3 BER 3 frei 2D:Zeilenzaehler
2E:max. Zeilenzahl
2F:Seitenlaenge
0030 3 RST 30H
0033 2 Kenntonlaenge
0035 3 Tastaturcodetab.
0038 3 RST 38H
003B 12 Tastaturcodetab.
0047 2 WINDOW-Laenge
0049 2 -"- -Anfang
004B 2 -"- -Ende
004D 2 Reg.retteber.:HL'
004F 2 DE'
0051 2 BC'
0053 2 AF'
0055 2 HL
0057 2 DE
0059 2 BC
005B 2 AF
005D 2 IY
005F 2 IX
0061 2 PC
0063 2 Stackpointer(90H nach RESET)
0065 1 BER 1 frei Spaltenzaehler
0066 3 NMI
0069 1 Merkz. fuer NEXT (gegen EI getauschtes Byte)
006A 2 SP-Zwischenspeicher
006C 2 Zwischenspeicher bei FIND
006E-008FH Anwenderstack
0090-00AFH Systemstack
00B0-00DFH frei fuer Kommandoschleife
00E0-00FFH Puffer fuer Header S/L
**************************************************************
I/O-ADRESSEN fuer den "Z-1013":
_______________________________
Auch bei den I/O-Adressen wurde neben den vom Hersteller fest-
gelegten Adressen einige mit Funktionen belegt und als Stan-
dard fuer die Anwender vorgeschlagen (1.Tagung in Dresden)
ADR. D-Bit I/O-PORT BEMERKUNGEN
bzw.FUNKTION
00H,01H PIO Z-1013 PORT A USER fuer Spiel-
hebel, Drucker usw.
02H,03H PIO Z-1013 PORT B
04H DB7 UMSCHALTUNG 32/64 BS Bilidschirm von 32
auf 64 Zchn. umschal-
ten, und umgekehrt.
DB6 UMSCHALTUNG TAKTFREQUENZ Taktfrequenz kann
mit diesem I/O-Signal
von 2 auf 4 MHz und
umgekehrt umgeschal-
tet werden.
DB5 UMSCHALTUNG ZEICHEN- Wenn verschiedene Zei-
GENERATOR chen-Generatoren (z.B.
ASCII-Code m.Grafik-
Zeichen und DIN-Zei-
chensatz-m.Umlaute
und SZ, sowie gesetz-
ten 7.Bit /invers)
DB4 ROM-ABSCHALTUNG Wenn z.B.exter-
ner ROM verwendet
werden soll, oder
ein Urlader.
DB3 freiprogrammierbarer
Zeichengenerator
DB2 Schreibschutz fuer F000H-F7FFH
u. 4K-RAM-Bereich und
DB1 (z.B. Urlader) F800H-FFFFH
DB0 frei (freihalten fuer
wichtige Verwendung.
rueckgesetztes Datenbit ist normaler Zustand
(Z1013-Original), dabei ist der Schreibschutz
eingeschaltet. Bitte bei Anwendung in Programmen
nur die jeweils benoetigten Bits setzen oder
ruecksetzen.
!! NICHT GENERELL '0' BEIM RUECKSETZEN VERWENDEN !!
05H DB0-7 frei fuer Anwender
08H TASTATUR-SPALTEN-TREIBER
FUER ERWEITERUNGEN:
30H,31H PIO 1 PORT A Fuer EPROM-
Programmierung u.a.
32H,33H PIO 1 PORT B
34H,35H PIO 2 PORT A V.24-Inter-
face (Riesa)
36H,37H PIO 2 PORT B frei
38H,39H,3AH,3BH CTC 1, 4 KANAELE (Bei eigner CTC In-
3CH,3DH,3EH,3FH CTC 2 4 ="= stalierung, 1. CTC als
Systemuhr vorgeschlagen)
98H RAM-FLOPPY A (Adressen fuer 2 RAM-
58H RAM-FLOPPY B Floppy)
FUER ROM-FLOPPY STEHT DIE ADRESSE NOCH NICHT FEST, WIRD ABER
WIE RAM-FLOPPY ANGESTEUERT, LIEGT ALSO ETWA IM GLEICHEN BE-
REICH.
D0H,D1H,D2H (nach Kramer)
F0H,F1H,F2H (nach Brosig) fuer DISK-FLOPPY genutzt.
Standard-Adressen fuer Vollgrafik festzulegen, hält die IG-HC
noch fuer verfrüht, da noch kein für alle akzeptables System
vorliegt.
*************************************************************
^^^^^ letzter Bearbeiter: Hofmann