Beschreibung für die MOUSEALL-Treiber

von Henrik Haftmann

Serielle Maus am KC

Nachdem Herr Felgentreu eine parallele Maus für den KC vorgestellt hat, soll nun eine Anschlußmöglichkeit einer seriellen PC-Maus an den KC beschrieben werden. Die Vorteile sind ein äußerst geringer Hardwareaufwand und die Nutzung des zumeist freien 2. Kanals eines M003 V.24.

Voraussetzungen sind eine Mouse-Systems-kompatible Drei-Tasten-Maus und ein M003 V.24. Die meisten Microsoft-kompatiblen Mäuse haben auf ihrer Unterseite einen Schiebeschalter, mit "2" und "3" beschriftet, mit dem die Maus in den Mouse-Systems-Modus gebracht werden kann. Dazu ist dieser Schiebeschalter auf Position "3" zu stellen.

Reine Microsoft-Mäuse, erkennbar an nur 2 Tasten, sind mit dieser Treibersoftware nicht anschließbar, es ist jedoch prinzipiell möglich. Im Muster tut es eine 30-DM-Maus "ELITE". Für den Anschluß der Maus ist ein Adapterstück vom 9- (oder 25-) poligen Sub-D-Stecker zum 5-poligen DIN-Diodenstecker erforderlich, welches selbst herzustellen ist.

Dafür benötigt man:

1 * Diodenstecker 5-polig,
1 * 9- bzw. 25-polige Sub-D-Steckerleiste ("Papa"),
eine passende Posthaube,
ein Stück 4-adriges Kabel

Folgende Anschlüsse sind miteinander zu verbinden:

       DIN      Sub-D     Sub-D
(5-pol.) (9-pol.) (25-pol.)
RxD 1 -- 2 -- 3
GND 2 -- 5 -- 7 (+ Abschirmung)
TxD 3 -- 3 -- 2
DTR 5 -- 4,7 -- 4,11,20

Mehr Bastelaufwand ist nicht erforderlich!! Das Adapterkabel ist zudem universell zur KC-PC-Kopplung einsetzbar.

Nun zur Treibersoftware. Es gibt 3 Versionen, die sich im Komfort und im Speicherplatzbedarf unterscheiden. Alle Programme sind auf KC85/2, /3 und /4 gleichermaßen lauffähig, müssen aber wegen einiger Arbeitszellen im RAM stehen. Die einfachste Version ist MOUSE0.KCC.

Dieser Treiber mit einer Länge unter 100h ist wie die beiden anderen auch frei im Speicher verschieblich. Er ist fest eingestellt auf die Nutzung des Kanals 2 (rechts) des 1. gefundenen V.24-Moduls. Meist wird am Kanal A der Drucker angeschlossen sein.

Nach dem Menüwort %MOUSE können 2 Parameter angegeben werden.

1. Parameter:

    • Tastencode der rechten Maustaste (hexadezimal!). Wenn =0, dann Totlegen des Maustreibers

2. Parameter:

    • Sensitivität der Mausbewegung, getrennt nach X (Low-Teil) und Y (High-Teil) innerhalb der Hexadezimalzahl. Optimal ist 1010. Große Zahlen bedeuten eine geringere Sensitivität.

Werden 1 oder beide Parameter weggelassen, werden die vorhergehenden Werte beibehalten und die evtl. totgelegte Maus reinitialisiert. Nach Reset genügt es so zumeist, einfach %MOUSE aufzurufen.

Softwaremäßig werden die Mausbewegungen in Cursorfunktionen gewandelt. Auf diese Weise kann man den Cursor beliebig bewegen und braucht keinen extra Mauszeiger. Die linke Maustaste ist fest mit "ENTER" belegt, die rechte kann man wahlfrei belegen.

Defaultmäßig wird "F6" angenommen. Die mittlere Maustaste dient zum Ein- und Ausschalten der Cursorbewegungen von der Maus. Sonst passiert es häufig, daß man z.B. beim Eintippen von Text an die Maus anstößt und den Cursor unbemerkt verschiebt, da man meist unentwegt auf die Tastatur schaut.

Achtung! Der Maustreiber muß in einem Speicherbereich liegen, der JEDERZEIT im Zugriff ist. Insbesondere darf der Treiber bei Verwendung in BASIC oder Riemer-WordPro, die ihrerseits bei freigegebenem Interrupt den IRM schalten, NICHT im IRM stehen. Bei BASIC empfiehlt sich der Bereich 200h-300h, wenn überhaupt, und bei WordPro (hier recht zweckmäßig) der Bereich ab C000h.

Speziell für KC85/4-User mit einer Schreibmaschine als Eingabegerät und Drucker am Kanal 2 der SIO ist der Treiber MOUSE1.KCC da. Hier besteht das wenig bekannte SIO-Problem, daß eine SIO eigentlich nur einen interruptfähigen Kanal hat. Mit einem speziellen Softwaretrick ist es möglich, die Maus am Kanal 1 (links) anzuschließen und beide Kanäle per Interrupt zu betreiben.

MOUSE1.KCC ermöglicht aber auch den Anschluß an selbstgebastelte V.24-Module mit anderer SIO-Adresse. Voraussetzing ist hierbei nur, daß die CTC genau wie im V.24-Modul adreßmäßig der SIO folgt.

Die Parameter sind:

1. Parameter:

    • V.24-Kanal-Nummer des M003 (1 oder 2) oder
    • SIO-Kanal-Buchstabe (A oder B) des M003 oder
    • SIO-Kanal-Adresse (>10h) eines USER-Moduls oder
    • Totlegen des Maustreibers, wenn Parameter =0

2. Parameter:

    • Tastencode der rechten Maustaste (wie oben 1. Parameter)

3. Parameter:

    • Sensitivität der Mausbewegungen (wie oben 2. Parameter)

Das Programm ist etwas länger als 100h lang.

Es soll tatsächlich KC-User geben, denen ein V.24-Modul nicht reicht! Drucker (Plural!), Netzwerk, Tastatur, Plotter und viele andere mögliche Peripherie schreien manchmal nach möglichst vielen Buchsen.

Nun unterstützt CAOS im Gegensatz zu seiner Beschreibung kaum den Einsatz mehrerer solcher Module. Denn das würde erfordern, daß die Module möglichst ausgeschaltet gehalten und nur bei Zugriff kurz eingeschaltet werden. Es wurde versucht, einen kleinen Schritt nach vorn zu gehen, indem die Maus an dem 2. V.24-Modul anschließbar ist, das sich für gewöhnlich im "Schatten" des 1. befindet. Es geht! - trotz Interrupt.

Mit dem Treiber MOUSE2.KCC kann die Maus an jeder Buchse von 2 V.24-Modulen angeschlossen werden.

Es sind 4 Parameter angebbar:

1. Parameter:

    • Steckplatz desjenigen V.24-Moduls, an dem die Maus hängt Wenn =0, dann Totlegen der Maus

2. - 4. Parameter:

    • wie 1. - 3. Parameter bei MOUSE1.KCC

Auch bei diesem Programm ist es möglich, eine USER-SIO mit der Mausabfrage zu beschäftigen. Die Programmlänge beträgt ca. 1C0h.

Viel Spaß mit Ihrer neuen Maus wünscht haftmann#software.

P.S.: Es existiert bereits ein Maustreiber mit "echtem" Mauspfeil, vorerst nur am KC85/4. Die Spriteverwaltung macht aber eine Umlenkung aller Betriebssystemroutinen erforderlich, sodaß ein neues Betriebssystem (siehe Modulliste: M000!) fällig wird! Mal sehen, wie lange die Ideenumsetzung dauert...

Noch einige Hinweise bei Problemen

Wenn die Maus an einen KC85/4 Kanal 2 (rechts) am 1. V24-Modul angeschlossen wird, darf die Maus nicht bewegt werden, da sonst gelieferte Bytes als Tastencodes interpretiert werden (wenn mal ein 0Dh dabei gewesen ist). Andererseits läßt sich auf diese supereinfache Weise die prinzipielle Maus-Funktion nachweisen. Zur Unterdrückung solcher Randeffekte mit der Maus genügt bloßes Anwählen von %V24OUT (Umschalten in den Pollingbetrieb).

Funktioniert die Maus absolut nicht, kann es sein (insbesondere bei billigen Mäusen), daß die negative Spannung nicht ausreicht. Hierbei ist eine Modifikation des V24-Moduls vonnöten: Auf der Leiterseite dürfte sich ein Widerstand befinden. Dieser entspricht so nicht dem Original-Schaltplan. Er ist dort abzulöten und in die leicht zu findenden Lötaugen auf der Bestückungsseite hinter den 4 Miniplastdioden einzusetzen, wo er nach Schaltplan auch hingehört.

Was die Maus dem Computer sagt...

Eine serielle PC-Maus kann im allgemeinen in 2 Modi betrieben werden. Ein Schiebeschalter an der Mausunterseite schaltet zwischen diesen um.

Leitungen

Eine Billig-Maus kommt mit 4 Leitungen aus.

  • RxD (TxD) versorgt Maus mit negativer Spannung (-9V gemessen)
  • DSR (DTR) versorgt Maus mit positiver Spannung (+5V gemessen)
  • TxD (RxD) liefert serielles Signal an PC
  • GND (GND) ist das Bezugspotential (Masse)

Außerdem liefert der Computer zur Mausabfrage verm. auf der Leitung TxD (an der Maus also RxD) eine Kennung, worauf die Maus spezifisch antwortet. Diese Kennungen sind leider (noch) unbekannt... Auf diese Weise erkennt der Maustreiber eines PC in der Initialisierungsphase die (nicht) angeschlossene Maus. Die Datenübertragungsrate ist einheitlich 1200 Baud.

Microsoft-Mode
(Stellung "2") Übertragung: 7 Bit ohne Parität

Hier hat sich die Firma Microsoft etwas einfallen lassen: Damit der Computer die Maus suchen kann, sendet die Maus auf Abfrage ein Kennbyte zurück. Wenn die Leitung RTS nach LOW geht, sendet die Maus als Kennung ein "M" wie "Microsoft"

Die Maus liefert je Aktion 3 Bytes (im "Dreierpack"). Eine "Aktion" ist

  • Drücken oder Loslassen einer Maustaste
  • Bewegen der Maus (Die Datenübertragung beginnt immer mit Bit 0.)
1. Byte:
Tastenstati und Richtungsinfo
6 5 4 3 2 1 0
1 L R Y Y X X
0,1.. nicht belegt (i.a.=1)
R=1.. rechte Maustaste gedrückt
L=1.. linke Maustaste gedrückt
Y=1.. Y-Bewegung erfolgt von unten nach oben, sonst keine Bewegung oder von oben nach unten
X=1.. X-Bewegung erfolgt von rechts nach links, sonst wie oben.
2. Byte:
Schrittanzahl in X-Richtung im Zweierkomplement
6 5 4 3 2 1 0
0 x x x x x x
x.. Schritte im Zweierkomplement. Negative Zahl (Bit 5 =1) bedeutet von rechts nach links. Im allgemeinen werden diese vorzeichenrichtig dem sog. "Mickeyzähler" im Maustreiber addiert / subtrahiert. Der Mickeyzähler beinhaltet die momentane Mausposition.
3. Byte:
Schrittanzahl in Y-Richtung im ZWK
6 5 4 3 2 1 0
0 y y y y y y
y.. Schritte wie oben. Negative Zahl bedeutet von unten nach oben.

Mouse-Systems-Mode
(Stellung "3") Übertragung: 8 Bit ohne Parität

Es werden je Aktion gleich 5 Bytes übermittelt. Die Wortlänge beträgt nun 8 bit. Vorteile sind:

  • Die mittlere Maustaste kann abgefragt werden.
  • Die mögliche Schrittzahl ist größer und vermindert ein "Verhaspeln" des Maustreibers bei sehr schnellen Mausbewegungen.
  • Die Verarbeitung der Bytes ist unkomplizierter.

Trotzdem - das bessere hat oftmals nur geringe Chancen. Allerdings gibt es in diesem Modus kein Kennbyte wie bei Microsoft.

1. Byte:
Tastenstati
7 6 5 4 3 2 1 0
1 0 0 0 0 L M R
L=0 (!) .. linke Maustaste gedrückt
M=0 .. mittlere Maustaste gedrückt
R=0 .. rechte Maustaste gedrückt
2. Byte:
Schrittzahl in X-Richtung im 8-bit-Zweierkomplement
7 6 5 4 3 2 1 0
x x x x x x x x
x .. Schritte im ZWK. Negative Zahl bedeutet von rechts nach links.
3. Byte:
Schrittzahl in Y-Richtung
7 6 5 4 3 2 1 0
y y y y y y y y
y .. Schritte im ZWK. Negative Zahl bedeutet von oben nach unten!
4. Byte:
wie 2. (aber nicht die Wiederholung desselben, sondern ein neuer Wert!)
5. Byte:
wie 3. (Kommentar dito)