KC85/3 mit CAOS 3.4
von Frank Dachselt und Henrik Haftmann
Kurz vor dem diesjährigen Clubtreffen habe ich einen KC85/3 von Reinhard Gitter für die neue Betriebssystem-Version CAOS 3.4 umgerüstet. Diesen Umbau möchte ich hier vorstellen, da er mir für KC85/3-Besitzer wirklich lohnenswert erscheint. Es folgen zunächst die wichtigsten Informationen zum Umbau, die auch auf der Homepage von Henrik Haftmann zu finden sind:
https://www-user.tu-chemnitz.de/~heha/basteln/8bit/KC85/KC85-3%20mit%20CAOS%203.4/
Was ist CAOS 3.4 ?
CAOS 3.4 ist ein verbessertes, schnelles Betriebssystem für den KC85/2 und /3. Die Bildschirmroutinen erreichen die Geschwindigkeit des Nachfolgetyps KC85/4.
Weitere Extras erleichtern die Bedienung, die Schrift ist lesefreundlicher, und ein Druckertreiber ist bereits eingebaut.
Es gibt eine “interne“ und eine “externe“ sowie eine V24- und eine Centronics-Variante. Die “externe“ Version wird in einem Modulschacht benutzt und ist erst durch einen JUMP-Befehl verfügbar. Alternativ ist der Einsatz in einem Autostart-Modul (Strukturbyte 01h) im Schacht 8 möglich.
Die “interne“ Version wird in den KC durch Wechseln des EPROMs eingebaut. Von Vorteil ist die sofortige Verfügbarkeit sowie der Umstand, dass ein in CAOS 3.1 vorhandener Reset-Fehler (der per “dummer“ Software einen Tasten-RESET zunichte machen kann) nicht mehr auftritt. Außerdem bleibt der Modulschacht frei.
Es gab auch eine Kassetten-Version, aber diese ist meiner Meinung nach zu umständlich.
Kompatibilität
CAOS 3.4 ist, soweit es möglich war, kompatibel zu CAOS 4.3 für den KC85/4. Das heißt, dass insbesondere Bildschirmsteuerfunktionen, die sich zwischen KC85/3 (CAOS 3.1) und KC85/4 (CAOS 4.x) von vornherein unterschieden, zum KC85/4 hin verändert wurden. Damit wird dem Umstand Rechnung getragen, dass neue Software vornehmlich die KC85/4-Eigenschaften benutzt.
Natürlich konnten die hardware-abhängigen Routinen zur Berechnung von Pixel- und Farbadresse nicht geändert werden; sie wurden jedoch beschleunigt.
Auch ist CAOS 3.4 nicht einsprung-kompatibel mit CAOS 3.1, d.h. dass Spiele, die direkt (ohne Unterprogrammverteiler) ins CAOS springen, nicht laufen – aber solche Spiele laufen auch nicht auf dem Vorgängertyp KC85/2. Deshalb ist stets ein Backup des originalen CAOS 3.1 vorgesehen.
Selbstbrenner
In einen 16-KByte-EPROM 27128 wird “unten“ CAOS 3.1 und “oben“ CAOS 3.4 gebrannt. Bei Verwendung eines besser verfügbaren 32-KByte-EPROM 27256 sind von diesem die “oberen“ 16 KByte zu verwenden. Wer nur 8K hat, brennt nur CAOS 3.4, hat dann aber kein Backup.
Wie wird die “interne“ Version installiert?
Voraussetzung hierfür ist ein KC85/3. Der Umbau eines KC85/2 ist einiges komplizierter, aber dafür kommt dann ein “richtiger“ KC85/3 heraus.
Dazu muss der Betriebssystem-ROM des KCs ausgelötet werden. Es ist der mit der Aufschrift “604“; “600“ bedeutet “HC-BASIC“. Wenn man schon beim Auslöten ist, kann man den BASIC-ROM auch noch herausnehmen und so den Computer für eingebautes EDAS usw. vorbereiten. Im Folgenden wird daher vom Austausch beider ICs ausgegangen.
Natürlich setzt man anstelle der ROMs Fassungen ein. Bevor man das tut, entferne man die bestückungsseitigen Brücken zwischen Pin 26 und 27 (CAOS) und Pin 26, Pin 27 und Pin 28 (BASIC) und ersetzt sie danach durch Drahtbrücken auf der Leiterseite.
Soweit gekommen, setzt man die originalen Chips wieder ein (CAOS links) und prüft auf Funktion von CAOS und BASIC.
Man trenne den (undokumentierten und computertechnisch sinnlosen) Leiterzug zwischen UB855D [PIO A4 – NMI] Pin 10 und Widerstandsnetzwerk “3894“ (Pull-Ups in Prozessornähe UB880D) Pin 6 auf und verbinde PIO-Pin 10 mit CAOS-EPROM Pin 26 und ersetze die Drahtbrücke Pin 26 nach Pin 27 (Betriebsspannung) durch einen Widerstand (ca. 4,7 kOhm, Wert unkritisch). Auch danach muss der KC mit dem originalen CAOS laufen. Zweck dieser Leitung ist der Sprung zum CAOS 3.1 im neuen, doppelt so großen EPROM.
Nun folgt der Austausch durch den neuen EPROM, und CAOS 3.4 startet. Zur Rückkehr zum CAOS 3.1 gebe man “JUMP 0“ ein.
Umbau und erste Eindrücke
Nach dieser Anleitung habe ich den Umbau erfolgreich vorgenommen, wobei allerdings nur der CAOS-EPROM ausgetauscht wurde. Den in Henriks Online-Beschreibung enthaltenen Hinweis bezüglich eines Fehlers in der EPROM-Datei kann ich entkräften. Der Inhalt des von mir verwendeten EPROMs ist identisch mit der Datei CAOS34IV.ROM auf Hendriks Homepage und funktioniert fehlerfrei.
Als einzige Abweichung von dem oben Gesagten habe ich am CAOS-EPROM die Leiterbahnen zwischen den Pins 26, 27 und 28 auf der Bestückungsseite auch vollständig aufgetrennt (so wie für den BASIC-EPROM beschrieben) und durch Drahtbrücken auf der Leiterseite ersetzt. Damit hält man sich die Möglichkeit offen, auch die “unteren“ 16 KByte eines 32K-EPROMs mittels eines Umschaltsignals an Pin 27 zu nutzen. In der jetzigen Variante wird also zunächst eine Drahtbrücke zwischen Pin 28 und Pin 27 gelötet und der genannte Pull-Up-Widerstand zwischen Pin 28 und Pin 26 eingesetzt.
Die ersten Vorzüge des neuen CAOS 3.4 fallen sofort nach dem Einschalten des Rechners auf: Bildschirmlöschen und Menüaufbau gehen “blitzschnell“ vonstatten, wie vom KC85/4 gewohnt. Auch der Zeichensatz ist der vom KC85/4 bekannte. Das CAOS-Menü ist um einige neue Menüworte erweitert worden, wie im Bild 8 zu erkennen ist.
Besonders deutlich werden die Unterschiede, wenn man mittels JUMP 0 die ursprüngliche Betriebssystemversion aktiviert, die wie gewohnt (also vor allem viel langsamer) arbeitet. Die bekannten Störungen auf dem Bildschirm bei Zugriffen auf den Bildwiederholspeicher sind dagegen noch immer vorhanden, da sie ihre Ursache leider in der Hardware des KC85/3 haben.

Bild 8: So präsentiert sich das Menü von CAOS 3.4 nach dem Einschalten des umgebauten Rechners.
CAOS 3.4 erkennt und initialisiert beim Einschalten einige Module automatisch. Ein vorhandenes 16K- oder 64K-RAM-Modul wird jeweils so eingeschaltet, daß der RAM4 belegt ist. Ebenso wird das erste gefundene ROM-Modul (Strukturbyte FBh) auf Adresse C000h aktiviert und die enthaltenen Programme erscheinen im CAOS-Menü. Dazu ist der BASIC-ROM im Normalfall abgeschaltet und wird erst von einem im CAOS-EPROM enthaltenen Menüwort aktiviert.
Nach einem Wechsel mit JUMP 0 von CAOS 3.4 zu CAOS 3.1 ist der BASIC-ROM noch immer abgeschaltet und BASIC erscheint deshalb nicht wie gewohnt im CAOS-Menü. An dieser Stelle muß der BASIC-ROM erst mit SWITCH 2 1 zugeschaltet werden.
Geschichte und Dokumentation
Die oben wiedergegebene Beschreibung von Henrik Haftmanns Homepage ist im Moment die einzige verfügbare Dokumentation zu CAOS 3.4. Um noch ein paar weitere Informationen zu dieser Version zu erhalten, habe ich mit Henrik ein kleines Email-Interview geführt:
FD: Bist Du der Autor dieser neuen Systemversion?
HH: Jein. Ausgangspunkt war ein (schon schnelles) CAOS, welches ich bei jemanden “vorgefunden“ hatte (etwa 1990 (?), er lud es stets von Kassette).
Das wurde angeblich von einem Jenaer Programmierer geschrieben, und dieser hatte es zur “Neuerung“ nach Mühlhausen geschickt. Dort aber ignorierte man es, ohne die KC85/3-Produktion umzustellen (war wohl gerade zu Ende) und baute dieses System in etwa beim KC 85/4 ein. Eine Vergütung gab es nicht. So die Geschichte.
Da muss ich wohl tiefer in der Email-Kiste graben, um näheres zu finden, aber der Name des Programmierers war nicht bekannt.
Ich hatte damals schon CAOS 3.1 disassembliert und kommentiert, dazu (auf unzähligen, noch billigen Bahnfahrten) jenes CAOS auf Papier auseinandergenommen und einige Fehler und viele Lücken (= Platz) entdeckt. Auch hatte ich CAOS 4.2 vollständig zerlegt, gemeinsam mit Ronald Sieber aus Zeulenroda. Er hat den KC 1993 (?) aufgegeben.
Inzwischen hatte Mario Leubner aus Markersdorf CAOS 4.1 zerpflückt und es kam ihm sehr zupass, dass ich CAOS 4.2 hatte. Daraufhin machten wir uns an die Unterschiede (4.1 hatte einen Bug), und heraus kam CAOS 4.22. Wegen seiner Floppy-Wünsche (ich hatte und habe keines) hat er dann das Zepter über CAOS 4.x allein in seine Hand genommen.
Dann habe ich mit Ronald das Beste aus dem unbekannten, schnellen CAOS ein möglichst KC85/4-kompatibles CAOS geschneidert (bessere CTAB!), die Kassettenroutinen verändert (mit dem Ausrufezeichen nach vier vergeblichen Leseversuchen, diese Zahl ist nicht einstellbar) und in den freien Platz den überfälligen Druckertreiber untergebracht.
Es gab eine Centronics-Version für mich und eine V24-Version für Ronald. Untergebracht war es für Ronald in einem “OS-RAM“-Modul; für wildfremde Personen habe ich einige Module entsprechend umgebaut (etwa wie auf den letzten Clubtreffen zu sehen), jedes ein Unikat mit anderem Schaltplan, ich kann sie schwer aufzählen.
Später, als jemand einen KC85/2 vorbeibrachte und kein BASIC-Modul zum “Frisieren“ hatte, kam ich auf die Idee, es gleich ins Grundgerät einzubauen – wie sich herausstellte, die beste Lösung.
Leider ist’s jedesmal ein leicht modifiziertes ROM-Image und mein CHAOS ist perfekt: CEN/V24, Einbau/M006/Kassette, macht sechs Images, die ich nicht mehr finde, weil ich leichtfertig Kassetten ausgeborgt habe.
Kurzum, ein Ideenspender unbekannter Herkunft wurde von mir (oder uns) komplett durchgearbeitet und beinahe von Grund auf neu erstellt.
FD: Sind die neuen Menüfunktionen V24, SEND, USER, SEEK irgendwo dokumentiert?
HH: Hm, hm, – nein, oder ich weiß nicht wo. Vielleicht bei Ronald? Er konnte besser Ordnung halten als ich. Ich versuche mal, das (kommentarlose) Assemblerlisting zu verstehen:
V24 <n>
n=2 ... SH+CLR = graf. Hardcopy
n=1 ... SH+CLR = Protokoll
n=0 ... aus
Der Drucker wurde am ersten (oder gerade eingeschalteten) V24, Kanal A, erwartet. B7E1h enthält den Shift-Clear-Aktions-Kode.
SEND <Byte> ...
Bytes zum Drucker senden (z.B. zur Initialisierung)
Bsp: SEND 7 ... Drucker muss piepsen
USER <Ansprungadresse>
Routinenansprung
Bsp: USER E000 ... Reset (Name ist unglücklich...)
USER <Quelle> <Ziel> <Länge>
LDIR-Befehl
SEEK <Anfang> <Ende + 1> <Byte> ...
Suche nach Bytefolge im Speicher
FD: Wenn man von CAOS 3.4 nach CAOS 3.1 wechselt (mit JUMP 0), dann ist der BASIC-ROM abgeschaltet, ...
HH: Genau. Etwas unglücklich (und mögliche Ursache von Inkompatibilitäten) ist die Tatsache, dass das CAOS 3.1 im CAOS-3.4-ROM bei einem Byte nicht kompatibel zum echten CAOS 3.1 ist. Da hilft eine kleine Modifikation und ein Pull-Down- (statt Pull-Up)-Widerstand am PIO-Pin A5.
EPROM-Dateien
Auf der Beilagendiskette befindet sich das Archiv CAOS34.PMA, das folgende Dateien enthält:
CAOS31.KC | 8 KByte | Originalinhalt des KC85/3-PROMs mit CAOS 3.1 (Aufdruck “604“) |
CAOS34IV.KCC | 8 KByte | CAOS 3.4, interne Version |
CAOS3134.KCC | 16 KByte | Kombinierte Variante aus CAOS 3.1 und CAOS 3.4i für 16K- oder 32K-EPROMs |
Alle Dateien sind mit einem CAOS-Vorblock versehen, der die Ladeadresse 4000H enthält. CAOS3134.KCC habe ich aus dem von Henrik Haftmann programmierten EPROM ausgelesen. Der CAOS31-Teil (“unterer“ 8K-Block) ist vollkommen identisch mit dem Inhalt des Original-PROMs. Das steht irgendwie im Widerspruch zur obigen Aussage von Henrik, aber so scheint es (auch) zu funktionieren...