[ Zu JKCEMU ]

Hinweise zur Emulation des HC900 und KC85/2...5

Die Computer HC900, KC85/2, KC85/3 und KC85/4 wurden im VEB Mikroelektronik Mühlhausen hergestellt. Beim KC85/2 handelt es sich eigentlich nur um einen umbenannten HC900. Da aber im Laufe der Zeit das Betriebssystem weiterentwickelt wurde, enthielten die als KC85/2 produzierten Geräte meistens eine neuere Betriebssystemversion, nämlich CAOS 2.2 anstelle von HC900-CAOS. Aus diesem Grund werden beide Geräte auch als separate Systeme emuliert.

Der KC85/3 ist ein um zusätzlichen ROM erweiterter KC85/2. Neben der neuen Betriebssystemversion CAOS 3.1 ist der im ROM enthaltene BASIC-Interpreter das Hauptunterscheidungsmerkmal.

Eine wirkliche Weiterentwicklung in der Hardware ist der KC85/4. RAM und ROM wurden vergrößert und die Video-Hardware überarbeitet. Letzteres führte in Verbindung mit der wiederum neuen Betriebssystemversion CAOS 4.x zu einer deutlichen Steigerung der Grafik-Performance.

Den KC85/5 hat es dagegen nie offiziell gegeben. Die Leiterplatte des KC85/4 ist bereits für Speicherschaltkreise mit einer größeren Kapazität ausgelegt. Unter einem KC85/5 versteht man deshalb einen KC85/4 mit auf 320 KByte (256 + 64) ausgebautem RAM und 48 KByte ROM sowie einer neuen Betriebssystemversion, die diesen zusätzlichen Speicher verwalten kann.


Bildschirmfoto der KC85/4-Emulation     Komforttastatur D005


1. Emulierte Hardware

Emuliert werden die Grundgeräte sowie optional die Disketten-Erweiterung D004 inkl. der Festplattenerweiterung GIDE und einige Module.

Der emulierte Speicher beträgt bei: Beim KC85/4 kann der normalerweise nur 4 KByte große CAOS-ROM C000h-CFFFh auch mit 8 KByte (C000h-DFFFh) emuliert werden, indem in den Einstellungen eine ROM-Datei eingebunden wird, die größer als 4 Kbyte ist. Damit ist in der KC85/4-Emulation z.B. auch CAOS 4.5 lauffähig.

1.1. Tastatur

KC85/4-Tastatur

Die KC85-Tastatur enthält in der oberen Reihe einige Tasten, für die es üblicherweise keine gleichnamigen Tasten auf der Tastatur des Emulatorrechners gibt. Die Tabelle zeigt das Mapping der Tasten in der oberen Tastaturreihe:
KC85-Taste JKCEMU-Taste Bedeutung bei Shift
Cursor links Cursor links CCR
Cursor rechts Cursor rechts CEL (Taste End)
Cursor nach unten Cursor nach unten SCROL (Taste Page Down)
Cursor nach oben Cursor nach oben PAGE (Taste Page Up)
F1F1F7
F2F2F8
F3F3F9
F4F4FA
F5F5FB
F6F6FC
BRKF7
STOPF8ESC
CLR Back Space
F9

HCOPY
INSEinfgCLICK
DELEntf
HOME HOME bzw. Pos1 CLS

Weitere Steuertasten werden auf KC85-Tastenkombinationen gemappt:

1.1.1. Schnellere Tastatureingaben durch direktes Schreiben in den Tastaturpuffer

Die originale Tastatursteuerung ist aufgrund der speziellen Hardware und der Interrupt-gesteuerten Tastencode-Dekodierung relativ träge. JKCEMU emuliert die originale Tastatursteuerung vollständig, weshalb diese in der Emulation ebenfalls recht träge wirkt. Mit Einschalten der Option Schnellere Tastatureingaben durch direktes Schreiben in den Tastaturpuffer wird die Emulation der Tastatursteuerung umgangen und die eingegebenen Zeichen unter Berücksichtigung des in der CAOS- bzw. MicroDOS-/ML-DOS-Tastaturtabelle eingetragenen Tastencode-Mappings direkt in den Tastaturpuffer geschrieben. Dadurch wirkt die Tastatur deutlich flüssiger.

Achtung! Das Einschalten der Option bedeutet aber auch, dass der Emulator nicht mehr exakt das originale Verhalten nachbildet. Damit kommen möglicherweise manche Programme nicht klar. Wenn Sie also ein Programm benutzen, bei dem es Probleme mit den Tastatureingaben gibt, müssen Sie die Option ausschalten.

1.2. Module

Folgende Module werden optional emuliert:
ModulBemerkung
M003 V.24-Modul mit einem an Kanal A angeschlossenen Drucker
M006 BASIC-Modul für HC900 und KC85/2,
Für KC85/3..5 steht das Modul nicht zur Verfügung.
M008Joystick
M01164 KByte RAM
M012TEXOR
M021 Joystick / Centronics mit angeschlossenem Drucker
M02216 KByte Expander RAM
M0258 KByte User PROM
M026Forth
M027Development
M02816 KByte User PROM
M032256 KByte Segmented RAM
M033TypeStar
M034512 KByte Segmented RAM
M0351 MByte Segmented RAM
M035x44 MByte Segmented RAM
M036128 KByte Segmented RAM
M0408/16 KByte User PROM
M0454x8 KByte Segmented User PROM
M0468x8 KByte Segmented User PROM
M04716x8 KByte Segmented User PROM
M04816x16 KByte Segmented User PROM
M052USB/Netzwerk
M1208 KByte CMOS RAM
M12216 KByte CMOS RAM
M12432 KByte CMOS RAM

Bei den User-PROM-Modulen M025, M028, M040 und M045 bis M048 müssen Sie eine ROM-Datei angeben, die den Inhalt des Moduls enthält.

Die CMOS-RAM-Module unterscheiden sich von den anderen RAM-Modulen in der Form, dass die CMOS-RAM-Module beim emulierten "Einschalten" ihren Inhalt nicht verlieren.

Mit dem Modul M052 wird USB- und Netzwerkunterstützung geboten. Lesen Sie dazu bitte auch die Hinweise zur Netzwerkemulation.

1.3. Drucker

Mit dem V.24-Modul M003 wird auch ein Drucker emuliert. Alle über Kanal A dieses Moduls ausgegebenen Bytes werden an den aktiven Druckauftrag angehängt. Schalten Sie dazu in den Einstellungen die Emulation des Moduls M003 ein. Nun müssen Sie noch die datentechnische Verbindung vom Betriebssystem zum Modul herstellen. Das erledigt ein entsprechender Treiber. Beim KC85/4 und KC85/5 ist ein Treiber für das Modul M003 bereits im Betriebssystem enthalten. Starten Sie diesen mit dem Befehl V24OUT (CAOS 4.2) bzw. LSTDEV (CAOS 4.5). Für die anderen KC85-Systeme müssen Sie selbst einen geeigneten Treiber bereitstellen.

Eine weitere Möglichkeit zum Drucken besteht mit dem Modul M021, bei dem eine Centronics-Schnittstelle mit angeschlossenem Drucker emuliert wird. Im CAOS 4.5 ist auch dafür ein Treiber enthalten: Führen Sie LSTDEV 0 aus. Bei den anderen CAOS-Versionen müssen Sie wieder selbst einen passenden Treiber bereitstellen.

1.4. Tongeneratoren und Kassettenrecorderanschluss

Die am emulierten Kassettenrecorderanschluss ausgegebenen Tonsignale können Sie im Fenster Audio/Kassette im Reiter Ausgang Kassette hörbar machen bzw. aufnehmen und anschließend in einer Datei speichern. Für die Ausgabe der beiden Tongeneratoren ist der Reiter Ausgang Soundgenerator/Lautsprecher zuständig. Dort können Sie auch zwischen Mono und Stereo umschalten. Bei Mono hören Sie das im Original am Video- bzw. TV-Anschluss ausgegebene Mischsignal aus beiden Tongeneratoren, welches auch der Lautstärkesteuerung unterliegt. Bei Stereo hören Sie das im Original an den Anschlüssen 1 und 4 der TAPE-Buchse ausgegebene Signal, d.h. auf jedem Kanal jeweils einen Tongenerator, bei dem jedoch die Lautstärke nicht gesteuert wird.

1.5. LEDs

Die LEDs werden als zweite Anzeigeeinheit emuliert (Menüpunlt ExtraZweite Anzeigeeinheit...).

1.6. Diskettenerweiterung D004

Die Diskettenerweiterung D004 ist ein Aufsatzgerät, welches ein ROM-Modul (ansprechbar über Modulsteckplatz FC) und ein eigenes Prozessorsystem enthält.

Den ROM-Inhalt des ROM-Moduls können Sie in den Einstellungen frei wählen. Zur Auswahl stehen die originale ROM-Version 2.0 von Robotron und die später von Mario Leubner weiterentwickelte Version 3.3, oder Sie binden eine externe ROM-Datei ein. Standardmäßig wird folgende ROM-Version verwendet:
Emuliertes SystemD004-ROM
HC900
KC85/2
KC85/3
KC85/4
Version 2.0
KC85/5 Version 3.3

Einige im JKCEMU integrierte Werkzeuge sind auch mit dem D004-eigenen Prozessorsystem benutzbar. Beim Aufruf des Debuggers, Reassemblers und Speichereditors werden Sie gefragt, ob Sie auf das Hauptprozessorsystem (das im Grundgerät) oder auf das D004-Prozessorsystem zugreifen möchten. Es ist auch möglich, ein Werkzeug zweimal zu öffnen, einmal für das Hauptprozessor- und einmal für das D004-System.

Achtung! Das D004-Prozessorsystem ist vom Hauptprozessorsystem aus steuerbar. So kann es z.B. auch zurückgesetzt (RESET) oder komplett deaktiviert (Dauer-RESET) werden. Wenn Sie den Debugger für das D004-Prozessorsystem geöffnet und dort die Programmausführung angehalten haben (z.B. Haltepunkt), kann es trotzdem vorkommen, dass das Hauptprozessorsystem die D004 zurücksetzt oder gar deaktiviert. Um das zu verhindern, sollten Sie evtl. auch das Hauptprozessorsystem anhalten, z.B. im Hauptfenster mit dem Menüpunkt DateiPause.

2. Im ROM enthaltene Software

System/ModulSoftware
HC900HC900-CAOS
KC85/2HC-CAOS 2.2
KC85/3 HC-CAOS 3.1
HC-BASIC
KC85/4 KC-CAOS 4.2
HC-BASIC
KC85/5 KC-CAOS 4.5
HC-BASIC
EDAS 1.6b
KC-DEBUGGER 1.0
KC-FORTH 3.1
M006 HC901-CAOS
HC-BASIC
M012TEXOR 2.3
M026KC-FORTH 3.1
M027 EDAS 1.4
DISASS
TEMO
M033TYPESTAR 90
M052 Vinculum Terminal 2.2
ULOAD
USAVE
NCFG 1.0
PING 1.1
TFTP 1.1
D004 je nach Einstellung Version 2.0 oder 3.3

3. Enthaltene Diskettenabbilder

JKCEMU enthält für die KC85/3..5-Emulation folgende Diskettenabbilder: Für die Nutzung der Diskettenabbilder muss die Emulation der Floppy-Disk-Erweiterung D004 aktiviert und die entsprechende Diskette in das erste emulierte Diskettenlaufwerk eingelegt werden.

3.1. CAOS-Systemdiskette

Die CAOS-Systemdiskette enthält die notwendigen Programme zur Nutzung von Disketten unter dem Betriebssystem CAOS. Mit

  JUMP FC

wird die auf der Diskette befindliche Software aktiviert. Das CAOS-Menu enthält nun den neuen Eintrag FLOAD, mit dem Systemprogramme von Diskette geladen werden können. Eines dieser Systemprogramme ist BASEX. Dieses stellt die Diskettenanbindung für den BASIC-Interpreter her. Zum Speichern von Systemprogrammen auf Diskette gibt es das Programm FSAVE.

3.2. MicroDOS-Systemdiskette

MicroDOS starten Sie mit

  JUMP FC

Das Laufwerk A: ist eine RAM-Floppy, Laufwerk B: das erste Diskettenlaufwerk. Die Anzeige des Verzeichnisses erfolgt mit dem Kommando D, und nicht wie bei CP/M-kompatiblen Betriebssystemen sonst üblich mit DIR.

4. Sonstiges

4.1. Laden von Dateien

Das CAOS-Betriebssystem blendet standardmäßig den Videospeicher (IRM) in den Adressraum ein und überdeckt somit einen ab Adresse 8000h liegenden RAM (bei HC900 und KC85/2..3 nur dann der Fall, wenn dort ein RAM-Modul eingeblendet ist). Damit man aber auch BASIC-Programme laden kann, die größer als 32 KByte sind, werden KC-BASIC-Dateien bzw. Dateien, die üblicherweise ein KC-BASIC-Programm enthalten, ab Adresse 8000h nicht in den IRM, sondern in den dahinter liegenden RAM geladen. Alle anderen Dateien werden dagegen in den gerade eingeblendeten Speicher geladen, ggf. auch in den IRM. Damit verhält sich die Ladefunktion des Emulators genauso wie das CLOAD-Kommando des BASIC-Interpreters (im Fall einer KC-BASIC-Datei) bzw. wie das LOAD-Kommando im CAOS (im Fall keiner KC-BASIC-Datei).

4.2. BASIC-Programme speichern und laden

JKCEMU bietet eine spezielle Unterstützung für das Speichern und Laden von BASIC-Programmen. Wird ein System mit im ROM enthaltenen BASIC-Interpreter emuliert, d.h. ein HC900 bzw. KC85/2 mit aktiviertem BASIC-Modul M006 oder ein KC85/3...5, dann sucht JKCEMU das BASIC-Programm im Adressbereich des ROM-BASIC-Interpreters (ab Adresse 0401h). Bei einem HC900 bzw. KC85/2 ohne BASIC-Modul wird dagegen das BASIC-Programm gespeichert, das im Adressbereich des RAM-BASIC-Interpreters liegt (ab Adresse 2C01h).

4.3. Einfügen von Text aus der Zwischenablage

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 HC900 und KC85/2..5 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. Dadurch wird aber auch das CAOS-interne Tastencode-Mapping umgangen. Andererseits ist es damit aber auch möglich, Zeichen einzufügen, die mit der originalen Tastatur nicht eingebbar sind.

Sollten aufgrund spezieller Umstände oder durch Verwendung eines anderen Betriebssystems anstelle von CAOS das Einfügen von Zeichen nicht möglich sein, müssen Sie die Option ausschalten.

Wenn Sie die Option Schnellere Tastatureingaben durch direktes Schreiben in den Tastaturpuffer eingeschaltet haben, ist die Option für das Einfügen von Text hinfällig und deshalb nicht mehr auswählbar, da in dem Fall die Tastatureingaben ja sowieso direkt in den Tastaturpuffer geschrieben werden.

4.4. Zeitverhalten der Bildschirmsteuerung

An den Eingängen des Zähler-/Zeitgeberbausteins (CTC) liegen der Bildsynchronimpuls und der doppelte Zeilensynchronimpuls an. Dadurch ist es möglich, Software zu schreiben, die mit der Ausgabe der einzelnen Pixelzeilen auf dem Bildschirm synchron läuft. Manche Programmierer nutzen diese Möglichkeit aus, um spezielle Effekte zu erzeugen (z.B. Farbscrolling). Damit solche Effekte auch im Emulator zu sehen sind, muss die Visualisierung mit dem Zeitregime an den CTC-Eingängen synchron emuliert werden. Und genau das macht die Option Zeitverhalten der Bildschirmsteuerung emulieren.

Die zeitsynchrone Emulation der Bildschirmsteuerung ist sehr rechenintensiv. Außerdem gibt es auch nur wenige Programme, die diese Möglichkeit nutzen. Aus diesem Grund ist die zeitsynchrone Emulation zwischen Bildschirmausgabe und CTC in Form einer Option ein- und ausschaltbar.

Ist die Option eingeschaltet, wird auch die Bildschirmausgabe sychron aktualisiert, d.h. der in den Einstellungen festgelegte Aktualiserungszyklus findet keine Anwendung.

4.5. Vermeintlicher D004-Speicherfehler

In den neueren D004-ROM-Versionen ist ein Speichertest enthalten, so auch in der Version 3.3, die im JKCEMU integriert ist. Diesen Test können Sie mit JUMP FC FF starten. Dabei kann es vorkommen, dass der Speichertest im JKCEMU einen Fehler meldet. Die Ursache liegt dabei nicht etwa in einer fehlerhaften Speicherzelle, sondern in einem Timeout, der bedingt durch die Art und Weise der Emulation auftreten kann.

Im JKCEMU werden die beiden Mikroprozessorsysteme (Grundgerät und D004) in separaten Threads emuliert. Da der Emulator keinen Einfluss darauf hat, wann das Betriebssystem welchen Thread zum Zuge kommen lässt, kann die Emulation der beiden Mikroprozessoren zueinander zeitlich wesentlich weiter auseinander liegen als bei einem realen KC85/D004-Gespann. Die Fehlermeldung erscheint nun deshalb, weil vom Grundgerät aus die Adresse der zu prüfende Speicherzelle an die D004 übergeben wird. In der D004 wird nun die Speicherzelle getestet und das Ergebnis an das Grundgerät zurückgemeldet. Das Grundgerät wartet nur eine bestimmt Zeit auf die Rückmeldung. Ist diese Zeit abgelaufen, wird die Speicherzelle als fehlerhaft angesehen und somit ein Fehler ausgegeben. Wenn nun zufällig der D004-Thread zeitlich etwas behindert wurde, und deshalb in der D004 der Speichertest vielleicht noch gar nicht begonnen hat, wird auch die Rückmeldung zu spält erfolgen und somit zu einer Fehlermeldung führen.

4.6. AutoLoad und AutoInput

Bei den Computern HC900 und KC85/2..5 bewirkt RESET einen Warmstart, bei dem das System nicht vollständig neu initialisiert wird. In solch einem Fall können AutoLoad und AutoInput stören. Aus diesem Grund werden AutoLoad und AutoInput nur bei einem Kaltstart (emuliertes Einschalten) ausgeführt.

© 2009-2017 Jens Müller