Copyright: Hilfe KCEMU ® h#s (03/98)
Citation: ""


Index
 KC-Emulator

Zum Programm

Vorwort
Erforderliche Hard- und Software
Kommandozeile

Bedienung

Datei laden
Installieren
Deinstallieren
Markieren, Kopieren und Einfügen
Emulator-Optionen
Computertyp wählen
Benutzerdefinierten Computer erstellen

Dokumentation zu den emulierten Computern

Z9001
HC900, KC85/2,3,4
Z1013
HC-BASIC

Hilfe KCEMU © h#s (03/98)


 Vorwort

Vor gar nicht so langer Zeit habe ich auf einem Kleincomputer, dem KC85/4, programmiert. Eigentlich war er gar nicht so schlecht, aber dann kamen die PC's mit einer Übermacht an Taktfrequenz und Speicherausbau. Den Durchbruch machten grafische Benutzeroberflächen - aber Grafik, das hatte der KC aus Mühlhausen den PCs schon lange voraus!

Nun gibt es bereits Dutzende von Emulatoren für "West"-Computer - für den Ostteil ist das Angebot schon eher mager. Einerseits wohl wegen der geringen Verbreitung und der kürzeren Vergangenheit. Andererseits machte das KC-Bildformat 320x256 Sorgen auf dem PC. Es sind eben ein paar Zeilen zuviel für den sonst so gern benutzten Spielemodus 13h (320x200), auf den die "West"-Computer besser passen.

Nun kam Michael auf die Idee, einen Emulator für Windows zu schreiben, um das Problem Bildformat zu umgehen. Und wenn wir einmal dabei sind, wollte ich, daß der KC bis ins kleinste Detail emuliert wird! Keine Modifikationen an Betriebssystem-ROMs, sondern vollständige Emulation - auch der Peripherie (Tastatur, Kassette, Module...). Es sollte so auch möglich sein, ein neues Betriebssystem für den KC hiermit zu entwickeln und zu debuggen.

Soweit ist das Programm noch nicht gediehen (Geduld und Schweiß sind der Preis). Ein wirklich externer (Hardware?)-Debugger erblickte bereits das Licht der Welt.

Na, und noch etwas: Alle DDR-Computer basierten auf dem U880: warum nicht gleich alle in einem Programm erledigen? Nun, es gibt ja auch noch die Eigenbau-Computer: der AC1, der Hübler-PC usw. Hm, und Windows bietet mit dem DLL-Konzept eine Variante, einen Eigenbau-PC in Software zu gießen.


 Hard- und Software-Erfordernisse

Dieses Programm benötigt mindestens Windows 3.1 im Standard-Modus - demzufolge einen AT286 oder besser. Es ist 16bittrig und arbeitet daher auch unter WinOS2 und (vielleicht) WINE.

Die Emulation erfolgt stets so, daß Windows möglichst wenig behindert wird. Die "Taskumschaltung" erfolgt quasi präemptiv, nach Ablauf einer vorgegebenen Anzahl von KC-Takten (sie werden exakt mitgezählt).

Auch abstürzende U880-Programme können Windows nichts anhaben. Im Laufe der Programmentwicklung unvermeidliche Schutzverletzungen haben nichts damit zu tun.

Das Blinken (funktioniert bereits) erfordert einen 256-Farben-Modus unter Windows, da dies per Palettenumschaltung zeit- und speichersparend realisiert wird. Mit mehr oder weniger Farben gibt's erst mal kein Blinken, basta. (Das Problem sollten die Grafikkartenhersteller lösen, nicht immer nur ich!)

Die Modulschaltung des KC's wird z.Z. durch Speicherschaufeln realisiert. Ein VxD, welches zumindest unter Windows Enhanced Mode liefe, realisiert die Modulschaltung künftig unter Zuhilfenahme der Paging-Einheit des 386er Prozessors.

Die Speicherung von Setup-Daten erfolgt z.Z. in der Registry.

Es ist nicht erforderlich, diese Software zu installieren. Der entsprechende Menüpunkt legt nur die Schlüssel in der Registry an. (Der entgegengesetzte Menüpunkt löscht diese Einträge, nichts weiter)

Zur Zeit funktioniert NICHT:

- Tasteneingaben am KC85/1, KC87 und Z1013 (macht diese praktisch unbenutzbar :-(

- Modulschaltungen (außer Umschaltung Pixel/Farbe am KC85/4)

- Ein/Ausgabe-Steuerung (außer KC85/4 Bildmodusumschaltung)

- Bremsfunktion

Dieses Programm besteht aus:

KCEMU.EXE	das Programm inklusive Betriebssystem-ROMs als Ressourcen

KCEMU.HLP	diese Hilfedatei

KCEMU.386	der Treiber für die Paging-Steuerung

Optional:

KCEMU.DLL	Benutzerdefinierter Virtueller Computer


 Kommandozeile

Zur Zeit wird keine Kommandozeile akzeptiert. Geplant:

* Dateiname (.KCC, .SSS u.ä.) startet neues Fenster mit Programm

* Schalter, der den Start in ein vorhandenes Fenster umlenkt

Das Programm unterstützt bereits Drag-n-Drop. (Unter Windows95 kommen systembedingt nur kurze Dateinamen an.)


Datei laden

Das Laden erfolgt z.Z. durch simples Hineinkopieren der Daten in den KC-Adreßraum. Bei BASIC-Programmen werden diverse, festliegende Arbeitszellen angepaßt. So kann nach dem Starten von BASIC ein solches Programm geladen werden.

Es erfolgt z.Z. noch keine Emulation des Kassetten-Interfaces.

Ein Programm zum Einlesen von KC-Programmen über eine Soundkarte ist in Arbeit. Es wird in dieses Projekt eingebunden.

Speichern ist z.Z. nicht implementiert.

Das Speichern und Laden des gesamten Computer-Zustandes ist geplant, jedoch nicht mal ansatzweise realisiert. (Ach, hätte man sowas schönes am KC gehabt...)


Installieren

Es ist nicht erforderlich, diese Software zu installieren. Der entsprechende Menüpunkt legt nur die Schlüssel in der Registry an. (Der entgegengesetzte Menüpunkt löscht diese Einträge, nichts weiter.)

Sobald Einträge in der Registry vorhanden sind, speichert KCEMU beim Beenden automatisch die Fensterpositionen für normale und maximierte Größe sowie einige Einstellungen. Das Programm "auf die Schnelle" ausprobieren ist somit völlig rückwirkungsfrei.

Der Inhalt der Registry kann mit (3.x) REGEDIT /v oder (95) REGEDIT angezeigt werden. Folgende Punkte:

HKEY_CLASSES_ROOT
 KCEMU = KC-Emulator
  config
   kctyp = 3 0 4 1 0          (KC-Typ, MenüCheck, 3 Optionen)
   placement = 1 15 13 7 6    (Fensterstatus, NormalPosition, MaxPosition)
  shell
   open
    command = D:\USER\MICHAEL\KCEMU\KCEMU.EXE %1
 .KCC = KCEMU

Übrigens ist dieser Menüpunkt auch dazu verwendbar, bei laufendem KCEMU die Einstellungen zu speichern. Bei Absturz kann nämlich KCEMU nicht speichern...


Denstallieren
Deinstallieren

Dieser Menüpunkt löscht die von Installieren gemachten Einträge aus der Registry. Das Löschen der Dateien obliegt der Verantwortung des "Systemadministrators" - was für ein Schlachtwort!. (Und das ist doch nicht SOO schwer, oder?)


 Markieren, Kopieren und Einfügen

Obwohl das Markieren von Bereichen mit der Maus inzwischen korrekt funktioniert, erfolgt beim Kopieren nur die Ablage einer geräteunabhängigen Bitmap (.BMP, ganzes Bild) in die Zwischenablage. Kein Text (kommt später). Einfügen soll später Text (Tastendrücke) einfügen, genauso wie bei einem DOS-Fenster.

Die rechte Maustaste öffnet ein Kontextmenü, mit der das Einstellen eines linken und rechten Textrandes erfolgen kann. Damit kann ein umgebrochener Satz in einem Stück in die Zwischenablage genommen werden (künftig). Ein Strichkiller sollte sich in diesem Modus automatisch zuschalten.

Vorgabe ist das Markieren rechteckicker Bereiche (wie im DOS-Fenster). Z.Z. keine Möglichkeit für Tastaturbedienung.


 Argument-Eingabe

Bis zu 3 Hexzahlen können hier eingegeben werden, die Anfangs-, End- und Startadresse darstellen. Startadresse wird z.Z. nicht unterstützt. Als Vorgabe stehen die Adressen, wie die Datei normalerweise geladen wird. Wird nur eine Adresse angegeben, wird bis zum DOS-Dateiende geladen.


 Emulator-Optionen

Mit diesem Dialog kann das Verhalten unter bestimmten Windows-Situationen festgelegt werden. Die Taktfrequenzanzeige in Prozent richtet sich nach dem einprogrammiertem nominellen Wert, und diese ist beim Z 1013 auf 2 MHz festgelegt.

Folgende Frequenzen:

Z9001, KC85/1, KC87:	2.5 MHz

HC900, KC85/2..4:	1.75 MHz

Z1013:	2 MHz

Alle Options-Parameter werden automatisch gespeichert, sofern installiert wurde.


 Computertyp wählen

Nun, wer die Wahl hat, hat die Qual. Benutzbar ist eigentlich nur der KC85/3; dem KC85/4 fehlt das BASIC, auch wenn's im Menü steht, und den anderen die Tastatureingabe. Das CAOS 3.4 ist eine Eigenentwicklung; die "Versionsnummer" sollte auf ein Mittelding zwischen /3 und /4 hindeuten.


 Benutzerdefinierten Computer erstellen

Die zu erstellende DLL wird als "Treiber" (.DRV) entwickelt. Wichtig ist dabei nicht die Endung, sondern das Vorhandensein einer einzigen exportierten Funktion namens DriverProc(). KCEMU.EXE wird künftig eine Reihe exportierter Eintrittspunkte aufweisen, um seine Standardfunktionen nutzen zu können.

Zur Zeit ist die Entwicklung eines solchen Treibers nicht möglich


 Z9001 - Überblick

Speicheraufteilung des KC 87:

0.. 2FFh	Arbeitsspeicher Betriebssystem
300..3FFFh	RAM
4000..7FFFh	1. RAM-Erweiterungsmodul
8000..BFFFh	2. RAM-Erweiterungsmodul
C000..E7FFh	HC-BASIC- (analog KC 85) oder ROM-Modul
E800..EBBFh	Farbattributspeicher (nur bei installierter Farboption)
EC00..EFBFh	Bildspeicher 40x24 Zeichen
F000..FFFFh	Betriebssystem-ROM
Kanaladressen:

80h	CTC
88h	PIO 1
90h	PIO 2 (Tastatur)
98h	Frei
A8h	Druckerschnittstelle für K 6303
B0h	Druckerschnittstelle für K 6311
B8h	Frei
C8h	Ein/Ausgabe-Modul
D0h	Programmiermodul (EPROM?)
D8h	Frei
E0h	Spracheingabe-Modul
F0h	Frei
F8h	ADU-Modul
Wichtige Systemadressen:

 1Dh	Systemzeit Stunden

 1Eh	Systemzeit Minuten

 1Fh	Systemzeit Sekunden

 5Bh	Beginn des FCB (Dateisteuerblock)

202h	Interruptadresse für CTC

211h..2FFh	Frei für Anwender

Unterprogramme des Betriebssystems:

0 INIT	Systeminitialisierung

1 CONSI	Zeicheneingabe von Tastatur

2 CONSO	Ausgabe Zeichen auf Bildschirm

3 READI	Eingabe Zeichen von (Lochband-)Leser

4 PUNO	Ausgabe Zeichen auf (Lochband-)Stanzer

5 LISTO	Ausgabe Zeichen auf Drucker

6 GETST	Spielhebelabfrage (Joystick)

7 GETIO	Eingabe eines E/A-Bytes

8 SETIO	Ausgabe eines E/A-Bytes

9 PRNST	Ausgabe nullterminierte Zeichenkette

10 RCONB	Eingabe Zeichenkette

11 CTST	Abfrage Tastaturstatus

12 RETVN	Ausgabe Versionsnummer

13 OPENR	Datei zum Lesen öffnen

14 CLOSR	Datei zum Lesen schließen

15 OPENW	Datei zum Schreiben öffnen

16 CLOSW	Datei zum Schreiben schließen

17 GETCU	Ausgabe Cursor-Adresse

18 SETCU	Neubelegen Cursorposition

19	unbelegt

20 READS	Einmaliges Lesen eines Blockes

21 WRITS	Einmaliges Schreiben eines Blockes

22 SETTI	Stellen der Systemuhr

23 GETTI	Abfrage Systemuhr

24 PRITI	Ausgabe Systemzeit

25 INITA	Initialisierung Tastatur

26 SETDM	Einrichten Puffer READS/WRITS

27 GETM	Test auf RAM oder ROM IN 1K-Schritten

28 SETM	Zuweisung RAM/ROM

29 DCU	Cursor löschen

30 SCU	Cursor setzen

31 COEXT	Komprimierten String konvertieren

32	unbelegt

33 RRAND	Lesen eines einzelnen Blockes von Kassette

FCB-Struktur:

0- 7	Dateiname
8-10	Dateityp (Endung)
11-14	interne Verwendung
15	Blocknummer nach dem Lesen
16	zu lesende bzw. schreibende Block-Nummer
17-18	Anfangsadresse Datei
19-20	Endadresse
21-22	Startadresse
23	Systembyte 0=ungeschützt, 1=Geschützte Datei


Z9001: INIT
Z9001 UP 0 INIT

Systeminitialisierung

Aktion: Neustart


Z9001: CONSI
Z9001 UP 1 CONSI

Zeicheneingabe von Tastatur

PA: A=ASCII-Zeichen


Z9001: CONSO
Z9001 UP 2 CONSO

Ausgabe Zeichen auf Bildschirm

PE: E=Zeichen


Z9001: READI
Z9001 UP 3 READI

Eingabe Zeichen von (Lochband-)Leser

PA: A=Zeichen


Z9001: PUNO
Z9001 UP 4 PUNO

Ausgabe Zeichen an (Lochband-)Stanzer

PE: E=Zeichen


Z9001: LISTO
Z9001 UP 5 LISTO

Ausgabe an Drucker

PE: E=Zeichen


Z9001: GETST
Z9001 UP 6 GETST

Spielhebelabfrage (Joystick)

PA: C=Spielhebel 1, B=Spielhebel 2


Z9001: GETIO
Z9001 UP 7 GETIO

Eingabe eines E/A-Bytes

PA: A


Z9001: SETIO
Z9001 UP 8 SETIO

Ausgabe eines E/A-Bytes

PE: E.


Z9001: PRNST
Z9001 UP 9 PRNST

Ausgabe nullterminierte Zeichenkette

PE:DE=Anfangsadresse String


Z9001: RCONB
Z9001 UP 10 RCONB

Eingabe Zeichenkette

PE: DE=Zieladresse Puffer


Z9001: CTST
Z9001 UP 11 CTST

Abfrage Tastaturstatus

PA: A=0: Kein Tastendruck, A=1: Taste gedrückt


Z9001: RETVN
Z9001 UP 12 RETVN

Ausgabe Versionsnummer

PA: BC=Versionsnummer


Z9001: OPENR
Z9001 UP 13 OPENR

Datei zum Lesen öffnen

keine Angaben


Z9001: CLOSR
Z9001 UP 14 CLOSR

Datei zum Lesen schließen

keine Angaben


Z9001: OPENW
Z9001 UP 15 OPENW

Datei zum Schreiben öffnen

keine Angaben


Z9001: CLOSW
Z9001 UP 16 CLOSW

Datei zum Schreiben schließen

keine Angaben


Z9001: GETCU
Z9001 UP 17 GETCU

Ausgabe Cursor-Adresse

PE: D=Zeile, E=Spalte, BC=Adresse im Bildspeicher


Z9001: SETCU
Z9001 UP 18 SETCU

Neubelegen Cursorposition

PE: D=Neue Zeile, E=Neue Spalte


Z9001: READS
Z9001 UP 20 READS

Einmaliges Lesen eines Blockes

PE: FCB-Struktur von 128 Byte vom Kassette zur aktuellen DMA-Adresse


Z9001: WRITS
Z9001 UP 21 WRITS

Einmaliges Schreiben eines Blockes

PE: FCB AB 5CH


Z9001: SETTI
Z9001 UP 22 SETTI

Stellen der Systemuhr

PE: im BCD-Format A=Stunden, B=Minuten, C=Sekunden


Z9001: GETTI
Z9001 UP 23 GETTI

Abfrage Systemuhr

PA: (in BCD?) A=Stunden, B=Minuten, C=Sekunden


Z9001: PRITI
Z9001 UP 24 PRITI

Ausgabe Systemzeit

PE: DE=Zieladresse STD:MIN:SEK


Z9001: INITA
Z9001 UP 25 INITA

Initialisierung Tastatur

(Grundinit Register I)


Z9001: SETDM
Z9001 UP 26 SETDM

Einrichten Puffer READS/WRITS

PE: DE=Pufferadresse (Standard 80h)


Z9001: GETM
Z9001 UP 27 GETM

Test auf RAM oder ROM IN 1K-Schritten

PE: DE=zu prüfende Adresse,

PA: A=0 ROM, A=1 RAM


Z9001: SETM
Z9001 UP 28 SETM

Zuweisung RAM/ROM

(Schreibschutz Anfangsadresse=DE für RAM)


Z9001: DCU
Z9001 UP 29 DCU

Cursor löschen

keine Angaben


Z9001: SCU
Z9001 UP 30 SCU

Cursor setzen

PE: BC=Cursor-Position


Z9001: COEXT
Z9001 UP 31 COEXT

Komprimierten String konvertieren

PE: DE=Stringlänge (Ausblenden aller Steuerzeichen und NUL anfügen)

    BC =Zieladresse


Z9001: RRAND
Z9001 UP 33 RRAND

Lesen eines einzelnen Blockes von Kassette

PE: Block-Nr=Byte 32 im FCB


 Z1013

Keine Online-Dokumentation verfügbar! (Ich kann ja nicht hexen! Der Scanner braucht Zeit...)


 HC-BASIC

Keine Online-Dokumentation verfügbar! (Ich kann ja nicht hexen! Der Scanner braucht Zeit...)


KC85/2,3,4 - Überblick
 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)?


KC85/2,3,4 - Die Tastatur
 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


CAOS: Detaillierte Beschreibung der Tastaturebenenen
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*/


CAOS: Buchstaben und Ziffern
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	©


CAOS: Steuertasten
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.


CAOS: Editiertasten
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.


CAOS: Funktionstasten
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.


CAOS: "ESC-Taste" und Arbeit mit 3. Tastaturebene
"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.


KC85/2,3,4 - Ein notwendiger Blick hinter die Kulissen
 Ein notwendiger Blick hinter die Kulissen

Vom Bit zur Hexadezimalzahl

Logische Funktionen

Steuerbyte

Speicher für Programme und Daten

Farb- und Grafikspeicher


CAOS: Vom Bit zur Hexadezimalzahl
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.


CAOS: Logische Funktionen
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.


CAOS: Steuerbyte
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.


CAOS: Speicher für Programme und Daten
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*/


CAOS: Farb- und Grafikspeicher
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.


KC85/2,3,4 - Das CAOS-Menü
 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)


CAOS: System-Start
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.


CAOS: Verwendung des Menüs
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".


CAOS: Das Kommando MENU
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.


CAOS: Das Kommando KEY
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.


CAOS: Das Kommando KEYLIST
Das Kommando KEYLIST

%KEYLlST

KEYLlST erfordert keinen Parameter. Bei der Ausführung dieses Kommandos werden alle Funktionstastenbelegungen aufgelistet.


CAOS: Das Kommando LOAD
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


CAOS: Das Kommando SAVE
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.


CAOS: Das Kommando VERIFY
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.


CAOS: Das Kommando WINDOW
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.


CAOS: Das Kommando COLOR
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.


CAOS: Das Kommando SWITCH
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.


CAOS: Das Kommando JUMP
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.


CAOS: Das Kommando MODUL
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


CAOS: Das Kommando SYSTEM
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


CAOS: Das Kommando MODlFY
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


CAOS: Das Kommando DISPLAY
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.


CAOS: Das Kommando V24OUT
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.


CAOS: Das Kommando V24DUP
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.


 CAOS-Arbeitszellen

Arbeitszellen im IRM

Arbeitszellen im IX-Bereich

Interrupttabelle

Stack und Verlagern des Stacks


CAOS: Arbeitszellen im IRM
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


CAOS: Arbeitszellen im IX-Bereich
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


CAOS: Interrupttabelle
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))


CAOS: Stack
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.


CAOS: Magnetbandaufzeichnung
 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


CAOS: Steuercodes und KTAB
 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.


CAOS: Bildspeicher
 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.


 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


CAOS: Programmverteiler
 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".


 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


CAOS: CRT
CAOS UP 00h CRT

Zeichenausgabe auf Bidschirm

PE:        A  - ASCII-Code


CAOS: MBO
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


CAOS: UOT1
CAOS UP 02h UOT1

Ausgabe auf Anwenderkanal 1

PE:        A - Zeichencode

PA,VR:     entsprechend der Routine


CAOS: UOT2
CAOS UP 03h UOT2

Ausgabe auf Anwenderkanal 2 (entspricht UOT1)


CAOS: KBD
CAOS UP 04h KBD

Tasteneingabe mit Cursoreinblendung

PA:        A - ASCII-Code

VR:        AF,HL

! 85/4 Shift+Stop =ESC - Auswertung intern


CAOS: MBI
CAOS UP 05h MBI

Einlesen Datenblock in Kassettenpuffer

PE:        (IX+5,+6) - Pufferadresse

PA:        CY = 1    - Block fehlerhaft

           (IX+2)    - Blocknummer

VR:        AF


CAOS: USIN1
CAOS UP 06h USIN1

Eingabe vom Anwenderkanal 1

PE,PA,VR:  entsprechend der Routine


CAOS: USIN2
CAOS UP 07h USIN2

Eingabe vom Anwenderkanal 2 (entspricht USIN1)


CAOS: ISRO
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


CAOS: CSRO
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


CAOS: ISRI
CAOS UP 0Ah ISRI

Init MBI, Einlesen 01-Block

PE:        (IX+5,+6) - Pufferadresse

PA:        CY = 1    - Block fehlerhaft

           (IX+2)    - Blocknummer

VR:        AF


CAOS: CSRI
CAOS UP 0Bh CSRI

Close MBI, Löschen Kassettenpuffer

PA:        (IX+5,6) - Standardpuffer B700H

VR:        AF,HL


CAOS: KBDS
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


CAOS: BYE
CAOS UP 0Dh BYE

Sprung auf E000 (Warmstart)

Diese Routine kehrt nicht zurück


CAOS: KBDZ
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


CAOS: COLOR
CAOS UP 0Fh COLOR

Farbeinstellung

PE:        E      - Hintergrundfarbe (0...7)

           L      - Vordergrundfarbe (0..1F)

           (ARGN) = 1  - nur INK

                    2  - INK + PAPER

VR:        AF,L


CAOS: LOAD
CAOS UP 10h LOAD

Einlesen eines Maschinenprogrammes von Kassette

PE:        (ARGN) = 0  - ohne Ladeoffset

                  = 1  - mit Ladeoffset

           (ARG1)      - Ladeoffset

VR:        AF,BC,DE,HL


CAOS: VERIF
CAOS UP 11h VERIF

Kontrollesen von Kassettendateien, Aufruf der Menükommandoroutine

VR:        AF,BC,DE,HL


CAOS: LOOP
CAOS UP 12h LOOP

Rücksprung zur CAOS-Komandoebene

Diese Routine kehrt nicht zurück


CAOS: NORM
CAOS UP 13h NORM

In-/Out-Kanäle auf KBD und CRT

PA:        HL - alter Zeiger Ausgabe-UP-Nr.

VR:        HL


CAOS: WAIT
CAOS UP 14h WAIT

Warteschleife ohne Interrupt

PE:        t=(A)*6ms

VR:        AF,B


CAOS: LARG
CAOS UP 15h LARG

Register mit Argumenten laden

PA:        HL = (ARG1)

           DE = (ARG2)

           BC = (ARG3)

           A  = (ARGN)


CAOS: INTB
CAOS UP 16h INTB

Eingabe eines Zeichens vom aktuellen Eingabekanal

PE:        (INTAB) - Zeiger Eingabe-UP-Nr.

PA:        A       - ASCII-Code


CAOS: INLIN
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


CAOS: RHEX
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


CAOS: ERRM
CAOS UP 19h ERRM

Auschrift "ERROR" + BEEP + CRLF

Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)


CAOS: HLHX
CAOS UP 1Ah HLHX

Ausgabe HL als Hexzahl und ein Leerzeichen

PE:        HL

Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)


CAOS: HLDE
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)


CAOS: AHEX
CAOS UP 1Ch AHEX

Ausgabe A als Hexzahl

PE:        A

VR:        A

Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)


CAOS: ZSUCH
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


CAOS: SOUT
CAOS UP 1Eh SOUT

Zeiger Ausgabe-UP-Nr. setzen

PE:        HL - zu setzender Zeiger

PA:        HL - alter Zeiger

VR:        HL


CAOS: SIN
CAOS UP 1Fh SIN

Zeiger Eingabe-UP-Nr. setzen

PE:        HL - zu setzender Zeiger

PA:        HL - alter Zeiger

VR:        HL


CAOS: NOUT
CAOS UP 20h NOUT

Zeiger Ausgabe-UP-Nr. auf CRT

PA:        HL - alter Zeiger

VR:        HL


CAOS: NIN
CAOS UP 21h NIN

Zeiger Eingabe-UP-Nr. auf KBD

PA:        HL - alter Zeiger

VR:        HL


CAOS: GARG
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


CAOS: OSTR
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)


CAOS: OCHR
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)


CAOS: CUCP
CAOS UP 25h CUCP

Cursor komplementieren

PE:        (CURSO) - Cursorposition


CAOS: MODU
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


CAOS: JUMP
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


CAOS: LDMA
CAOS UP 28h LDMA

LD (HL),A

PE:        HL - Adresse

           A  - Byte

Bemerkung: Nur sinnvoll bei PV4 bis PV6


CAOS: LDAM
CAOS UP 29h LDAM

LD A,(HL)

PE:        HL - Adresse

PA:        A  - Byte

Bemerkung: Nur sinnvoll bei PV4 bis PV6


CAOS: BRKT
CAOS UP 2Ah BRKT

Abfrage Break-Taste

PA:        CY = 1  -> BRK-Taste gedrückt

           A (bei BRK) - ASCII-Code

Vorteilhaft: STOP-Abfrage und warten


CAOS: SPACE
CAOS UP 2Bh SPACE

Ausgabe Space auf aktuellen Kanal

VR:        AF

Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)


CAOS: CRLF
CAOS UP 2Ch CRLF

Ausgabe Newline auf aktuellen Kanal

VR:        AF

Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)


CAOS: HOME
CAOS UP 2Dh HOME

Ausgabe Home auf aktuellen Kanal

VR:        AF

Die Ausgabe erfolgt über den jeweils eingestellten aktuellen Ausgabekanal (Standard: CRT)


CAOS: MODI
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)


CAOS: PUDE
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


CAOS: PUSE
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


CAOS: SIXD
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


CAOS: DABR
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


CAOS: TCIF
CAOS UP 33h TCIF

Test, ob Cursor im Fenster

PE:        D  - Zeile

           E  - Spalte

PA:        CY = 1  -> Außerhalb

VR:        AF


CAOS: PADR
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


CAOS: TON
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


CAOS: SAVE
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


CAOS: MBIN
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!


CAOS: MBOUT
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


CAOS: KEY
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)


CAOS: KEYLI
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)


CAOS: DISP
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)


CAOS: WININ
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


CAOS: WINAK
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


CAOS: LINE
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'


CAOS: CIRCL
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'


CAOS: SQR
CAOS UP 40h SQR (ab KC85/3)

Berechnung der Quadratwurzel

PE:        HL - 16 Bit-Argument

PA:        A  -  8 Bit-Resultat

VR:        AF,HL,DE


CAOS: MULT
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


CAOS: CSTBT
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)


CAOS: INIEA
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


CAOS: INIME
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)


CAOS: ZKOUT
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)


CAOS: MENU
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


CAOS: V24OUT
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


CAOS: V24DUP
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