Archiv der Kategorie: 8-Bit

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

Code Optimierung

Programmiert habe ich im letzten Jahr viel in Java mit Android Studio oder Eclipse. Weniger mit ATMASS II oder dem Assembler Editor . Aber, weil ich meinem Atari 800XL die Kommunikation mit meinem Handy (Android) beibringen möchte und neben der Hard- auch die entsprechende Software brauche, habe ich wieder damit begonnen mich mit der 6502 Maschinensprache zu beschäftigen.

Für den kleinen Atari brauche ich ein einfaches Terminal das Daten seriell sendet und empfängt. Begonnen habe ich mit einer Machbarkeits Studie zum Senden. Das Programm nimmt einen String und wandelt jeden Buchstaben in eine Binärzahl. Gesendet wird das LSB zuerst, zunächst auf den Bildschirm, später an die Ausgabe.

Screen Shot 2019-03-08 at 12.09.36 PM

Test- Code zum für das serielle Senden von Daten in 6502 Assembler. Es wird ein Byte geholt und acht mal nach rechts verschoben (lsr). Wenn Bit 0 gesetzt war, wander es in das Carry- Flag des 6502. Wenn es nicht gesetzt war, bleibt das Carry- Flag unberührt. Anschließend wird entsprechend dem Ergebnis entweder 0  oder 1 gesendet. Hier, zu Testzwecken,  an den Bildschirmspeicher (Die Adresse ist in der Speicherstelle 88 und 89 -low- byte/ high- byte – abgelegt).

Der Ausschnitt aus meine Code zeigt, wie sich durch geschicktes Ausnutzen der Tatsache, dass „ADC #0“ nur dann „null“ addiert, wenn das Carry- Flag nicht gesetzt ist. Ist es gesetzt, dann wird „null+Carry“, also „eins“ addiert.
Man beachte nun die auskommentierten Code- Zeilen, insgesamt fünf, die man einsparen kann.

 


Mikrocomputer selbst gebaut

Das Buch habe ich mir Heute über Amazon eingekauft. Auf dieser Seite kann man es als PDF- bekommen. Viel Spass beim Löten.


Stella, neue Version veröffentlicht

Atari Age hat getwittert das der bekannte Atari 2600 Emulator Stella verbessert wurde.

Post auf Twitter (zuletzt abgerufen: 6.1.2019)

Atari 2600 JR. Bildquelle: Berthold Fritz.





Atari Disk- Formate, ein für alle mal…

… für mich! Eingehend beschrieben wurden die Formate der Atari Disketten und der DOS’e schon oft. Sei es in zeitgenössischen Büchern oder hier und da im WWW. Ausschlaggebend für mich diesen Artikel zu schreiben war, dass ich zwar viel über das Thema gelesen habe, bis jetzt aber nicht in der Lage war das ganze zusammenhängend, kurz und knackig wiederzugeben. Diesen Versuch will ich jetzt einmal wagen……

weiterlesen


Computronic

Die Zeitschrift Computronic wurde zwischen 1984 und 1987 vom Tronic Verlag herausgegeben. Sie enthielt vor allem Listings zum abtippen für die gängigen Computersysteme der Achziger Jahre. Berücksichtigt waren unter Anderem Atari, Apple ][, Spectrum ZX 81, Dragon 32, TI 99 und der C64.  Es finden sich aber auch Listings für Computersysteme die – aus meiner Sicht – nie weit verbreite waren und mit dem  Erscheine der Zeitschrift bereits zu den Exoten gezählt haben dürften. Darunter der Laser Vz 2001, Colour Genie und der PC 1500 (ein Pocket Computer der Firma Sharp). Mitte 1985 wurde das Magazin mit Der Zeitschrift Homecomputer zu Computronic + Homecomputer zusammengelegt.

Liftarn, Editing by: Bill Bertram (Pixel8) • CC BY-SA 2.0. Original Quelle: https://www.flickr.com/photos/liftarn/2894913418/


Es wurde hauptsächlich Spielelistings in Basic veröffentlicht. Ausnahmen waren ein Forth Kurs. Später Ausgaben enthielten auch Listings in Maschienensprache – die allseits beiliegen Zahlenkollonnen , bei denen Basic nur noch den Zweck erfüllte die Opcodes in den Speicher zu „poken“ (Zum Beispiel da: Masterblazer, Computronic/ Homecomputer 10/09 1987 Seite 48: Oliver Cyranka). Assembler Sorce Code Listings umfangreicher Spiele zu veröffentlichen war nicht üblich. Das wurde lediglich im Rahmen von Kursen gemacht oder wenn es sich um kleiner Utilitys handelte. Der Lerneffekt blieb also – trotz durchtippter Nächte – aus. Beim abtippen der Basic Listings blieb wenigstens hier und da etwas hängen, dass man für eigene Projekte gebrauchen konnte.

Internet Archive, Computronic (letzter Aufruf: 16.6.2018).


Software Excavation

Disketten haben eine gewisse Halbwertszeit, konkret geht es um meine 5 1/4 Zoll Datenträger aus den Jahren zwischen 1985 bis 1989. 

Vor knapp fünf Jahren habe ich damit begonnen, meine Disketten Sammlung von meinem alten Atari 800 XL mit 1050 Diskettenlaufwerk auf einen aktuelleren Rechner zu übertragen (Datenrettung die Erste). Dafür habe ich das SIO2USB Interface des ABBUC benutzt. Die lange Pause ist einem Defekt am Interface geschuldet, der zum Glück behoben wurde. Die ersten Funktionstests waren so erfolgreich, dass ich die Ausbeute hier einmal kurz vorstellen möchte.

Screen Shot 2018-06-06 at 9.10.35 PM

Eigene „Machbarkeits- Studie“ für ein Platform Spiel, ca. 1987. Das stilisierte Smiley ist ein Player (für Comodore Fans: Ein Sprite). Es lässt sich über die Leitern und Plattformen bewegen, kann herunterfallen und es frißt die Punkte, ganz so wie sein Vorbild, Pac Man….

Screen Shot 2018-06-07 at 8.37.33 PM

Oben: Directory einer bereits auf meine Macintosh übertragenen Disketten. Das Programm zur Anzeige ist eine eigene Entwicklung (atdir, Teil der Read ATR Tools). Es analysiert jede Datei. Das Ergebnis der Analyse wird in der Spalte Sector chain angezeigt. Idealerweise „OK“. die beiden letzten Einträge sind mit „Size!“ markiert. Das bedeutet, Die tatsächlich ermittelte Dateigröße, 9000 Bytes der Datei Disktat.fil passen nicht zu der Anzahl der Sektoren die sie angeblich belegt (es wird 0 angezeigt). Das kann ein Hinweis darauf sein, dass die Datensektoren der Datei vom DOS nicht mehr richtig zugeordnet werden können. Ursprünglich wurde die Datei geschrieben und im Ergebnis stand fest, wie viele Sektoren belegt werden. Diese Information wurde im Directory abgelegt. Das Analyseprogramm hat nun jeden Datensektor der Datei gelesen, die Anzahl der Bytes je Sektor aufaddiert und das Ergebnis mit der Angabe im Verzeichnis verglichen. Selbstverständlich kann die Datei nicht 0 Sektoren belegen, aber 9000 Bytes groß sein.

Screen Shot 2018-06-07 at 8.54.43 PM

Noch ein Beispiel. Die mit „#N“ gekennzeichneten Einträge sind gelöschte Dateien. Wenn die mit „OK“ gekennzeichnet sind, ist die Wiederherstellung trivial. Kurz: Die Datensektoren wurden noch nicht durch andere Dateien überschrieben.

Screen Shot 2018-06-06 at 9.48.20 PM

Das Programm Kong stammt nicht von mir. Es wurde in Atari Basic geschrieben und in einer Zeitschrift zum abtippen veröffentlicht. Heute kaum noch zu glauben, aber, das war in den guten alten Tagen eine verbreitete Art der Software Beschaffung. Heute hat man dafür den Play Store…..

20180602_214611

Das hier ist ein Beispiel für eine Original Diskette, die ich „gerettet“ habe. Der Aufkleber enthüllt, dort ist Pascal Source Code gespeichert. Die Angabe DOS 2.5 Format War extrem hilfreich. Es hätte sich auch eine unter Atari DOS 3.0 beschrieben Diskette handeln können. Beide Formate sind nicht kompatibel. Wenn die Diskette selbst keine DOS.SYS – Datei enthält, also nicht selbständig bootet, dann muss man ausprobieren welche DOS– Version man braucht. Das hält auf, wenn man viele Disketten retten möchte….

20180530_223023

Diskette, die mit Fremdprogrammen gefüllt ist. Ich möchte es mal diplomatisch ausdrücken, die Software stammt vom Schulhof.

Rechts: Inhalt einer „Schulhof“- Diskette. Praktisch, das Auswahlmenü (NANO- DOS). Links im Bild, eigentlich Rescue on Fractalus. Die Cracker- Zene war in den 1980ern – wenigstens in Deutschland – meines Wissens nicht so Mächtig, wie sie es für den C64 war. Geknackte Software wurde nicht wie vom 64er gewohnt mit aufwändigen Intros geschmückt. Eine einfache Änderung des Titels war oft das äusserste der Gefühle….