Das KC85-Modul M052 besitzt 2 USB-Buchsen, nun ist mit dem Modul auch die Verwendung einer USB-Tastatur am KC85 möglich.

Das M052 (mit oder ohne Netzwerk) besitzt 2 USB-Buchsen. Die verfügbare Firmware des VNC1 (VDIP1 oder VDIP2) unterstützt leider nur die USB2-Buchse für den Anschluss eines Datenträgers (USB-Stick, USB-Festplatte). Es existierte schon lange der Wunsch, auch für die USB1-Buchse eine sinnvolle Verwendung zu schaffen.

Bereits 2014 hatte ich deshalb versucht, eine USB-Tastatur dort anzuschließen. Der Befehlsumfang des VNC1 lässt eine Kommunikation auf einer relativ niedrigen Ebene zu. Mit diesen Befehlen ist es mir zwar gelungen, eine Tastatur zu erkennen und abzufragen. Nach umfangreichen Tests habe ich die Weiterentwicklung aber aus verschiedenen Gründen abgebrochen. Unter anderem wurden nur ausgewählte Tastaturmodelle erkannt, die Abfrage war nur im Polling vom KC aus möglich und die gesamte Decodierung der Tastencodes war auf der KC-Seite nötig. Das kostet sehr viel Rechenzeit und bremst den KC enorm aus.

Anfang 2018 gab es einen Neuansatz mit einer von DL entwickelten Platine auf Basis VNC2, siehe: http://www.kingsteners.homepage.t-online.de/Erweiterungen

Diese "Modul-48" genannte Platine passt 1:1 an Stelle des VDIP1 auf die Platine des M052 ohne Netzwerk. Die USB-Buchse ist dabei auf der Unterseite der kleinen Platine eingelötet. Das hat den Charme, dass dann die beiden USB-Buchsen optisch auf der gleichen Höhe sitzen. Die rechte Buchse ist nur um 180° gedreht, man muss also aufpassen in welcher Richtung man einen USB-Stick einsteckt. Aber sonst eine Super-Idee von DL - siehe Foto:

Es funktioniert aber auch mit einem käuflich erhältlichen Modul V2DIP1-48. Die käuflichen Module haben jedoch viel dickere Stiftleisten, welche nicht ohne Änderungen auf die Buchsen der M052-Platine passen. Da muss entweder ein anderer Sockel auf die M052-Platine eingelötet werden oder die Stiftleisten am V2DIP1-48 müssen gewechselt werden. Die USB-Buchse sitzt dann wie bei dem VDP1 höher und die Original-Modulblende mit den versetzten USB-Buchsen passt wieder. Auch davon ein Bild von meinem Testaufbau:

Auf dem Modul-48 ist der VNC2-Chip von FTDI, also die zweite Generation nach dem VNC1 eingesetzt, welcher sich vom Anwender mit einer eigenen Firmware versehen lässt. Damit haben wir es geschafft, auf eine relativ einfache Art und Weise USB-Tastaturen an den KC anzuschließen. Die KC85-Firmware für den VNC2 zeichnet sich durch folgende Eigenschaften aus:

  • USB-Stick und Tastatur können wahlweise an USB1- oder USB2-Buchse angeschlossen werden.
  • Die Kommandos für den Dateizugriff für den Stick sind kompatibel mit der VNC1-Firmware
  • Die Tastencodes der USB-Tastatur werden seriell über die bisher nicht genutzten Signale DATAREQ# (AC4) und DATAACK# (AC5) übertragen.
  • AC4 = DATAREQ# dient dabei als Signal vom M052-PIO zum VNC2 und quittiert die Abholung der Datenbits (Taktsignal)
  • AC5 = DATAACK# dient dabei als Signal vom VNC2 zum M052 und liefert die Tastaturcodes
  • Zwei separate Tastaturebenen CAOS und CP/M, umschaltbar über Taste "Rollen"
  • Über die Tastenkombination STRG+ALT+F12 kann der aktuelle Zustand von NUM ein/aus abgespeichert werden (es erfolgt eine Ausgabe 0 oder 1 am KC)

Die M052-Software musste aber auch grundlegend überarbeitet werden um die Tastencodes und Dateikommandos aus dem Datenstrom zu filtern. Damit das Signal von AC5 (PIO-B5) Interrupt auslösen kann, arbeitet PIO-Port B im Bitbetrieb und löst somit einen Interrupt aus, sobald dieses auf Low geht und ein Tastencode empfangen wird. Da PIO-Port A aber im Bitbetrieb arbeitet, löst auch dort der Empfang von Daten einen Interrupt auf dem PIO-Kanal B aus.  Es kann also nur eine Interruptroutine geben. Diese muss zuerst unterscheiden, welche Quelle den Interrupt ausgelöst hat. Das heißt aber auch, dass der M052-Interrupt immer aktiv sein muss. Und je nachdem in welchem Zustand sich der KC gerade befindet, muss auf ankommende Daten unterschiedlich reagiert werden. Die USB-Software Version 2.7 zeichnet sich durch folgende Eigenschaften aus:

  • Nach Initialisierung des PIO-Interrupts kann das Modul M052 auch wieder ausgeschaltet werden, die Interruptroutine wird in den RAM0 kopiert und schaltet für den Zugriff das Modul kurz ein und anschließend wieder in den ursprünglichen Zustand.
  • Die Initialisierung beim Systemstart ab CAOS 4.7 initialisiert die Tastatur automatisch, dabei wird auf die Bootmeldung des VNC2 gewartet und diese angezeigt.
  • Für vorhergehende CAOS-Versionen muss das M052 eingeschaltet und danach das Menüwort "%tastatur" aufgerufen werden. Auch hier kann das M052 anschließend wieder ausgeschaltet werden. So können beispielsweise andere Speichermodule auf dem Adressbereich C000H... genutzt werden.
  • Es gibt jetzt noch ein zusätzliches CAOS-Menüwort "%udir" zur Anzeige des Verzeichnisses direkt von CAOS aus.
  • Es dürfen keine höher als das M052 priorisierten Module auf C000H eingeschaltet werden (mit Ausnahme der internen Module BASIC, UDSER-ROM und CAOS-ROM-C). Das M052 sollte also auf einen relativ niedrigen Steckplatz vor allen anderen Speichermodulen gesteckt werden.
  • Der Tastaturinterrupt belegt in der M052-Software V2.6 im RAM0 ab CAOS 4.7 noch den Adressbereich von 00AEH bis 00FFH und bis CAOS 4.6 den Adressbereich ab 0108H bis 0144H. Für die Version 2.7 wurde die ISR nochmals optimiert und belegt nun nur noch den Adressbereich 00AEH bis 00E0H ab CAOS 4.7 und 108H bis 013AH.
    Für CAOS-Versionen vor 4.7 waren noch Programmteile wie FLOAD, BASEX und DIENST erforderlich, deshalb ist hier erst ab 0108H ein freier Bereich vorhanden.
    Wegen der permanenten Speicherknappheit im Monitor-RAM von 0 bis 01FFh kann es trotzdem zu Überschneidungen mit anderen Programmen und damit Fehlfunktionen und Programmabstürzen kommen.
  • Ab USB-Version 2.7 gibt es außerdem eine Möglichkeit für externe Programme den FIFO-Interrupt zu sperren und diese Daten im Polling abzufragen.


Getestet wurde die neue Software bisher an einem KC85/5 mit CAOS 4.7, einem KC85/4 mit CAOS 4.2 sowie einem KC85/3 mit CAOS 3.1, wobei der Tastaturtreiber nur unter CAOS 4.7 automatisch mit dem Einschalten des KC aktiviert wird. Bei den vorhergehenden CAOS-Versionen muss erst mittels Kommandos die Tastatur aktiviert werden:

%SWITCH 2 0 (BASIC aus, falls es ein KC85/3 ist)
%SWITCH <M052> C1 (EEPROM des M052 auf C000h einblenden)
%tastatur (Tastaturtreiber initialisieren)

Hinweis: Ein USB-Tastatur-Treiber für die CP/M-Betriebsart ist inzwischen ebenfalls erstellt und getestet. Der Treiber USB15.DRV muss zusammen mit dem bereits existierenden Treiber M052.DRV unter CP/M bzw. MicroDOS oder ML-DOS mit dem Programm DRIVER.LBR in's Grundgerät übertragen werden. Am Besten nimmt man die beiden Treiber in die Bibliothek DRIVER.LBR auf und lässt sie beim Systemstart automatisch laden.
Der Treiber USB15.DRV aktiviert übrigens beim Start automatisch die CP/M-Betriebsart der Tastatur (Rollen=EIN).

Die Software 2.7 für das M052, einschließlich CP/M-Treiber befindet sich im Downloadbereich in der Kategorie EPROM-Daten.