Entwicklungsunterlagen
Schaltungsunterlagen
Der Z013-Bedienungslanleitung lagen Stromlaufpläne bei. Es gibt verschiedene Versionen zum Z1013.01 und zum Z1013.64.
- z1013.01-schaltung.pdf Z1013.01
- z1013.64-schaltung.pdf 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.
- z1013-schaltung-fa.pdf FA 3/89+6/89
Seit 2016 gibt es verifizierte Unterlagen von U. Zander:
Speicheraufteilung
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) |
Systemrufe (Monitorfunktionen)
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 |
Sprungverteiler
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 |
Systemzellen
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
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.
Ports aufgesammelt
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