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:
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