Nikolaus Heusler Archiv

Erschienen in 64'er Magazin, Ausgabe unbekannt · Originaldatei: FERNBED.TXT

Hinweis: Dies ist das an die Redaktion eingereichte Manuskript, nicht der gedruckte Endtext. Layout, Bildunterschriften, Korrekturen und Kürzungen der Redaktion können in der veröffentlichten Fassung abweichen.

Fernbedienung für den User-/Cassettenport

Hier ist ein Programm, das gerade der Hardware-Bastler für eigene Entwicklungen sehr schätzen wird: Eine Fernbedienung für den User- und Cassettenport. Insgesamt 14 Datenleitungen können überwacht und/oder gesteuert werden, 11 davon lassen sich in beliebiger Kombination als Ein- oder Ausgänge definieren. Neben den üblichen Userport-Datenleitungen PA2 und PB0..7 lassen sich auch SP1 und SP2 sowie die Leitungen WRITE, MOTOR und SENSE des Cassettenlaufwerks ansprechen. Außerdem sind nützliche Sonderfunktionen wie ein Impulsgenerator und eine Hardcopy-Routine eingebaut. Dank Maschinensprache reagiert das neun Blocks lange Programm sehr schnell. Es wird komfortabel über eine Oberfläche mit dem Joystick kontrolliert.

Nikolaus M. Heusler
nach einer Idee von Hans-Jürgen Humbert

Gerade für eigene Hardware-Entwicklungen ist es wesentlich, die Möglichkeit zu haben, eine Schaltung vor der Inbetriebnahme der Software genau zu testen. Die ideale Technik wäre natürlich ein Userport-Simulator, der aus einer Platine mit Userport-Steckverbindung und Schaltern zur Definierung der Ausgänge sowie Leuchtdioden zur Kontrolle der Eingänge besteht. Doch ein solches Gerät wird im Allgemeinen nur sehr selten zur Verfügung stehen. Auch eine Software-Lösung reicht jedoch vollkommen aus. Im Gegenteil, ein programmgesteuerter »Exerciser« (Trainer) bietet sogar noch wesentlich komfortablere Hilfsmittel. Wir präsentieren Ihnen ein Programm, mit dem Sie am Userport sämtliche nur vorstellbare Konfigurationen an Ein-/Ausgängen herstellen können. Außerdem werden drei Leitungen des Cassettenports überwacht.
Obwohl das Programm aus Gründen des Komforts und der Geschwindigkeit vollständig in stark optimierter Maschinensprache verfaßt wurde, brauchen Sie zur Anwendung keine Assemblerkenntnisse. Das Programm kann wie normales Basic geladen und gestartet werden:

LOAD "FERNBEDIENUNG",8
RUN

Der LIST-Befehl bringt hier keine sinnvollen Befehle zum Vorschein. Auf dem Bildschirm erscheint jetzt die Bedienungsmaske. Sie besteht aus vielen verschiedenen Feldern. Links in der Mitte sehen Sie außerdem eine Art »Fadenkreuz«, das ist der Cursor, der mit dem Joystick in Port 2 gesteuert wird. Bewegen Sie das Kreuz auf ein beliebiges Feld und betätigen dort den Feuerknopf, wird die entsprechende Funktion aufgerufen bzw. der enthaltene Wert geändert. Ein Gong-Signalton ertönt nach erfolgreicher Ausführung einer Funktion, ein tiefes Brummen ertönt, wenn Sie einen Fehler gemacht haben, beispielsweise an einer Stelle am Bildschirm geklickt haben, wo sich kein Feld befindet.
Beginnen wir mit der Beschreibung der acht Userport-Leitungen PB0..7. Diese befinden sich im ersten Feld oben am Bildschirm. In der ersten Zeile des Feldes steht die Feldbezeichnung. Hier können Sie keine Änderungen vornehmen und demzufolge dort auch nicht klicken (gilt für alle Signal-Namen am Bildschirm). In der zweiten Zeile steht der Vermerk »EIN«, wenn diese Leitung als Eingang definiert ist, oder »AUS«, wenn der Userport über diese Leitung Daten ausgibt. Die dritte Zeile schließlich gibt Auskunft über den aktuellen Zustand der Leitung. Eine »1« steht für ein logisches High-Signal, eine »0« symbolisiert Low-Pegel. Die verschiedenen Einstellungen werden auch verschieden farblich markiert, bei der Programmierung wurde jedoch darauf geachtet, daß auch auf monochromen Monitoren einwandfreies Ablesen möglich ist. Bei Leitungen, die als Ausgang definiert sind, klicken Sie in dieses Feld, um den Pegel umzuschalten. Die Änderung einer als Ausgang definierten Portleitung wird sofort an den Userport weitergegeben, Ihre Hardware kann augenblicklich reagieren. Um die Datenrichung einer Leitung (Eingang oder Ausgang) festzulegen, klicken Sie einfach in das Feld, in dem »EIN« bzw. »AUS« steht. Es ist nicht erlaubt, bei einer Eingangsleitung in das Datenfeld zu klicken. Das leuchtet ein, denn bei einem Eingang wird der Zustand der Leitung von außen festgelegt und sofort vom Programm am Bildschirm angezeigt. Eine nicht beschaltete Leitung wird »1« gemeldet (Pull-up-Widerstände im C 64).
Die Userport-Leitung PA2 ganz links im zweiten Block wird fast genauso bedient. Es gibt nur einen Unterschied: Diese Leitung kann als Impulsgenerator verwendet werden. Wie das geht, beschreiben wir weiter unten. Für die Anwendung als normale Portleitung achten Sie nur darauf, daß im Feld ganz rechts unten am Bildschirm der Text »PA2: NORMAL« steht.
Auch die Leitungen SP1 und SP2 können frei als Ein- oder Ausgänge definiert werden. Im Gegensatz zu ihrer ursprünglichen Bestimmung (serielles Schieberegister) können sie hier nur als einfache Portleitung verwendet werden. Bei der Verwendung als Ausgang gibt der C 64 den eingestellten Pegel fast verzögerungsfrei an den Userport weiter. Beachten Sie bitte, daß eine Eingangleitung SP1 oder SP2 nur dann an den Computer übertragen wird, wenn auf der Leitung CNT1 bzw. CNT2 Impuls eingegeben werden. Das Programm fragt nur ein Bit des zuständigen CIA-Registers Nr. 12 ab, während bei Verwendung als Ausgangsleitung alle acht Bit gleichzeitig high- oder low gesetzt werden, wenn der Anwender in das Datenfeld klickt.
Bei den nächsten drei Leitungen C/M, C/W und C/S handelt es sich um Cassettenport-Steuerleitungen, die jeweils nur in einer Richtung betrieben werden können. Der Versuch einer Umschaltung der Datenrichtung hat demzufolge nur ein unverständiges Brummen zur Folge. Die Leitungen C/M (Cassette-Motor, Laufwerksmotor ein/aus) und C/W (Cassette-Write, Datenleitung zum Schreibkopf) sind Ausgangsleitungen, während C/S (Cassette-Sense, Abfrage, ob eine Taste an der Datasette gedrückt) nur als Eingang fungiert.
Ganz unten am Bildschirm befindet sich ein Kontroll-Block. Durch Klicken auf dem Feld »ENDE« wird ohne Warnung die Fernbedienung beendet und ein Reset ausgelöst. Ein Neustart ist mit SYS 2144 möglich. Klicken Sie auf das Feld »DRUCK«, wird auf dem Drucker (betriebsbereit und angeschlossen) eine Hardcopy des Bildschirminhalts ausgegeben. Die speziellen Grafiksymbole der Tabelle werden in normale Textzeichen umgewandelt, so daß praktisch alle Drucker mit dem Programm zusammenarbeiten müßten. Die Geräteadresse ist 4, die Sekundäradresse 0. Ist der Drucker nicht ansprechbar, ertönt der Brummton.
Das Feld »INIT« bewirkt einen Neustart des Programms. Dabei werden alle Datenleitungen (außer C/S) auf Eingang gesetzt, der Signalton eingeschaltet und die PA2-Leitung auf Normalbetrieb geschaltet. Das Programm stellt so alle Normaleinstellungen wieder her. Schließlich gibt es noch die Möglichkeit, durch Klicken auf das Feld »WENDE« den Zustand aller als Ausgang definierten Leitungen zu invertieren.
Sollten die Signaltöne stören, können sie durch Wählen des Feldes »SIGNALTON« abgeschaltet werden. Das Programm wird dadurch jedoch nicht schneller. Nochmaliges Klicken schaltet die Tonausgabe wieder ein.
Kommen wir nun zur Beschreibung des Impulsgenerators. Nur die als Ausgang definierte Leitung PA2 (im mittleren Kontrollfeld ganz links) kann zur Ausgabe von kurzen Impulsen beliebiger Anzahl verwendet werden. Falls nicht schon geschehen, klicken Sie auf das Datenrichtungsfeld bei PA2, um »AUS« zu aktivieren. Bewegen Sie den Cursor nun nach rechts unten auf das Feld »PA2: NORMAL«. Dieser Text bedeutet, daß die Leitung PA2 als normale Port-Leitung verwendet wird, der C 64 schaltet den eingestellten Zustand sofort auf PA2 am Userport durch. Klicken Sie auf das Kontrollfeld, erscheint der Text »PA2: 1 HI PUL«. Gleichzeitig erscheint im Datenfeld von PA2 der Buchstabe »P«. Dies bedeutet, daß bei Betätigung der Leitung ein High-Impuls ausgegeben wird. Sonst wird die Leitung konstant Low gehalten. Durch weiteres Klicken auf das Kontrollfeld können Sie zunächst die Anzahl der Pulse von 1 bis 9 festlegen. Danach erscheint der Text »PA2: x LO PUL«, wobei x für für die Anzahl der Low-aktiven Impulse steht. Bei Aktivierung der Leitung wird jetzt die gewünschte Anzahl an Low-Impulsen erzeugt, sonst hält der C 64 die Leitung konstant auf High-Pegel. Klicken Sie nach »PA2: 9 LO IMP« nochmals auf das Kontrollfeld, wird wieder der Normalzustand hergestellt. Die Ausgabe der gewünschten Impulse wird durch Klicken auf den Buchstaben »P« im Datenfeld der Leitung PA2 angestoßen. Die Impulse haben eine »Breite« von 100 Systemtakten (ca. 0,1 ms), die Impulspausen sind doppelt so breit (0,2 ms). Bei Verwendung von PA2 als Eingangsleitung spielt die Einstellung im Kontrollfeld keine Rolle.
Soweit zur Beschreibung der Programmfunktionen der Fernbedienung, die Ihnen sicherlich eine große Hilfe bei der Eigenentwicklung von Zusatzhardware sein wird.

Anhang:

Pin-Belegung des Userport
1 GND (0 Volt)
2 +5 Volt, max. 100 mA
3 -RESET
4 CNT 1
5 SP 1
6 CNT 2
7 SP 2
8 -PC 2
9 SER. ATN IN
10 9 Volt AC (max. 100 mA)
11 9 Volt AC (max. 100 mA)
12 GND
A GND
B -FLAG 2
C PB 0
D PB 1
E PB 2
F PB 3
H PB 4
J PB 5
K PB 6
L PB 7
M PA 2
N GND

Pin-Belegung Cassettenport
A/1 GND
B/2 +5 Volt
C/3 Cassette Motor
D/4 Cassette Read
E/5 Cassette Write
F/6 Cassette Sense