Das lange versprochene Update der USB-Software für das M052 unter CAOS will ich Euch heute vorstellen und zum Download anbieten. Es gibt nur noch eine Programmversion für CAOS 3.1 bis CAOS 4.4, so dass das Modul M052 ohne Softwareänderung für die KC85/3-5 einsetzbar ist. Außerdem wurden die Treiber für BASIC und EDAS überarbeitet.

Das Programm läuft im Adressbereich ab C000h und ist für den Einsatz im EEPROM des Moduls M052 vorgesehen. Es kann auch in einen RAM-Bereich auf diese Adresse geladen werden (z.B. in ein Modul M011).

Das Programm wurde unter CAOS 3.1, CAOS 4.2 und CAOS 4.4 getestet, es gibt nur noch eine Programmvariante: die CAOS-Version wird automatisch erkannt und das Programmverhalten entsprechend angepasst – Unterschiede gibt es nur in der Bedienung, die Funktionalität ist identisch. Der Betrieb am KC85/2 wird nur teilweise unterstützt.

Der USB-Teil des Moduls M052 ist nach dem Prinzipschaltplan Version 1.2 zum Anschluss des VDIP1/2 an einem PIO Port A+B ausgeführt. Die Entwickler-Variante mit KC-Modul M001 wird von der Software nicht mehr unterstützt, da es keine Erkennungsmöglichkeit für angeschlossene Hardware an das M001 gibt.
Getestet wurde die CAOS-Software mit der Vinculum-Firmware 3.64, 3.66 und 3.68.


CAOS-Menü:

CAOS-Menü

Das CAOS-Menü wird wie bereits in Programmversion 2.0 um sieben Menüworte erweitert:

%VINCULUM
Aufruf des Terminalprogramms
%ULOAD Laden eines CAOS-Programms
%USAVE Abspeichern eines CAOS-Programms
%BASIC Aufruf BASIC mit USB-Treiber
%REBASIC Aufruf REBASIC mit USB-Treiber
%BSAVE Abspeichern eines BASIC-Programms im Format *KCB
%DEVEX Aktivierung der USB-Routinen für EDAS
ULOAD und USAVE sind analog den CAOS-Kommandos LOAD und SAVE für Kassette bzw. FLOAD und FSAVE für Diskette zu benutzen. Die Wirkung ist identisch mit dem LOAD und SAVE im Terminal-Modus, weitere Hinweise siehe dort.

Ein Wechseln des Verzeichnisses bzw. die Anzeige des aktuellen Verzeichnisinhalts vom CAOS-Menü ist nicht vorgesehen. Dazu bitte in den Terminal-Modus wechseln!

Terminal-Modus:

Der wichtigste Programmteil dürfte nach wie vor das Terminal sein, welches durch %VINCULUM aus dem CAOS-Menü gestartet wird. Das Systemdatum wird automatisch vom GIDE-Interface des D004/D008 übernommen wenn DEP 3.0 läuft. In allen anderen Fällen wird zur Eingabe des aktuellen Datums aufgefordert. Danach erhält man diesen Bildschirm, der sich seit Version 1.2 nicht wesentlich geändert hat.

Wichtig! Der USB-Stick ist am rechten USB-Port des M052 anzuschließen, das ist der Port P2.


USB-Terminal V2.1: Menü

In der unteren Bildschirmzeile steht links der Steckplatz des verwendeten M052, in der Mitte die erkannte CAOS-Version und rechts das aktuelle Datum. Das obere grüne Fenster ist das Terminalfenster, hier werden alle Anzeigen dargestellt, die vom Vinculum kommen und nicht direkt von den Kommandos entgegen genommen werden. Das untere schwarze Fenster ist das Kommandofenster. Die Bedienung ist wie im CAOS-Menü. Die einzelnen Kommandos bewirken hier:

MENU
Löschen des Kommandofensters und das Auflisten aller Menüworte.

CLS
Löschen aller Anzeigen im Terminalfenster.

USB
Mit diesem Kommando werden Befehle direkt zum Vinculum ausgeben.
Ab CAOS 4.3 werden die Befehle unmittelbar hinter das Menüwort USB geschrieben, sonst wird dazu gesondert aufgefordert. Die möglichen Befehle können dem Vinculum-Handbuch entnommen werden.

LOAD [oooo [s] ]
Dient dazu ein CAOS-Programm vom aktuellen Verzeichnis des angeschlossenen USB-Sticks zu laden. Das Kommando arbeitet dabei genau wie das CAOS-Kommando LOAD zum Laden von Magnetband bzw. FLOAD zum Laden von Diskette. Durch Angabe des eines Parameters [oooo] kann ein Ladeoffset angegeben werden, ein weiterer Parameter [s] mit beliebigem Wert unterdrückt den Autostart von selbststartenden Programmen.
Vor Ausführung des Autostarts wird zunächst das Terminalprogramm beendet.
Der Name des zu ladenden Programms wird angefordert, falls dabei kein Dateityp angegeben wird, wird .KCC benutzt.

SAVE aaaa eeee [ssss]
CAOS-Programm abspeichern. Anzugeben sind wie von CAOS gewohnt die Anfangsadresse, Endadresse+1 und eventuell eine Startadresse. Der Dateiname wird wie bei LOAD abgefragt. Falls unter dem Namen bereits eine Datei existiert, kann nach der Frage 'Datei ueberschreiben (j/n)? ' entschieden werden, ob die vorhandene Datei gelöscht werden soll. Die Antwort mit 'N' bricht den Vorgang ab.
Der Name des zu speichernden Programms wird angefordert, auch hier wird .KCC benutzt falls dabei kein Dateityp angegeben wird.
USB-Terminal V2.1: DIR-Kommando

DIR
Anzeigen des sortierten Verzeichnisses. Das Verzeichnis kann man sich zwar auch anzeigen lassen durch das Direktkommando 'USB DIR', dann erhält man eine fortlaufende unsortierte Ausgabe mit jeweils einem Dateinamen pro Zeile. Bei großen Verzeichnissen wird das sehr schnell unübersichtlich, deshalb habe ich diese komfortable Variante der Verzeichnisanzeige eingebaut.
Es kann eine Dateimaske angegeben werden (ab CAOS 4.3 direkt hinter DIR, ansonsten nach der Eingabeaufforderung). Entsprechend dieser Maske werden die Dateinamen ausgefiltert. Die Maske kann die Jokerzeichen '?' für ein beliebiges Zeichen und '*' für einen beliebigen Rest von Dateiname oder Typ enthalten, keine Eingabe heißt dabei alle Dateien, ist also gleichbedeutend mit *.*
Nun werden zunächst alle Dateinamen vom DIR-Kommando eingelesen, entsprechend der Maske ausgefiltert und im RAM ab 200h abgelegt. Sind alle Dateinamen im Speicher, werden diese noch alphabetisch sortiert und erst dann im Terminalfenster in 3 Spalten angezeigt. Dabei pausiert die Anzeige nach 16 Zeilen, um die Anzeige in Ruhe lesen zu können.
Die Anzahl der Dateien und Verzeichnisse wird im Kommandofenster angezeigt und ist somit auch bei langen Listen immer sichtbar.
Zur Fortsetzung entweder die Leertaste (1 Zeile) oder Enter (1 Seite) drücken, BRK bricht die Anzeige auch vorzeitig ab.
ACHTUNG! Wenn Dateien mit LOAD und SAVE kopiert werden sollen, dann darf zwischendurch DIR nicht aufgerufen werden. Anderenfalls könnte das DIR-Kommando das geladene Programm überschreiben, da der RAM ab 200h zur Ablage der Dateinamen benutzt wird!

QUIT
Terminalprogramm beenden und zu CAOS zurückkehren. Der Interrupt, der während des Terminal-Modus aktiv ist, wird abgeschaltet.

reset
Dieses Menüwort ist nicht sichtbar, da es in Kleinbuchstaben vorliegt. Es kann aber dennoch eingegeben werden und löst einen RESET-Impuls für den Vinculum-Chip aus. Das ist gleichbedeutend mit dem Einschalten der Betriebsspannung. Man kann dadurch definierte Verhältnisse schaffen, falls sich mal etwas aufgehangen hat und befindet sich anschließend im Hauptverzeichnis eines angesteckten Sticks.


EDAS:

Hier gab es größere Änderungen in der Verwendung der Menüworte, deshalb aufmerksam lesen!

Da sowohl EDAS als auch die Vinculum-Programme im Speicher C000h-E000h liegen, muss bei Ausführung der Vinculum-Programmteile zwischen EDAS und Vinculum umgeschaltet werden. Unter CAOS 4.3 bzw. 4.4 kann davon ausgegangen werden, dass EDAS mit SWITCH 2,0 aus und mit SWITCH 2,E1 eingeschaltet wird. Die Vinculum-Programmebene bleibt ständig ein und wird von dem höher priorisierten EDAS überdeckt. Es soll auch EDAS 1.4 (im Modul M027) unterstützt werden oder ein EDAS welches in ein RAM-Modul geladen wurde. Deshalb muss in diesem Fall angegeben werden, mit welchen SWITCH-Befehlen EDAS ein- bzw. ausgeschaltet wird. Dies kann bei Aufruf des Menüworts DEVEX angegeben werden.

DEVEX [..]
Das CAOS-Kommando DEVEX aktiviert den USB-Treiber für EDAS 1.4-1.6 mit Umlenkung der Kassettenroutinen zum USB-Stick. Beim Aufruf von DEVEX wird ein Programmteil in den IRM-Bereich ab BA00h kopiert und von EDAS dort verwendet. Danach wird die Unterprogrammtabelle SUTAB in den IRM kopiert und mit den USB-Routinen modifiziert. Jetzt wird das EDAS-Modul eingeblendet und das Menüwort %EDAS zur Eingabe vorgeschlagen. So kann man durch Betätigen der Enter-Taste sofort EDAS starten.

Beim Aufruf von DEVEX können noch bis zu 4 Parameter angegeben werden, bis CAOS 4.2 müssen diese angegeben werden! Ohne Angabe dieser Parameter wird die Vorbelegung benutzt, welche für den KC85/5 mit EDAS im USER-ROM gilt und dem Aufruf DEVEX 2 E1 2 0 entspricht. Die ersten beiden Argumente dienen dem Zuschalten von EDAS (also SWITCH 2 E1), die letzten beiden zum Abschalten (also SWITCH 2 0). Der Speicherbereich des M052 muss bei abgeschaltetem EDAS sichtbar sein, das heißt bei Verwendung von zwei Modulen für EDAS (M027) und USB (M052), muss EDAS auf dem Steckplatz mit der kleineren Nummer gesteckt werden.
Beispiel: KC85/3 mit M027 auf Steckplatz 8, M052 auf Steckplatz C. Um EDAS mit USB-Treiber zu nutzen, sind folgende Kommandos nötig:
%SWITCH 2 0 BASIC ausschalten
%SWITCH C C1 Vinculum-Ebene des M052 einschalten
%DEVEX 8 C1 8 0 DEVEX mitteilen wie das M027 zu schalten ist
%EDAS EDAS starten.

EDAS mit USB-Treiber V2.1

EDAS wird wie gewohnt aufgerufen. Im Menü von EDAS gibt es nun das neue Menüwort USB. Damit werden alle USB-Zugriffe gesteuert. Nach dem Menüwort USB wird durch Angabe eines Parameters eine von 4 Funktionen ausgewählt werden, ohne Parameter wird der aktuelle Status und eine kleine Hilfe angezeigt was die Parameter bewirken – siehe Bild oben.

Folgende Funktionen gibt es jetzt:
USB Anzeige ob USB-Umleitung aktiv ist und Liste der Kommandos
USB 0 USB-Umleitung ausschalten
USB 1 USB-Umleitung einschalten
USB 2 Anzeige des aktuellen Verzeichnisses des USB-Sticks
USB 3 Wechsel des USB-Verzeichnisses, Eingabe nach dem angezeigten CD

Die Variante mit dem Parameter erschien mir als vorteilhaft, da hierfür nur ein zusätzliches Menüwort in EDAS erscheint. Wer sich die Funktion der Parameter nicht merken kann, ruft einfach USB ohne Parameter auf und bekommt die möglichen Kommandoformen angezeigt.

Mit USB 0 bzw. USB 1 wird die Umleitung zum USB-Stick ein- bzw. ausgeschaltet. Die USB-Routinen ersetzen dabei die Kassettenroutinen von CAOS. Bei EDAS 1.6 wird deswegen automatisch der Tape-Modus angewählt. Die Anzeige in der Statuszeile bleibt „Tape“, da EDAS selbst die Umleitung gar nicht bemerkt. Ob der USB-Stick angewählt ist oder nicht, sieht man nur nach dem Aufruf des Kommandos USB. Wird bei EDAS 1.6 auf DISK umgeschaltet, dann erfolgt der Zugriff auf das D004, auch wenn USB=ein ist. Um danach wieder mit USB weiter zu arbeiten, ist USB 1 erneut aufzurufen. Soll auf Kassette zugegriffen werden, dann ist USB 0 zu wählen und falls nötig, TAPE aufzurufen. Mit EDAS 1.6 kann man also während der Arbeit zwischen allen drei Medien wechseln.

USB 2 zeigt den Inhalt des aktuellen USB-Verzeichnisses an, allerdings nicht so komfortabel wie im Terminalmodus. Für eine alphabetische Sortierung der Dateinamen steht leider kein RAM zur Verfügung. Nach 20 Bildschirmzeilen pausiert die Anzeige, zum Fortsetzen entweder die Leertaste drücken um eine einzelne Zeile zu sehen oder Enter um 20 weitere Zeilen anzuzeigen. Abbrechen mit BRK ist nicht möglich.

USB 3 gestattet das Verzeichnis zu wechseln. Dazu wird CD angezeigt, welches mit dem Verzeichnis zu ergänzen ist. Durch Eingabe von zwei Punkten gelangt man eine Verzeichnisebene höher, ein Schrägstrich führt ins Hauptverzeichnis.
Tipp: Wenn man das vorgegebene CD löscht und an diese Stelle ein anderes Vinculum-Kommando schreibt, dann lassen sich auch weitere Operationen ausführen, z.B. Datei löschen oder umbenennen.

ACHTUNG! Wenn EDAS mit QUIT bzw. EXIT beendet wird, wird dabei nicht automatisch die modifizierte SUTAB zurückgestellt. Dies sollte man vorher durch Aufrufen von USB 0 im EDAS-Menü tun.


BASIC:

Auch hier gab Änderungen, so lässt sich jetzt auch aus BASIC heraus das Verzeichnis wechseln und der Verzeichnisinhalt anzeigen.

Im CAOS-Menü befinden sich zwei neue Menüworte BASIC und REBASIC. Diese stehen im Adressbereich ab C000h des Vinculum-Programms wenn dieses im KC-Speicher eingeblendet ist. Die Menüworte kommen vor den gleichnamigen Menüworten des CAOS beim KC85/4 und werden deshalb an deren Stelle benutzt. Beim KC85/3 ist ohnehin mit SWITCH 2 0 der BASIC-ROM abgeschaltet werden, um Menüworte aus anderen Speicherebenen zu sehen.
Da sowohl BASIC als auch die Vinculum-Programme im Speicher C000h-E000h liegen, muss bei Ausführung der Vinculum-Programmteile BASIC abgeschaltet werden. Dies wird durch direkte Programmierung des PIO-Port 88H vorgenommen. Dies funktioniert beim KC85/3-5, beim KC85/2 mit BASIC-Modul allerdings nicht, da BASIC dort nicht unabhängig vom CAOS ausgeblendet werden kann.

BASIC mit USB-Treiber V2.1

BASIC und REBASIC
Aufruf von BASIC mit einem Zusatzprogramm zur Umlenkung der Kassettenroutinen zum USB-Stick. Die Funktionalität ist wie bei BASEX und SERVICE (Diskettenerweiterung vom D004). Aus BASIC heraus lässt sich mittels CALL*... auf die USB-Funktionalität zugreifen. Dabei sind folgende Unterprogramme definiert:

CALL*DE Anzeige des aktuellen Verzeichnisses (Hinweise siehe bei EDAS)
CALL*F0 Wechsel des Verzeichnisses (Hinweise siehe EDAS)
CALL*150 Umschaltung zwischen USB und Kassette

Alle anderen Treiberaufrufe, die durch BASEX und SERVICE vom D004 bzw. CAOS4.4 bekannt sind, werden ebenfalls abgefangen und zeigen als Hinweis die belegten Funktionen an. So z.B. bei CALL*E1 im Bild oben.
Ist der USB-Treiber aktiv, greifen die BASIC-Befehle wie CLOAD, CSAVE aber auch LIST#1 statt auf Kassette auf den angeschlossenen USB-Stick zu.

BSAVE
Im CAOS-Menü gibt es schließlich noch ein weiteres Menüwort BSAVE. Dieses dient dazu, BASIC-Programme als selbst startende Maschinencode-Programme abzuspeichern. Dazu ist zunächst das BASIC-Programm unter BASIC in den Speicher zu bringen. Dann wird BASIC verlassen und BSAVE aufzurufen (beim KC85/3 vorher noch SWITCH 2 0).
BSAVE zeigt die Adressen an, die verwendet werden, dann wird noch der Dateiname angefordert. Wird kein Dateityp angegeben, dann wird *.KCB benutzt.

ACHTUNG! Wenn BASIC mit BYE beendet wird, wird dabei nicht automatisch die modifizierte SUTAB zurückgestellt. Dies sollte man bei Bedarf vorher durch Aufrufen von CALL*150 aus BASIC heraus tun.



Betrieb des M052 am KC85/2

Das CAOS2.2 oder HC900-CAOS des KC85/2 ist nicht ausreichend für die USB-Software des M052. Um dennoch die USB-Software nutzen zu können muss CAOS 3.1 in Form eines Moduls M006 oder M025 gesteckt werden. Das Modul M006 muss dabei auf einem höheren Modulsteckplatz (z.B. C) als das M052 (z.B. 8) gesteckt werden, damit der Speicherbereich C000-E000 vom M052 überdeckt werden kann. Der Betrieb von BASIC mit USB-Erweiterung ist in dieser Konfiguration nicht möglich! Ein M006 mit HC901-CAOS ist nicht verwendbar, da im HC901-CAOS einige benutzte Funktionen fehlen.
Zunächst ist mit JUMP C in CAOS 3.1 zu wechseln, dann kann mit SWITCH 8 C1 die USB-Ebene des M052 eingeblendet werden.
Für die Nutzung von EDAS ist als erstes das M027, als zweites das M052 und als drittes das M006 zu stecken.
Diese Nutzungsvarianten wurden noch nicht ausreichend getestet, es kann also durchaus zu unvorhergesehenen Programmverhalten kommen.


Im Downloadbereich findet Ihr das aktuelle Terminalprogramm, den Quelltext dazu und eine Beschreibung im PDF-Format zum Ausdrucken.