[ Zu JKCEMU ]


JKCEMU als Z9001-, KC85/1- und KC87-Emulator

Die Computer Z9001, KC85/1 und KC87 wurden im VEB Robotron-Meßelektronik Dresden hergestellt. Beim KC85/1 handelt es sich eigentlich nur um einen umbenannten Z9001. Es wurde allerdings im Laufe der Zeit das Betriebssystem fehlerbereinigt, so dass die ersten als Z9001 ausgelieferten Geräte die Betriebssystemversion 1.1 enthielten und später erst die Version 1.2 eingeführt wurde. Da einige Monate nach Produktionsbeginn auch die Umbenennung in KC85/1 erfolgte, kann man grob folgende Zuordnung treffen: Z9001 → Betriebssystemversion 1.1 und KC85/1 → Betriebssystemversion 1.2. Obwohl diese Zuordnung nicht ganz der Realität entspricht (der Versionssprung hat mit der Umbenennung eigentlich nichts zu tun, sie liegen nur zeitlich relativ nah beieinander), emuliert JKCEMU beide Geräte als separate Systeme mit unterschiedlichen Betriebssystemversionen.

Das Z9001-Betriebssystem ist als Version 1.3 auch im KC87 enthalten. Deshalb meldet sich der KC87 ebenfalls als Z9001.

Bildschirmfoto der KC87-Emulation

1. Emulierte Hardware


1.1. Tastatur

KC87-Tastatur

Für einige Tasten auf der Z9001-Tastatur gibt es üblicherweise keine direkten gleichnamigen Tasten auf der Tastatur des Emulatorrechners. Diese Tasten werden aber trotzdem emuliert, und zwar:
Z9001-TasteEmuliert mittels
ZeilenanfangControl-Links
ZeilenendeControl-Rechts
ESCEscape
INSEinfg
DELEntf oder Shift-Einfg
LISTF1
RUNF2
STOPF3
PAUSEF4
CONTF5 oder Shift-F4
CR-LNF6 oder Shift-Escape
COLORF7
GRAPHICF8


1.2. Drucker

In den Einstellungen können Sie eine von zwei Möglichkeiten zur Emulation eines Druckers aktivieren: die Emulation eines V24-Druckermoduls oder das Abfangen der BOS-Aufrufe für Druckerausgaben.

1.2.1. Emulation eines V24-Druckermoduls

Haben Sie diese Option aktiviert, werden zusätzlich eine CTC und eine SIO emuliert und die am Kanal A der SIO ausgegebenen Daten an den aktiven Druckauftrag angehängt. Damit das Drucken auch in den Anwendungsprogrammen funktioniert, müssen Sie noch einen Treiber laden, der die datentechnische Verbindung zwischen dem Betriebssystem und dem Druckermodul herstellt. Das Druckermodul enthält im Adressbereich B800h-BFFFh auch einen ROM mit den relativ universellen Treibern V24A1, V24A2 und V24A3. Allerdings muss dieser ROM ausgeschaltet werden, wenn im gleichen Adressbereich ein RAM-Modul aktiv ist. JKCEMU emuliert deshalb diesen ROM nur, wenn die emulierte RAM-Größe max. 32 KByte beträgt.

1.2.2. BOS-Aufrufe für Druckerausgaben abfangen

Bei dieser Option können Sie auch ohne einen Treiber drucken, da JKCMEU einfach die entsprechenden Betriebssystemaufrufe abfängt. Allerdings kann man dann auch nicht die Vorteile eines Treibers nutzen wie z.B. eine spezielle Aufbereitung der Druckdaten.

1.3. Vollgrafik

Der Z9001 und seine Nachfolger haben keine Vollgrafik an Board, sondern nur eine Blockgrafik. Es gibt jedoch Vollgrafikerweiterungen.

1.3.1. Robotron-Vollgrafikerweiterung

Die von Robotron entwickelte Vollgrafikerweiterung wurde nicht als industriell hergestelltes Modul vertrieben, sondern stand nur als Bauanleitung zur Nachnutzung zur Verfügung. Die Vollgrafikerweiterung kommt mit einem separaten Bildwiederholspeicher für 320x192 Pixel daher und arbeitet mit nur zwei Farben, die aus der Farbpalette des Farbmoduls programmtechnisch ausgewählt werden können. Das Farbmodul ist somit zwingend erforderlich. Aus diesem Grund emuliert JKCEMU die Robotron-Vollgrafikerweiterung auch nur in Verbindung mit dem Farbmodul.

1.3.2. KRT-Vollgrafikerweiterung

In den Kleinstrechnertips Heft 11 wurde eine relativ einfache Vollgrafikerweiterung für den Z1013 vorgestellt. Volker Pohlers und Ulrich Zander haben diese Schaltung mit kleinen Modifikationen (andere E/A-Adressen, Pixeldaten nicht invertierend) an den Z9001 angepasst und ihr in Anlehnung an Kleinstrechnertips den Name KRT-Vollgrafikerweiterung gegeben.

Im Adressbereich des Bildwiederholspeichers liegen zusätzlich 8 parallele Speicherbänke. Jede dieser Bänke enthält die Pixeldaten für eine bestimmte Pixelzeile innerhalb einer Zeichenposition (Bank 0: oberste Pixelzeile innerhalb einer Zeichenzeile, Bank 7: unterste Pixelzeile innerhalb einer Zeichenzeile). Ein Byte in diesen Speicherbänken repräsentiert 8 nebeneinander stehende Pixel (höchstwertiges Bit links).

Die Steuerung erfolgt über das Ausgabetor B8h. Ein gesetztes Bit 3 aktiviert die Vollgrafik, d.h. aus dem Adressraum wird der originale Bildwiederholspeicher ausgeblendet und dafür die mit Bit 0 bis 2 angegebene Speicherbank eingeblendet.

1.4. Programmierbarer Zeichengenerator

Beim programmierbaren Zeichengenerator handelt es sich um einen zusätzlichen 1 KByte großen RAM, der softwaremäßig für die grafische Darstellung der oberen 128 Zeichen (ab Code 80h) aktiviert und wieder deaktiviert werden kann.

Mit einem Schreibzugriff auf die Adresse EBFCh wird der Zeichengenerator im Bereich E800h-EBFFh im Arbeitsspeicher eingeblendet. Damit kann er nun programmiert und wieder ausgelesen werden.

Ein Schreibzugriff auf die Adresse EBFEh aktiviert den programmierbaren Zeichengenerator, d.h., aus ihm werden nun die Pixeldaten für die oberen 128 Zeichen gelesen. Für die Zeichen kleiner 80h wird weiterhin der standardmäßige Zeichengenerator verwendet.

Mit einem Schreibzugriff auf die Adresse EBFFh wird der Grundzustand hergestellt, d.h. der programmierbare Zeichengeneratorn ist nicht im Adressraum eingeblendet und auch nicht für die Visualisierung aktiv.

1.5. 80-Zeichen-Modus mit Zeichensatzumschaltung

In der Zeitschrift Mikroprozessortechnik Heft 6/1990 wurde eine Schaltung vorgestellt, die einen softwaremäßig ein- und ausschaltbaren 80-Zeichen-Modus ermöglicht. Für die Steuerung werden E/A-Adressen verwendet, die allerdings auch vom Floppy-Disk- und vom Drucker-Modul belegt sind. Ulrich Zander hat auf Grundlage dieser Veröffentlichung eine neue Schaltung entwickelt, die zusätzlich eine Zeichensatzumschaltung bietet, die aber auch andere E/A-Adressen verwendet und somit nicht mehr mit anderen Modulen kollidiert.

Für den 80-Zeichen-Modus wird der Video- und ggf. auch der Farbattributspeicher verdoppelt. Der so zusätzlich entstandene Speicher liegt auf den gleichen Adressen wie der originale und ist über E/A-Befehle ein- und ausblendbar.

JKCEMU emuliert optional den 80-Zeichen-Modus, wobei die Steuerung sowohl mit den E/A-Adressen laut der Veröffentlichung als auch nach Ulrich Zander möglich ist. Wird das Floppy-Disk- und/oder das Drucker-Modul emuliert, wirken die kollidierenden E/A-Adressen nicht auf den 80-Zeichen-Modus.

Gesteuert wird der 80-Zeichen-Modus mit Schreibzugriffen auf folgende E/A-Adressen:
E/A-AdresseFunktion
A8h (nicht bei Drucker-Modul)
BCh
80-Zeichen-Modus ausschalten
(Zustand nach RESET)
A9h (nicht bei Drucker-Modul)
BDh
80-Zeichen-Modus einschalten
A0h (nicht bei Floppy-Disk-Modul)
BEh
Originaler Video- und Farbattributspeicher einblenden
(Zustand nach RESET)
A1h (nicht bei Floppy-Disk-Modul)
BFh
Zusätzlicher Video- und Farbattributspeicher einblenden

Wird die 40/80-Zeichen-Umschaltung emuliert, steht auch der umschaltbare Zeichengenerator nach Ulrich Zanders Schaltung zur Verfügung, der neben dem originalen auch einen Zeichensatz mit deutschen Umlauten enthält. Jeder Schreibzugriff auf die E/A-Adresse 0BBh schaltet zwischen diesen beiden Zeichensätzen um. Die Zeichensatzumschaltung funktioniert auch bei einer extern eingebundenen Zeichensatzdatei, vorausgesetzt, diese ist größer als 2 KByte. In dem Fall wird dann zwischen den unteren und den oberen 2 KByte umgeschaltet.

Auf der im JKCEMU enthaltenen Z9001 CP/A Systemdiskette befinden sich auch Treiber für den 80-Zeichen-Modus. Da diese Treiber die Hardware über die E/A-Adressen nach Ulrich Zander ansteuern, beginnen sie mit uz80....
DateinameBedeutung
uz80c.com Einschalten der 80-Zeichen-Darstellung (Farbe)
uz80bw.com Einschalten der 80-Zeichen-Darstellung (schwarz/weiß)
uz80ex.com Ausschalten der 80-Zeichen-Darstellung


1.5.1. Größe und Seitenverhältnis der Bildschirmausgabe

Bei der Umschaltung zwischen dem 40- und 80-Zeichenmodus ändern sich die Größe des Emulatorfensters sowie das Seitenverhältnis. Beim Original bleibt dagegen die Größe des Bildschirmausgabebereichs immer gleich. Dafür werden die Zeichen schmaler dargestellt. Mit der Option Gleiche Fenstergröße in beiden Bildschirmmodi können Sie das Verhalten an das des Originals anpassen. Allerdings ist dann auch das Emulatorfenster immer so groß, dass der 80-Zeichenmodus dargestellt werden kann.

1.6. Floppy-Disk-Modul

Es gibt ein Floppy-Disk-Modul von Robotron und eins vom Zentralinstitut für Kernforschung der DDR in Rossendorf. Beide Varianten unterscheiden sich nur in den E/A-Adressen und in der Auslösung des TC-Impulses. JKCEMU emuliert beide Varianten.

Achtung! Im Emulator ist ein Abbild einer CP/A-Systemdiskette enthalten (CP/M-Variante für Z9001 von Dr. Frank Schwarzenberg). Zum Booten dieses CP/M-Systems müssen zusätzlich auch das 64 KByte RAM-Modul sowie entweder das Boot-Modul oder das Mega-ROM-Modul aktiviert sein.

1.7. Boot-Modul

Das Boot-Modul ist ein spezielles ROM-Modul, welches softwaremäßig mit einem Schreibzugriff auf den Adressbereich F800h-FBFFh abgeschaltet werden kann. Nach einem RESET meldet es sich mit CP/M-System und gestattet durch Eingabe des Kommandos BOOT das Booten von Diskette. Dazu ist natürlich auch die Aktivierung des Floppy-Disk-Moduls notwendig.

Das Boot-Modul kann in der Emulation mit keinem anderen ROM-Modul kombiniert werden.

Achtung! Der ROM des Boot-Moduls liegt im gleichen Adressbereich wie der des BASIC-Interpreters des KC87. Aus diesem Grund ist der KC87-BASIC-ROM standardmäßig deaktiviert. Er kann zwar softwaremäßig aktiviert werden, allerdings gibt es dafür kein Benutzerkommando. Aus diesem Grund ist bei Emulation des Boot-Moduls das BASIC im KC87 praktisch nicht nutzbar.

1.8. Mega-ROM-Modul

Das Mega-ROM-Modul bietet 2,5 MByte Speicher, aufgeteilt auf 256 einzelne 10 KByte Segmente. Das jeweils aktive Segment wird im Adressbereich C000h-E7FFh eingeblendet. Die Umschaltung des aktiven Segments erfolgt über einen Ausgabebefehl auf E/A-Adresse FFh. Mit einem Schreibzugriff auf den Adressbereich F800h-FBFFh wird das Mega-ROM-Modul ab- und mit einem Schreibzugriff auf FC00h-FFFFh angeschaltet.

Der im JKCEMU enthaltene Inhalt für dieses Modul füllt den möglichen Speicher zwar bei weitem nicht aus, enthält jedoch trotzdem eine ganze Menge von Programmen, u.a. auch eine Verwaltungssoftware. Diese startet nach einem RESET automatisch und wird mit Kommandos bedient. Besonders interessant ist das Kommando MENU, welches eine grafische Oberfläche startet, über die man die anderen im Mega-ROM-Modul befindlichen Programme aufrufen kann.

Das Kommando BOOT versucht von Diskette zu booten, d.h., das Mega-ROM-Modul kann auch das BOOT-Modul ersetzen.

Das Mega-ROM-Modul ist in der Emulation mit keinem anderen ROM-Modul kombinierbar.

1.9. 10/16 KByte ROM-Modul

Es wird ein ROM-Modul emuliert, welches wahlweise im Adressbereich 4000h-7FFFh, 8000h-BFFFh (jeweils 16 KByte) oder C000-E7FF (10 KByte) sichtbar ist. Den Inhalt des ROM-Moduls müssen Sie in den Einstellungen durch Angabe einer ROM-Datei festlegen.

Es kann nur ein ROM-Modul emuliert werden, d.h., das ROM-Modul ist mit keinem weiteren kombinierbar, auch nicht mit dem Boot- oder Mega-ROM-Modul.

1.10. 32 KByte ROM-Modul

Das 32 KByte große ROM-Modul liegt im Adressbereich 4000h bis BFFFh. Den Inhalt legen Sie durch Angabe einer ROM-Datei fest. Wenn Sie z.B. den Inhalt des KCPASCAL-Moduls als Datei angeben, wird das KCPASCAL-Modul emuliert.

Das 32 KByte ROM-Modul ist mit keinem anderen ROM- oder RAM-Modul kombinierbar, auch nicht mit dem Boot- oder Mega-ROM-Modul.

1.11. 64 KByte RAM-Modul

Dieses Modul stellt zusätzlichen RAM im Bereich von 4000h bis E7FFh sowie einen Hintergrund-RAM im Bereich 4000h-7FFFh zur Verfügung. Da der Bereich ab E800h dem Farbattribut- und Bildwiederholspeicher sowie dem Betriebssystem-ROM vorbehalten ist und somit nicht durch das RAM-Modul belegt werden kann, sind nur 58 KByte des Moduls nutzbar. Insgesamt stehen somit 74 KByte RAM zur Verfügung.

Ein IO-Befehl auf Port 5 schaltet den Hintergrund-RAM ab 4000h ein. Ein IO-Befehl auf Port 4 deaktiviert diesen wieder. Port 7 dient zum Einblenden des RAMs im Bereich ab C000h. Beim KC87 wird damit auch der BASIC-ROM ausgeblendet. Ein IO-Befehl auf Port 6 macht das wieder rückgängig.

1.12. KCNet-kompatible Netzwerkkarte

Die originale Netzwerkkarte enthält einen Steckplatz für einen EEPROM, mit dem das Boot-Modul ersetzt werden kann. Möchten Sie diesen EEPROM emulieren, dann aktivieren Sie bitte das Boot-Modul und binden ggf. dort eine entsprechende ROM-Image-Datei ein. Lesen Sie bitte auch die Hinweise zur Netzwerkemulation.

1.13. Echtzeituhrmodul

Es wird eine Echtzeituhr RTC-62421 bzw. RTC-72421 an den E/A-Adressen 60h bis 6Fh emuliert. Die Uhr kann nur gelesen, nicht aber gestellt werden.

1.14. Kassetten- und Tonausgabe

Die am emulierten Kassettenrecorderanschluss (Ausgang CTC-Kanal 1) ausgegebenen Tonsignale können Sie im Fenster Audio/Kassette im Reiter Ausgang Kassette hörbar machen bzw. aufnehmen und anschließend in eine Datei speichern. Das gleiche Signal ist im Original auch über einem Lautsprecher hörbar, jedoch zusätzlich über die E/A-Adresse 88h, Bit 7, an- und abschaltbar. Für dieses Lautsprechersignal ist der Reiter Ausgang Sound-Generator/Lautsprecher zuständig.

2. Im ROM enthaltene Software

Emuliertes SystemSoftware
Z9001Z9001-OS 1.1
KC85/1Z9001-OS 1.2
KC87 Z9001-OS 1.3
HC-BASIC 86 (Plotter-BASIC)

Das Boot-Modul enthält die Robotron-Software zum Booten von Diskette. Im Mega-ROM-Modul sind diverse Programme zu finden (Mega-ROM-Verwaltungssoftware, Spiele, Programmiersprachen, Büro- und Hilfsprogramme).

Die ROM-Inhalte können in den Einstellungen durch Angabe externer ROM-Dateien ersetzt werden.

3. Enthaltene Diskettenabbilder

JKCEMU enthält für die KC85/1-, KC87- und Z9001-Emulation folgendes Diskettenabbild:
Für die Nutzung des Diskettenabbildes müssen Sie mindestens folgende Konfiguration einstellen:
Das Boot-ROM-Modul meldet sich beim Start mit der Ausschrift CP/M-System und das Mega-ROM-Modul mit einer eigenen Oberfäche. Egal, welches der beiden Module Sie nutzen, nachdem die CP/A-Systemdiskette eingelegt und der Prompt zu sehen ist, geben Sie zum Starten von CP/A den Befehl BOOT ein.

Die Laufwerkszuordnung ist einfach:
  A: erstes Laufwerk
  B: zweites Laufwerk

Die Diskette selbst ist somit unter dem Laufwerk A: ansprechbar.

Auf der Diskette befinden sich auch Treiber für zwei RAM-Floppies, 40/80-Zeichen-Umschaltung und Systemuhr. Wenn Sie diese Treiber laden möchten, muss natürlich die Emulation der entsprechenden Hardware aktiviert sein.

4. Sonstiges

4.1. BASIC-Programme speichern und laden

JKCEMU bietet eine spezielle Unterstützung für das Speichern und Laden von BASIC-Programmen. Wird ein Z9001 bzw. KC85/1 emuliert, d.h., im ROM ist kein BASIC-Interpreter enthalten, sucht JKCEMU das BASIC-Programm im Adressbereich des RAM-BASIC-Interpreters (ab Adresse 2C01h). Beim KC87 wird dagegen das BASIC-Programm gespeichert, das im Adressbereich des ROM-BASIC-Interpreters liegt (ab Adresse 0401h).

4.2. Einfügen von Text

Das Einfügen von Text aus der Zwichenablage erfolgt gewöhnlich in der Form, dass für jedes einzufügende Zeichen das Drücken der entsprechenden Taste bzw. Tastenkombination simuliert wird. Dieses Prinzip ist recht langsam. Für KC85/1, KC87 und Z9001 gibt es in den Einstellungen die Option Einfügen von Text direkt in den Tastaturpuffer. Bei dieser Option werden die einzufügenden Zeichen direkt in den Tastaturpuffer geschrieben. Das ist wesentlich schneller, da dadurch das Drücken der entsprechenden Tasten nicht simuliert werden muss.

Sollten Sie jedoch ein anderes als das im JKCEMU integrierte Betriebssystem verwenden, wird diese Option möglicherweise nicht mehr funktionieren, da dort die Tastaturabfrage anders gestaltet sein kann. In dem Fall müssen Sie die Option ausschalten.

© 2008-2017 Jens Müller