…über den Joystick Port des guten, alten Atari 800XL.
Hardware zur Datenübertragung zwischen den alten Atari 8Bit- Computern und aktueller Hardware gibt es schon zu genüge. Ich selbst nenne zum Beispiel das SIO2USB des ABBUC mein eigen. Aber, ich bin nun einmal ein kleiner Kontroll- Freak und möchte was eigenes machen. Hier erst einmal ein paar Gedanken zu Beginn meines kleinen Projektes:
Die Idee: Die Joystick- Ports des Atari können neben der Dateneingabe (über den namensgebenden Joystick- Port) auch auf Ausgabe geschaltet werden. Je Port können so 4 Datenleitungen, insgesamt also 8 Stück zur Ausgabe genutzt werden.

Blockschaltbild. 4 Daten- und 3 Kontrollleitungen der fertigen Schaltung.
Ich möchte die 4 Datenleitungen des Port A (die 4 Richtung- „Pins“ des Joysticks) zur Datenübertragung nutzen. Der Trigger (Feuerknopf)- Eingang ist eine Kontrollleitung über die der Empfänger signalisiert „Ich habe 4 Bits empfangen, sende mir die nächsten…“. Von Port B brauche ich zwei weitere Kontrollleitungen als Ausgabe. Leitung 1 signalisiert dem Empfänger, dass Daten anliegen: „bitte hole die ab“. Leitung 2 signalisiert dem Empfänger schließlich das die Datenübertragung beendet ist.

Schaltplan: 1- Bit senden. Einfache Machbarkeits- Studie zum Bockschaltbild.
Daten und Kontrollleitungen werden mit einem Teenys 2.0 (Arduino) verbunden. Über den USB- Anschluss des Teensy wird eine Serielle Verbindung aufgebaut der die mein Atari mit meine Mac kommuniziert.
Machbarkeitsstudie. Schaltung auf einem Breadboard
Auf der echten Hardware programmiert und getestet. Der Assembler Editor von Atari ist zwar langsam, eignet sich aber gut für kleiner Projekte.

6502- Assembler Source Code (Atari Assembler Editor). Schaltet die LED in der Schaltung wechselnd an oder ab indem der Digital- In des Teenys 2.0 auf Low (=0=LED an) und High (=1=LED aus) gezogen wird. Die Software im Teenys gibt den Ein-/ Ausschaltbefehl an die LED.
C- Source- Code in Arduino Studio. Wichtig: Wenn „Low“ gelesen wurde, dann heist das, dass der Atari eine ‚1‘ gesendet hat, die Leitung also auf High liegt.
int const LED_PIN=PIN_B0;
int const IN_PIN=PIN_B1;
void setup() { pinMode(LED_PIN,OUTPUT);
digitalWrite(LED_PIN,LOW);
pinMode(IN_PIN,INPUT_PULLUP);
void loop() {
int pinState;
pinState=digitalRead(IN_PIN);
if (pinState==LOW) digitalWrite(LED_PIN,HIGH);
else digitalWrite(LED_PIN,LOW);
digitalWrite(LED_PIN,LOW);
Serial.println(pinState);
}