…ü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.

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);
}
13. April 2019 at 7:19 pm
Das ist quasi das Prinzip, auf dem auch MidiJoy aufbaut :)…
3. Mai 2019 at 1:51 pm
Ich bin darauf gekommen, weil ich bei der Seriellen Übertragung zu viele Probleme mit dem Timing auf mich zukommen habe sehen. Inzwischen funktioniert das Senden ganz prima. Ich möchte das Projekt so abschließen, dass die Hardware schließlich über die USB Verbindung mit Mac OS kommunizieren kann. Optional soll es möglich sein ein Bluetooth Modul (HC05 o.Ä) oder die WiFi Variante einzustecken.
Die Software besteht aktuell aus einen Debugger. Dazu kommt ein Disk- Kopierer, mit dem man eine Disk vom Atari direkt auf seinen Androiden oder den Mac übertragen kann.
Mein Fernziel ist es einen Server für Android zu schreiben, mit dem dann mehrere Ataris mit meinem Interface, über Wifi im Lan, kommunizieren können. So oder so, das Lötfiber hat mich gepackt!
21. Mai 2019 at 6:58 am
Das klingt ja sehr spannend! Wobei ich jetzt im Zuge von Atariduino gesehen habe, dass auch die SIO-Kommunikation ziemlich einfach ist, wenn man sich eines der vorhandenen R:-Treiber bedient (in meinem Fall der R-Verter). Dann hat man ganz normale serielle Kommunikation auf TTL-Basis, die man bei Bedarf mit eienm MAX232 Chip auf RS232-Pegel umwandeln kann, was dann über einen entsprechenden USB-Adapter auch an moderne Rechner anschließbar ist. Das HC05 kannst Du mehr oder weniger direkt an den SIO-Port anschließen, das hat Marcin (Monzezuma) bei seinem Wettbewerbsbeitrag vor ein paar Jahren ja schön demonstriert. Aber da mit dem Server ist auf jeden Fall eine spannende Sache, dann viel Erfolg beim weiteren Löten :)!