Entwicklungsunterlagen

Der Z013-Bedienungslanleitung lagen Stromlaufpläne bei. Es gibt verschiedene Versionen zum Z1013.01 und zum Z1013.64.

Die Stromlaufpläne vom Z1013 entprechen leider nicht den von anderen Rechnern gewohnten Standards. In allen Version gibt es offenbar Fehler und Ungereimtheiten.

Auch im Funkamateur wurden - wiederum abweichende - Unterlagen veröffentlicht. Hier wurden die Unterlagen zur 16K-Version präsentiert.

Seit 2016 gibt es verifizierte Unterlagen von U. Zander:

* http://www.sax.de/~zander/z1013/z13_hw.html

Bereich Inhalt
0000-00FFh Systemzellen
0069-008Fh Anwender-Stackbereich (Stack laeuft nach unten!)
0090-00AFh System-Stackbereich (Stack laeuft nach unten!)
00B0-00DFh Kommandoerweiterungstabelle
00E0-00FFh Kassettenueberspielbereich
0100-3FFF/EBFFh Anwenderprogramme
EC00-EFFFh Bildwiederholspeicher BWS
F000-F7FFh Monitor (2k)
F000-FFFFh Monitor (4k)

die wichtigsten Systemzellen

Name Adresse Anzahl Byte Bedeutung
SOIL 0016 2 Anfangsadresse der Eingabezeile (Eingabepuffer)
ARG1 001B 2 1. Parameter eines Kommandos
ARG2 001D 2 2. Parameter
ARG3 0023 2 3. Parameter
CURSR 002B 2 Kursoradresse

Übersicht. Detailierte Beschreibung s. TODO. Befehlsaufruf als

  RST 20H
  DB  nn
RST 20H Funktion Beschreibung Zellen/Bemerkung 2.02 A2
DB 00H OUTCH Ausgabe des im A-Register stehenden Zeichens A F21BH F258H
DB 01H INCH Eingabe eines Zeichens von der Tastatur. Warten bis Tastendruck A Ret bei A#0 F20CH F219H
DB 02H PRST7 Stringausgabe Ende Bit7=1 F2A5H F2E2H
DB 03H INHEX Konv. ASCII HEX→Zahl Aadr=DE Zahl=HL F2F4H F331H
DB 04H INKEY Tastaturabfrage A + 0004H F130H F119H
DB 05H INLIN Eingabe einer Zeile Aadr=SOIL ENDE=0DH F2B3H F2F0H
DB 06H OUTHX Ausgabe des A-Registers hexadezimal A F301H F33EH
DB 07H OUTHL Ausgabe des HL-Registers hexadezimal HL F31AH F357H
DB 08H CSAVE Kassettenspeichern Aadr=Arg1 Eadr=Arg2 F369H F3A6H
DB 09H CLOAD Kassettenladen Aadr=Arg1 Eadr=Arg2 F3F8H F435H
DB 0AH MEM Modify Memory (M-Kommando) Aadr=Arg1 F325H F362H
DB 0BH WIND Scrollbereich setzen Aadr=Arg1 Eadr+1=Arg2 F6D1H F6F5H
DB 0CH OTHLS Ausgabe HL + Space HL F5C7H F604H
DB 0DH OUTDP Ausgabe :+HL+Space HL F5C4H F601H
DB 0EH OUTSP Ausgabe Leerzeichen F5CFH F60CH
DB 0FH TRANS Speicherbereich verschieben Von=Arg1 Nach=Arg2 An=Arg3 F51DH F55AH
DB 10H INSTR Eingabe einer Zeichenkette Aadr=SOIL ohne'#' F2B9H F2F6H
DB 11H KILL Speicherbereich füllen Aadr=Arg1 Eadr=Arg2 B=Arg3 F50BH F548H
DB 12H HEXUM Hexa-Umschaltung (2.02) F6B8H
DB 13H ALPHA Alpha-Umschaltung (2.02) F6C5H

Details s. Sprungverteiler

Der Sprungverteiler ist eine Sprungliste zu erweiterten Systemfunktionen. Er ist in den meisten 4K-Monitoren enthalten.

Standort: FFB8h-FFFFh

Sprungverteiler fuer Z 1013-Erweiterungen:

Adr. Aufruf Beschreibung Zellen/Bemerkung
FFFDH JMP INKEY holt Zeichen von Tastatur, wartet A = Zeichen
FFFAH JMP POLL holt Zeichen von Tastatur, wartet A = Zeichen
FFF7H JMP STAT Tastaturstatus im Akku A=0 keine Taste gedrueckt, A=FFH - Taste gedrueckt
FFF4 JMP SARUF Headersave 1BH - aadr 1DH - eadr 23H - sadr,
A=':' - SAVE mit vorherigen Werten, H(IY) = Typ oder 00h
FFF1H JMP LORUF Headerload 1BH - aadr/0, A=0 - ohne, =4EH - mit Kopfkontrolle (Typ) + Namenabfrage,
H(IY)=0 - Typ wird abgefragt, <>0 - Typ,
L(IY) = ' ' - Autostart bei 'C'
FFEEH JMP ZMINI Initialisierung Zusatzmonitor auf B0H
FFEBH JMP DRDEL setzt den logischen Druckertreiber zurueck
FFE8H JMP DRAKK logischer Druckertreiber A=Zeichen
FFE5H JMP BSDR Bildschirmkopie drucken
FFE2H JMP HARDC Hardcopy A=Zeichen, Flag=???
FFDFH JMP DRZEL logischer Druckertreiber 1BH=Zeichen
FFDCH JMP BEEP kurzer Ton
FFD9H JMP ASTA Ausgabe ASCII an PUNCH A=Zeichen
FFD6H JMP BSTA Ausgabe Byte an PUNCH A=Byte
FFD3H JMP AIN Eingabe ASCII-Zeichen von LBL ret A=Zeichen
FFD0H JMP BIN Eingabe Byte vo LBL ret A=Byte
FFCDH JMP DRINI Initialisierung des logischen Druckertreibers
FFCAH JMP ZEIDR physischer Druckertreiber A=Zeichen
FFC7H JMP BLMK Headersave Block lesen 25H/26H=Kopf, HL=Ladeadr, ret. 25H/26H=Kopf+20H, HL:=HL+20H
FFC4H JMP BSMK Headersave Block schreiben HL=adr, IX=Kopf, DE=Anzahl der Sync.-Bits, ret HL:=HL+20H
FFC1H JMP SUCHK Suchen eines Kopfblocks
FFBEH JMP AKP Aufbereitung Kopfpuffer mit Namenabfrage
FFBBH JMP GETST Abfrage der Joysticks ret BC (B-links,C-rechts)
FFB8H JMP SOUND Soundausgabe C =Periodendauer
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

Auch bei den I/O-Adressen wurde neben den vom Hersteller festgelegten Adressen einige mit Funktionen belegt und als Standard für die Anwender vorgeschlagen (1.Tagung in Dresden)

ADR. D-Bit I/O-PORT bzw.FUNKTION BEMERKUNGEN
00H,01H PIO Z-1013 PORT A USER für Spielhebel, Drucker usw.
02H,03H PIO Z-1013 PORT B 02H Daten, 03H Steuerung
PETERS-PLATINE
04H (-07h) DB7 UMSCHALTUNG 32/64 BS Bildschirm von 32 auf 64 Zchn. umschalten, und umgekehrt.
DB6 UMSCHALTUNG TAKTFREQUENZ Taktfrequenz kann mit diesem I/O-Signal von 2 auf 4 MHz und umgekehrt umgeschaltet werden.
DB5 UMSCHALTUNG ZEICHENGENERATOR Wenn verschiedene Zeichen-Generatoren (z.B. ASCII-Code m.Grafikzeichen und DIN-Zeichensatz-m.Umlaute und SZ, sowie gesetzten 7.Bit /invers)
DB4 ROM-ABSCHALTUNG Wenn z.B.externer ROM verwendet werden soll, oder ein Urlader.
DB3 freiprogrammierbarerZeichengenerator
DB2 u. DB1 Schreibschutz fuer 4K-RAM-Bereich (z.B. Urlader) DB2: RAM-Bereich F000H-F7FFH, DB1: 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-0Fh TASTATUR-SPALTEN-TREIBER
FUER ERWEITERUNGEN:
E/A-Modul Riesa
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-Interface (Riesa)
36H,37H PIO 2 PORT B frei
CTC-Modul
38H,39H,3AH,3BH CTC 1, 4 KANAELE (Bei eigner CTC Instalierung, 1. CTC als Systemuhr vorgeschlagen)
3CH,3DH,3EH,3FH CTC 2, 4 KANAELE
98H RAM-FLOPPY A (Adressen fuer 2 RAM-Floppy)
58H RAM-FLOPPY B
FUER ROM-FLOPPY STEHT DIE ADRESSE NOCH NICHT FEST, WIRD ABER WIE RAM-FLOPPY ANGESTEUERT, LIEGT ALSO ETWA IM GLEICHEN BEREICH.
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.

Peters-Platine Port 04h

O4TAB:
DB	01110000B	;"1" 64x16 Zeichen
DB	10000000B	;"2"
DB	10110000B	;"3" 4 Mhz
DB	01000000B	;"4"
DB	11010000B	;"5" 2.ter Zeichensatz
DB	00100000B	;"6"

EPROMMer:

;Hardware Eprom-Programmiermodul des CC Leipzig (mit PIO)
PIOAD:	EQU	0FCH		;EPROM-DATEN PORT
PIOAC:	EQU	0FDH		;STW-DATENPORT
PIOBD:	EQU	0FEH		;EPROM-STEUERPORT
PIOBC:	EQU	0FFH		;STW-STEUERPORT
;
;Hardware Eprom-Programmiermodul IGD ueber PIO-MOdul
;PIOAD	EQU	030H		;EPROM-DATEN PORT
;PIOAC	EQU	031H		;STW-DATENPORT
;PIOBD	EQU	032H		;EPROM-STEUERPORT
;PIOBC	EQU	033H		;STW-STEUERPORT

NANOS-Ram-Disk

        Adresse                         Wert
       0D821H DISK A     DB RAMDI      0C4H
       0D822H            DB READDI     0C6H
       0D823H            DB LDAH       0C0H
       0D824H            DB LDBB       0C2H
       0D825H            DA WINDOW     0F700H
       0D827H DISK B     DB RAMDI      0C4H
       0D828H            DB READDI     0C6H
       0D829H            DB LDAH       0C0H
       0D82AH            DB LDBB       0C2H
       0D82BH            DA WINDOW     0F700H
       

CCJena-Floppy ??

CFDC:	EQU	94H	;STEUERUNG FDC
DFDC:	EQU	95H	;DATEN FDC
TC:	EQU	92H	;TERMINAL COUNT (ENDE-IMPULS)

???

CFDC:	EQU	7CH		;STEUERUNG FDC
DFDC:	EQU	7DH		;DATEN FDC
TC:	EQU	78H		;TERMINAL COUNT

CCJena FDC (?)

;FDC-Adressen
;
CFDC:	EQU	0F0H		;Steuerung
DFDC:	EQU	0F1H		;Daten
TC:	EQU	0F8H		;Terminal count
MON:	EQU	0F6H		;Motor ein
MOFF:	EQU	0F2H		;Motor aus
RFDC:	EQU	0FAH		;Softreset
;

CCJena GDC

Port 18H

ist aber einstellbar:

Dil-1 = OUT 0,1
  2 =     8,9
  3 =    10,11
  4 =    18,19 ---> Stellung f}r BIOS und Urlader
  5 =    20,21
  6 =    28,29
  7 =    30,31

BIOS Cottbus

; RAM - FLOPPY GRUNDADRESSEN 
GADDA	EQU	98H		;GRUND-ADR. 1 RAM-FLOPPY
GADDB	EQU	58H		;GRUND-ADR. 2 RAM-FLOPPY
GADDC	EQU	68H		;GRUND-ADR. 3 RAM-FLOPPY
GADDD	EQU	88H		;GRUND-ADR. 4 RAM-FLOPPY
RAFDDR  EQU     88H             ;GRUND-ADR. DER RAF
VIS	EQU	0E0H		;I/O-ADRESSE VIS 3 A
BAGDC   EQU     18H             ;I/O-ADRESSE GDC-KARTE   18
oder BAGDC   EQU     20H             ;I/O-ADRESSE GDC-KARTE   20
STGDC	EQU	BAGDC
RDGDC	EQU	BAGDC+1
WDGDC	EQU	BAGDC
WCGDC	EQU	BAGDC+1

PIOD	EQU	34H		;ADR.V.24 E/A-MOD.
PIOC	EQU	35H

;FDC
CFDC	EQU	0F0H		;STEUERUNG FDC
DFDC	EQU	0F1H		;DATEN FDC
MOAUS	EQU	0F2H		;FDC-PORT-ADRESSE
MOEIN2  EQU     0F4H            ;2 PHYSISCHE FLOPPY
MOEIN   EQU     0F6H
TC      EQU     0F8H
FDCRES  EQU     0FAH   
odwr
CFDC	EQU	7CH		;STEUERUNG FDC
DFDC	EQU	7DH		;DATEN FDC
TC	EQU	78H		;TERMINAL-COUNT
RESFDC	EQU	7AH		;RESET FDC

CTC1   EQU      38H             ;CTCUHR- KANAL 1
CTC2   EQU      39H             ;CTCUHR- KANAL 2
CTC3   EQU      3AH             ;CTCUHR- KANAL 3