Parallele Datenübertragung

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

Scematic_Paralell_Interface

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.

Scematic_1_Bit_Sender

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.

 

Screen Shot 2019-04-13 at 1.09.16 AM

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.

 

 

 


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);
}

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.

Werbeanzeigen

2 responses to “Parallele Datenübertragung

  • Freetz

    Das ist quasi das Prinzip, auf dem auch MidiJoy aufbaut :)…

    • Berthold

      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!

Schreibe eine Antwort zu Freetz Antwort abbrechen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

%d Bloggern gefällt das: