#$+K  KC85/2,3,4 mit HC-CAOS
Bedienung
Die Tastatur
Ein Blick hinter die Kulissen
Das CAOS-Menü
Hardware
Module und Aufsätze
Modulsteuerung
Speicher-Aufteilung
Portadressen
Bildspeicher
Software
Speicher-Aufteilung
CAOS-Arbeitszellen
Steuercodes und KTAB
Kassetten-Aufzeichnung
System-Erweiterungen
Systemruf-Adressen (Programmverteiler)
CAOS-Systemdienste

CAOS NT - WOC (Windows-on-CAOS)?

#$+K  Die Tastatur
Die Tastatur hat im Original 64 Tasten. Schaltungstechnisch bedingt können, außer der Shift-Taste, keine zwei Tasten gleichzeitig betätigt werden.

Zur Erweiterung der Kommunikationsmöglichkeiten besitzt die Tastatur 5 verschiedene Belegungsarten:
1. Tastaturebene:	Programmeingabemodus
zu erreichen:	Grundzustand nach Einschalten des Computers
beinhaltet:	Erstbelegung: Großbuchstaben, Ziffern, Sonderzeichen
Zweitbelegung: Kleinbuchstaben, Sonderzeichen
2. Tastaturebene:	Texteingabemodus
zu erreichen:	aus dem Grundzustand über <SHlFT LOCK>
beinhaltet:	Erstbelegung: Kleinbuchstaben, Buchstabe ß, Ziffern, Sonderzeichen
Zweitbelegung: Großbuchstaben, Umlaute, Sonderzeichen
3. Tastaturebene:	Steuermodus
zu erreichen:	aus dem Grundzustand über <SHIFT>+<STOP>
rücksetzen:	automatisch nach jeder Eingabe
beinhaltet:	Steuerfunktionen

Der Übergang von der Erst- in die Zweitbelegung erfolgt auch hier durch Drücken der <SHIFT>-Taste. Die Zweitbelegung ist nur so lange wirksam, wie diese Taste gedrückt bleibt. Achtung: Das Benutzen der <SHlFT LOCK>-Taste bedingt Wechsel der Tastaturebene, ist also nicht identisch mit <SHlFT>! (gilt ab CAOS 3.4)!
Detaillierte Beschreibung der Tastaturebenenen
Buchstaben und Ziffern am KC
Steuertasten am KC
Editiertasten am KC
Funktionstasten
ESC-Taste und dritte Tastaturebene

#$+ K Detaillierte Beschreibung der Tastaturebenenen
In der ersten Tastaturebene, Programmeingabemodus, gelten für die Erstbelegung die auf den Tasten unten stehenden Zeichen, in der Zweitbelegung die auf den Tasten oben abgebildeten Zeichen. Der Begriff "Programmeingabemodus" resultiert aus der Tatsache. daß Anweisungen und Kommandos in vielen Programmiersprachen, z.B. auch in BASIC des KC 85/4, mit Großbuchstaben geschrieben werden. Die Großbuchstaben sind in diesem Modus über die Erstbelegung der Tasten erreichbar.
In der zweiten Tastaturebone, Texteingabemodus, funktionieren die Buchstaben wie bei einer Schreibmaschine, also in der Erstbelegung erscheinen Kleinbuchstaben, Ziffern und Sonderzeichen. In der Erstbelegung ist weiterhin der Buchstabe ß zugänglich. In der Zweitbelegung sind Großbuchstaben und Sonderzeichen zu erreichen.
Außerdem sind in der Zweitbelegung dieses Modus die Umlaute des deutschen Schriftsatzes zugänglich.
Der Texteingabemodus ist sehr vorteilhaft für die Eingabe von Texten, worauf sich auch die Modusbezeichnung begründet. Allerdings ist die Lage der Tasten für die neu zugänglichen Zeichen (Buchstabe "ß" und Umlaute) auf der KC-Tastatur nicht identisch mit ihrer Anordnung auf einer Schreibmaschinentastatur.
In der dritten Tastaturebene (Steuermodus) wird das nachfolgend über Tastatur eingegebene Zeichen als Steuerzeichen erkannt und realisiert. Danach wird die 3. Tastaturebene automatisch verlassen, und der Computer befindet sich wieder in der 1. Tastaturebene.
Alle Tasten besitzen die Autorepeatfunktion. Darunter ist das wiederholte Einlesen des Tastencodes bei löngerem Tastendruck zu verstehen.
Die vier mit roten Pfeilen gekennzeichneten Tasten. die sich ganz rechts auf der Tastatur befinden, sind die Cursortasten. Mit diesen laßt sich der Cursor in der Erstbelegung der Tastatur beliebig nach oben, rechts, links oder unten über den Bildschirm verschieben (außer in BASIC). Auf diese Art und Weise können Sie auch festlegen, an welcher Stelle des Bildschirms Sie eine Eingabe vornehmen.
/*Bild Tastatur*/

#$+ K Buchstaben und Ziffern
Zur Verständigung zwischen dem Anwender und dem Computer müssen spezielle Codes von der Tastatur an den Computer gesendet werden. Drücken Sie z.B. auf die Taste <A>, so erscheint auf dem Bildschirm der Buchstabe A. Das ist möglich, weil der Buchstabe von der Tastatur als Impulsfolge an den Computer gesandt wird. Dort wird aus dem empfangenen Code das entsprechende Zeichen generiert und auf dem Bildschirm dargestellt.
Die Codierung der Zeichen wird im Computer gemaß ASCIl (American Standard Code for Information Interchange) vorgenommen (s.a. Zeichenvorrat).
Den Anforderungen der Computerarbeit entsprechend besitzt die Tastatur im Vergleich zur Schreibmaschine noch zusätzlich einige Sondertasten. Zur Eingabe von Buchstaben, Zahlen und Sonderzeichen dienen die alphanumerischen Eingabetasten. Diese sind wie auf einer Schreibmaschine angeordnet.
Folgende Unterschiede zwischen Programmeingabe- und Texteingabemodus müssen beachtet werden.

Taste	Programmeingabemodus	Texteingabemodus
	Erstbelegung	Zweitbelegung	Erstbelegung	Zweitbelegung
^¬	^ (Exponent)	¬ (Invertierung)	ß	ü
_|	_ (Unterstreichung)	| (Verrohrung)	€ (Hohlcursor)	ö
SPACE	SPACE	Vollcursor	SPACE	ä
0@	0	@	0	©

#$+ K Steuertasten
Eine weitere Funktionsgruppe bilden am Computer die Steuerfunktionen. Diese können Sie in allen 3 Tastaturebenen benutzen. Folgende Tasten gehören zu dieser Gruppe:
<SHlFT>: Umschaltung der Tastaturbelegung
Mit dieser Taste wird auf die Zweitbelegung der Tasten für die Dauer der Betötigung umgeschaltet.
<SHlFT LOCK>: Umschaltung in die 2. Tastaturebene
Beim ersten Betätigen dieser Taste erfolgt ein Umschalten auf die Erstbelegung der 2. Tastaturebene. Mit der Taste <SHlFT> kann von dieser Ebene aus wieder die Zweitbelegung (dieser Ebene) erreicht werden, die in einigen Fällen mit der Zweitbelegung der ersten Tastaturebene übereinstimmt, mit die-
ser aber nicht identisch ist.
<ENTER>: Beenden und Ausführen einer Eingabe
Durch Drücken dieser Taste wird die Eingabe einer Befehls- oder Datenzeile beendet Dabei wird die Eingabe gleichzeitig bearbeitet. z.B. gespeichert oder das Kommando ausgeführt. Der Cursor wird auf den Beginn der nächsten Bildschirmzeile gesetzt.
<BRK> (BREAK, Emulator: Esc): verschiedene modispezifische Steuerfunktionen
Die Taste wird in bestimmten Programmen (z.B. in BASIC für Programmunterbrechung) zur Steuerung benutzt.
<STOP> (Emulator: Shift+Esc, funktioniert aus rätselhaften Gründen nicht unter Windows95): verschiedene modispezifische Steuerfunktionen
Erstbelegung:
Die Taste wird in bestimmten Programmen (z. B. in BASIC für Programmhalt) zur Steuerung benutzt.
Zweitbelegung: Einschalten der 3. Tastaturebene (ESCape)
Mit <SHlFT>+<ST0P> wird die 3. Tastaturebene eingeschaltet. Das nachfolgend eingegebene Zeichen wird als Steuerzeichen interpretiert. Es sind nur Ziffern und Buchstaben als Steuerzeichen zulässig. Im Betriebssystein sind nur die Ziffern von 0 bis 9 und der Buchstabe A mit Steuerfunktionen belegt.

#$+ K Editiertasten
Die Editiertasten unterstützen die Bildschirmarbeit am Computer. Zu ihnen gehören:
<INS> (INSERT): Zeichen einfügen/Tastenklick
Erstbelegung:
Mit der Taste ist es möglich. in schon vorhandene Schriftzeilen weitere Buchstaben, Ziffern oder Zeichen einzufügen. Dabei werden das auf der Cursorposition befindliche und die rechts davon befindlichen Zeichen insgesamt um eine Stelle nach rechts verschoben. Das dadurch entstandene Leerzeichen kann zur Einfügung genutzt werden.
Zweitbelegung:
Ein- und Ausschalten der akustischen Tastenquittierung (Tastenklick)
<DEL> (DELETE): Zeichen löschen/Zeile löschen
Erstbelegung:
Das Zeichen, auf dem sich der Cursor befindet, wird gelöscht und die Zeile verdichtet, d. h. die Zeichen rechts der Cursorposition bis zum Zeilenende werden um eine Stelle nach links verschoben.
Zweitbelegung:
Die gesamte Zeile, in welcher sich der Cursor befindet, wird gelöscht. Der Cursor befindet sich nach dem Löschen am Anfang der Zeile. In Testverarbeitungssystemen kann der Text anschließend verdichtet werden.
<CLR> (CLEAR, Emulator: Rücktaste): Zeichen löschen/Aufruf Sonderprogramm
Erstbelegung:
Das Zeichen, das sich vor dem Cursor befindet, wird gelöscht, und der Cursor bewegt sich eine Position nach links.
Zweitbelegung:
Aufruf eines Sonderprogramms (z. B. HCOPY).
<HOME> (CURSOR HOME, Emulator: Pos1): Cursor nach links oben/Fenster löschen
Erstbelegung:
Der Cursor wird in der oberen. linken Ecke des Bildfensters plaziert.
Zweitbelegung:
Das Bildfenster wird gelöscht (CLEAR SCREEN). Der Cursor erscheint in der linken oberen Ecke des Fensters.
<CURSOR DOWN>: Cursor nach unten/SCROLL-Modus
Erstbelegung: Der Cursor bewegt sich nach unten.
Zweitbelegung:
Der SCROLL-Modus wird eingeschaltet. Bei Bildüberlauf (d.h. der Bildschirm ist bis auf die unterste Zeile im aktuellen Fenster beschrieben) verschiebt sich der gesamte Bildschirminhalt um eine Zeile nach oben. Dabei verschwindet die oberste Zeile, und es entsteht am unteren Bildschirmrand eine freie Zeile, die neu beschrieben werden kann.
Der SCROLL-Modus wird nach dem Einschalten des Computers bzw. nach RESET automatisch eingestellt. In Textverarbeitungssystemen kann diese Taste mit Seite Runter belegt sein.
<CURSOR RlGHT>: Cursor nach rechts/Cursor auf Zeilenende
Erstbelegung: Der Cursor bewegt sich nach rechts.
Zweitbelegung: Der Cursor geht zum Zeilenende. In Textverarbeitungssystemen kann diese Taste mit Wortspringen rechts belegt sein.
<CURSOR LEFT>: Cursor nach links/Cursor auf Zeilenanfang
Erstbelegung: Der Cursor bewegt sich nach links.
Zweitbelegung: Der Cursor wird auf den Zeilenanfang gesetzt. In Textverarbeitungssystemen kann diese Taste mit Wortspringen links belegt sein.
<CURSOR UP>: Cursor nach oben/PAGE-Modus
Erstbelegung: Der Cursor bewegt sich nach oben.
Zweitbelegung:Der PAGE-Modus wird eingeschaltet.
Dieser bewirkt bei Bildüberlauf (aktuelles Fenster) das Rücksetzen des Cursors in die linke, obere Ecke des Bildschirmes, so daß dieser erneut überschrieben werden kann.
CAOS <3.4: Im PAGE-Modus können Fehler bei der Abarbeitung von Kommandos auf der letzten Zeile des Bildschirms auftreten. Im Normalfall deshalb den SCROLL-Modus nutzen.
In Textverarbeitungssystemen kann diese Taste mit Seite Hoch belegt sein.

#$+ K Funktionstasten
Tasten <F1> bis <F6>
Die Funktionen dieser Tasten können durch den Anwender selbst festgelegt werden. Für die Belegung dieser Tasten gibt es das Betriebssystemkommando KEY. Zusammen mit der Zweitbelegung können insgesamt 12 Tastenfunktionen (F1..F9, FA, FB, FC) programmiert werden.

Codes der Funktionstasten
Die Funktionstasten liefern von den Tastaturprogrammen KBD, KBDZ folgende Codes:

Taste	Code: 1. Belegung	2. Belegung
F1	F1h	F7h
F2	F2h	F8h
F3	F3h	F9h
F4	F4h	FAh
F5	F5h	FBh
F6	F6h	FCh

Beim Betätigen einer Funktionstaste wird vom Tastaturprogrnrnm KBD die Zeichenübergabe auf Zeichen aus dem zugehörigen Puffer (ab B900H) umgeschaltet, der Pufferaufbau ist dynamisch. D.h., die Zeichenanzahl zu den einzelnen Funktionstasten Iiegt nicht fest, sondern wird nur von der Puffergröße begrenzt. Der Puffer muß mit 0 beginnen und mit 0 abgeschlossen werden. Die Zeichenketten für die einzelnen F-Tasten werden ebenfalls durch ein 0-Byte getrennt. Es sind als Codes alle Codierungen (außer 0) zugelassen. Normalerweise erfolgt die Belegung der F-Tasten durch die CAOS-Anweisung KEY oder durch die gleichnamige BASIC-Anweisung. Dabei ist es möglich, auf den F-Tasten "JOBS" abzulegen, deren Abarbeitung mittels <BRK>-Taste abgebrochen werden kann.

Speicher für Funktionstastenbelegung
Sollen auf den Funktionstasten Codes abgelegt werden, die nicht auf der Tastatur vorhanden sind, kann dies durch das MODlFY-Kommando im Betriebssystem, durch die VPOKE-Anweisung vom BASIC-lnterpreter aus oder direkt über ein Maschinenprogramm erfolgen.
Beispiel: Es sollen nicht auf der Tastatur befindliche Codes über die F-Tasten erzeugt werden.

Eingabe	Erläuterung
%MODIFY B900 <ENTER>-Taste
B900 00 _ (hier "_" = Dummy)	1. Trennzeichen
B901 1C _	F1: BASIC-LIST-Kommando
B902 00 _	2. Trennzeichen
B903 1D _	F2: BASIC-RUN-Kommando
B904 00 _	3. Trennzeichen
B905 .0 _ <ENTER>	Verlassen von MODIFY
%_

Eine Veränderung bzw. Anzeige der somit eingegebenen Codes ist mit KEY bzw. KEYLlST möglich. Die F-Tastenpuffergröße (B900h..B99Bh) muß bei MODlFY-Eingabe vom Anwender selbst überwacht werden!

Belegen der Funktionstasten mit Steuerzeichen
Eine Belegung der Funktionstasten mit ESC-Funktionen ist über die Funktion KEY nicht möglich. weil diese Funktionen im Eingabemodus sofort ausgeführt werden. Diese Belegung ist aber über das Systemkommando MODIFY zu realisieren.
Beispiel: Belegung der Funktionstasten <F1> und <F2> mit "Bild 0 anzeigen und schreiben" (ESC 1) bzw. "Bild 1 anzeigen und schreiben" (ESC 2). Mit der Eingabe von:
%MODIFY B900 <ENTER>-Taste
B900 00 1B ,1 00 1B ,2 00 . <ENTER>-Taste
werden die Funktionen auf die Funktionstasten gelegt.

#$+ K "ESC-Taste" und Arbeit mit 3. Tastaturebene
Betrifft nur KC85/3 mit CAOS 3.4 sowie KC85/4
Mit dem Aufruf der 3. Tastaturebene durch <SHlFT>+<STOP> wird der Code 1Bh an den Computer gesendet. Diese Codierung ist bei vielen Computern und Druckern als ESCape-Funktion definiert. In der Computersprache wird der Steuercode ESCape-Code = ESC als Umschaltcode definiert. Mit dem ESC-Code 1B hexadezimal = 27 dezimal wird dem Computerangezeigt, daß es sich beim nächsten Tastendruck bzw. von der Tastatur gesendeten Zeichen um ein Steuerzeichen handelt. Als Steuerzeichen sind nur Ziffern von 0 bis 9 und alle Buchstaben von A bis Z zugelassen. Dabei wird die Groß- und Kleinschreibung nicht unterschieden.
Vom Betriebssystem sind z.Z. nur die Ziffern von 0 bis 9 und der Buchstabe A mit Steuerfunktionen belegt. Diese Steuerfunktionen werden durch Maschinenprogramme realisiert, die unter der jeweiligen Ziffer oder dem jeweiligen Buchstaben abgelegt sind.
In der folgenden Tabelle sind die bereits vorhandenen Steuerfunktionen zusammengefaßt.

Taste	Funktion
0	Tabulatorschritt (Schrittweite 8)
1	(nur KC85/4) Anzeigen und Beschreiben von Bild 0
2	(nur KC85/4) Anzeigen und Beschreiben von Bild 1
3	(nur KC85/4) Anzeigen von Bild 0 und Beschreiben von Bild 1
4	(nur KC85/4) Anzeigen von Bild 1 und Beschreiben von Bild 0
5	Modulkontrollanzeige (wie MODUL)
6	Systemcheck (wie SYSTEM)
7	Inverses Schreiben Ein-/Ausschalten
8	Farbe komplementieren (Vordergrund- wird Hintergrundfarbe und umgekehrt)
9	(nur KC85/4) Ein-/Abschalten der Farbebene
A	(nur KC85/4) Ein-/Abschalten der Pixelfarbauflösung

Die aufgeführten Steuerfunktionen lassen sich beliebig umbelegen und erweitern. Für das Erweitern stehen Ihnen die Buchstaben B bis Z zur Verfügung.

Möglichkeiten zur Änderung der Tastenfunktionen

Vom Betriebssystem werden dem Anwender bestimmte Tastenfunktionen angeboten, wie im Kapitel Tastatur beschrieben. Diese können von Anwenderprogrammen verändert werden, z.B. ist die Funktion der Taste <STOP> in BASIC der Programmhalt, und im Betriebssystemkommando DISPLAY ist sie die Umschalttaste in den MODlFY-Modus. Auch reagieren die Cursortasten anders. Es ist nicht möglich, den Cursor über eine BASIC-Zeile hinaus zu bewegen. Vom Betriebssystem aus kann jedoch der Cursor in alle Richtungen geschoben werden.
Im Textverarbeitungssystem TEXOR befindet sich z. B. auf der Funktionstaste <F5> das Zeichen "\" und in der Zweitbelegung "<>". Dadurch sind beide Zeichen über Tastendruck auf dem Bildschirm darstellbar. Im Normalfall sind diese Zeichen nicht im Zeichenvorrat des Computers enthalten.
Sie können im Computer auf einem freien Speicherbereich (z.B. BC00h) neu erstellte Zeichen ablegen und diese über die Tastatur ansprechen. Des weiteren sind das Verlegen und Löschen von Tastenfunktionen möglich.
Mit den 6 Funktionstasten stehen Ihnen 12 (mit Zweitbelegung) weitere Tastenbelegungsmöglichkeiten zur Verfügung, ohne die vorhandenen zu beeinflussen.
Ebenfalls wird durch die Umschalttasten <SHlFT> und <SHlFT LOCK> die Funktion einer Taste geändert, wie z.B. das Schalten in die verschiedenen Tastaturebenen.
Zum Einbinden weiterer Tastenfunktionen wurde die Umschaltfunktion (ESC) für die 3.Tastaturebene gewählt. Mit diesem Schritt stehen insgesamt 35 mögliche Steuerfunktionen (24 durch Selbsterstellung) zur Verfügung.

#$+K  Ein notwendiger Blick hinter die Kulissen
Vom Bit zur Hexadezimalzahl
Logische Funktionen
Steuerbyte
Speicher für Programme und Daten
Farb- und Grafikspeicher

#$+ K Vom Bit zur Hexadezimalzahl
Bevor wir uns weiter mit dem Computer vertraut machen, werden Sie in diesem Abschnitt einige Grundbegriffe der Computertechnik kennenlernen. Die kleinste Informationseinheit, die der Computer kennt. ist ein Bit. Ein Bit kann nur eine von zwei möglichen Informationen tragen. Diese Informationen können Sie auch als Zahlen ansehen, also 1 oder 0. Zwei Bit können demnach 4 Zahlen darstellen, namlich: 00, 01, 10, 10. Überlegen wir uns anhand des folgenden Schemas, wie diese Entwicklung weitergeht:
1 Bit kann 2^1 = 2 Zahlen darstellen,
2 Bit können 2^2 = 4 Zahlen darstellen,
3 Bit können 2^3 = 8 Zahlen darstellen,
4 Bit können 2^4 = 16 Zahlen darstellen,
...
8 Bit können 2^8 = 256 Zahlen darstellen.

Die Darstellung der Zahlen in der Form 2^8 ist die Exponentendarstellung in der Computerschreibweise. Dabei kommen den 4 Bit und 8 Bit als Einheit eine besondere Bedeutung zu.
Um die Arbeit mit dem Computer übersichtlicher zu gestalten. faßt man z.B. jeweils vier Bit (man sagt dazu auch Tetrade) zu einer hexadezimalen Ziffer zusammen.

Bits	hexadezimal	dezimal
0000	0	0
0001	1	1
0010	2	2
0011	3	3
0100	4	4
0101	5	5
0110	6	6
0111	7	7
1000	8	8
1001	9	9
1010	A	10
1011	B	11
1100	C	12
1101	D	13
1110	E	14
1111	F	15

Wie Sie sehen, ergeben sich mit 4 Bit 16 verschiedene Kombinationen.
Da die gebräuchlichen 10 arabischen Ziffern zur Darstellung dieser 4 Bit langen dualen Werte nicht mehr ausreichen, wird das Ziffernrepertoire, wie dargestellt, um die Ziffern A, B, C, D, E und F ergänzt. Diese Ziffern sind die Grundsteine für ein Stellenwertsystem zur Basis 16 (Hexadezimalsystem).
Zwei mal 4 Bit oder zwei hexadezimale Ziffern sind 8 Bit oder 1 Byte. Unser Computerspeicher ist in jeweils 8 Bit, also in Bytes aufgeteilt. Jedes Byte ist durch eine Adresse ansprechbar. Die Adressen können ebenfalls mit hexadezimalen Ziffern ausgedrückt werden. Der Prozessor kann direkt 2^6 Byte = 2^6 mal 2^10 = 64 KByte zu je 8 Bit adressieren (1 KByte = 1024 Byte). Die Adressen laufen dabei von 0000h bis FFFFh.

#$+ K Logische Funktionen
Ein logischer Ausdruck besteht aus Vergleichsaussagen, die durch logische Operatoren miteinander verbunden sein können. Vergleichsoperatoren sind z. B. =, <, >. Ein logischer Ausdruck kann wahr (TRUE) oder falsch <FALSE) sein. Um das Ergebnis eines Vergleiches auszudrücken, werden Zahlenwerte eingesetzt. Das sind für falsch = 0 und für wahr = 1.
Außerdem gibt es die Booleschen Operatoren AND = Konjunktion (logisch UND), OR = Disjunktion (logisch ODER) und NOT = Negation (Verneinung), die z. B. in BASIC enthalten sind.
Eine weitere logische Funktion (nicht-im KC-BASlC enthalten) ist XOR = Antivalenz (log. Exklusiv-ODER, ENTWEDERODER).
Der Überlagerungsmode der Grafikgrundbefehle wird durch die XOR-Verknüpfung vom Pixel-RAM mit der zu zeichnenden Grafik realisiert.
Für die logische Funktion XOR wird das Ergebnis wahr = 1, wenn von 2 Variablen A und B genau eine wahr ist.

A	B	A XOR B
0	0	0
1	0	1
0	1	1
1	1	0

Bei dieser Verknüpfung im Pixel-RAM wird ein Punkt gesetzt, wo vorher keiner und ein Punkt gelöscht, wo vorher einer war. (Diese Zeichenoperation wird erst ab CAOS 3.4 systemmäßig unterstützt.)
Durch mehrmaliges Aufrufen von Grafikbefehlen können so mit denselben Parametern Punkte gesetzt und gelöscht werden.

#$+ K Steuerbyte
Ein Byte kann verschiedene lnformaionen besitzen. Diese sind codiert und können Daten, Befehle oder Steuerinformatianen sein. Daten z. B. enthalten den Code von Buchstaben, Ziffern usw. Bei Steuerinformatianen enthält jedes Bit in einem Byte eine bestimmte Wertigkeit, die ebenfalls, wie bei allen anderen Informationen, 0 oder 1 sein kann. Jedoch erfolgt hier durch die Zuordnung für 1 = einschalten und für 0 = ausschalten eine Steuerung wie bei einem Schalter. Demzufolge kann mit einem Bit eine Schalterfunktion realisiert werden. Auf dem gleichen Prinzip basiert der Aufbau des Steuerbytes kk.
Das Steuerbyte kk ist ein Parameter des SWlTCH-Kommandas bzw. der BASlC-Anweisung SWlTCH. In Verbindung mit der Steckplatzadresse mm werden dem Computer Informationen gegeben, ab es sich um das Ein- oder Ausschalten eines Moduls oder eines RAM-Segments handelt. Das Schalten kann über Menüwort oder vom Programm aus erfolgen. Dabei sind die jeweiligen Bedingungen der Module und Speichersegmente zu beachten.

#$+ K Speicher für Programme und Daten
Im den KCs sind 2 Speicherarten (ROM und RAM) eingebaut. Aus dem ROM, dem Festwertspeicher, können wir nur Informationen auslesen, aber nichts hineinschreiben. Er enthält die Grundpragramme, die nach dem Einschalten des Computers sofort selbsttätig starten (z. B. Programme zur Tastaturabfrage, zum Aussenden des Kontrollbildes u.ä.). Dieser Speicher hat folgende Größen:

KC85/2	4 KByte
KC85/3	16 KByte
KC85/3 mit internem CAOS 3.4	24 KByte (8K Original-CAOS als Backup)
KC85/4	20 KByte
KC85/4, maximal aufgerüstet	48 KByte

Im RAM, dem Arbeitsspeicher, befinden sich alle Programme, die Sie mit dem Kassettengerät oder der Tastatur eingeben. Aus diesem RAM können Sie sowohl lesen als auch Informationen hineinschreiben. Beim Ausschalten des Computers gehen jedoch sämtliche Daten dieses Speicherbereiches verloren.
Der RAM hat folgende Größen (zusätzlicher Bildwiederholspeicher in Klammern):

KC85/2 und /3	16(16) KByte
KC85/4	64(64) KByte
KC85/4, maximal aufgerüstet	256(64) KByte

Der Gesamtspeicher steht jedoch nicht uneingeschränkt zur Verfügung, da auch RAM-Speicherplätze für die Grundprogramme benötigt werden.
Die Speicher sind in Segmente eingeteilt, die z.B. über das Betriebssystemkommando SWITCH mit Steuerbytes ein- oder ausgeschaltet werden können.
/*Übersicht*/

#$+ K Farb- und Grafikspeicher
Der Bildwiederholspeicher (lRM, Image Reception Memory) des KC 85/4 besitzt einen Speicherumfang von 64 KByte. Zur Darstellung auf dem Bildschirm enthält er 2 Bildspeicher (Bild 0, Bild 1). Zu jedem Bild gehören ein Farb-, Pixel- und ASClI-Speicher.
Für die Farbinformatian von 8 nebeneinander liegenden Bildpunkten ist im Farbspeicher 1 Byte reserviert. Es enthölt die Vorder- und Hintergrundfarbwerte.
Sie können für die Farbgestaltung zwischen 16 Vardergrundfarben und 8 Hintergrundfarben wöhlen. Im Betriebssystemmenü ist es bereits möglich, die Farbauswahl über COLOR zu treffen.
Mit der ESC-Steuerfunktion und dem Buchstaben "A" kann eine punktweise Farbauflösung eingestellt werden (hochauflösende Farbgrafik). Dabei sind jedoch nur 4 feste Farben zur Bildschirmgestaltung möglich. Das Blinken kann ebenfalls nicht verwendet werden.

#$+K  Das CAOS-Menü
Varianten des Systemstarts
Bedienung des CAOS-Menüs
# 
Anweisungen	Bedeutung
%BASIC	Kaltstart des BASlC-lnterpreters (nicht am KC85/2)
%REBASIC	Warmstart des BASlC-lnterpreters (nicht am KC85/2)
%SWITCH	Ein- und Ausschalten von Modulen
%JUMP	Sprung in ein anderes Betriebssystem
%MENU	Aufruf des aktuellen Menüs
%SAVE	Ausgabe von Programmen auf Magnetband
%VERIFY	Kontrollesen von auf Magnetband gespeicherten Programmen
%LOAD	Laden von auf Magnetband gespeicherten Programmen
%COLOR	Festlegung der Vorder- und Hintergrundfarbe
%DISPLAY	Anzeige von Speicherbereichen (nicht am KC85/2)
%MODIFY	Speicheranzeige und Veränderung
%WINDOW	Einstellen eines anderen Fensters (nicht am KC85/2)
%KEYLIST	Auflisten der programmierten Funktionstasten (nicht am KC85/2, nicht unter CAOS 3.4 und CAOS 4.22)
%KEY	Funktionstastenbelegung programmieren (nicht am KC85/2)
%MODUL	Zustand und Struktur der gesteckten Module anzeigen (nur CAOS 3.4 und KC85/4)
%SYSTEM	Anzeige des aktuellen Speicherzustandes (nur KC85/4)
%V24OUT	Druckertreiberinitialisierung (nur KC85/4)
%V24DUP	Duplexroutine initialisieren zur Datenübertragung (nur KC85/4)

#$+ K System-Start
Erst durch die Schaffung des Betriebssystems CAOS (Cassette Aided Operating System) ist ein Arbeiten mit dem Kleincomputer möglich. Es enthält Programme zur Steuerung der angeschlossenen Geräte.
CAOS kann auf verschiedene Weise gestartet werden:
- Drücken der Taste <POWER> (im Emulator Alt+P)
Beim Einschalten des Computers wird der gesamte Speicher gelöscht und das Betriebssystem initialisiert. KC85/3: ein 16K-RAM-Modul auf Steckplatz 8 wird zugeschaltet. Ein Modul mit Strukturbyte 01 auf Steckplatz 8 wird angesprungen, falls vorhanden
- Betätigung der Taste <RESET> (im Emulator Alt+R)
Damit werden nur die Arbeitszellen des Betriebssystems neu initialisiert.
- Aufruf über Betriebssystem UP-Nr. 12H, Name LOOP
Der augenblickliche Zustand der Systemarbeitszellen bleibt erhalten.

#$+ K Verwendung des Menüs
Die Arbeit mit dem Betriebssystem erfolgt über die Tastatur mit der auf dem Fernsehgerät dargestellten Menütabelle. Ein Menüwort repräsentiert jeweils ein Programm. Die im Grundmenü dargestellten Programme sind im Betriebssystem enthalten. Als Anwender können Sie das Menü durch einige Unterprogramme (Maschinenprogramme) erweitern. Jedem Unterprogramm können nach seinem Menüwort bis zu 10 Parameter in hexadezimaler Darstellung übergeben werden. Vom Menüwort und untereinander werden die Parameter durch Leerzeichen getrennt. Bei der Eingabe eines Menüwortes am KC 85/4 und mit CAOS 3.4 ist es nicht unbedingt erforderlich, den vollständigen Namen auszuschreiben. Es müssen nur so viel Zeichen eingegeben werden, wie zur eindeutigen Identifizierung des Wortes notwendig sind (auch bei Parameterübergabe). Ansonsten wird das im Menü zuerststehende Wort erkannt. Das muß besonders beim Einstellen eigener Programme mit Menüworten beachtet werden
Beispiel:
%L <ENTER>	= LOAD <ENTER>
%KEYL <ENTER>	= KEYLlST <ENTER>
%K 1 <ENTER>	= KEY 1 <ENTER>

CAOS-Menükommandos

Das auszuführende Kommando kann mit dem Cursor angewählt oder nochmals unter dem Menü eingegeben werden. Sind auch Parameter einzugeben, sind diese von dem Kommando sowie auch untereinander durch ein Leerzeichen zu trennen. Die Parameter sind stets als hexadezimale Zahlen anzugeben.
Mit Betatigung der <ENTER>-Taste wird das Kommando ausgeführt. Bei einer falschen Eingobe, z.B. einer Eingabe, die nicht im Betriebssystem enthalten ist, erscheint die Fehleranzeige "ERROR".

#$+ K Das Kommando MENU
%MENU
Die Ausführung des Kommandos MENU bewirkt das Löschen des Bildschirms und das Auflisten des aktuellen Menüs. Die Ausgabe kann mit der <BRK>-Taste abgebrochen werden.

#$+ K Das Kommando KEY
%KEY n
Das CAOS-Kommando KEY dient zur Belegung der Funktonstasten <F1> bis <F6> (durch Zweitbelegung <F7> bis <FC>). Mit dem Parameter n wird die Funktianstastennummer (1    9, A, B. C) angegeben.
Unter CAOS 3.4 und CAOS 4.22 erfolgt ohne Parameter die Auflistung der belegten Tasten. %KEY 0 löscht die Funktionstastenbelegung, nötig z.B. nach ungewollten Überschreibungen des Funktionstastenpuffers.
Beispiel: Die Taste <F2> soll mit dem Befehl RUN belegt werden, so ist einzugeben:

Eingabe	Bildschirmanzeige (_ = Cursor)
1.) KEY	%KEY_
2.) Leerzeichen	%KEY _
3.) 2	%KEY 2_
4.) <ENTER>	_
5.) RUN	RUN_
6.) <STOP>	%_

Als Tastenbelegung können alle Zeichen, auch die Steuerzeichen (mit Ausnahme der <STOP>- und der <CLR>-Taste) programmiert werden. Die Summe aller Tastenbelegungen darf 143 Zeichen nicht übersteigen.
Im Eingabemodus kann nur mit der <CLR>-Taste korrigiert werden. Der Eingabemodus wird durch Betötigen der <STOP>-Taste beendet.

#$+ K Das Kommando KEYLIST
%KEYLlST
KEYLlST erfordert keinen Parameter. Bei der Ausführung dieses Kommandos werden alle Funktionstastenbelegungen aufgelistet.

#$+ K Das Kommando LOAD
%LOAD (nnnn)
Möchten Sie auf Ihrem K!eincomputer ein Maschinenprogramm nutzen, das auf Magnetbandkassette gespeichert ist, so ist dieses vorher mit Hilfe des Recorders in den Computer zu laden.
Dazu wird das Kommando LOAD genutzt.
Entweder setzen Sie den Cursor auf die Bildschirmzeile, an deren Anfang das Kommando LOAD steht, oder Sie geben das Kommando am Anfang einer neuen Zeile unterhalb des Menüs noch einmal ein. Es ist darauf zu achten, daß sich in der Zeile, in der jetzt der Cursor steht, kein anderes Zeichen, außer dem Prornptzeichen "%", gefolgt von dem Kommando LOAD, befindet.
Spulen Sie nun das Magnetband an den Anfang des Programms, das Sie nutzen möchten. Der in der vom Hersteller mitgelieferten Pragrammbeschreibung angegebene Zählerstand des Programmanfangs ist ein Richtwert. Den exakten Zählerstdnd müssen Sie für Ihr Gerät selbst ermitteln, da die Recorderzählwerke von Gerät zu Gerät differieren. Den Pragrammanfang erkennen Sie am Programmvorton. Dieser ist ein deutlicher Pfeifton.
Schalten Sie nun Ihren Recorder zur Wiedergabe ein und drücken Sie während des Pfeiftones die <ENTER>-Taste (rechts unten auf der Tastatur). Mit Betätigen dieser Taste wird das Kommando, auf das der Cursor weist (in unserem Fall LOAD), ausgeführt. Der Computer entschlüsselt und speichert die am Tonbandanschluß (TAPE) ankommenden Signale als Computerdaten.
Hinweis:
BASIC-Programme werden nicht mit dem CAOS-Kommando LOAD, sondern mit den entsprechenden BASIC-Anweisungen (siehe BASIC-Handbuch) geladen! Bei selbststartenden BASIC-Programmen für den KC 85/3 kann es beim Start Probleme geben. In diesem Fall kann über Zuschalten des BASlC-lnter-
preters (SWlTCH 2 1) vor dem Laden versucht werden, das Programm zu starten.
Kommen nach dem Vorton die Daten, so könnte auf dem Bildschirm z.B. folgendes Bild entstehen:
%LOAD
TEST 0200 0400
02>
Anhand dieses Bildes können Sie den Ladevorgang auf dem Bildschirm verfolgen. Nachdem das LOAD-Kommando zur Ausführung gebracht wurde, erscheint als erstes der eingelesene Programm name (im Beispiel TEST). Ihm folgen die Anfangs- und die Endadresse des Programms (im Beispiel 200 bzw. 400) als hexadezimale Zahlen. Nun werden die Blocknummern der eingelesenen Blöcke des Programms angezeigt. Ein Block besteht aus 128 Byte.
Der erste Block enthält den Programmnamen und wird als einziger nicht angezeigt. Der letzte Block hat, unabhöngig von der Lönge des Programms, stets die Blocknummer FF. Der Winkel hinter jeder Blocknummer zeigt als Kontrollzeichen die fehlerfreie Übernahme des eingelesenen Blockes an. Taucht nach den Blocknummern der Cursor wieder auf dem Bildschirm auf, so ist der Ladevorgang beendet, oder das Programm startet.
Befindet sich ein Datenfehler im eingelesenen Block, erscheint als Kontrollzeichen ein "?" anstelle des Winkels hinter der entsprechenden Blocknummer. Hinter dem "?" erscheint der Cursor und wartet auf eine Eingabe. Mit beliebiger Tastenbetötigung (außer <BRK> und <CURSOR DOWN>) kann der fehlerhafte Block erneut gelesen werden. Dazu spulen Sie das Magnetband um mindestens einen Block zurück und starten den Lesevorgang neu. Falls ein anderer Block als der erwartete gelesen wird, so zeigt der Computer die Blocknummer mit einem nachfolgenden * an. Dies erleichtert das Finden des fehlerhaften Blocks. Sobald der fehlerhafte Block richtig (fehlerfrei) eingelesen wurde, erscheint hinter der Blocknummer wieder der Winkel.
Der Ladevorgang ist nun normal fortzusetzen. Kann der Block nach einem oder mehreren Versuchen nicht gelesen werden, ist es möglich, nach der Fehleranzeige und Drücken der <CURSOR DOWN>-Taste den Block fehlerhaft in den Speicher zu übernehmen. Mit dem Kommando MODIFY können Sie die Fehler nach dem Einlesen beseitigen, wenn Ihnen der Inhalt des Programms bekannt ist. Der Ladevorgang kann jederzeit mit der <BRK>-Taste abgebrochen werden.
Hinweis: Unter CAOS 3.4 sind keine Tastenbetätigungen erforderlich. Bei Fehler ist sofort zurückzuspulen und ein erneuter Versuch zu starten. Beim 4. fehlerhaften Versuch wird der Block fehlerhaft übernommen, der Block mit "!" markiert und auf einer neuen Ausgabe-Zeile fortgesetzt.
Soll ein Programm nicht auf die Anfangsadresse, mit der es gespeichert wurde, geladen werden, so besteht die Möglichkeit, die Anfangsadresse durch den Parameter nnnn zu verandern. Dabei ergibt sich nnnn als Differenz aus der Anfangsadresse, auf die das Programm geladen werden soll, und der gespeicherten Anfangsadresse.
Ist ein Programm z.B. mit der Anfangsadresse 0200h gespeichert worden und soll auf die Anfangsadresse 0900h geladen werden, so ist der Parameter nnnn mit 700 anzugeben:
%LOAD 700
Vergessen Sie das Leerzeichen zwischen Anweisung und Parameter nicht! Befehlsausführung erfolgt wie üblich erst durch die Betatigung der <ENTER>-Taste.
Die Darstellung der Blocknummern untereinander (siehe folgende Tabelle) ist nur hier in der Beschreibung so gewahlt, auf dem Bildschirm sind die fehlerhaften Blöcke (Ausschrift Blocknummer Stern) auf einer Stelle (ab CAOS 3.4).
Folgende Tabelle hilft, Ladefehler zu erkennen und zu beseitigen:

Fehler	Ursache	Beseitigung	
Es erscheinen kein Programmname, aber unregelmößige Blocknummern
01*
02*
03*
04*
05*
06*	1.	Pegel vom Recorder zu gering

2.	Brücke im Diodenkabel oder im Recorder	1.	vgl. technische Daten des Recorders
2.	anderen Recorder verwenden
3.	Recorder überprüfen lassen
4.	siehe Tabelle Einschaltfehler
5.	Verbindungskabel zum Recorder überprüfen	
Es erscheinen kein Programmname, aber Blocknummern wie im Beispiel
02*
03*
04*	1.	erster Block nicht gefunden	1.	zurückspulen
2.	bei wiederholtem Fehler ist die Aufzeichnung fehlerhaft	
Bei LOAD erscheint der Programmname mit drei Fragezeichen, z.B.
SSSSPIEL ???	1.	Es wurde versucht, ein Quellprogramm (z.B. BASIC) als Maschinenprogramm zu laden	1.	Suchen des richtigen Programmes	
Hinter einer Blocknummer erscheint ein Fragezeichen, z.B.
07?	1.	Datenfehler im mit Fragezeichen gekennzeichneten Block (Knitterstellen, Drop out)

2.	Zufälliger Fehler (Schalten eines elektrischen Gerötes; Gleichlaufschwankungen oder schlechter Band-Kopf-Kontakt durch mechanische Erschütterungen)	1.	Zurückspulen des Bandes und Betätigen einer beliebigen Taste (außer <BRK> und <CURSOR DOWN>) und Wiederholung des Einlesens desfehlerhaften Blockes
2.	Bei wiederholtem Fehler liegt ein Fehler in der Aufzeichnung vor. In diesem Fall kann der Block ggf. fehlerhaft übernommen (durch Eingabe von <CURSOR DOWN>) und im MODlFY- Modus korrigiert werden.
	
Es lassen sich nur Programme einlesen, welche auf demselben Recorder aufgezeichnet wurden.	1.	Falsche Tonkopfeinstellung am Recorder	1.	Recorder überprüfen lassen	

#$+ K Das Kommando SAVE
%SAVE aaaa eeee (ssss) (v)
Mit diesem Kommando kann man Programme und Daten aus dem Computer auf den externen Magnetbondspeicher retten (abspeichern). Dabei sind die Anfangsadresse aaaa und die Endadresse eeee (beinhaltet die nachfolgende Adresse der vom Programm oder der Datei belegten Speicherzelle) des zu rettenden Speicherbereiches als Parameter anzugeben. Soll das abzuspeichernde Programm selbststartend sein, so muß eine Startadresse ssss als dritter Parameter angegeben werden.
Wird ein vierter Pammeter v (Wert beliebig) angegeben, so wird die Startadresse beim Offset-Einlesen nicht umgerechnet. Die Parameter aaaa und eeee sind in jedem Fall, die Parameter ssss und v nur bei Bedarf anzugeben.
Soll z.B. ein Programm namens "Testcode.KCC" mit der Startadresse 2100h, welches im Arbeitsspeicher den Adreßbereich 2000h bis (exklusive) 2300h belegt, auf Magnetband gespeichert werden, so sind folgende Eingaben direkt hintereinander auszuführen:

Eingabe	Bildschirmanzeige (_ = Cursor)
1. SAVE	%SAVE_
2. Leerzeichen	%SAVE _
3. 2000	%SAVE 2000_
4. Leerzeichen	%SAVE 2000 _
5. 2300	%SAVE 2000 2300_
6. Leerzeichen	%SAVE 2000 2300 _
7. 2100	%SAVE 2000 2300 2100_
8. <ENTER>	NAME :_
9. TestcodeKCC	NAME :TestcodeKCC_
10. <ENTER>	01 usw. (Blocknummern)

Das so auf dem Bildschirm entstehende, syntaktisch fehlerfreie Kommando (Punkt 7) wird durch die Betötigung der <ENTER>-Taste ausgeführt. Dabei erscheint vorerst nur das Wort "NAME:" auf dem Bildschirm.
Sie können nun dem auszugebenden Programm einen Namen mit maximal 11 Zeichen geben. Dieser wird sowohl beim Kontrollesen (VERIFY) als auch beim Laden (LOAD) wieder zur Anzeige gebracht. Die Ausgabe des Speicherinhaltes wird auf dem Bildschirm durch Anzeige der Blocknummern (Blöcke zu 128 Byte) protokolliert. Die Blocknummern sind Hexadezimalzahlen. Es ist ratsam, den Programmanfang auf Magnetband vor der Aufnahme durch den Zöhlerstand oder akustisch zu kennzeichnen.
Sind diese Vorbereitungen alle getroffen, so werden zur Ausgabe des Programmes der Recorder auf Aufnahme geschaltet und die <ENTER>-Taste betötigt.
Hinweis: Der Dateiname darf aus 11 beliebigen Zeichen bestehen. Aus Gründen des Dateiaustausches ist es ratsam, den Dateinamen aus 8 Zeichen "Name" und 3 Zeichen "Suffix" zu bilden, die, falls kürzer, mit Leerzeichen aufzufüllen sind. Der in anderen Betriebssystemen (DOS, Unix, ...) übliche Punkt ist NICHT einzugeben! Die Beispieldatei kann so unter DOS als "TESTCODE.KCC" und unter Unix (o.a. Windows95) als "Testcode.KCC" erscheinen.

#$+ K Das Kommando VERIFY
%VERlFY
Die Magnetbandaufzeichnungen (Maschinenprogramme, Daten, BASlC-Programme usw.) können mit dem Kommando VERlFY überprüft werden. Dazu wird das Magnetband an den Programmanfang zurückgespult, danach der Recorder auf Wiedergabe eingeschaltet und die Anweisung VERlFY durch Betätigung der <ENTER>-Taste ausgeführt.
Auf der Anzeige erscheinen der Programmname, die Blocknummern der gelesenen Blöcke und die dazugehörigen Kontrollzeichen (>, ?, * siehe LOAD ).
Bei fehlerlosem Einlesen der Aufzeichnung erscheint nach jeder Blocknummer das Zeichen ">". Die eventuell auftretenden anderen Kontrollzeichen und die entsprechende Fehlerursache sind in der Tabelle zum Kommando LOAD zusammengefaßt.

#$+ K Das Kommando WINDOW
Das Kommando WlNDOW kann in zwei Formaten benutzt werden:

1. Format: Definieren eines FensterS
%WINDOW za zn sa sn nr
Durch WlNDOW ist es möglich, vom CAOS-Menü aus ein anderes Fenster einzustellen. Mit za wird die 1 Zeile, mit zn die Zeilenanzahl, mit sa die 1. Spalte und mit sn die Spaltenanzahl des Fensters nr angegeben. Dabei definiert nr die Fensternummer (0 bis 9). Die Summe von Zeilenanfang und -anzahl darf 20h und dieSumrne von Spaltenanfang und -anzahl darf 28h nicht überschreiten.

2. Format: Wiederaufnahme eines definierten Fensters
%WINDOW nr
Mit der Eingabe von WINDOW und der Fensternummer wird das Fenster nr aufgerufen. Ist auch nr nicht vorhanden, wird immer Fenster 0 festgelegt.
Im Beispiel wird das Fenster 3 rnit folgenden Parametern eingestellt:
%WlNDOW 5 4 3 8 3
Anhand dieser Eingabe wird ab der Zeile 5, vier Zeilen lang, ab der Spalte 3, mit der Spaltenanzahl 8, das Fenster 3 definiert.

#$+ K Das Kommando COLOR
%COLOR fv (fh)
Das Kommando COLOR legt durch den ersten Parameter fv die Vordergrundfarbe und durch den zweiten Parameter fh die Hintergrundfarbe fest. Dabei sind die 16 Vordergrund- und 8 Hintergrundfarben wie folgt codiert:

Farbe	Vordergrund	Hintergrund
schwarz	0	0
blau	1	1
rot	2	2
purpur	3	3
grün	4	4
türkis	5	5
gelb	6	6
weiß	7	7
schwarz	8
violett	9
orange	A
purpurrot	B
grünblau	C
blaugrün	D
gelbgrün	E
weiß	F

Die Hintergrundfarben erscheinen eine Nuance dunkler als die Vordergrundfarben.
Die mit dem Kommando COLOR festgelegte Farbkombination bezieht sich immer auf das jeweils eingestellte Fenster und Bild.
Es besteht die Möglichkeit, Vordergrundfarben auf dem Bildschirm blinkend darzustellen. Dazu wird vor dem entsprechenden Farbcode die Ziffer "1" geschrieben. Möchten Sie z.B. die Farbkombination gelb blinkende Vordergrundfarbe auf rotem Hintergrund realisieren, so geben Sie direkt hintereinander ein:

Eingabe	Bildschirmanzeige (_ = Cursor)
1. COLOR	%COLOR_
2. Leerzeichen	%COLOR _
3. 16	%COLOR 16_
4. Leerzeichen	%COLOR 16 _
5. 2	%COLOR 16 2_
6. <ENTER>	%_ (blinkend gelb auf rot)

Durch Drücken der <ENTER>-Taste wird der Farbcode gespeichert, und alle folgenden Bildschirmausgaben erscheinen in der gewünschten Farbkombination auf dem Bildschirm. Im obigen Beispiel finden Sie den Vordergrundparameter 16 und den Hintergrundparameter 2. Der Hintergrundparameter 2 (für rot) ist direkt der Farbtabelle zu entnehmen. Der Vordergrundparameter setzt sich zusammen aus der Farbfestlegung 6 (für gelb) und der links angefügten "Blink-1". Soll der Vordergrund nicht blinken, so entfällt diese einfach:
%COLOR 6 2
Durch CLEAR SCREEN (Betätigung der Umschalttaste <SHlFT> und der <HOME>-Taste, Emulator: Shift+Pos1) wird der Bildschirm im eingestellten Fenster gelöscht, und es erscheinen die Vorder- und Hintergrundfarbe der zuletzt getroffenen FarbfestIegung.

1.4.7. Verwalten und Schalten der Module
Eine wesentliche Grundeigenschaft des KC 85J4 ist die hohe Ausbauföhigkeit
und Flexibilitöt des Systems. So können Sie theoretisch einen Speicherbereich
bis 4 MByte verwalten. Dabei werden mit Hilfe des Kommandos SWlTCH die
einzelnen Speicherbereiche und Module zugeschaltet oder vom Prnzessor ge-
trennt.
Das Kommando JUMP erlaubt das Wegschalten des festinstallierten und die
Nutzung eines anderen Betriebssystems.
Das Kommando MODUL gibt dem Anwender einen i::lberblick des momenta-
nen Zustandes und der Struktur aller im Computersystem befindlichen Mo-`
dule.

#$+ K Das Kommando SWITCH
%SWlTCH mm (kk)
Das Kommando SWlTCH ermöglicht das Ein- und Ausschalten von Speicherbereichen und Modulen, wie z. B. ADU1 oder DAU1, sowie das Setzen und Löschen des Schreibschutzes (bei RAM-Modulen). Dabei wird durch den Parameter mm der Modulsteckplatz wie folgt festgelegt:

Steckplatz	mm
RAM auf Adresse 0	00
IRM	01
ROM-Blöcke	02
RAM-Blöcke auf Adresse 8000h	03 (nur KC85/4)
RAM auf Adresse 4000h	04 (nur KC85/4)
Modulsteckplatz 8 (rechts im Grundgerät)	08 (Subeinheiten mit 09, 0A, 0B)
Modulsteckplatz C (links im Grundgerät)	0C (Subeinheiten mit 0D, 0E, 0F)

Die Zuordnung des Parameters mm zu den Steckplätzen im Erweiterungsaufsatz ist der dem Aufsatz beiliegenden Bedienungsanleitung zu entnehmen.
Wird mit SWlTCH nur der Parameter mm angegeben, erfolgt die Bildschirmausschrift über den momentanen Zustand des sich im Steckplatz befindlichen Moduls. Das zuletzt eingegebene Steuerbyte bleibt erhalten.

Eingabe	Bildschirmanzeige (_ = Cursor)
1. SWITCH	%SWITCH_
2. Leerzeichen	%SWITCH _
3. 8	%SWITCH 8_
4. <ENTER>	08 FB C1 (Ausschrift je nach gestecktem Modul)

08 - Steckplatzadresse
FB - Strukturbyte:	gibt den Modultyp an (z. B. FB = Softwaremodul)
Jedes Modul besitzt zur Kennung ein bestimmtes Strukturbyte, das vom Hersteller festgelegt wurde
C1 - Steuerbyte kk:	gibt den Speicherbereich C000h und den Schaltzustand des Moduls an (eingeschaltet, schreibgeschützt).

Die Ausschrift auf dem Bildschirm gibt an, daß sich im Steckplatz 8 ein Softwaremodul, z. B. TEXOR (Kennung FB), befindet. Dabei belegt dieser den Adreßbereich ab C000h und ist schreibgeschützt (1) geschaltet.
Mit Hilfe des Parameters kk können z.B. folgende Zustande für Module realisiert werden:

Speicherzustand	kk
ausgeschaltet	00
eingeschaltet und schreibgeschützt (für RAM)	01
eingeschaltet und nicht schreibgeschützt	03
Speicherbereich 4000h eingeschaltet	43
Speicherbereich C000h eingeschaltet	C1
Speicherbereich C000h ausgeschaltet	C0

Die erste Zahl des Steuerbytes kk gibt also den Adreßbereich und die zweite Ziffer den Schaltzustand des Moduls an.
Für Module wird die Festlegung des Parameters kk in der jeweiligen Bedienungsanleitung beschrieben.

Segmentierte Module:
Bei den RAM-Blöcken auf Adresse 8000h muß mit kk auch das gewünschte Segment übergeben werden.
Die Segmentnummer muß dual verschlüsselt werden und von Bit 2 bis Bit 6 eingetragen sein. Daraus ergibt sich auch die Möglichkeit, die zwei RAM-Segmente (RAM8 Block 0 und RAM8 Block 1) zu schalten.

kk-Bits	Bedeutung
Bit 0	Modul ein(=1)/aus(=0)
Bit 1	Schreibschutz(=0)/Schreibfreigabe(=1)
Bit 2..6	Segment-Nummer 0..1Fh für max. 32 Segmente
Bit 7	nicht belegt (RAM8)
RAM4(=0)/RAM8(=1)-Selektor (segmented-RAM-Module)
höchstwertiges Segment-Bit (1MB-segmented-RAM-Modul)

Soll z.B. am KC85/4 das RAM8-Segment 1 schreibgeschützt sein, muß für kk folgendes Bitmuster eingegeben werden: 00000101b = 05h
So wird mit der Eingabe:
SWITCH 03 05
das RAM8-Segment 1 schreibgeschützt eingeschaltet.
Im Grundgerät sind auf der Adresse 8000h zwei RAM-Blöcke (0 und 1) sowie auf Adresse C000h ein ROM-Segment (0) (BASIC) vorhanden.
Ein voll aufgerüsteter KC85/4 weist 14 RAM8-Blöcke auf (die Nummern 15 und 16 sind RAM8-Aliases für die Blöcke ab 0 und 4000h, der Speicher wird also zweimal eingeblendet). An ROM hat er 4 Blöcke zu je 8 KByte. Mit CAOS 4.22 sind 2 (virtuelle) RAM4-Blöcke vorhanden, dessen Inhalt mit dem "versteckten" IRM-Speicher (18 KByte, davon so 16 KByte genutzt) ausgetauscht wird.

#$+ K Das Kommando JUMP
%JUMP mm
Mit diesem Kommando ist ein Sprung in ein Betriebssystem, das sich auf einem Modul im Modulschacht mm befindet, möglich. Hierbei wird der ROM des Grundgerätes abgeschaltet. Die Startadresse eines solchen Betriebssystems ist F012h.

#$+ K Das Kommando MODUL
%MODUL
Mit dem Kommando MODUL kann sich der Anwender schnell einen Überblick über den Schaltzustand und die vorhandenen Modultypen, die im Computersystem gesteckt sind, verschaffen. Genau wie bei dem Kommando SWITCH werden für alle Module der Steckplatz, das Strukturbyte sowie das Steuerbyte ausgegeben:

%MODUL
mm ss kk

mm = Steckplatz
ss = Strukturbyte
kk = Steuerbyte

#$+ K Das Kommando SYSTEM
%SYSTEM
Durch das Kommando SYSTEM (nur KC85/4) erhält der Anwender eine Anzeige des momentanen Speicherzustandes des Grundgerötes. Dabei wird folgendes angezeigt:

CAOS E on/off	Betriebssystem auf Adresse E000h
ROMC n on/off	ROM-Segment n auf Adresse C000h, n = 0 ist BASIC
RAM 0 on/off	RAM auf Adresse 0
RAM 4 on/off	RAM auf Adresse 4000h
RAM8 n on/off	RAM-Segment n auf Adresse 8000h, n = RAM8-Segmentnummer
Bild 0/1	Bild 0 oder 1 eingeschaltet

#$+ K Das Kommando MODIFY
%MODIFY aaaa
Dieses Kommando ermöglicht ein Überprüfen und Verändern des Speicherinhaltes ab der als Parameter einzugebenden Speicheradresse aaaa. Es werden die Adresse und der Speicherinhalt angezeigt. Durch einen Druck auf die <ENTER>-Taste erscheint die jeweils folgende Speicheradresse mit deren Inhalt. Sowohl die Adresse als auch der Inhalt können mit der Tastatur verändert werden.
Durch Betötigung der <ENTER>Taste wird der angezeigte Wert gespeichert.
Es ist auch möglich, mehrere Daten in einer Zeile einzugeben. Normalerweise wird der Speicherinhalt als hexadezimaler Maschinencode geschrieben. Darüber hinaus können aber auch direkt ASCll-Zeichen eingegeben werden. Dazu muß vor das entsprechende Zeichen jeweils ein "," (Komma) gesetzt werden. Sollen ganze Zeichenketten eingegeben werden, sind diese in "'" (einfache Hochkommata, ab CAOS 3.4) einzuschließen.

Beispiel:
%MODIFY 200
200 7F 7F 'TEST' 01 usw.

Um zur vorhergehenden Adresse zurückzugelangen, ist ein ":" (Doppelpunkt) einzugeben. Soll der MODlFY-Modus ab einer bestimmten Adresse fortgesetzt werden, sind hinter der angezeigten Adresse ein "/" und die neue Adresse hexadezimal einzugeben. Treten Eingabefehler auf, so wird der MODlFY-Modus automatisch mit der vorhergehenden Adresse fortgesetzt.
Die MODlFY-Betriebsart wird durch die Eingabe eines Punktes und Drücken der <ENTER>-Taste beendet.

In der folgenden Tabelle finden Sie die Aktionsmöglichkeiten der MODlFY-
Betriebsart noch einmal zusammenfassend dargestellt.

Zeichen	Funktion
:	aktuelle Speicheradresse um eins verringern
/aaaa	Adresse der gewünschten Speicherzelle
.	Verlassen des MODlFY-Modus
,Z	Code des Zeichens Z (5Ah) eingeben
'Zeichenkette'	Die Zeichencodes der Zeichenkette werden übernommen.
<ENTER>-Taste	Übernahme der aktuellen Zeile
<CURSOR DOWN>	Übergang zur nächsten Adresse ohne Übernahme einer aktuellen Änderung

#$+ K Das Kommando DISPLAY
%DISPLAY aaaa (ss) (n)
Das Kommando DISPLAY bewirkt die Ausgabe des Speicherinhaltes ab Adresse aaaa. Dabei werden in n Bytes bzw., beim Fehlen von n, 8 Bytes in einer Zeile als hexadezimale Codes und als ASCll-Zeichen nebeneinander aufgelistet. Es gelangt jeweils die durch den Parameter ss festgelegte Anzahl von Zeilen zur Anzeige. Wird der Parameter ss nicht eingegeben, so werden jeweils vier Zeilen angezeigt. Die Anzeige kann durch Betätigen einer beliebigen Taste, mit Ausnahme der Tasten <BRK> und <STOP>, fortgesetzt werden.
Durch die <BRK>-Taste kann das Auflisten beendet werden.
Die <STOP>-Taste bewirkt den Ubergang in den MODIFY-Modus, wobei hier Speicherinhalte nur im Hexadezimalteil geändert werden können und der ASCII-Teil nicht aktualisiert wird. Ansonsten gelten alle Zeichenvereinbarungen wie bei MODIFY beschrieben.

#$+ K Das Kommando V24OUT
V24OUT (mm k n) (p) (d)
Das Menüwort V24OUT ohne Parameter stellt nach jedem Kalt- oder Warmstart des Systems beim 1. gefundenen M003 V24-Modul den Kanal 1 auf Druckerausgabe ein. Die Einstellung erfolgt auf: 9600 Baud, 1 Stoppbit. 8 Bit pro Zeichen und keine Paritatsprüfung (Drucker K 6313 und andere).
Dabei bedeuten:
mm	Modulschacht des M003 (8, C, ...)
k	Kanal des M003 (1 oder 2)
n	USER-Ausgangskanal (2 oder 3)
p	Reaktion auf SHlFT CLEAR
p = 0 keine Reaktion
p = 1 Ein- bzw. Ausschalten der Protokollfunktion
p = 2 HARDCOPY für die Matrixdrucker K6311/12/13/14/27/28 bzw. SCREENCOPY für die Schreibmaschinen S3004, S6005/09/10, S6120/30
d	Druckertyp /*Tabelle*/

Die Standardwerte können durch Angabe der Parameter verändert werden.
Zum Beispiel: %V24OUT C 1 2 1 0
Im Schacht C steckt das Modul M003 V24, Kanal 1 des M003, USER-Ausgabekanal 2 und Protokollfunktion sind eingestellt. Hier wurde der Drucker K 6313 mit dem letzten Parameter festgelegt. Werden nur 4 Parameter angegeben, erfolgt die Festlegung K 6313 oder des zuletzt eingestellten Druckgerätes.

#$+ K Das Kommando V24DUP
%V24DUP (mm k n)
Das Betriebssystem enthält neben der Software für die Datenausgabe über V24 (z. B. zu einem Drucker (V24OUT)) auch die Software für den Datenaustausch zwischen Computer und Computer. Der Datenaustausch erfolgt in beiden Richtungen (Senden und Empfangen V24DUP). Beim Start des Systems wird der Kanal 2 eines vorhandenen M003-ModuIs auf Duplexbetrieb eingestellt. Mit dem Menüwort und der Eingabe der Parameter erfolgt die Initialisierung. Fehlen die Parameter, wird der 1. gefundene M003 mit den zuletzt eingestellten Werten initialisiert. Beim Systemstart werden die Werte
für k = 2 und für n = 3 eingesetzt.
Die Parameter bedeuten:
mm	Modulschacht (8, C, ...)
k	Kanal des M003 (1 oder 2)
n	USER-Aus/Eingabekanal (2 oder 3)

Beispiel: V24DUP 8 2 2
Das Modul steckt im Schacht 8; Kanal 2 und USER-Kanal 2 werden benutzt.
Nun kann von BASIC (z. B. über INPUT # 2(#3)) eine Eingabe der Daten von einem Peripheriegerät erfolgen.

#$+K  CAOS-Arbeitszellen
Arbeitszellen im IRM
Arbeitszellen im IX-Bereich
Interrupttabelle
Stack und Verlagern des Stacks

#$+ K Arbeitszellen im IRM
Adr.	Adr.	Default	Name	Länge	Inhalt
VPOKE	Hex			(Byte)
14208	B780	 	ARGC	1	UP-Nr. bei Programmverteiler II, IV
14209	B781	 	ARGN	1	Anzahl der Argumente bei Kommandoeingebe
14210	B782	 	ARG1	2	1. Argument
14212	B784	 	ARG2	2	2. Argument
14214	B786	 	ARG3	2	3. Argument
14216	B788	 	ARG49	12	4.-9. Argument
14228	B794	 	ARG10	2	10. Argument
14230	B796	 	NUMNX	1	Anzahl der Zeichen erfaßten Hex-ZahI
14231	B797	 	NUMVX	2	Wert der erfaßten Hex-ZahI
14233	B799	E322	HCADR	2	Adresse für Kanalumschaltung der System-Ein/Ausgabe
Aufruf über Tastatur; Code 0Fh, DE enthält Cursorposition
14235	B79B	00	WINNR	1	Nr. des aktuellen Bildschirmfensters
14236	B79C	0000	WINON	2	Fensteranfang L: Spalte (0..39 bzw. 0..27h)
H: Zeile (0..31 bzw. 0..1Fh)
14238	B79E	2028	WINLG	2	Fenstergröße L: Spalten (1..40 bzw. 1..28h)
H: Zeilen (1..32 bzw. 1..20h je nach WINON
14240	B7A0	0000	CURSO	2	Relative Cursor-Position im Fenster
L - Spalte, H - Zeile
14242	B7A2	00	STBT	1	Steuerbyte für Bildschirmprogramm
Bit 0: Schreiben Zeichen AUS
Bit 1: Schreiben Farbe AUS
Bit 2: Schreiben Zeichen invers
Bit 3: Steuercodes als Zeichen ausgeben
Bit 4: ESC-Steuercode ausführen
14243	B7A3	39	COLOR	1	Farbbyte für Zeichenausgabe
Bit 2..0: Hintergrundfarbe GRB (G ist höchstwertig)
Bit 5..3: Vordergrundfarbe GRB (G ist höchstwertig)
Bit 6: Farbverschiebung im Farbkreis um 30°
Bit 7: Blinken der Vordergrundfarbe
14244	B7A4	E260	WEND	2	Anfangsadresse des Reaktionsprogramms auf Erreichen des Fensterendes (Page-/Scrollmode u.ä.), DE=Cursor
14246	B7A6	EE00	CCTL0	2	Adresse der Zeichenbildtabelle für Codes 20h..5Fh
14248	B7A8	FE00	CCTL1	2	Adresse der Zeichenbildtabelle für Codes 0..1Fh und 60h..7Fh
14250	B7AA	EE00	CCTL2	2	Adresse der Zeichenbildtabelle für Codes A0h..DFh
14252	B7AC	FE00	CCTL3	2	Adresse der Zeichenbildtabelle für Codes 80h..9Fh und E0h..FFh
14254	B7AE	01C4	SYSP	2	INIT - Adresse des System-Stackpointers
14256	B7B0	FBA8	SUTAB	2	Adresse der Unterprogrammtabelle
14258	B7B2	FCC8	CTAB	2	Tabelle der Reaktionsroutinen für Steuercodes 0..1Fh
14260	B7B4	D3-88-	BJUMP	5	Opcodes für Sprung in neues Betriebssystem (JUMP)
14265	B7B9	FBA0	OUTAB	2	Adresse für Zeiger auf UP-Nr. für Ausgabe-Kanal (normal: Bildschirm)
14267	B7BB	FBA4	lNTAB	2	Adresse für Zeiger auf UP-Nr. für Eingabe-Kanal (normal: Tastatur)
14269	B7BD	C3-	UOUT1	3	Sprung in USER-Ausgabekanal 2 (BASIC: PRINT#2)
14272	B7E0	C3-	UIN1	3	Sprung in USER-Eingabekanal 2 (BASIC: INPUT#2)
14275	B7E3	C3-	UOUT2	3	Sprung in USER-Ausgabekanal 3 (BASIC: PRINT#3)
14278	B7E6	C3-	UIN2	3	Sprung in USER-Eingabekanal 3 (BASIC: INPUT#3)
14281	B7C9	DC82	MBRET	2	Rücksprung für BASIC
14283	B7CB	B200	ZOTAB	2	Zeiger auf ASCII-Speicher
14285	B7CD	 	ZOTAB	2	Zwischenspeicher für SAVE
14287	B7CF	 	ZWEND	2	Zwischenspeicher für SAVE
14289	B7D1	 	FTAST	2	Zeiger auf aktuelles Funktionstasten-Zeichen
14291	B7D3	 	HOR	2	X-Wert für Punktsetzroutine
14293	B7D5	 	VERT	1	Y-Wert für Punktsetzroutine
14294	B7D6	 	FARB	1	Vordergrundfarbe/Blinken/Rasteroperation
Bit 0: XOR-Funktion,
Bit 1: Löschen,
Bit 2: nicht verwendet,
Bit 3..7: Vordergrundfarbe wie bei COLOR
14295	B7D7	01	MlXIT	1	HöherwertigerTeil von IX und der lnterrupttabelle (Register I)
14296	B7D8	 	?	5	?
14301	B7DD	EDDB	L3TAB	2	Adresse der ESC-Steuerfunktionstabelle
14303	B7DF	0B	L3SIZ	1	Anzahl der ESC-Steuerfunktionen
14304	B7E0	05	COUNT	1	Zeiteinheiten bis 1. Autorepeat (Tastatureingabe)
14305	B7E1	00	HCPZ	1	Steuerbyte für Druckerausgabe
14306	B7E2	A801	INTV1	2	Anfangsadresse der Initialisierungstabelle für die Funktion V24OUT (Drucker)
14308	B7E4	08	lNTV1L	1	Länge der Initialisierungstabelle für die Funktion V24OUT (Drucker)
14309	B7E5	A809	lNTV2	2	Anfangsadresse der Initialisierungstabelle für die Funktion V24DUP (Duplex)
14311	B7E7	09	lNTV2L	1	Länge der Initialisierungstabelle für die Funktion V24DUP (Duplex)
14312	B7E8	06	HCPZ2	1	Steuerbyte für Duplexroutine

#$+ K Arbeitszellen im IX-Bereich
Das lX-Register wird beim RESET oder Einschalten auf 01F0h geIaden, kann aber, falls dieser Speicherbereich benötigt wird, umgeladen werden, wobei der niederwertige Teil erhalten bleiben muß.

POKE	MC	Bedeutung
Kassetten-Ein-/Ausgabe
496	IX+0	Arbeitszelle zur Flankendetektion
497	IX+1	Merkzelle für Ausgabekanal 84H (nur KC85/4)
498	IX+2	Blocknummer bei Kassetten-Ein-/Ausgabe
499	IX+3	?
500	IX+4	Merkzelle für Ausgabekanal 86H (nur KC85/4)
501	IX+5	Pufferadresse für Kassetten-Ein/Ausgabe, Standard B700h, LOW
502	IX+6	Pufferadresse für Kassetten-Ein/Ausgabe HIGH
503	IX+7	Kassettenlade-Steuerbits:
Bit 0: READ (sonst VERIFY)
Bit 1: Unterdrückung Autostart
Bit 4..2: Anzahl Ladeargumente (ARGN)
Bit 5: Merkbit "U"+80h
Bit 6: Reset-Schutz von LOAD, CLOAD (nur CAOS 3.1)
Bit 7: Reset-Schutz allgemein (nur CAOS 3.1)
Tastatur-Steuerung
504	IX+8	Tasteneingabe-Steuerbits
Bit 0: Tastencode steht zur Verfügung, Übernahme mit RES 0,(IX+8)
Bit 1: Sound läuft
Bit 2: frei
Bit 3: alter Code (nur KC85/3)
Bit 4: Schnelles Autorepeat (nur KC85/3)
Bit 5: Tastenklick
Bit 6: F-Tasten-Expansion
Bit 7: SHIFT LOCK-Status
505	IX+9	Prologbyte für CAOS-Menü (Standard 7Fh)
506	IX+10	Repeat-Aufwärtszähler (Tastatur-ISR)
507	IX+11	Puffer für Register A bei Programmverteiler VI
508	IX+12	Scan-Code von Tastatur
509	IX+13	Tastaturcode (ASCII)
510	IX+14	Tastaturcodetabelle KTAB, LOW
511	IX+15	Tastaturcodetabelle KTAB, HIGH

#$+ K Interrupttabelle
Das I-Register der CPU wird beim RESET/Einschalten auf 01h gesetzt. kann aber umgeladen werden.

POKE	MC	Bedeutung
Nicht standardmäßige, aber sinnvolle Zuweisung
468	1D4	Interrupt PIO Kanal A - Joystick (90..93h), STB-Eingang = Bildsynchronimpuls
470	1D6	Interrupt User-PIO oder DMA
472	1D8	Interrupt V24-CTC Kanal 0 (Eingang = 1/4 KC-Taktfrequenz oder Quarz nach Umbau)
474	1DA	Interrupt V24-CTC Kanal 1 (Eingang = 1/4 KC-Taktfrequenz oder Quarz nach Umbau)
476	1DC	Interrupt V24-CTC Kanal 2 (Eingang = 1/4 KC-Taktfrequenz oder Quarz nach Umbau)
478	1DE	Interrupt V24-CTC Kanal 3 (Uhr, Eingang = Kaskade mit Kanal 2 nach Umbau)
480	1E0	Interrupt V24-SIO Kanal A (Drucker-Spooler)
Standardmäßige Zuweisung
482	1E2	Interrupt V24-SIO Kanal B (Zeichen-Eingabe)
484	1E4	Interrupt PIO Kanal A (Kassetteneingabe Biphase-Flankendetektor)
486	1E6	Interrupt PIO Kanal B (Tastatur Monophase-Flankendetektor)
488	1E8	Interrupt CTC Kanal 0 (Tonausgabe rechts, Eingang = Zeilensynchonimpuls, ISR frei)
490	1EA	Interrupt CTC Kanal 1 (Tonausgabe links, Eingang = Zeilensynchronimpuls, ISR = Kassettenausgabe)
492	1EC	Interrupt CTC Kanal 2 (Tondauer, Blinken, Zeitgeber LOAD, Eingang = Bildsynchronimpuls, ISR = Kassettenausgabe)
494	1EE	Interrupt CTC Kanal 3 (Tastatur, flackerfreie Maus, Eingang = Bildsynchronimpuls, ISR = Tastatur (Code nullsetzen))

#$+ K Stack

Der.Stackpointer (SP) wird beim RESET/Einschalten auf 01C4h gesetzt, kann aber auf jeden anderen freien Speicher gelegt werden. Der Speicherplatz SYSP (B7AEh) dient als Merkzelle für den Initialisierungswert des SP.

Verlagern von Arbeitszellen des Betriebssystems

Im folgenden soll an einem Beispiel erläutert werden, wie der Arbeitsspeicherbereich im RAM-BIock (STACK. lnterrupttabellen, IX-Bereich) auf das Ende des RAM-Bereiches verlagert werden kann.

DI	; Sperren Interrupt
LD SP.7FC4h	; 32 Byte freihalten für USER-Interrupttabelle
LD (0B7AEh),SP	; Merken Stackanfang
LD A,7Fh	; Höherwertiger Teil IX, 1-Register
LD E,31h	; UP-Nr. 31 SlXD
CALL 0F009h	; Verteiler III
EI	; Freigabe Interrupt

Eine Verlagerung in dem IRM ist auch möglich. Den Bereich von C000h bis DFFFh sollte der Anwender nicht benutzen. da dieser Bereich vom CAOS-ROM im Bedarfsfall belegt wird. Beim Nichtbeachten dieses Hinweises kann es zu undefinierten Zuständen des Systems kommen.

#$+K  Magnetbandaufzeichnung
Zur Aufzeichnung dienen drei verschiedene Frequenzen, wobei jeweils eine komplette Schwingung eine logische Einheit umfaßt:
Nullbit: f = 2400 Hz
Einsbit: f = 1200 Hz
Trennzeichen: f = 600 Hz
Byteaufbau:
8 Datenbits (je 0- oder 1-Bit), mit Bit 0 beginnend
1 Trennzeichen
Blockaufbau:
Vorton: aus Schwingungen mit 1200 Hz (Einsbit) bestehend
erster Block: langer Vorton, etwa 8000 Schwingungen
folgende Blöcke: je nach Verarbeitungszeit (für MC-Programm 160 Schwingungen)
1 Trennzeichen
1 Byte Block-Nr.
128 Datenbytes
1 Byte Datensumme
Dateiaufbau (MC-Programme, Speicherabzüge):
1 Vorblock (Nummer 01)
n Datenblöcke, aufsteigend hexadezimal numeriert, letzte Blocknummer FF
Vorblock-Aufbau (Adressen bezüglich Kassetten-Puffer):
Adr.	Adr.	Länge	Inhalt
VPOKE	Hex	(Byte)
14080	B700	8	Dateiname, mit Leerzeichen aufgefüllt, ungültig bei Diskettendateien
14088	B708	3	Dateityp, mit Leerzeichen aufgefüllt, ungültig bei Diskettendateien
14091	B70B	1	Schutzbyte: Dateityp=COM und Byte=1 ergibt RESET-Schutz
14092	B70C	4	reserviert, normal 0
14096	B710	1	Anzahl von Lade-Argumenten. Für MC-Programme und Speicherabzüge muß ein Wert zwischen 02h und 0Ah enthalten sein
14097	B711	2	Speicher-Anfangsadresse
14099	B713	2	Speicher-Endadresse+1
14101	B715	2	Startadresse
14103	B717	14	Weitere Lade-Argumente
14117	B725	91	frei (CAOS NT: Relokationstabelle)

Dateiaufbau (BASIC-Programme u.ä.):
1 Namens- und Datenblock (Nummer 01)
n Datenblöcke, aufsteigend hexadezimal numeriert, letzte Blocknummer FF.
Auch wenn alle Daten in den Block 01 passen, wird ein (undefinierter) FF-Block generiert.
Namens- und Datenblock-Aufbau (Adressen bezüglich Kassetten-Puffer):
Adr.	Adr.	Länge	Inhalt
VPOKE	Hex	(Byte)
14080	B700	8	Dateiname, mit Leerzeichen aufgefüllt, verschwindet bei Diskettendateien!
14088	B708	3	Dateityp, mit Leerzeichen aufgefüllt, verschwindet bei Diskettendateien!
14091	B70B	2+	Beginn der Nutzdaten; bei BASIC steht hier die Länge der Datei

Dateitypen
Es gelten folgende Festlegungen:
COM	Maschinenprogramm
DUM	Speicherabzüge
TXT	Textdateien
ASM	Quelltextdateien für Assemblerprogramme
(F)	FORTH-Quellprogramm

#$+K  Steuercodes und KTAB
Steuercodes
In der Speicherzelle "CTAB" ist ein Zeiger auf einer Programmverteilertabelle abgelegt, die die Zuordnung der Steuercodes zu den einzelnen Bildschirmprogrammfunktionen organisiert. In ihr sind die Anfangsadressen der zugeordneten Unterprogramme enthalten. Sollen Steuerprogramme geändert werden, müssen diese Tabelle in den RAM kopiert und die entsprechenden neuen Anfangsadressen in der CTAB-Speicherzelle verändert werden. Die Stelle in der Tabelle errechnet sich aus dem ASCll-Code mal zwei.

Code	Code	Name	Name	Bild	Funktion
Dez.	Hex.	ASCII	KC
0	00	NUL	NUL	_	Dummy-Zeichen (Leerfunktion)
1	01	SOH	CLR	.	Zeichen links löschen, Zeichen rechts rücken nach links
2	02	STX	CLLN	.	Zeile löschen, die Bildzeile wird mit 00 gefüllt und der Cursor auf Zeilenanfang gesetzt
3	03	ETX	BRK	(B)	Abbruch-Code (auch für F-Taste), keine CRT-Funktion
4	04	EOT	-	//	nicht benutzt
5	05	ENQ	TAB	||	nicht benutzt (EDAS: Tabulator)
6	06	ACK	-	=	nicht benutzt (EDAS: Suchen)
7	07	BEL	BEEP	o	Tonsignal
8	08	BS	CUL	<-	Cursor nach links bis max. HOME
9	09	HT	CUR	->	Cursor nach rechts, ggf. Rollen
10	0A	LF	CUD	v	Cursor nach unten, ggf. Rollen
11	0B	VT	CUU	^	Cursor nach oben bis max. HOME
12	0C	FF	CLS	::	Bildschirm löschen, Cursor an HOME-Position
13	0D	CR	ENTER	<	Kommando-Eingabe, Cursor an Zeilenanfang
14	0E	SO	-	::	nicht benutzt (CAOS NT: Shift+Enter)
15	0F	SI	HCOPY	€	Aufruf Sonderprogramm (Bildschirmabzug), Adresse B799
16	10	DLE	HOME	.	Cursor in linke, obere Ecke setzen
17	11	DC1	PAGE	.	PAGE-Modus einschalten: Bei Erreichen des Fenster-Endes Cursor in HOME-Position
18	12	DC2	SCRL	.	SCROLL-Modus einschalten: bei Erreichen des Fenster-Endes Fenster 1 Zeile rollen, Leerzeile mit 00 wird eingefügt
19	13	DC3	STOP	(S)	STOP, keine CRT-Funktion
20	14	DC4	CLICK	.	Ein- oder Ausschalten Tastenklick (NT: AutoInsert)
21	15	NAK	-	\\	nicht benutzt (NT: Paragraph)
22	16	SYN	SLOCK	.	Shift-Lock, keine CRT-Funktion
23	17	ETB	-	.	nicht benutzt (NT: Shift+Shift-Lock)
24	18	CAN	CEL	->|	Cursor auf Zeilenende
25	19	EM	CBL	|<-	Cursor auf Zeilenanfang
26	1A	SUB	INS	=>	Leerzeichen einfügen, Zeichen rechts rücken nach rechts bis zum 00-Zeichen, niemals Rollen
27	1B	ESC	ESC	.	Escape, CRT erwartet danach Steuerzeichen
28	1C	FS	LIST	(L)	LIST-Kurzcode für BASIC, keine CRT-Funktion
29	1D	GS	RUN	(R)	RUN-Kurzcode für BASIC, keine CRT-Funktion
30	1E	RS	CONT	(C)	CONTinue-Kurzcode für BASIC, Cursor auf Anfang nächste Zeile (nur CAOS 3.4 und KC85/4)
31	1F	US	DEL	<=	Zeichen löschen, Zeichen rechts rücken nach links, 00-Zeichen wird angehängt

Zuordnung Tastennumrner-Scancode
/*Bild*/ Ansicht der Tastatur und Reihenfolge in der Umcodierungstabelle

Der Tastencode wird über eine Tabelle (KTAB) aus den seriellen Impulsfolgen der Fernsteuer-IS U807D gewonnen. Eine Änderung der Codes zu den einzelnen Tasten ist durch Aufbau einer neuen Umcodierungstabelle und Eintragen deren Anfangsadresse in KTAB möglich. Diese Tabelle umfaßt 128 Byte, wobei jeder Taste 2 Byte zuge ordnet sind; 1. Byte Erstbelegung der Taste - 2. Byte Zweitbelegung (über <SHIFT>).

Umcodierungstabelle (Codierung der Tastatur)

Erstbelegung	Zweitbelegung über <SHIFT>-Taste
Scancode	Name	ASCII	Scancode	Name	ASCII
Dez.	Hex.	KC	Code	Dez.	Hex.	KC	Code
0	00	W/w	57	1	01	w/W	77
2	02	A/a	41	3	03	a/A	61
4	04	2	32	5	05	"	22
6	06	CUL	07	7	07	CBL	19
8	08	HOME	10	9	09	CLS	0C
10	0A	-	2D	11	0B	=	3D
12	0C	F2	F2	13	0D	F8	F8
14	0E	Y/y	59	15	0F	y/Y	79
16	10	E/e	45	17	11	e/E	65
18	12	S/s	53	19	13	s/S	73
20	14	3	33	21	15	#	23
22	16	^/ß	5E	23	17	¬/ü	5D
24	18	CLR	01	25	19	HCOPY	0F
26	1A	:	3A	27	1B	*	2A
28	1C	F3	F3	29	1D	F9	F9
30	1E	X/x	58	31	1F	x/X	78
32	20	T/t	54	33	21	t/T	74
34	22	F/f	46	35	23	f/F	66
36	24	5	35	37	25	%	25
38	26	P/p	50	39	27	p/P	70
40	28	DEL	1F	41	29	CLLN	02
42	2A	0	30	43	2B	@	40
44	2C	F5	F5	45	2D	FB	FB
46	2E	V/v	56	47	2F	v/V	76
48	30	U/u	55	49	31	u/U	75
50	32	H/h	48	51	33	h/H	68
52	34	7	37	53	35	'	27
54	36	O/o	4F	55	37	o/O	6F
56	38	INS	1A	57	39	CLICK	14
58	3A	9	39	59	3B	)	29
60	3C	BRK	03	61	3D	BRK	03
62	3E	N/n	4E	63	3F	n/N	6E
64	40	I/i	49	65	41	i/I	69
66	42	J/j	4A	67	43	j/J	6A
68	44	8	38	69	45	(	28
70	46	SPC	20	71	47	€/ä	5B
72	48	K/k	4B	73	49	k/K	6B
74	4A	,	2C	75	4B	<	3C
76	4C	STOP	13	77	4D	ESC	1B
78	4E	M/m	4D	79	4F	m/M	6D
80	50	Z/z	5A	81	51	z/Z	7A
82	52	G/g	47	83	53	g/G	67
84	54	6	36	85	55	&	26
86	56	Taste nicht vorhanden
88	58	L/l	4C	89	59	l/L	6C
90	5A	.	2E	91	5B	>	3E
92	5C	F6	F6	93	5D	FC	FC
94	5E	B/b	42	95	5F	b/B	62
96	60	R/r	52	97	61	r/R	72
98	62	D/d	44	99	63	d/D	64
100	64	4	34	101	65	$	24
102	66	_/€	5F	103	67	|/ö	5C
104	68	+	2B	105	69	;	3B
106	6A	/	2F	107	6B	?	3F
108	6C	F4	F4	109	6D	FA	FA
110	6E	C/c	43	111	6F	c/C	63
112	70	Q/q	51	113	71	q/Q	71
114	72	SLOCK	16	115	73	SLOCK	16
116	74	1	31	117	75	!	21
118	76	CUD	0A	119	77	SCROL	12
120	78	CUU	0B	121	79	PAGE	11
122	7A	CUR	09	123	7B	CEL	18
124	7C	F1	F1	125	7D	F7	F7
126	7E	ENTER	0D	127	7F	ENTER	0D

Bei aktivem <SHIFT-LOCK> gelten die Zeichen nach dem "/" in der Namens-Spalte.

ESC-Steuercodes
Die Steuerfunktionen der Tasten von 0 bis 9 und A können vom Anwender beliebig umbelegt und erweitert werden. Für neue Funktionen sind die Buchstaben von B bis Z (Groß- und Kleinbuchstaben werden nicht unterschieden) zu nutzen. Die Anzahl der Steuerfunktionen muß in die Arbeitszelle L3SIZ (=B7DFh) eingetragen werden. Die Anfangsadressen der neuen Steuerfunktionen sind dabei in einer Tabelle bereitzustellen, wobei die Anfangsadresse dieser Tabelle in die Zelle L3TAB (=B7DDh) eingetragen werden muß. Soll diese Tabelle erweitert werden, muß sie von L3TAB zuvor aus dem ROM- in den RAM-Bereich kopiert werden.
Beim Erstellen neuer Steuerfunktionen ist zu beachten, daß das Register DE nicht zerstört wird. DE kann aber gezielt verändert werden, da in ihm die neue bzw. alte Cursorposition übergeben wird.

#$+K  Der Bildspeicher
Zeichenbildtabellen
Zur Ergänzung des internen Zeichenbildvorrates und der Groß- und Kleinbuchstaben, Ziffern, Sonderzeichen (Codes 00..7Fh) können eigene Zeichenbildtabellen erstellt werden. Pro Zeichen werden 8 Bytes benötigt.
Bildpunkte = Bits: seitenrichtig, nicht negiert, oberste Bitdpunktzeile = niedrigste Adresse. Die Anfangsadressen der Tabellenzeiger müssen entsprechend den zugehörigen Codes in die Speicherzellen CCTL0..CCTL3 eingetragen werden.
Die Codes 00..1Fh dienen im Normalfall als ausführbare Steuerzeichen. Wird Bit 3(STBT) gesetzt, werden die Zeichen aus CCTL1 zum Bildschirm gesendet. Dies sind Symbole für die Steuercodes bzw. spezielle Grafiksymbole. Die Codes 60h..7Fh erzeugen die Kleinbuchstaben.

Adreßzuordnung im IRM
Mit Hilfe der folgenden Formeln kann man die Speicherzellen, die die Informationen zur Darstellung eines beliebigen Blldpunktes enthalten, ermitteln. Die Bildinformationen sind im lRM nach folgendem Prinzip abgelegt:
Je 8 horizontal nebeneinanderliegende Bildpunkte sind im Pixel-RAM als 1 Byte abgespeichert. Dieses Byte enthält nur die Vordergrund-Hintergrund-Information der Bildpunkte. Die Farbinformation ist für jeweils 4 (KC85/4: 1) Reihen von 8 Bildpunkten zu einem Byte im COLOR-RAM zusammengefaßt. Dieses Byte legt also für 32 (KC85/4: 8) Bildpunkte eine Vorder und eine Hintergrundfarbe fest.
Nur KC85/4: Bei hoher Farbauflösung wird auch das Pixelbyte für die Farbinformation verwendet. Hier gibt es keine Vorder- und Hintergrundfarben. In diesem Modus sind also nur 4 Farben möglich. wobei eine Farbe als Hintergrundfarbe des Bildschirmes verwended werden kann. Nun stehen noch 3 Farben für Grafiken zur Verfügung.
Darüberhinaus enthält der lRM zwei Video-RAM-Bereiche für Bild0 und Bild1, die auch als ASCll-Puffer bezeichnet werden. Sie speichern die Codes der auf dem Bildschirm dargestellten Zeichen ab. (Es erfolgt keinerlei Darstellung dieses Bereiches.)
Um das Farb- und das Pixelbyte eines Bildpunktes zu bestimmen. werden die Pixelzeilennummer und die Zeichenspaltennummer, in der sich der Punkt befindet, hexadezimal verwendet. Mit der folgenden Formel kann man die Pixelbyte- bzw. Farbbyteadresse errechnen:
(nur KC85/4)
Adresse = 8000h + Zeichenspalte * 100h + Pixelzeile
0 <= Zeichenspalte <= 27h, 0 <= Pixelzeile <= FFh
Der Farb- und der Pixelspeicher befinden sich im gleichen Adreßbereich. Will man direkt auf den Farbspeicher zugreifen. muß die Farbebene erst zugeschaltet werden
(KC85/2,3):
Adresse Pixel links (Spalte < 32):
1  0  0  V7 V6 V5 V4 V1  V0 V3 V2 H4 H3 H2 H1 H0
Adresse Pixel rechts (Spalte >= 32):
1  0  1  0  0  V7 V6 V1  V0 V3 V2 V5 V4 H2 H1 H0
Adresse Farbe links (Spalte < 32):
1  0  1  0  1  V7 V6 V5  V4 V3 V2 H4 H3 H2 H1 H0
Adresse Farbe rechts (Spalte >= 32):
1  0  1  1  0  0  0  V7  V6 V3 V2 V5 V4 H2 H1 H0
Der KC85/3 hat nur eine IRM-Ebene, so erübrigt sich hier die Bankumschaltung.
Die recht komplizierte Aufteilung ergibt sich aus der "trickreichen" Beschaltung der Multiplexer für die dRAM-Steuerung.
Die Adresse im Video-RAM läßt sich durch folgende Berechnung ermitteln:
(nur KC85/4):
Adresse = (B7CBh) + Zeichenspalte + 40*Zeichenzeile
(KC85/2,3):
Adresse = B200h + Zeichenspalte + 40*Zeichenzeile

Grauwertfolge der Farben
Fokgende Farbcodes geben auf S/W-Monitoren eine streng monotone, jedoch nicht äquidistante Grautreppe:
0-1-9-2-3-17-4-10-5-19-21-11-6-7-18-12-20-22-13-14-15
Es sind somit 21 Grauwerte verfügbar.

Byteweise Farbauflösung
Die Vorder- und Hintergrundfarbinformationen gelten wie beim KC 85/3, jedoch nur für 1 * 8 Bildpunkte horizontal in einer Linie ist ein Farbbyte reserviert. Mit diesem Farbbyte können 16 Vorder- und 8 Hintergrundfarben sowie Blinken für die Vordergrundfarbe eingestellt werden.

Pixelweise Farbauflösung
Ein Bit aus jeder Ebene (Color- und Pixel-RAM) wird als Farbinformation eines Bildpunktes gewertet. Mit den 2 zur Verfügung stehenden Bits können 4 Farben dargestellt werden. Dem Pixelspeicher ist dabei die Farbe Rot und dem Colorspeicher die Farbe Türkis zugewiesen.
Achtung! Es erfolgt keine explizite Unterstützung dieses Modus durch das CAOS!
Es ergeben sich folgende Farben:

Farbziffer	Farbe	Bit (Farb-RAM)	Bit (Pixel-RAM)
0	schwarz	0	0
1	rot	0	1
2	türkis	1	0
3	weiß	1	1

V24-Software

Das Betriebssystem KC-CAOS enthält eine universelle Druckertreiber- und Koppelroutine. Mit ihr lassen sich alle Druckgeräte mit V24-Schnittstelle bedienen. Dazu ist aber auch ein Modul M11113 V24 im KC-System erforderlich. Die Anschlußbedingungen und die Bedienungsanleitung für den Modul M003 sind aus der M003-Beschreibung zu entnehmen.
Nach dem Einschalten des KC 85/4 wird im System nach einem V24-Modul gesucht. Befindet sich ein Modul M11113 V24 im System, wird er aktiviert und initialisiert. Dabei werden jeweils der Kanal 1 als Drucker- und der Kanal 2 als interruptgesteuerte Duplexroutine initialisiert. Beim Kaltstart werden 2 lnitialisieru`ngstabellen (Druckertreiber und Duplexroutine) in den RAM (lRM) kopiert. Die Anfangsadresse und die Längen der Tabellen sind in den Arbeitszellen lNTV1 und lNTViL (Kanal 1) bzw. lNTV2 und lNTV2L (Kanal 2) eingetragen. Die Initialisierungstabellen und deren Längen können jederzeit geändert bzw. die Zeiger können auf andere Tabellen umgestellt werden. Dabei ist zu beachten, daß die ersten zwei Bytes der Tabellen immer der CTC-lnitialisierung dienen.
Der USER-Ausgabekanal 2 (z. B. in BASIC PRlNT#2) wird bei vorhandenem M003 V24 auf Druckerausgabe eingestellt. Bei eigenen Treiberprogrammen muß beachtet werden, daß nach jedem Warmstart des Systems die Sprungadresse in UOUT1 wieder auf die interne Druckerroutine gestellt wird. Der USER-Ausgabekanal 3 (z. B. in BASIC PRlNT*3) wird auf die Duplexausgaberoutine eingestellt. Die USER-Eingabekanäle2 und 3 sind nach Kalt- bzw. Warmstart nicht initialisiert. Sie werden erst nach Aufruf des Systemunterprogramms V24DUP initialisiert.
Die V24-Schnittstelle ist also nach Kalt- oder Warmstart immer auf Druckertreiber und Duplexroutine, dabei ist die Empfangsroutine interruptgesteuert, initialisiert.

Allgemeiner Druckertreiber V240UT
Nach jedem Kalt- oder Warmstart des Systems wird der Kanal 1 des 1. gefundenen M11113 V24 auf Druckerausgabe initialisiert. Eingestellt werden dabei 9600 Baud, 1 Stoppbit. 8 Bits pro Zeichen und keine Paritätsprüfung (K6313 u.a.).

d Drucker
0 K6313/K6327 (EPSON-kompatibel)
1 K6314/K6328 (EPSON-kompatibel breit)
2 K6311 (ANSI robotron)
3 K6312 (ANSI robotron breit)
4 K6303 (Thermodrucker)
5 K6304 (Thermodrucker)
8 S3004 (Schreibmaschine)
9 S6005/S6009 (Schreibmaschine, ß(7Eh)->83h)
A S6010 (Schreibmaschine, IBM-Umlaute)
B S6120
C S6130

Entfällt der Parameter d, wird für den Matrixdrucker K6313 bzw. für Drucker mit gleichen Übertragungsbedingungen initialislert. Die Parameter p und d können entfallen, wenn p = 0 ist und ein K6313 oder ein Druckgerät mit denselben Übertragungsbedingungen angeschlossen sind. Der Parameter d ist nur für die Hardcopyroutinen bzw. bei den Schreibmaschinen für einige notwendige Codewandlungen von Bedeutung.
Wird kein Parameter angegeben, wird das KC-System so initialisiert:
- Aktivierung des 1. gefundenen V24-Moduls
- Zeichenausgabe über Kanal 1 des V24-Moduls
- Initialisierung des USER-Ausgabekanals 2
- Reaktion auf SHlFT CLEAR: Protokollfunktion
Steckt kein Modul M003 im System, meldet sich der KC mit ERROR. Nach Aufruf des Programms meldet sich der Cursor bei gestecktem M003 nur dann wieder, wenn
- ein Drucker am Kanal 1 oder am angegebenen Kanal des M11113 angeschlossen ist und
- das Druckgerät angeschaltet ist.
Ist eine Bedingung nicht erfüllt, gelangt man nur durch das Betätigen der <RESET>-Taste am Grundgerät in das Menü zurück.

Protokollfunktion
Nach der V24-Initialisierung mit p = 1 bzw. ohne Parameter kann über die Tastenkombination <SHlFT>--<CLEAR> die Protokollfunktion aufgerufen und durch die gleiche Tastenbetätigung wieder abgeschaltet werden. Die Protokollfunktion bewirkt, daß alle Zeichen. die an den Bildschirm ausgegeben werden, auch an den Drucker ausgegeben werden. Für das Steuerzeichen 09h und für das Zeichen 7Fh wird ein Leerzeichen ausgegeben. Gleiches gilt bei der Zeichenausgabe vom Anwenderprogramm aus.

Ubartragungsbadingungen
Innerhalb der ArbeitszeUen im lRM werden nach jedem Kaltstart zwei Initialisierungstabellen für den V24-Modul abgelegt. Mit der für die Druckerinitialisierung zuständigen Tafel werden die Obertragungsbedi ngungen wie folgt festgelegt:
       Obertragungsrate : 961111Baud
       Stoppbits        : 1
       Bits pro Zeichen : 8
       Paritätsprüfung   keine
Werden andere Parameter gewünscht, sind die entsprechenden Bytes in der Initialisierungstabelle zu ändern. In der Tafel 3 sind für verschiedene Obertragungsbedingungen jeweils die 8 lntitialisierungsbytes aufgeführt. Ist z. B. eine Obertragungsrate von 121111 Baud, einem Stoppbit und 8 Bits pro Zeichen gewünscht. sind entsprechend der Tafel 3 nur die ersten zwei Bytes zu ändern (47 und SB in 117 und 59). Das kann z. B.` mit dem Systemprogramm MODlFY gemacht werden. Die Anfangsadresse der lnitialisierungstabelle steht in der Arbeitszelle INTVl.

HARDCOPY und SCREENCOPY

Ober die Parameter der Anweisung V24OUT mm k n p d kann man einen M11113 und die USER-Ausgabekanäle des KC-Systems uminitialisieren. Wird für den Parameter p eine 2 angegeben, kann über die Tastenkombination <SHlFT>--<CLEAR> bei den Matnxdruckern <außer K630,3) die Funktion HARDCOPY und bei den Schreibmaschinen die Funktian SCREENCOPY aufgerufen werden.
SCREENCOPY bewirkt hier die Ausgabe aller ASClI-Zeichen des aktuellen Bildschirminhalts an die Schreibmaschine, wobei auf dem Bildschirm vorhandene Grafiken nicht m~~ ausgedruckt werden können. Die Funktion HARDCOPY bei den Matrixdruckern bewirkt die punktweise Ausgabe des Bildschirminhalts. Damit werden
       alle ASCll-Zeichen,
       alle se`lbstdefinierten Pseudografikzeichen und
       die Grafiken
auf den Drucker ausgegeben.
Die Funktionen HARDCOPY bzw. SCREENCOPY werden nur erreicht durch Uminitialisieren des KC-Systems über die CAOS-Anweisung
   0/0V24OUT mm k n p d   mit p  2         oder
- Ejhöhen des Inhalts der Speicherzelle 11B7E1H (HCPZ) um 1
  (van BASIC aus über VPOKE 143115. VPEEK <14385) +1).
Ausgelöst werden können die Funktionen HARDCOPY bzw. SCREENCOPV auch aus einem Anwenderprogramm heraus durch die normale Ausgabe des Steuercodes 11FH. Von BASIC aus kann das z. B. mit PRINT CHR$(15); geschehen.
3.11.2.Duplexroutine (mit Empfangsinterrupt)
Wie oben bereits beschrieben, wird der Kanal 2 eines vorhandenen V24-Moduls beim Kalt- oder Warmstart auf Duplex initialisiert. Dabei ist die Empfangsroutine interruptge`steuert. Wird also ein Zeichen von außen an die V24 gesendet, wird ein Interrupt ausgelöst und das Zeichen ausgewertet. Reagiert wird in der lnterruptroutine prinzipiell nur auf zwei Zeichen bzw. ASCll-Codes, und zwar sind das 11DH (ENTER) und 1BH (ESC) Mit einem 11DH kann dem KC mitgeteilt werden, daß mit einer anderen Tastatur gearbeitet werden soll (über V24). Nach einem 11DH-Empfang wird eine neue lnterruptempfangsroutine (für Tastatur) initialisiert. Die Zeichen. die danach über diese Schnittstelle empfangen` werden, sind wie bei der normalen Tastaturroutine in der Zelle (lX + 13) abgelegt. Bei Empfang von ESC (1BH) wird vom Interruptmodus in den Pollingmodus übergegangen, wobei das z.B. laufende Programm unterbrochen wird. Nach dem Senden von ESC muß vom Sender eine kurze Sendepause eingeschoben werden, da sonst eventuell bereits -empfangene Zeichen durch die Uminitialisierung verlorengehen. In BASIC kann das mit Pause 1 erfolgen. Weiterhin ist in BASIC darauf zu achten, daß alle PRINT-Anweisungen mit einem  ; abgeschlossen sein müssen, da so`nst nach jedem PRINT zusätzlich ein 11DH und 11AH gesendet wird. Mit der Anweisung NULL 11 muß die Ausgabe von Dummy-Zeich`en abgeschaltet werden.

Das Zeichen nach ESC wird als Steuerzeichen interpretiert. Zulässig sind ·,T" und ,,U". Bei allen anderen Codes wird wieder in den lnterruptmodus u~ber-gegangen. Mit ESC ,,T" kann direkt in den Speicher geschrieben werden. Dazu sind nach dem ,,T~ die Anfangsadresse aaaa, die Anzahl der zu schreibenden Bytes nnnn und die nnnn Bytes selber an den KC zu senden.

       ESC ,,T" aa aa nn nn (nnnn * Bytes)
       lBH 54H low high low high
Um z. B. den Pixel-RAM zu beschreiben, ist folgende Codefolge zu senden:
       1 B 54 1111 811 1111 28... (Pixelbytes)...
Mit ESC ,,U~` können Prngrnmme im KC gesta`rtet werden. Nach ,,U" ist die Startadresse ssss zu senden:
       ESC ,,U" ss $5
       lBH 55H Iow high
Es könnte z. B. ein Programm gestartet werden. das vorher mit ESC ,,T" gesendet wurde. Die gestarteten Programme können mit RETURN (RET) zum unterbrochenen P?ogramm zurückkehren. Die Duplexroutine enthält natürlich auch eine Senderoutine. Der USER-Ausgabekanal 3 wird nach jedem Kalt- bzw. Warmstart auf diese Senderautine initialisiert.
Die Ubertragungsbedingungen für Senden und Empfangen sind:
       Ubertragungsgeschwindigkeit : 1200 Baud
       Bits pro Zeichen            : 8
       Stoppbits                   : 1
       Paritätsprüfung             : keine

Die Ubertragungsbedingungen können vom Anwender für diese Duplexroutine nich,t geändert werden.
Werden` andere Sendebedingungen gewünscht. muß mit der anderen Duplexroutine (siehe 4.12.3.) gearbeitet werden.
Mit der inter?uptgesteuerten Duplexroutine (siehe Kap. 3.12.3.) ist es z.B. möglich, eine Schreibmaschine (z. B. S311114) zur Eingabe am Computer und als Druckgerät zu verwenden. ,Dazu muß aber die Schreibmaschine mit den gleichen Ubertragungsbedingungen senden und empfangen wie das KC-System.

3.11.3. Duplexroutine V24DUP
Neben der interruptgesteuerten Duplexroutine beinhaltet das Betriebssystem eine puplexroutine für den Pollingbetrieb. Diese Routine kann mit V24DUP aktiviert werden.
Parameter des Me~üwortes:

0/0V24DUP [mm k nj

mm. .. Modulschacht des M11113 (8.C....)
k  ... Kanal des M11113 (1 oder 2)
n  ... USER-Aus- und Eingabekanal (2 oder 3)

Fehlen die Parameter, wird immer der 1. gefundene M11113 Initialisiert. Für k und n ~erden~die zuletzt e,ingegebenen Werte bzw. bei einem Systemstart die Werte k = 2 und n = 3 angenommen.
Nach dem Aufruf von V24DUP wird de~ entsprechende Ausgabe- und Eingabekanal umgestellt. Danach  kann  z. 8.  in  BASIC  mit  LlST~3(~2), PRlNT~3(~2), INPUT~3(*2) und LOAD~3(~2) gearbeitet werden.
Wurde der Kanal 2 des M11113 mit V24OUT oder V24DUP uminitialisiert, kann der interruptgesteuerte Duplexmodus für den Kanal 2 nur über einen Systemneustart erreicht werden (z. B. mit RESET).
Wie bei der Druckertreiberroutine kann auch für die Duplexroutine die Initialisierungstabelle geändert ,werden. Die Anfangsadresse der Tabelle steht in der Speicherzelle lNTV2 und deren Länge in der Zelle lNTV2L.
3.12.  Spezielle Systembedingungen
Bei der Arbeit mit dem KC 85/4 sind folgende systemspezifische Bedingungen zu beachten:
- Das lX-R~gister wird für die Adressierung` der Tastatur`Kassetten~Interrupt programme benötigt und darf bei freigegebenem Interrupt nicht verändert
  werden.
- Es ist lnterrupt Modus lM2 vorgeschneben.
- IX.Register und lnterrupttabelle können über das Unterprogramm SIXD (UP-Nr. 31) auf andere Speicherbereiche gelegt werden.
- Die 1/0-Adresse 811H ist zur Modulsteuerung reserviert.
- Interne 1/0-Ädressen: 88H-SßH PlO  8CH-8FH CTC
- Interne Ausgabeadressen: 84H und 86H
  Wie aus der Speicherübersicht zu entnehmen ist. bestehen der 64 KByte Arbeitsspeicher und der 64 KByte IRM aus je 4 mal 16 KByte Blöcken. Um diese verwalten zu können, stehen dem Anwender die Ausgabeadressen 84H und 86H zur Verfügung. Damit kann z. B. das Umschalten von Bild 11 (COLOR- und PIXEL~Iock) auf Bild 1 erfolgen. In der Tafel 4 sind lnitialisierungstabellen für verschiedene Ubertragungsbe-dingungen aufgeführt.

- ~ei Anwenderprogrammen, weIche mit eigenem Stackbereich arbeiten und   (mit Zusatzmodulen>im Speicherbereich 81198H-BFFFH (bei abgeschaltetem IRM) arbeiten, ist es notwendig. entweder den STACK in den Bereich unter 81198H zu legen oder vor Aufruf des Betriebssystems den Stackpointer in  diesen Bereich zu verlegen und den IRM einzuschalten (z. B. über Programmverteiler V oder VI).

- V24  Steckt ein V24 M11113-Modul im KC-System, wird er beim Einschalten (Kaltstart) zugeschaltet und initialisiert. Beim Warmstart (RESET) erfolgt nur die Initialisierung. Der Kanal 1 wird auf Druckerausgabe und der Kanal 2 auf Duplexbetrieb eingestellt.

3.1.2.  Die zentrale Steuerschleife
3.2.    Speicheraufteilung

Eine ()bersicht der Speicheraufteilung des KC 85/4 vermittelt Bild 12.

3.2.1.  Speichew`bersicht(interne Module)                  -
Adressen              vorhandener Speicher     Nutzung

8888H-BFFFH           64 KByte dyn. RAM,       Anwenderspeicher
                  -    dabei liegen zwei 16 K
                       Blöcke hintereinander
                        -auf der Adresse 8888H.
8888H-BFFFH           64 KByte dyn. RAM <lRM), Bildwiederholspeicher
                        dabei liegen vier 16 K
                        Blöcke hintereinander
                        auf der Adresse 8888H.        -          -
C888H-DFFFH           8 KByte ROM              BASlC-lnterpreter
E888H-FFFFH           8 KByte ROM              BetriebssystemfMSi~-~
C888H-CFFFH           4 KByte ROM              Betriebssystem

3.2.2.  Speichergliederung

Adreßbereich    dez.             Bemerkungen
hex.

8888-813F       88888-88319     bedingt ,nutzbar für Anwender. Dieser
                                Speicherbereich wird zum Teil auch für
                                Spezialprogramme <z. B. Testmonitor) ge-
                                nutzt.
8148-~81FF    88328-88511 -     Monitor-RAM und STACK. Es besteht die
                                Möglichkeit, durch Umdefinieren des Mo-
                                nitor-RAM und des STACK auf einen an-
                                deren Adreßbereich- diesen zu nutzen <vgl.
                                Unterpragramm SlXD).        -
8288-BFFF       88512-49151     frei für Anwender    -  -   -    -
8888-A7FF       32768-43887     88888-18239 <*) Pixel-RAM
                                               <Bildpunktspeicher)
A888-ACFF       43888-44831     18248-18519 <*)  1 nit-Tabellen V24
AD88-B1FF       44832-45567     11528~12791<*) Video-RAM Bild1
B288-B6FF       45568-46847     12888-14879<*) Video-RAM Bild8
                                               <ASCl 1-Speicher)
B788-B77F       46848-46975     14888-14287 <*)  Kassetten puffer
B788-B7FF -     46976-47183     14288-~14335<*)  Monitar-RAM

Adreßbereich    dez.             Bemerkungen
hex.

B888- B8FF      47184-47359    14336-14591 <*) Mo~u Isteuerwort-
                                               speicher
B988-B99B       47368-47515  - 14592-14747 <*) Funktionstastenspeicher
B99C-B9FF       47516-47615    14748-14847 <*) Fenstervektorspeicher
BA88-BFFF ,     47616-49151  -  14848-16383<*) frei für Anwender;
                                               Die Zugriffszeit zu die-
                                               sem Speicherbereich ist
                                               relativ groß
                                               (2.4 Mikro-Sekunden)

<*) in den BASIC-Anweisungen VPEEK und VPOKE zu verwendende Speicher-
  - adressen <vgl. BASlCtHandbuch)

3.2.3.  Fenstervektorspeicher

Das Betriebssystem gestattet es, 18 verschiedene Bildschirmfenster zu defi-
nieren und jederzeit wieder aufzurufen, wobei die Parameter des aktuellen
Fensters gerettet werden. Als Fensternummern sind 8 bis 9 zugelassen.
Der Fenstervektor ist wie folgt aufgebaut:

-Anfangsadresse WNDFN     8B99CH + n * 8AH; .... Fensternummer
WNDFN ~  - Fensteranfang Spalte                        -
        +1  - Fensteranfang Zeile
        +2  - Fenstergröße Spaltenanzahl
        +3  - Fenstergröße Zeilenanzahl                     -
--      +4  - Cursorposition ~palte
        +5  - Cursorposition Zeile
        +6  - Steuerbyte <vgl. Abschnitt ,,Arbeitszellen im lRM")
        +7  - Farbe
        +8  - Reaktionsprogramm ~uf Fensterende <SCROLL- oder
        +9    PAGE-Mode)

Die Initialisierung und der Aufruf eines Fensters erfolgen über Systemunter-
programme <vgl. Punkt 3.5.4., UP-Nr. 3CH und 3DH) bzw. über die CAOS-
Anweisung WlNDOW.
Bei der Einschaltinitialisierung des Systems werden alle 18 Fenster auf~maxi-
male Größe, SCROLL-Mode, Farbe weiß/blau und Cursor in HOME-Position
eingestellt.        -
3.2.4.  Modulsteuerwortspeicher
Im Modulsteuerwortspeicher sind die Steuerbytes für jeden Modul enthalten.
Zur Unterstützung der softwaregesteuerten Modulverwaltung ist für jede
mögliche Moduladresse ein Speicherplatz für die durch die ,,SWlTCH"- oder
,,JUMP"-Anweisung über Systemrufe ausgegebenen Steuerbytes vorhanden.
Die Adresse berechnet sich wie folgt:
B888H + Moduladresse
Das Steuerbyte der ,,JUMP"-Anweisung ist FFH. Alle Madulste~uerungsaus-
gaben sollten durch Systemaufrufe <UP-Nr. 26H) und nicht durch direkte Aus-
gaben über die Ausgabeadresse ~88H erfolgen. Bei der Initialisierung des
Systems erfolgen ein Löschen des gesamten Modulsteuerspeichers und ein
Eintrag für die internen Speicherblöcke.

3.3.    Modulverwaltung

3.3.1.  Verwalten der KC-Module und Zusatzgerate~
Der KC 85/4 ermöglicht es, durch eine spezielle Steuerung, mehrere Module
vom gleichen Typ quasi gleichzeitig zu betreiben. D~se können im Grund-
gerat oder in einem Aufsatz stecken. Mit dem Kommando SWlTCH mm kk
werden die Module vom Menü, von BASIC oder vom Programm aus geschal.
tet.
Das Ansprechen der Module erfolgt über die vom Steckplatz abhöngigen
Maduladressen.
Die Maduladressen sind folgendermaßen definiert:     -
Modulsteckplatz mm  <mm>   8)

G3    G2    G1    G8    Sl   S8   Xl   X8
                                     ____ mussen 8 sein

                                          Steckplatz im Gerät
                                                  Sl   58  51    S8

                                          oben    1    1    1    8
                                          unten   8    1    8    8

                                          Gerätenummer

                                          Gemt       G3  G2  Gl  G8

                                          Grundgernt8    8   8   8

  Die Gerötenummern der~ Aufsötze entnehmen Sie bitte der jeweiligen Anlei-
  tung.

  mm... zweistellige hexadezimale Steckplatzadresse

  G3  G2  Gl  G8  S1  S8  Xl  X8 ... Bits

  Die Moduladressierung erfolgt über 1/0-Adressen:

  Adreßbus        High (Register B)         Low <Register C)
                  GGGGSSXX                  88H

  Beim Lesen der entsprechenden Adresse sendet jeder Modul ein spezielles
  Strukturbyte auf den Datenbus. Die Kennungen der Module sind den Modul-
  beschreibungen zu entnehmen.                        -
  Das Schalten der Module erfolgt über Ausgabe eines Steuerbytes kk an die
  Moduladresse.

  Steuerbyte kk

  XXXXXXWM

                                       1Modulzustand M               inaktiv 8
                                       Aktiv-Bit               aktiv 1

                                       Schreibschutz W              ein <NL) 8
                                       Schreibbit    ,              aus <LS) 1

                                        Belegung entsprechend Modulbe-
                                        schreibung

  Diese Bits werden mit dem Einschalten von entsprechenden Modulen in einer
  bestimmten Form belegt. Diese Belegung ist den jeweiligen Madulbeschrei-
  bungen zu entnehmen. Ab Bit 7 werden bei bestimmten Modulen die An-
  fangsadresse <Basisadresse) und 9b Bit 2 die Speichersegmente eingetragen.

- kk:         zweistelliges hexadezimales Steuerbyte               -

  X` W, M:    Bits des Steuerbytes besitzen der Reihenfolge nach sinkende
              Stellenwertigkeit.
  Zum Beispiel wird beim Modul M825 USER PROM 8K ab Bit7 die absolute
  Adresse dem Speicherbereich des Moduls zugeordnet. Werden mehrere Mo-
  dule mit gleichen Speicher- oder E/A-Adressen eingeschaltet, so ist beim Zu-
  griff des Prozessors ,nur der Modul auf der niedrigsten Maduladresse wirk-
  sam <Hardware-Prioritötskette).       -

   3.3.2.  Verwalten des KC-internen Speichers

   Den im Grundgeröt enthaltenen    Speicherblöcken sind folgende ,,Modul"-
   Adressen zugeordnet:
   - RAM-Adresse 8H                 - 88H
     lRM                            - 81H
   - ROM-Blöcke auf ADR C888H       - 82H
   - RAM-Blöcke auf ADR 8888H       - 83H
   - RAM-Adresse 4888H              - 84H
   Diese Blöcke werden über den internen PlO-Baustein ein- bzw. ausgeschal-
   tet. Bei RAM-Blöcken kann ein Schreibschutz gesetzt werden.
   Die internen Speicher <RAM, lRM. ROM) enthalten keine Modulsteuerung.
   die aktuellen Steuerbytes werden aber in den Modulsteuerwartspeicher ein-
   getragen. Sie werden über die Datenleitungen der PlO Parts A und B sowie
   der Ausgabekanöle 84H und 86H gesteuert. Die Speicher sind eingeschaltet
   bzw. der Schreibschutz ist nicht gesetzt. wenn das zugehörige Ausgabebit 1.
   ist.

#$+K  KC-Portadressen
  -<Im Bild 12 ist die Speicheraufteilung des KC85/4 dargestellt.)
   Ist keine Bemerkung für den Zustand des jeweiligen Bits gemach?. gilt:
   1 = eingeschaltet. 8 = ausgeschaltet.

   Es gibt folgende Zuardnungen zu den internen Toren:
PlO Port A (Adresse 88H): 43~     ~~lt1~`Z~t~!~L~  fI~ ~-~.
1  Bit 0 - CAOS-ROM E
-4 Bit 1 - RAM 8
4  Bit2 - lRM
4  Bit 3 - Schreibschutz RAM 8 ; 1 = Schreibschutz aus
~  Bit4 - KOUT            -    ; nicht benutzt     Tas~~~vaLaE~aRa~
r BitS - LED
~  Bit 6 - Motorschaltspannung (Schnellstopp) des Recorders -
   Bit7 - ROMC<BASlC)tt.a.)

   PlO   Part B <Adresse 89H): 43~     -
4  Bit 8 - Rücksetzen der Symmetrie-Flip-Flops für Tonausgabe  ~ -~ 1  -
 ~ Bit 1
 ~ Bit2      Lautstärkeregelung für Tonausgabe ; Law = aktiv
 ~ Bit3
1  Bit4  -
4  BitS  - RAM8
4  Bit6  - Schreibschutz RAM 8 ; 1 = Schreibschutz aus     -
4  Bit 7 - blinken der Vordergrundfarbe ein/aus

              1~2`tt42t  49~
   Ausgabekanal 84H bzw. <lX +~1)   1
~  Bit 8 - Anzeige Bild 8 oder 1
~  Bit 1 - Zugriff auf Pixel =ioder Farbe =~ 4
ff Bit 2 - Zugriff auf Bild 8 oder 1
,1  Bit3 - hohe Farbauflösung ein/aus ; ein <aktiv) = Low` Bit3 = 8
~  Bit 4 - Auswahl RAM8-Block <8 oder 1)
   Bit 5~- RAM-Black-Selektbit für RAM8           - .1  4
N Bit 6 - reserviert                    ~~g-sc9~n~t~?t - Wv~
                                                ~~
~  Bit 7 - reserviert 13`t/-~                -
   Ausgabekanal 86H bzw. <lX + 4)   -~  -
i  Bit8  - RAM4
4  Bit 1 - Schreibschutz RAM 4 :1 = Schreibschutz aus
ff Bit3  - frei            -o~pe~ r~t
r  Bit 2 - frei                     b~l~~
~  Bit4  - frei                     ,t-r~~  C~~~~~&~~~b~Ljt~
4  BitS  - reserviert      ,(~~   .&,#~?&,C~~~£~d~` ·i~-`-~~~  ~<~~,6"`1
6` Bit6  - reserviert      gon~ -~£1wtcsq~-»f. e;rie~ 3~ Ic£y+c~ ~o~
«  Bit 7 - CAOS-ROM C ;  Wird vom Betriebssystem automatisch verwaltet.
                           ist im Norm-alfall abgeschaltet. Aus diesem Grund
                           ist die Eingabe SWlTCH nicht notwendig.
                           (~,,rt asst`.jt`~~~>

   3.4.    Menükonzept

   3.4.1.   Erweiterung des CACS-Menüs
   Das verwendete Menükanzept ist unabhängig von bestimmten Speicherplöt.
   zen, d. h:. jedes Programm auf beliebigen Speicherplätzen kann mit entspre-
   chendem ,,Vorspann" ins~Menü eingetrage~n und über dieses gestartet wer-
   den.
   Vorspann:  7FH
              7FH       Prolog    -
               NN   -   Neues Menüwort:
                        Beliebig lange Zeichenkette
                        aus Großbuchstaben und
               MM       Ziffern <ASCll)
                88 bzw. 81 - Epilog
    Programm: PP        - 1. Befehlsbyte des Programms

              C9        Letztes Befehlsbyte des Programms
                        <RET-Rückkehr ins Menü)
Epilog = 88: mit Abschalten des lRM beim Programmaufruf
        -81: ohne Abschalten des lRM beim Pragrammaufruf

Die mittels Menütechnik zu startenden Maschinenprogramme müssen als
Unterpragramme definiert sein. d. h., sie müssen mit RETURN abgeschlossen
sein. Die Unterprogramme werden bei Anwah! durch das Menüwort auf dem
ersten Byte~ nach~ dem Epilog gestartet.
Für die Zeichenkette des Pragrammnamens gilt. daß bei Großbuchstaben und
Ziffern <Codes 38H bis 5FH) der Eintrag ins Menü auf dem Bi~ldschirm er-
folgt. ~c*"~~ ~~~~~~c~`~cii  Rs ~             ~ 1 ~        -
Bei Sonderzeichen, Groß- und Kleinbuchstaben sowie Ziffern <Codes 28H bis
FFH) ist der Aufruf über den Namen möglich. Es kann z. B. der Name eines
Programms aus Groß- und Kleinbuchstaben bestehen. Dabei erfolgt keine
Ausschrift im Menü.

3.4.2.  Ubernahme von Parametern

Beim Pragrammaufruf könhen auf der gleichen Bildschirmzeile bis zu 18 Ar-
gumente <ARG1-ARGl8) übergeben w~rden. Die Anzahl der Argumente wird
im Speicherplatz ARGN abgelegt. Die Werte der Argumente sind als 2-Byte-
Zahlen auf den Speicherplatzen ARG1 ... ARGl8 abgelegt.
Gleichzeiti~g werden die ersten drei Argumente in die Register

HL-ARG1.
DE-ARG2.
BC-ARG3

-und die Anzahl der übergebenen Argumente (ARGN) in Register A geladen
und können van den jeweiligen Unterpragrammen verwendet werden.

3.4,3.  Programmbeispiele

Für das Umspeichern von Speicherbereichen in andere ist das Programm
,COPY" in das Menü aufzunehmen.

Folgendes Assemblerprotokoll realisiert das Umspeichern:

ADR     MC           Anweisung            Bemerkung

8888    iF 7F        DEFW 7F7FH           Prolog
8882    43 4F 58 59  DEFM ,COPY`          Menüwort
8886    81           DEFB 1               Epilog          -
8887    ED B8        LDlR                 Umspeichern
8889    C9           RET                  Rücksprung ins CAOS

Der Maschinencode <MC) ist mit dem Kommando MODlFV, z. B. ab Adresse 8
hexadezimal, einzugeben und anschließend das Menü durch MENU aufzuru-
fen. Im Menü erscheint nun auch das Kommandowort COPY. Es kann z. B.
wie folgt verwendet werden:              -
Kopieren der Zeichenbildtabelle 1 aus dem ROM (Anfangsadresse 8EE88H)
in den RAM ab Adresse 2888H mit einer Länge von 512 Bytes <L = 288H).
COPY EE88 2888 288
   -  <HL) (DE) (BC)
Für Anwenderpragramme mit eigenem Menüfeld ist es möglich. den Stan-
dardprolog 7F durch Eintragen eines neuen ~Prnlagbytes in <lX + 9) zu ön-
dern. Dadurch werden nur die Kommandos gezeigt. die den neuen Prolog
enthalten. Es sind ebenfalls nur diese Programme über Kommando startbcr.
Als Prolog sollen Bytes genutzt werden, welche möglichst nicht mehrfach hin-
tereinander in Programmen oder Texten auftreten (z. B. B8H bis B7H
OR n, ~... Register). Diese Befehle werden kaum zweimal hintereinander
im Programm auftreten und sind auch nicht mit ASCll-Zeichen zu verwechseln.

Beispiel:
        DEFW 7F7FH              ; Standardprolag   -
        DEFM ,NEWMENU`
        DEFB 1
        LD (lX + 9). 8B8H       ; neuen Prolog eintragen
        CALL MENU               ; Menüanzeige
        RET
        PEFW 8B8B8H             ; Alternativpralog
        DEFM ,BYE`              ; Rückstellen auf
        DEFB 1                  ; Standardprolog
        LD <lX + 9). 7FH        ; Standardprolog eintragen
        CALL MENU               ; Menüanzeige
        RET
        DEFW 8B8B8H             ; Alternativprolag
        DEFM ,MENU`
        DEFB 1
        CALL MENU               ; Menüanzeige
        RET
MENU: LDA.12                    ; CLS
        CALL 8F883H             ; PV
        DEFB8                    UP8
        CALL8F883H              ; PVl
        DEFB46H                  UP46H
        RIET
 3.5.   Systemschnittstellen und nutzbare
            CA0S-Unterprogramme

#$+K  CAOS-Programmverteiler
Einsprungadressen für Systemstart
Um den Nutzern des KCs die Arbeit zu erleichtern, stehen ihm vom Betriebssystem spezielle Systemunterprogramme zur Verfügung. Dabei wird der Aufruf von Systemunterprogrammen und Gerätetreiberroutinen (UP) über einen Programmverteiler gesteuert.
Das Betriebssystem enthält eine Liste, in der alle UP numeriert sind. Dem Programmverteiler muß als Parameter diese UP-Nummer übertragen werden, damit wird das entsprechende UP gestartet. Für den Anwender sind im wesentlichen 12 Adressen des Betriebssystems interessant:
E000h:	RESET-Adresse: Diese Adresse wird beim Tasten-RESET des KC angesprungen. Der Systemspeicher wird neu initialisiert. Der Anwenderspeicher bleibt erhalten. Bei gesetztem Schutzbits (IX+7) erfolgt Sprung zu F000h (nur CAOS 3.1)
F000h:	POWER-ON-RESET-Adresse: Diese Adresse wird beim Einschalten des KCs angesprungen. Der komplette RAM-Speicher wird gelöscht, alle Module werden abgeschaltet, und das System wird initialisiert.
F012H:	Einsprungadresse des Systems bei "JUMP" (wie E000h, jedoch ohne Initialisierung des Grundgeräte-PIO-Bausteins).

Schalter für lRM und STACk
Diese Gruppe der Programme schaltet den lRM und verändert den STACK.
F018h:	Einschalten des lRM und Setzen des Stackpointers auf (SYSP). Darf nur mit F01Bh zusammen verwendet werden.
F01Bh:	Abschalten des lRM und Rückstellen des Stackpointers. Diese Programme werden auch von BASIC genutzt.
Für die Programme F018h und F01Bh gilt: Der Registerinhalt von BC geht verloren, beim "Auftauen" auch F, bei CAOS 3.4 auch AF'.

Programmverteiler
F003h:	Programmverteiler I
Nur bei diesem Programmverteiler kann eine Parameterübergabe vom Unterprogramm an das Hauptprogramm über die Register BC, DE, HL und AF erfolgen. Die Unterprogrammnummer muß im rufenden Programm unmittelbar nach dem CALL-Befehl notiert werden. Beispiel:
CALL 0F003h
DEFB UPNR (Unterprogrammnummer)
Die Parameter für das UP werden in den Registern übergeben. Die Register werden entsprechend den Unterprogrammen verändert.
Stacktiefe des Verteilers: 2
F006h:	Programmverteiler II
Dieser Programmverteiler entspricht dem von F003h. Die UP-Nr. wird jedoch im RAM auf einer festgelegten Adresse (ARGC, B780h) übergeben. Die Register BC, DE, HL werden gerettet. Es werden keine Parameter in den Registern BC. DE. HL vom UP zurückgegeben.
Stacktiefe des Verteilers: 7
F009h:	Programmverteiler III
Funktion und Register wie Programmverteiler II, die UP-Nr. wird im Register E übergeben. Damit entfällt allerdings das Register E für die Parameterübergabe.
F00Ch:	Programmverteiler IV
Funktion und Register wie Programmverteiler III, jedoch mit Einschalten des lRM beim Aufruf und Abschalten des lRM beim Rücksprung.
F00Fh:	Relativer Unterprogrammaufruf (für verschiebliche Programme). Mit UP-Abstand unmittelbar nach Aufruf, z.B. RCALL UP entspricht:
CALL 0F00Fh
DEFW UP-$ (Differenz zwischen Unterprogrammadresse und Adresse des nächsten Befehls, wird vom- Assembler eingetragen.) Das DE-Doppelregister wird nicht übergeben.
Stacktiefe: 1
F015h:	Programmverteiler V
Aufruf des Programmverteilers III mit Einschalten des lRM und Setzen des Stackpointers auf (SYSP) ( = 1C4h) vor UP-Aufruf und nach dem Aufruf Ausschalten des IRM und Rückstellen des Stackpointers. Das Register BC wird verändert
F01EH:	Programmverteiler VI
Wie Programmverteiler V, jedoch UP-Nr.-Übergabe im RAM (ARGC, B780h).
Die Programmverteiler I bis VI realisieren den Unterprogrammaufruf über eine Tabelle der Anfangsadressen dieser Unterprogramme. Die Anfangsadresse der Tabelle steht in der Speicherzelle` "SUTAB".

#$+K  CAOS-Systemdienste (Überblick)

00h CRT	Zeichenausgabe auf Bidschirm
01h MBO	Ausgabe Datenblock auf Kassette
02h UOT1	Ausgabe auf Anwenderkanal 1
03h UOT2	Ausgabe auf Anwenderkanal 2 (entspricht UOT1)
04h KBD	Tasteneingabe mit Cursoreinblendung
05h MBI	Einlesen Datenblock in Kassettenpuffer
06h USIN1	Eingabe vom Anwenderkanal 1
07h USIN2	Eingabe vom Anwenderkanal 2 (entspricht USIN1)
08h ISRO	Init Kassettenausgabe, Ausgabe 01-Block, Vortonlänge fest
09h CSRO	Abschluß Kassettenausgabe, Ausgabe FF-Block
0Ah ISRI	Init Kassetteneingabe, Einlesen 01-Block
0Bh CSRI	Abschluß Kassetteneingabe, Löschen Kassettenpuffer
0Ch KBDS	Tastaturabfrage ohne Quittung
0Dh BYE	Sprung auf E000h (Warmstart)
0Eh KBDZ	Tastaturabfrage mit Quittung
0Fh COLOR	Farbeinstellung
10h LOAD	Einlesen eines Maschinenprogrammes von Kassette
11h VERIF	Kontrollesen von Kassettendateien
12h LOOP	Rücksprung zur CAOS-Komandoebene
13h NORM	Zeichen-Ein/Ausgabe-Kanäle zurückstellen
14h WAIT	Warteschleife ohne Interrupt
15h LARG	Register mit Argumenten laden
16h INTB	Eingabe eines Zeichens vom aktuellen Eingabekanal
17h INLIN	Eingabe einer Zeile mit Cursorfunktionen, Abschluß <ENTER>
18h RHEX	UmWandlung einer Zeichenkette in interne Darstellung
19h ERRM	Auschrift "ERROR" + BEEP + CRLF
1Ah HLHX	Ausgabe HL als Hexzahl
1Bh HLDE	Ausgabe HL und DE als Hexzahl
1Ch AHEX	Ausgabe A als Hexzahl
1Dh ZSUCH	Suche nach Menüwörtern
1Eh SOUT	Zeiger für Zeichen-Ausgabe setzen
1Fh SIN	Zeiger für Zeichen-Eingabe setzen
20h NOUT	Zeiger für Zeichen-Ausgabe zurücksetzen (CRT)
21h NIN	Zeiger für Zeichen-Eingabe zurücksetzen (KBD)
22h GARG	Wandlung von max. 10 Hexzahlen in interne Darstellung
23h OSTR	Ausgabe nullterminierte Zeichenkette nach Aufruf
24h OCHR	Zeichenausgabe auf aktuellen Ausgabe-Kanal
25h CUCP	Cursor komplementieren
26h MODU	Modulsteuerung
27h JUMP	Abschalten CAOS und Sprung in neues Betriebssystem
28h LDMA	LD (HL),A
29h LDAM	LD A,(HL)
2Ah BRKT	Abfrage Break-Taste
2Bh SPACE	Ausgabe Leerzeichen auf aktuellen Kanal
2Ch CRLF	Ausgabe CRLF (neue Zeile) auf aktuellen Kanal
2Dh HOME	Ausgabe HOME auf aktuellen Kanal
2Eh MODI	Aufruf Systemkommando Modify
2Fh PUDE	Bildpunkt löschen
30h PUSE	Bildpunkt setzen
31h SIXD	Verlagerung CAOS-Arbeitszellen
32h DABR	Berechnung Video-RAM-Adresse
33h TCIF	Test, ob Cursor im Fenster
34h PADR	Berechnung Pixel- und Farbadresse
35h TON	Tonausgabe
36h SAVE	Ausgabe Speicherabzug auf Kassette
Folgende Routinen ab KC85/3
37h MBIN	Byteweises Kassettenlesen mit Namensvergleich beim 1. Block
38h MBOUT	Byteweise Ausgabe auf Kassette
39h KEY	Belegung von Funktionstasten
3Ah KEYLI	Anzeige der Funktionstastenbelegungen
3Bh DISP	Aufruf Systemkommando Display
3Ch WININ	Fensterinitialisierung
3Dh WINAK	Fensteraktivierung, Retten des aktuellen Fensters
3Eh LINE	Strecke zeichnen
3Fh CIRCL	Kreis zeichnen
40h SQR	Berechnung der Quadratwurzel
41h MULT	Berechnung Produkt
42h CSTBT	Steuerzeichen-Ausgabe bzw. Vorbereitung dessen
43h INIEA	Initialisierung eines E/A-Kanals über Tabelle
44h INIME	Initialisierung mehrerer E/A-Kanäle über Tabelle
45h ZKOUT	Ausgabe einer über HL adressierten Zeichenkette
46h MENU	Ausgabe des aktuellen Menüs und Übergang in Kommandoeingabe
Folgende Routinen nur bei KC85/4
47h V24OUT	Initialisieren Druckerausgabe
48h V24DUP	Initialisierung V.24-Duplexroutine

#$+ K CAOS UP 00h CRT
Zeichenausgabe auf Bidschirm
PE:        A  - ASCII-Code

#$+ K CAOS UP 01h MBO
Ausgabe Datenblock auf Kassette
PE:        (IX+5,+6) - Pufferadresse
           (IX+2)    - Block-Nr.-1
           BC        - Länge Vorton (normal 0A0H)
PA:        (IX+2)    - Block-Nr.
           DE        - Pufferende+1
VR:        AF,BC,DE,HL

#$+ K CAOS UP 02h UOT1
Ausgabe auf Anwenderkanal 1
PE:        A - Zeichencode
PA,VR:     entsprechend der Routine

#$+ K CAOS UP 03h UOT2
Ausgabe auf Anwenderkanal 2 (entspricht UOT1)

#$+ K CAOS UP 04h KBD
Tasteneingabe mit Cursoreinblendung
PA:        A - ASCII-Code
VR:        AF,HL
! 85/4 Shift+Stop =ESC - Auswertung intern

#$+ K CAOS UP 05h MBI
Einlesen Datenblock in Kassettenpuffer
PE:        (IX+5,+6) - Pufferadresse
PA:        CY = 1    - Block fehlerhaft
           (IX+2)    - Blocknummer
VR:        AF

#$+ K CAOS UP 06h USIN1
Eingabe vom Anwenderkanal 1
PE,PA,VR:  entsprechend der Routine

#$+ K CAOS UP 07h USIN2
Eingabe vom Anwenderkanal 2 (entspricht USIN1)

#$+ K CAOS UP 08h ISRO
Init MBO, Ausgabe 01-Block, Vortonlänge fest
PE:        (IX+5,+6) - Pufferadresse
           (IX+2)    - Block-Nr.-1
           BC        - Länge Vorton (normal 0A0H)
PA:        (IX+2)    - Block-Nr.
           DE        - Pufferende+1
VR:        AF,BC,DE,HL

#$+ K CAOS UP 09h CSRO
Close MBO, Ausgabe FF-Block, Löschen Kassettenpuffer
PE:        (IX+5,+6) - Pufferadresse
           (IX+2)    - Block-Nr.-1
           BC        - Länge Vorton (normal 0A0H)
PA:        (IX+2)    - Block-Nr.
           DE        - Pufferende+1
VR:        AF,BC,DE,HL

#$+ K CAOS UP 0Ah ISRI
Init MBI, Einlesen 01-Block
PE:        (IX+5,+6) - Pufferadresse
PA:        CY = 1    - Block fehlerhaft
           (IX+2)    - Blocknummer
VR:        AF

#$+ K CAOS UP 0Bh CSRI
Close MBI, Löschen Kassettenpuffer
PA:        (IX+5,6) - Standardpuffer B700H
VR:        AF,HL

#$+ K CAOS UP 0Ch KBDS
Tastaturabfrage ohne Quittung
PA:        CY = 1 -> Taste gedrückt, dann A - Zeichencode in ASCII-Code
           (F - Tasten liefern Codes F1H bis FCH)
VR:        AF

#$+ K CAOS UP 0Dh BYE
Sprung auf E000 (Warmstart)
Diese Routine kehrt nicht zurück

#$+ K CAOS UP 0Eh KBDZ
Tastaturabfrage mit Quittung (RES 0,(IX+8)
PA:        CY = 1 -> Taste gedrückt, dann A - Zeichencode in ASCII-Code
VR:        AF

#$+ K CAOS UP 0Fh COLOR
Farbeinstellung
PE:        E      - Hintergrundfarbe (0...7)
           L      - Vordergrundfarbe (0..1F)
           (ARGN) = 1  - nur INK
                    2  - INK + PAPER
VR:        AF,L

#$+ K CAOS UP 10h LOAD
Einlesen eines Maschinenprogrammes von Kassette
PE:        (ARGN) = 0  - ohne Ladeoffset
                  = 1  - mit Ladeoffset
           (ARG1)      - Ladeoffset
VR:        AF,BC,DE,HL

#$+ K CAOS UP 11h VERIF
Kontrollesen von Kassettendateien, Aufruf der Menükommandoroutine
VR:        AF,BC,DE,HL

#$+ K CAOS UP 12h LOOP
Rücksprung zur CAOS-Komandoebene
Diese Routine kehrt nicht zurück

#$+ K CAOS UP 13h NORM
In-/Out-Kanäle auf KBD und CRT
PA:        HL - alter Zeiger Ausgabe-UP-Nr.
VR:        HL

#$+ K CAOS UP 14h WAIT
Warteschleife ohne Interrupt
PE:        t=(A)*6ms
VR:        AF,B

#$+ K CAOS UP 15h LARG
Register mit Argumenten laden
PA:        HL = (ARG1)
           DE = (ARG2)
           BC = (ARG3)
           A  = (ARGN)

#$+ K CAOS UP 16h INTB
Eingabe eines Zeichens vom aktuellen Eingabekanal
PE:        (INTAB) - Zeiger Eingabe-UP-Nr.
PA:        A       - ASCII-Code

#$+ K CAOS UP 17h INLIN
Eingabe einer Zeile mit Cursorfunktionen, Abschluß <ENTER>
PE:        (INTAB) - Zeiger Eingabe-UP-Nr.
PA:        DE      - Zeilenanfangsadresse im Video-RAM
VR:        AF,DE
           Vorteilhaft: CY=1: BRK gedrückt

#$+ K CAOS UP 18h RHEX
Umwandlung einer Zeichenkette in interne Darstellung
PE:        DE - Anfang Zeichenkette
PA:        DE - Ende Zeichenkette bzw. fehlerhaftes Zeichen
           (NUMNX) - Länge Zeichenkette (B796)
           (NUMVX) - Hexzahl            (B797)
           CY = 1  - Fehler
VR:        AF,DE,HL
Bemerkung: Als Abschluß 00H und 20H zulässig

#$+ K CAOS UP 19h ERRM
Auschrift "ERROR" + BEEP + CRLF
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 1Ah HLHX
Ausgabe HL als Hexzahl und ein Leerzeichen
PE:        HL
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 1Bh HLDE
Ausgabe HL (Hex), 1 Leerzeichen, DE (Hex), 1 Leerzeichen
PE:        HL, DE
VR:        AF
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 1Ch AHEX
Ausgabe A als Hexzahl
PE:        A
VR:        A
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 1Dh ZSUCH
Suche nach Menüwörtern
PE:        A  - Prolog
           BC - Länge Suchbereich
           DE - Anfang Vergleichskette
           HL - Anfang Suchbereich
PA:        DE - Ende +1 Vergleichskette
           HL - Ende +1 gefundene Kette (Epilogbyte)
           CY = 1 -> Kette gefunden
VR:        AF,BC,DE,HL

#$+ K CAOS UP 1Eh SOUT
Zeiger Ausgabe-UP-Nr. setzen
PE:        HL - zu setzender Zeiger
PA:        HL - alter Zeiger
VR:        HL

#$+ K CAOS UP 1Fh SIN
Zeiger Eingabe-UP-Nr. setzen
PE:        HL - zu setzender Zeiger
PA:        HL - alter Zeiger
VR:        HL

#$+ K CAOS UP 20h NOUT
Zeiger Ausgabe-UP-Nr. auf CRT
PA:        HL - alter Zeiger
VR:        HL

#$+ K CAOS UP 21h NIN
Zeiger Eingabe-UP-Nr. auf KBD
PA:        HL - alter Zeiger
VR:        HL

#$+ K CAOS UP 22h GARG
Wandlung von max. 10 Hexazahlen in interne Darstellung
PE:        DE - Anfang Zeichenkette
PA:        DE - Ende Zeichenkette + 1  bzw. fehlerhaftes Zeichen
           (ARGN)           - Anzahl erfaßter Zahlen
           (ARG1)...(ARG10) - Werte
           CY  =  1         - Fehler
VR:        AF,BC,DE,HL
! 85/4: auch 'a' .. 'f' zulässig

#$+ K CAOS UP 23h OSTR
Ausgabe Zeichenkette nach DEFB UP-Nr. (Abschluß mit 00H)
VR:        AF
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 24h OCHR
Zeichenausgabe über aktuelle UP-Nr.
PE:        A - ASCII-Code
VR:        AF
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 25h CUCP
Cursor komplementieren
PE:        (CURSO) - Cursorposition

#$+ K CAOS UP 26h MODU
Modulsteuerung
PE:        A = 1  - nur Strukturbyte lesen
               2  - lesen und schalten
           L - Steckplatz
           D - Steuerbyte
PA:        H - Strukturbyte
           D - Steuerbyte
VR:        AF,H,C,B

#$+ K CAOS UP 27h JUMP
Abschalten CAOS und BASIC, Sprung in neues OS
PE:        A - Steckplatz
Sprung auf F012, in den Modulsteuerwortspeicher wird 0FFH eingetragen
Diese Routine kehrt nicht zurück, wenn OK

#$+ K CAOS UP 28h LDMA
LD (HL),A
PE:        HL - Adresse
           A  - Byte
Bemerkung: Nur sinnvoll bei PV4 bis PV6

#$+ K CAOS UP 29h LDAM
LD A,(HL)
PE:        HL - Adresse
PA:        A  - Byte
Bemerkung: Nur sinnvoll bei PV4 bis PV6

#$+ K CAOS UP 2Ah BRKT
Abfrage Break-Taste
PA:        CY = 1  -> BRK-Taste gedrückt
           A (bei BRK) - ASCII-Code
Vorteilhaft: STOP-Abfrage und warten

#$+ K CAOS UP 2Bh SPACE
Ausgabe Space auf aktuellen Kanal
VR:        AF
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 2Ch CRLF
Ausgabe Newline auf aktuellen Kanal
VR:        AF
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 2Dh HOME
Ausgabe Home auf aktuellen Kanal
VR:        AF
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 2Eh MODI
Aufruf Systemkommando Modify
PE:        HL - Anfangsadresse
VR:        AF,BC,DE,HL
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 2Fh PUDE
Löschen Bildpunkt
PE:        (HOR)  - Horizontalpos. (0...13FH)
           (VERT) - Vertikalpos.   (0...0FFH)
PA:        A      - Farbbyte
           CY = 1 -> Punkt außerhalb
           Z  = 1 -> Punkt war gesetzt
VR:        AF
Bemerkung: Position 0,0 --> links unten

#$+ K CAOS UP 30h PUSE
Setzen Bildpunkt
PE:        (HOR)  - Horizontalpos. (0...13FH)
           (VERT) - Vertikalpos.   (0...0FFH)
           (FARB) - Farbbyte       (0...0F8H)
           ! 85/4: Bit 0,(FARB)=1 -> XOR-Fkt.
                   Bit 1,(FARB)=1 -> Löschen
PA:        CY = 1 -> Punkt außerhalb
VR:        AF
Bemerkung: Position 0,0 --> links unten

#$+ K CAOS UP 31h SIXD
Verlagerung CAOS-IX-Arbeitszellen, Initialisierung der Interrupttabelle, IX-Register, PIO, CTC, Kassettenpuffer, Prologbyte, IM2)
PE:        A - H-Adreßteil
PA:        (MIXIT) - H-Adreßteil
VR:        AF,BC,DE,HL,IX

#$+ K CAOS UP 32h DABR
Berechnung Video-RAM-Adresse
PE:        D  - Zeile
           E  - Spalte
PA:        HL - Video-RAM-Adresse
           CY = 1  -> Außerhalb
VR:        AF,BC,HL

#$+ K CAOS UP 33h TCIF
Test, ob Cursor im Fenster
PE:        D  - Zeile
           E  - Spalte
PA:        CY = 1  -> Außerhalb
VR:        AF

#$+ K CAOS UP 34h PADR
Berechnung Pixel- und Farbadresse
PE:        H  - Vertikalpos.   (0...FFH)
           L  - Horizontalpos. (0...27H)
PA:        HL - Zeichen- und Farbadresse
           CY = 1  -> Außerhalb
VR:        F,HL
Bemerkung: HL = 00 -> linke obere Ecke

#$+ K CAOS UP 35h TON
Tonausgabe
PE:        (ARG1)   <L> - Tonhöhe 1  (Zeitkonstante f}r CTC 0)
           (ARG1+1) <H> - Vorteiler 1   (0 oder 1)
           (ARG2)   <E> - Tonhöhe 2  (Zeitkonstante f}r CTC 1)
           (ARG2+1) <D> - Vorteiler 2   (0 oder 1)
           (ARG3)   <C> - Lautstärke (0...1FH)
           (ARG3+1) <B> - Tondauer   (0...FFH)
                          (in 20 ms-Schritten bzw. 0 --> Dauerton)
           Tondauer über CTC 2, Blinken aus
           ! 85/4: Bit 0,(ARG3)=1 -> Reset Ton-FF
VR:        AF,BC,DE,HL

#$+ K CAOS UP 36h SAVE
Ausgabe eines Speicherabzugs auf Kassette
PE:        (ARGN) - Anzahl Parameter
           (ARG1) - Anfangsadresse
           (ARG2) - Endadresse
           (ARG3) - Startadresse
           HL     - Anfangsadr. Filename + Typ
VR:        AF,BC,DE,HL

#$+ K CAOS UP 37h MBIN (ab KC85/3)
Byteweises Kassettelesen mit Namensvergleich beim 1. Block
PE:        D - BIT 6 = 1 Close, nur Aufruf von CSRI ohne Blocklesen (0FFH-Block)
               BIT 3 = 1 Init -> HL Zeiger auf Name für 01-Block
           A - Daten
VR:        AF,DE,HL
Bemerkung: Bei Fehler oder BRK Sprung nach (IOERR)
           = (B7C9), ! bei 85/4 IRM off
                     ! bei 85/3 IRM on (Absturzursache)
           Nur Aufruf über PV5 oder PV6 möglich!

#$+ K CAOS UP 38h MBOUT (ab KC85/3)
Byteweise Ausgabe auf Kassette
PE:        A  - Daten
           HL - Adresse Name für 01-Block
           D  - BIT 3 = 1 Init -> HL Zeiger (1. Block)
                BIT 6 = 1 Close (FF. Block)
VR:        AF,DE,HL
Bemerkung: UP-Nr. 37H

#$+ K CAOS UP 39h KEY (ab KC85/3)
Belegung von Funktionstasten
PE:        A - Tasten-Nr. (01...0CH), bei unzulässiger Nr. sofortige Rückkehr
VR:        AF,BC,DE,HL
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 3Ah KEYLI (ab KC85/3)
Anzeige der Funktionstastenbelegungen
VR:        AF,BC,HL
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 3Bh DISP (ab KC85/3)
Aufruf Systemkommando Display
PE:        HL     - Anfangsadresse
           (ARGN) = 1 - Zeilenanzahl = 4 / Bytes pro Zeile = 8
                  = 2 - Zeilenanzahl - E / Bytes pro Zeile = 8
                  = 3 - Zeilenanzahl - E / Bytes pro Zeile - C
VR:        AF,BC,DE,HL
Bemerkung: Taste BRK  --> Abbruch , STOP --> Modify-Modus
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 3Ch WININ (ab KC85/3)
Fensterinitialisierung
PE:        A  - Fenster-Nr. (0...9)
           HL - Fensteranfang
           DE - Fenstergröße
PA:        CY = 0  - Fehler
VR:        AF,BC,DE,HL

#$+ K CAOS UP 3Dh WINAK (ab KC85/3)
Fensteraktivierung, Retten des aktuellen Fensters
PE:        A  - Fenster-Nr. (0...9)
PA:        CY = 0  - Fehler
VR:        AF,BC,DE,HL

#$+ K CAOS UP 3Eh LINE (ab KC85/3)
Zeichnen einer Linie
PE:        (ARG1) - XA
           (ARG2) - YA
           (ARG3) - XE
           (ARG4) - YE
           (FARB) - Farbbyte (s. PUSE, UP-Nr. 30H)
VR:        AF,BC,DE,HL
           ! 85/4: auch AF',BC',DE',HL'

#$+ K CAOS UP 3Fh CIRCL (ab KC85/3)
Zeichnen eines Kreis
PE:        (ARG1) - XM
           (ARG2) - YM
           (ARG3) - Radius
           (FARB) - Farbbyte (s. PUSE UP-Nr. 30H)
VR:        AF,BC,DE,HL
           ! 85/4: auch BC',DE',HL'

#$+ K CAOS UP 40h SQR (ab KC85/3)
Berechnung der Quadratwurzel
PE:        HL - 16 Bit-Argument
PA:        A  -  8 Bit-Resultat
VR:        AF,HL,DE

#$+ K CAOS UP 41h MULT (ab KC85/3)
Berechnung Produkt
PE:        D  -  8 Bit-Faktor
           C  -  8 Bit-Faktor
PA:        BA - 16 Bit-Produkt
VR:        AF,B,DE,HL

#$+ K CAOS UP 42h CSTBT (ab KC85/3)
! 85/3: Negation des Bit 4 des Steuerbytes
! 85/4: Ausgabe Steuercode als Zeichen auf USER-Kanal
PE:        A - ASCII-Code (nur bei 85/4)
Bemerkung: Programm diehnt zur Ausgabe der Steuerzeichen auf Bildschirm
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 43h INIEA (ab KC85/3)
Init. eines E/A-Kanals über Tabelle
PE:        HL - Tabellenanfang
PA:        HL - Tabellenende + 1
           Tabellenaufbau:  DEFB E/A-Adresse
                            DEFB Anzahl Bytes
                            DEFB Init-Byte
                             :
VR:        HL

#$+ K CAOS UP 44h INIME (ab KC85/3)
Init. mehrerer E/A-Kanäle über Tabelle
PE:        HL - Tabellenanfang
           D  - Anzahl Kanäle
PA:        HL - Tabellenende + 1
VR:        F,D,HL
           Tabellenaufbau:  (s. INIEA, UP-Nr. 43H)

#$+ K CAOS UP 45h ZKOUT (ab KC85/3)
Ausgabe einer über HL adressierten Zeichenkette
PE:        HL - Anfang Zeichenkette
PA:        HL - Zeichenkettenende + 1  (00)
VR:        AF,HL
Bemerkung: Zeichenkette aus ASCII-Zeichen, Abschluß mit 00h; vorrangiger Einsatz bei PV5 und PV6
Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)

#$+ K CAOS UP 46h MENU (ab KC85/3)
Ausgabe des aktuellen Menüs und Übergang in Kommandoeingabe
PE:        (IX+09) - Prologbyte
           ! 85/3: HL - Anfang Suchbereich
                   BC - Länge Suchbereich
Bemerkung: Diese Routine kehrt nicht zurück

#$+ K CAOS UP 47h V24OUT (nur KC85/4)
Initialisieren Druckerausgabe
PE:        (ARG1)   - Modulschacht des M003  (sonst 1.)
           (ARG2)   - Kanal des M003 (1,2)    (sonst 1)
           (ARG3)   - USER-Ausgabekanal (2,3) (sonst 2)
           (ARG4)   - Shift+CLR-Reaktions-Steuerbyte
                      =0 - keine Funktion auf Sh+CLR
                      =1 - Protokoll ein/aus  (normal)
                      =2 - Hardcopy / Screencopy
           (ARG5)   - Druckertyp (sonst 0: K6313 u.{.)
           (ARGN)   - Anzahl Argumente (0,3,4 oder 5)
           (INTV1)  - Anfangsadresse Initialisierungstabelle CTC, SIO
           (INTV1L) - Länge dieser Tabelle
VR:        AF,BC,DE,HL

#$+ K CAOS UP 48h V24DUP (nur KC85/4)
Initialisierung V.24-Duplexroutine
PE:        (ARG1)   - Modulschacht des M003  (sonst 2.)
           (ARG2)   - Kanal des M003 (1,2)    (sonst 2)
           (ARG3)   - USER-Ausgabekanal (2,3) (sonst 3)
           (ARGN)   - Anzahl der Argumente (0 oder 3)
           (INTV2)  - Anfangsadresse Initialisierungstabelle CTC, SIO
           (INTV2L) - Länge dieser Tabelle
VR:        AF,BC,DE,HL