Archiv der Kategorie: Uncategorized

Joe Decuir

Antic, the Atari 8- Bit Podcast hat ein Interview mit Joe Decuir, Mitentwickler der Hardware der Atari 400/ 800 Computer, veröffentlicht [1]. Das Interview fand im Rahmen der Portland Retro Gaming Expo statt. geführt hat es Kevin Savez.

Ich habe ca. 1984 meinen ersten Computer bekommen, es war ein Atari 600 XL mit 16 Kilobyte Speicherkapazität. Später bin ich auf seinen großen Bruder, den 800 XL umgestiegen. Der hatte dann schon ganz 64 Kilobyte. Die XL– Reihe war die zweite Generation 8- Bit Maschinen die Atari auf den Markt gebracht hat. Betriebssystem und Hardware entsprachen weitgehend der ersten Generation, dem Atari 400 beziehungsweise dem Atari 800.

Wenn man sich heutzutage die Leistungswerte dieser Historischen Modelle anschaut, dann kann man sich eigentlich nur wundern, was man damit angefangen hat. Mir selbst ist aber mit den Jahren klar geworden, dass Atari mit dem 400/ 800, Ende der 1970er Jahre eine überragende Hardware mit einem extrem eleganten Betriebssystem auf den Markt gebracht hat. Im Interview wird das angesprochen und der historische Kontext hergestellt. Mitbewerber um den Konsumenten waren unter Anderem die Modelle der Firma Apple ][, der TRS 80 und der Commodore PET. Gegenüber den letzteren bot Atari Farbgrafik und echten Sound (von den drei genannten hatte wenigstens der Apple ][ Farbgrafik mit einer annehmbaren Bildschirmauflösung, es fehlte aber an der umfangreichen Hardware Unterstützung die der Atari bot). Im Interview wird dazu betont, dass die Erfahrungen aus der Entwicklung der Arcade- Maschinen von Atari mit in die Hardware der kleinen Computer eingeflossen ist. Als Beispiel wird das Hardware- Scrolling genannt. Zur vertikalen oder horizontalen Bewegung des Bildschirminhaltes muss nicht der gerammt Bildschirmspeicher geändert werden, sondern nur ein Hardware Register (für das Fein- Scrolling) und der Zeiger auf den Bildspeicher im RAM. Das geht extrem schnell und sorgt für butterweiches, Pixel– beziehungsweise Color- Clock* Genaus Scrolling.

Neben dem Interview wurden noch die auf dem Internet Archive veröffentlichen Design Dokumente von Joe Decuir verlinkt. Was möchte man mehr?

[1] Antic, the Atari 8- Bit Podcast: Special Episode, Atari 800 Series, 40 Years.
[2] Joe Decuir. Engineering Notebook 1977(Internet Archive).
[3] Joe Decuir. Engineering Notebook 1978 (Internet Archive).

*Color Clock: Ein Pixel hat eine bestimmte Höhe und eine bestimmte Breite. Auf modernen Geräten wird die Größe eines Pixels durch die Auflösung des Bildschirms bestimmt. Auf einem Röhren- Monitor ist ein Pixel etwas das vom Raum und der Zeit abhängt. Auf einem Röhren Monitor wird das Bild zeilenweise Aufgebaut. Der Elektronenstrahl beginnt oben Links, läuft Zeile für Zeile über den Schirm (ähnlich wie der Druckkopf eines Tintenstrahldruckers) und beginnt das Selbe Spiel von vorne, wenn er die rechte, untere Ecke erreicht hat. Die Höhe eines Pixels wird durch die Physische Höhe einer Bildschirmzeile – also der Höhe des Elektronenstrahles selbst -festgelegt, die Breite von der Zeit die man dem Elektronenstrahl gibt einen bestimmten Teil der Bildschirmzeile auf seinem horizontalen Weg einzufärben. Die minimale Breite eines Color- Clocks und damit die höchste horizontale Auflösung, hängt davon ab, wie schnell die Information Strahl ein/ Strahl aus an die Hardware gesendet werden kann. Je mehr Zeit dafür verbraucht wird, desto breiter wird der sichtbare Bildpunkt. Daher Color (Farbe) und Clock (Uhr bzw. Takt).


Atari Pac Man Source Code

Der Source Code von (Atari) Pac Man für die Atari 8- Bit Computer wurde veröffentlicht. Go, Play!

Screen Shot 2019-09-27 at 8.22.43 PM

[1] Atari Wiki.Der Source Code in einer unter der WUDSN- IDE kombilierbaren Form und eine Version die mit dem Atari Macro Assembler [3] bearbeitet werden kann.
Es sind Versionen veröffentlicht die von Roklan, Datasoft und von Atari vermarktet wurden.

[2] Antic, The Atari 8- Bit Podcast. Episode 61. Dieser Podcast hat mich auf die Veröffentlichung unter [1] aufmerksam gemacht.

[3] Atari Macro Assembler, Beispiel Sitzung.


Wander

Wander kann mit einiger Sicherheit als eines der ersten Textadventure Spiele bezeichnet werden.

Lauffähige Versionen von Wander (Peter Langston) gibt es bereits seit 1974, also ein Jahr bevor Adventure (Crowther/ Woods) das Licht der Computerwelt erblickte. Unter [1] wurde die Entdeckung ursprünglich erwähnt, der Blogeintrag unter [2] bezieht sich darauf und nennt weitere Hintergrundinformationen und enthält Download- Links zu unterschiedlichen Source- Code Versionen des Spieles, die von Peter Langston zur Verfügung gestellt wurden.

Wander ist nicht nur ein reines Textadventure, sondern ein sogenanntes World Building Tool das, so ist es unter [1] beschrieben, Datenbanken als Welten nutzt. Wie es scheint, gibt es mehrere Spiele die unter Wander ausgeführt werden können.

[1] Renga in Blue, Lost Mainframe Games (Jason Dyer).
[2] Retroactive Fiction A lost Mainframe game is found.

Nachtrag
Ich habe mir den Source- Code zu Wander inzwischen von Quelle [2] heruntergeladen. Die sogenannte „third version“ – die Peter Langston zur Verfügung gestellt hat –  lässt sich anstandslos unter Mac OS 10.13.6 „High Sierra“ kompilieren.

 

Screen Shot 2019-09-23 at 8.11.32 AM

Wander, „third Version“ auf meinem Mac unter Mac OS 10.13.6.


KWEST PD Library

Russ Campbell hat die Programm- Bibliothek der Kitchener/ Waterloo Eight Sixteen Thirty Two Atari Users Group in Ontario, Canada auf der Facebook Gruppe Atari 8-bit Computers veröffentlicht.

Die Dateigröße beträgt stolze 7 MB (ZIP- Archiv). Ich habe mir die Sammlung heute Abend heruntergeladen und „Stichproben“ genommen. Neben einer Interpretation des allseits bekannten Tetris finden sich weiter Adaptionen bekannter Titel, Star Trek beispielsweise.

Zum Download geht es hier
 

[1] Wikipedia: Kitchener, Ontario
[2] Fundstücke der KWEST im Netz: Meetup 1992.

Alle Links in diesem Artikel, zuletzt aufgerufen am 14.6.2019 


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.


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.