potmux
Zusatzmodul für den Keyman64 -- zusätzliche Joystick-Buttons an Tasten binden
Das Potmux ist ein kleines Zusatzmodul für den C64, das es dem Benutzer erlaubt, die Potentiometer-Leitungen der Control-Ports optional umzuleiten, so dass diese nicht mehr am SID anliegen und stattdessen zu anderen Zwecken verwendet werden können.
In erster Linie soll das Modul dazu dienen, im Zusammenspiel mit einem Keyman64 zusätzliche, an die Potentiometer-Leitungen angeschlossene Joystick-Buttons mit benutzerdefinierten Tasten auf der Tastatur zu verknüpfen.
Das auf dieser Seite bereitgestellte Kommandozeilenprogramm potmux
kann verwendet werden, um einem C64-Programm eine spezifische
Potmux-Konfiguration voranzustellen. Das resultierende Programm
konfiguriert zunächst den Keyman64 über dessen serielle Schnittstelle,
die dazu an den Kassetenport-Leitungen “Cassette Sense” und “Cassette
Write” angeschlossen wird, und startet daraufhin das eigentliche
Programm.
Die Dokumentation ist sowohl auf deutsch als auch auf englisch verfügbar.
Arbeitsweise
Im C64 dient ein 4066 IC dazu, jeweils zwei der vier analogen Leitungen an den Control-Ports (POTAX, POTAY, POTBX und POTBY) an die beiden analogen Eingänge des SIDs weiterzuleiten. Dabei bestimmen die Leitungen PA6 und PA7 der CIA, welche Leitungen an den SID weitergeleitet werden.
Dieses Modul ersetzt den 4066 und fügt die Möglichkeit hinzu, die vier analogen Leitungen der Control-Ports alternativ an einen anderen Ort weiterzuleiten.
Ist das Enable-Signal des Moduls /EN high, werden die Leitungen wie gewohnt abhängig von PA6 und PA7 an den SID weitergeleitet.
Ist /EN dagegen low, werden die Leitungen POTAX, POTAY, POTBX und POTBY stattdessen auf die Pins A1, A2, B1 und B2 weitergeleitet.
Dokumentation
- Downloads
- Bestellung von Bausätzen
- Aufbau
- Installation des
potmux
Kommandozeilentools - Test
- Anschluss und Konfiguration des Keyman64
- Programme mit Button-Konfigurationen verknüpfen
- Lizenz
Downloads
Quellen
Die Quelldistribution enthält den Schaltplan sowie das Layout der Platine im KiCad format.
Die letzte stabile Version ist potmux-1.0.tar.gz.
Alle veröffentlichten Versionen finden sich unter /download/potmux
Neuste Entwicklungen können auf github verfolgt werden:
git clone https://github.com/hbekel/potmux
Binärdateien
- potmux-1.0.zip (Kommandozeilentool, 32bit Windows Executable)
- potmux-r2-gerber.zip (Gerber-Dateien für die Herstellung der Platine)
Bestellung von Bausätzen
Ich biete Bausätze zum Preis von 5€ pro Stück an. Der Bausatz enthält ein Potmux-Platine sowie alle benötigten Bauteile (ausgenommen Verbindungskabel). Weltweiter Versand per Post ist kostenlos.
Bestellungen könnt Ihr per Mail an henning.liebenau@protonmail.com tätigen.
Bitte verwendet das Wort “potmux” im Betreff. Gebt in der Mail euren vollen Namen, Eure Lieferadresse und die Anzahl der gewünschten Bausätze an. Bitte beachtet, dass die Anzahl der Bausätze pro Person auf zwei Stück beschränkt ist. Ihr bekommt dann von mir per Mail weitere Informationen zur Bezahlung per Überweisung. Bitte beachtet, dass im voraus gezahlt werden muss, um die Bestellung verbindlich zu bestätigen.
Hinweise zur Verfügbarkeit
Ich versuche stets eine ausreichende Menge an Bausätzen auf Lager zu halten. Bitte beachtet jedoch, dass dies mit geringem Budget und bei minimaler Gewinnmarge in meiner Freizeit passiert. Mein Ziel ist es primär, der Community meine Hardware zugänglich zu machen, und nicht etwa ein profitables Geschäft zu betreiben.
Sollte ich also momentan keine Bausätze auf Lager haben kann es durchaus einige Wochen dauern, bis ich eine neue Serie von Bausätzen produzieren und somit eurer Bestellung nachkommen kann. Unter Umständen muss ich auch warten, bis eine ausreichende Anzahl an Vorbestellungen eingeht, bevor ich selbst die nötigen Bauteile zu einem ausreichend günstigen Preis bestellen kann. In diesen Fällen werde ich Euch natürlich regelmäßig über den Status Eurer Bestellung informieren. Es bedarf also unter Umständen ein wenig Geduld und auch Vertrauen von Eurer Seite.
Aufbau
Während des Aufbaus können die Liste der Bauteile und der Bestückungsplan zur Orientierung dienen.
Das Modul ersetzt U18 auf der 250469 bzw. U28 auf älteren Hauptplatinen. Falls das IC noch nicht gesockelt ist, muss es ausgelötet und ein geeigneter Sockel eingesetzt werden.
Aufbauanleitung
- Den Widerstand R1 auf der Unterseite der Platine einlöten
- Die Keramikkondensatoren C1 und C2 am oberen Rand einlöten und die gewinkelte, sechspolige Stiftleiste am unteren Rand einlöten
- Die mitgelieferte IC-Adapterleiste in zwei gleich große Teile von je sieben Pins schneiden
- Die IC-Adapterleisten in den Sockel auf der Hauptplatine einsetzen. Dabei werden die etwas dünneren Pins in den Sockel gesteckt. Die Platine wird auf die Adapterleisten setzen, wobei die zwei Reihen mit je sieben Löchern verwendet werden (dies sollte offensichtlich sein)
- Die Adapterleisten von oben anlöten
- Nun werden die oben aus der Platine ragenden Pins abgeschnitten, so dass die Oberfläche wieder möglichst flach ist. Dadurch kann der Sockel für U2 flach aufliegen. Es müssen dazu zumindest die Pins der rechten Adapterleiste und eventuell die Pins des Widerstandes abgeschnitten werden.
- Die Sockel für U1 und U2 einlöten
- Die ICs U1 und U2 einsetzen
- Das Modul in den Sockel auf der Hauptplatine einsetzen
- Nun mit dem Test fortfahren
Liste der Bauteile
Referenz | Typ | Wert | Bauform/RM |
---|---|---|---|
C1 | Keramikkondensator | 100nF | 2.54mm |
C2 | Keramikkondensator | 100nf | 2.54mm |
R1 | Widerstand 1/4W | 4.7kΩ | 6.5mm, ∅ 2.5mm |
U1 | 74HC4052 IC | - | DIP-16 |
U2 | 74HC4052 IC | - | DIP-16 |
- | Stiftleiste gewinkelt | 6pin | 2.54mm |
- | IC-Adapterleiste | 7pin | 2.54mm |
- | IC-Adapterleiste | 7pin | 2.54mm |
- | Steckbrücke | - | 2.54mm |
Sockel sind nicht aufgelistet
Bestückungsplan
Schaltplan
Installation des potmux
Kommandozeilentools
Binary
Das Windows 32bit Executable potmux.exe
findet sich in der
Zipdatei. Es kann in einem beliebigen Verzeichnis
installiert und dann auf den Pfad gelegt werden.
Source
Linux & MacOSX
$ tar vxzf potmux-1.0.tar.gz
$ cd potmux-1.0
Es wird der KickAssembler in Version 4 benötigt. Das Makefile muss
entsprechend angepasst werden. Die Variable KASM
muss auf eine
KickAssembler-Installation zeigen.
$ make
$ make install
Dies installiert nach erfolgreicher Kompilierung das
tool potmux
nach /usr/local/bin
. Die
PREFIX
-Variable kann für die Installation mit einem anderen Präfix
benutzt werden, z.B. installiert make PREFIX=/usr install
nach
/usr/bin
. Die Variable DESTDIR
kann für die Installation in ein
lokales Verzeichnis mit dem gegebenen Präfix verwendet werden.
Test
Funktion der Paddles/Mäuse prüfen
Falls Paddles und/oder eine Maus vorhanden sind, sollte zunächst geprüft werden, ob diese nach wie vor funktionieren. Dazu kann ein Spiel mit Paddle-Unterstützung oder ein spezielles Testprogramm verwendet werden.
Alternative Weiterleitung prüfen
Mit Hilfe der mitgelieferten Steckbrücke die Pins /EN und GND überbrücken. Dies kann gefahrlos auch während des Betriebs vorgenommen werden.
Dadurch wird /EN auf low gezogen, die Potentiometer-Leitungen sollten nicht mehr an den SID geleitet werden und Paddles oder eine Maus sollten folglich nicht mehr funktionieren.
Nun den Joystick anschließen und mit Hilfe eines Multimeters prüfen, ob beim Drücken der zusätzlichen Joystick-Buttons die zugehörigen Pins am Modul auf Masse geschaltet werden:
Potentiometer line | C64 Control Port | Potmux pin |
---|---|---|
POTAX | A | A1 |
POTAY | A | A2 |
POTBX | B | B1 |
POTBY | B | B2 |
Anschluss und Konfiguration des Keyman64
Falls das Modul wie vorgesehen funktioniert, kann die /EN Leitung des Moduls nun mit einer freien Steuerleitung des Keyman64 verbunden werden. Eine Tastenkombination für diese Leitung kann konfiguriert werden. Für die folgenden Beispiele wird angenommen, dass die /EN-Leitung des Potmux mit der ersten Leitung des Ports A des Keyman64 verbunden ist.
set a0 b: invert a0
Zunächst wird hier /EN beim Einschalten oder bei einem Reset des Keyman64 auf HIGH gesetzt, so dass Paddles oder Mäuse nach dem Einschalten zunächst wie gewohnt funktionieren. Es wird außerdem die Tastenkombination Meta-B definiert, um zwischen Normalbetrieb und alternativer Umleitung hin- und herschalten zu können.
Die Ausgangsleitungen des Moduls (A1-B2) werden nun mit Steuerleitungen des Keyman64 verbunden. Es wird hier angenommen, dass die Potmux-Leitungen A1 bis B2 mit der unteren Hälfte des Ports B des Keyman64 verbunden sind.
Es muss sichergestellt sein, dass diese Steuerleitungen initial in den Tristate-Zustand versetzt werden und niemals durch Keyman64-Befehle in einen anderen Zustand versetzt werden.
Nun können zu Testzwecken einige Verknüpfungen von Steuerleitungen und Tasten konfiguriert werden. Dazu werden die folgenden Zeilen zur Konfiguration des Keyman64 hinzugefügt:
map b0 A map b1 B map b2 C map b3 D
Der Befehl map verknüpft eine Steuerleitung mit einer Taste. Hier werden die Potmux-Leitungen A1 bis B2, angeschlossen an die Keyman64-Leitungen b0 bis b3, entsprechend mit den Tasten A bis D verknüpft.
Nach dem Übertragen der neuen Konfiguration nun sicherstellen, dass sich der C64 im Direktmodus befindet. Über Meta-B nun die alternative Weiterleitung aktivieren. Es sollte jetzt bei jeder Betätigung der zusätzlichen Joystick-Buttons die entsprechende Taste gedrückt werden und der zugehörige Buchstabe sollte auf dem Bildschirm erscheinen.
Programme mit Button-Konfigurationen verknüpfen
Abhängig vom jeweils laufenden Programm oder Spiel werden unterschiedliche Konfigurationen für die Joystick-Buttons benötigt. Zu diesem Zweck jedes mal die Konfiguration des Keyman64 umzuschreiben und zu übertragen ist sicher nicht sonderlich komfortabel.
Es wäre schöner, wenn eine spezifische Konfiguration zu einem Programm hinzugefügt werden könnte, so dass das Programm den Keyman64 beim Start selbst entsprechend konfigurieren könnte.
Damit dies realisiert werden kann, muss der C64 mit der seriellen Schnittstelle des Keyman64 verbunden werden. Siehe dazu die Abschnitte Serielle Schnittstelle und Verbindung der seriellen Schnittstelle mit dem C64 in der Keyman64 Dokumentation.
Ist der C64 mit der seriellen Schnittstelle verbunden, kann ein
Programm über den Prozessorport die Schnittstelle des Keyman64
ansprechen und die dort bereitgestellten Befehle auf dem Keyman64
ausführen. Dies schließt den Befehl map
mit ein.
Das mitgelieferte Kommandozeilentoll potmux
kann verwendet werden,
ein vorhandenes C64-Programm zu patchen und die gewünschte
Konfiguration hinzuzufügen.
Hier die Ausgabe von potmux --help
:
Usage: potmux [<option>...] <program> [<button|switch>...] Options: -h, --help : print this help text -v, --version : print version information -o, --outfile <file> : output file (default: stdout) Arguments: <program> : C64 program file to patch <button> : route a joystick button to a key <switch> : specify enable line and state Example: potmux -o patched.prg game.prg a0:on b1:space
Im obenstehenden Beispiel wird die existierende Progammdatei
game.prg
eingelesen und die gepatchte Version in die Ausgabedatei
patched.prg
geschrieben. Der Rest der Zeile enthält die
Konfigurationsparameter.
Der Parameter a0:on
weist das Programm an, die
Keyman64-Steuerleitung a0 auf low zu ziehen. Dies geschieht unter der
Annahme, dass es sich dabei um die /EN-Leitung des Potmux handelt. So
aktiviert das Programm zunächst automatisch die alternative
Weiterleitung der Controlport-Leitungen.
Der Parameter b1:space
weist das Programm an, die
Keyman64-Steuerleitung b1 mit der Space-Taste zu verknüpfen.
Programme, die Paddles oder eine Maus unterstützen, können auch so gepatcht werden, dass sie die alternative Weiterleitung automatisch ausschalten, z.B.:
potmux -o patched.prg game.prg a0:off
Dies stellt sicher, dass in diesem Programm Paddles oder eine Maus immer funktionieren, egal, in welchen Zustand sich die /EN-Leitung vor dem Start des Programms befindet.
Lizenz
Copyright (c) 2020 Henning Liebenau <henning.liebenau@protonmail.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.