Schlagwort-Archive: Atari 8-Bit

Basic 10Liner Contest 2020

Ziel des titelgebenden Wettbewerbes ist es in maximal 10 Zeilen Basic Code ein Spiel oder eine Demo zu programmieren. In diesem Jahr habe ich mit einem Bietrag in Atari Basic daran teilgenommen. Die Heimseite des Wettbewerbes mit der Übersicht über alle Beiträge habe ich unter [1] verlinkt.

Das disk image des Spiels kann man sich dort herunterladen: Racer on GitHub.

weiterlesen


XEX- Das unbekannte Format

Dateien mit der Endung *.XEX sind ausführbare Dateien, für die gängigen Atari 8- Bit Emulationen, wenigstens.

Die Datei wird mit 2 Bytes $ff eingeleitet, gefolgt von der Startadresse und der Dateilänge. Danach folgen die Daten bzw. der ausführbare Objekt- Code, der/ die an der so beschriebenen Stelle in der angegebenen Länge abgelegt werden/ wird.

Stimmt’s? Geben wir doch einfach einmal die Folgenden Bytes in einem Hex- Editor ein, speichern das ganze als Hallo.xex und laden das File mit einem Atari- Emulator unserer Wahl:

Bildschirmfoto 2014-09-01 um 21.05.41

Kleiner Tip, die Byte Folge $40 $9c= peek(88)+256 x peek(89)   😉

Aber Hallo!

 


Seriennummern und alte Dokumente…

Ein bisschen Recherche in eigener Sache, ich  möchte nachvollziehen seit wann und warum ich damit begonnen habe mich für das Thema Computer zu interessieren, förderte ein paar aufschlussreiche Quellen im Internet zutage:

Bücher und Atari- interne Dokumente:
http://www.atarimania.com/documents-atari-400-800-xl-xe-technical-documents_3_8.html

Eine Interessante Diskussion zur Interpretation von Seriennummern div. Atari Hardware:
http://atariage.com/forums/topic/176155-atari-8-bit-serial-numbers/

 

 

 


Altes wieder endeckt

Das SIO2USB Interface ist gestern angekommen und es funktioniert einwandfrei!

Spannend war, funktionieren meine fast 30 Jahre alten Disketten noch? Produkte von Siemens oder Datalife (Vobis?) liefen anstandslos. Einige No- Name Produkte sind leider deffekt. Eine der Dateien lies sich zwar anstandslos laden – es war ein Programm in Atari Basic – im Quelltext fanden sich aber einige Zeichen die offensichtlich dort nicht hingehören wo sie stehen. Hmm? Verstümmelte Daten? Soweit ich weis, kennt das FMS des Atari DOS 2.x keine Prüfsummen(1). Ich glaube auch, dass die nächst tiefere Schicht – die CIO – das genausowenig kennt. Da bin ich mir relativ sicher, denn, die CIO weis nicht wie die Datein auf der Diskette organisiert sind und schaut schon gar nicht in die Datei um deren Metadaten zu interpretieren. Die CIO ist ein generalisiertes Ein- Ausgabekonzept das grundlegende Schreib- Leseoperationen erledigt. Die angesprochene Hardware wird über frei implementierbare Device – Handler (Treiber) zugänglich gemacht.

(1) Die 1050 kann sehr wohl einen sog. CRC Error melden. Das ist soweit ich noch weis nichts anderes als ein Fehler in der Prüfsumme. Der wird  allerdings anhand von Meta Daten ermmittelt, oder ausgeschlossen, die auf Hardware Ebene auf der Diskette gespeichert sind auf die man per Software, vom Computer aus, keinen Zugriff hat.
Wer mehr zum Thema erfahren möchte, dem seien die Links am Schluss des Textes empfohlen.

IMG_0989

Ich sah die Zukunft, aber sie war verborgen vom Kabelsalat….

War eine wunderbare Erfahrung die Dinge weiterzusehen mit denen man – ginge es nach der damaligen Meinung unserer Eltern – seine Jugend verschwendet hat.

6502 Source, alt und stolz darauf....

6502 Source, alt und stolz darauf….

Vorläufiges Resümee, das meiste Disketten funktioniert noch und dürfte sich über die kommenden Feiertage problemlos auf meinen aktuellen Rechner überführen lassen.

Eine Diskette – formatiert im Dos 3 Format – bereitete das meiste Kopfzerbrechen. Gefüllt mit eigenem – meist in Basic – produziertem, ist mir das Teil schon noch etwas wert, aber, wie komme ich da ran? Die SIO2USB Firmware und das mitgelieferte DOS unterstützen wohl nur DOS 2.x und modernere Atari Dateisysteme die dem Sparta DOS Format entsprechen. Mein Glück, auf meiner alten DOS 2.5 Tool Disk fand sich eine Datei mit dem verheißungsvollen Namen copy32.com 🙂

damit lassen sich, wär hätte‘ gedacht, komfortabel Dateien von DOS 3 formatierten Disketten auf DOS 2.x Disketten kopieren.

Es bleibt spannend und ich werde berichten.

Passend zum Thema Disketten, ein paar Links:

http://www.strotmann.de/~cas/Infothek/1050Turbo/anleitung_1050_turbo.pdf

http://www.mia-net.org/speedy.html
Ein ausführlicher Artikel über den SPEEDY 1050 des Compy Shop

http://www.atarimax.com/ape/docs/DiskImageFAQ/
Einige Grundlagen zur Frage wie eine Diskette organisiert ist. Das sog. Physiche – also tatsächliche Format auf Hardwareebene – wird erläutert.


Es rockt wieder..

Ich habe den guten alten 6502 in der letzten Zeit etwas vernachlässigt. Für mein kleines Spieleprojekt gilt das selbe.

Abgelenkt hat mich dieses Projekt:
https://retrozock.com/2013/11/13/neocrome-atari-8-bit/

Titelbild für "Rock". Ein erster EntwurfEigentlich wollte ich nur eine kleine Routine entwerfen, die eine Bilddatei im NeoCrome Format in eines der beliebte Atari 8- Bit Grafikformate wandelt. Herausgekommen sind bis jetzt eine nicht unbeträchtliche Anzahl C- Routinen die das gewünschte für die Grafikstufen 8,15 und 9  bis 11 (GTIA 1-3) erledigen sowie eine Anwendung die unter dem Cocoa Framework läuft. Das ganze also etwas zugänglicher macht.

Warum die Arbeit? Neugier und das Ziel vor Augen meinem Spielchen ein ansehnliches Titelbild zu verschaffen. Die ersten Ergebnisse könnt ihr hier bewerten (‚tschuldigung, bewundre 🙂

Bildschirmfoto 2013-12-02 um 20.32.44


GTIA

Der „Graphics Television Interface Adapter“. Zwischen Bildschirm (HF- Modulator) und dem ANTIC gelegen, bringt die Farbe ins Bild – und das nicht zu knapp!

Neben den üblichen Punkt- und Textgrafikstufen bieten die modernen Vertreter der Atari 8- Bit Homecomputer drei zusätzliche Modi, nämlich die des GTIA.

Alle drei Modi lassen sich in Basic über den „Graphics“ Befehl aufrufen. Modi 9 bis 11. Das funktioniert nicht auf den Atari 400 oder 800 Modellen, ausser, die GTIA wurde da nachgerüstet.

In Maschinensprache, über eine eigene Display List, geht das so: Alle drei Modi entsprechen der (Basic) Grafikstufe 8. Speicherbedarf 8 kB= 62 Sektoren auf Disk. Man erzeugt also besagte Display- List und wählt über das Register GPRIOR 623/ $26f den gewünschten Modus. GTIA 1= 64 // GTIA 2= 128 // GTIA 3=192. Das war es! Farb- und Helligkeitsregister führe ich hier nicht auf, das findet man besser sortiert in der entsprechenden Fachliteratur z.B. da: Atari Profi Buch.

Modus 1: Eine Farbe, 16 Helligkeiten:

Bildschirmfoto 2013-08-25 um 20.27.34

 

 

 

 

 

 

 

 

Modus 2: Neun Farben mit jew. 9 Helligkeiten:

Bildschirmfoto 2013-08-25 um 20.29.37

 

 

 

 

 

 

 

 

Modus 3: 16 Farben und eine Helligkeit:

Bildschirmfoto 2013-08-25 um 20.31.41

 

 

 

 

 

 

 

 

In den drei Beispielen oben, werden nicht jew. alle Farben und Helligkeiten dargestellt. Das liegt daran, dass eine von mir in C geschriebene Konvertierungs- Routine noch nicht richtig funktioniert. Die Bilder wurden mit „Grafx2“ gezeichnet und dann mit besagter C- Routine auf ein Atari Disk Image geschrieben.

Mehr zum Thema Grafikprogrammierung, speziell für die Atari 8- Bit, findet man hier im Blog.

 

 

 

 

 

 

 

 


Action!

Lange nicht beachtet, lange nix dazu geschrieben und ich werde mich – aus Zeitmangel – lange nicht damit beschäftigen, schade…..

Bildschirmfoto 2013-08-07 um 21.30.24

 

Diese Sprache für Atari’s 8- Bit Computer war/ ist beliebt. Startpunkt für weitere Recherchen im Netz könnte diese Seite sein: http://www.noniandjim.com/Jim/atari/Action_Compiler.html

Dort finden sich u.a. das PDF des original Manuals und ein Projekt, dass wohl zu Ziel hat einen Cross Compiler dieser Sprache auf modernen Systemen verfügbar zu machen. Allerdings, der letzte Update dieses Blogs ist schon einen Weile her und man weis nicht, ob es noch lebt 😦

Die Firma OSS dürfte den meisten Atarianern nicht unbekannt sein. Der bekannte Mac 65 Assembler stammt ebenfalls von dort. Weiteres dazu hier im Blog: Assembler für den Atari

Viel Spass.


Alternativen zur Atari 1050…

….Einen zeitgenössischen Artikel dazu findet man da:

Electronic Games, Dezember 1984, Seite  69

Ob Concorde, Percom oder Rana. Alles da um es nachzulesen.

Percom: 704kB? Welches DOS? Fragen über Fragen…..

 


Shift Restore Escape am 11.6.2013 in Berlin

Gestern am 11.6.2013 durfte ich im Rahmen der Vortragsreihe „Shift Restore Escape“ meinen Beitrag dazu präsentieren. Es ging um die Programmierung eines Spieles für die Atari 8- Bit Computer nach rund 20 Jahren Programmierabstinenz. In 6502 Assembler!

Ein Abstract finden sich auf der offiziellen Seite der Vortragsreihe.

Eine PDF Version der Folien gibt es da (leider ohne die Filme):  Vortrag Foliensatz

Das Video zum Vortrag kann man auf auf dem Blog Simulationsraum anschauen, oder, direkt hier:

Dirk Ollmetzer hat eine sehr schöne Zusammenfassung meines Vortrages – garniert mit einigen Bildern – auf seinem Blog veröffentlicht.

Im Folgenden eine Zusammenstellung der Kapiteln des Vortrages und den dazu gehörenden Quellenangaben und Erläuterungen zu einigen meiner Aussagen und abschließend einige interessante Fragen aus dem Kreis der Zuhörer:

Motivation
War „Thrust“ vor oder nach Boulder Dash.Zur meiner Aussage, BD hätte eine der ersten Physik Engines besessen.Das Spiel „Thrust“ war, zumindest gem. Angaben aus der englischsprachigen Ausgabe von Wikipedia, von „Gravitar“ inspiriert. Es gibt noch weitere Beispiele eine einigermaßen reale Physik auf die Spielewelt zu projizieren. „Spacewar“ wäre ein weitere Vertreter. Insofern war meine Aussage gewagt und sollte Anlass zu Diskussionen und weiteren Recherchen bieten 🙂

https://retrozock.com/2012/07/06/boulder-dash-alikes/
Eine kleine Übersicht div. BD Clones oder durch BD inspirierte Programme für die Atari 8- Bit Computer.

Die Zielplatform
Zu meiner Aussage, in den Atari 8- Bit Computern ist ein 6502 Prozessor verbaut:In allen Atari XL Modellen wurde ein leicht abgewandelte Form des 6502 eingesetzt, um die Zusammenarbeit mit dem ANTIC- Chip zu unterstützen. Auch in einige der spät produzierten Atari 800/ 400 Modellen wurde diese CPU bereits verwendet, der Atari den Spitznahmen „Sally“ gab. In frühen Modellen wurde der Standard 6502 verbaut, die geforderte Funktionalität im Bezug auf den ANTIC dann aber mittels 4 zusätzliche Custom Chips erkauft.

http://6502.org/documents/books/
MOS Programminig Manualhttp://www.faqs.org/faqs/atari-8-bit/faq/section-12.html
Der 6502 im Atari und weiterführendes zum ANTIC

Original vs. Emulation
http://www.atarimac.com/atari800macx.php
AtariMac800X, Homepage des Entwicklers

Die IDE zur Auswahl standen….
Zu Meiner Aussage, Compiler erzeugen i.d.R. Reinen, Maschinen lesbaren Objekt- Code.Ist doch eigendlich klar, oder? Nein, nicht alle Compiler übersetzen direkt in Maschienensprache, sondern gehen einen Umweg. Es wird ein sog. Pseudo- Code erzeugt, der über ein sog. Runtime Environment gestartet werden kann. Turbo Basic für den Atari 8-Bit ist ein Beispiel.

http://sdx.atari8.info/index.php?show=en_introduction
Sparta DOS Homepage

Assembler
Zu meiner Aussage, der „Atari Macro Assembler“ wurde in zeitgenössischen Testberichten unterschätzt:Drei Assembler für Atari Computer im Vergleich:

  • Happy Computer 3/85, Julian F. Reschke.

http://www.atarimagazines.com/v2n7/nightmare.html
Artikel aus: Antic, Ausgabe Nr. 7, Oktober 1983, Seite 83
Zeitgenösischer Bericht zur Auswahl des passenden Assemblers
zur Realisierug eines Spieleprojektes aus professioneller Sicht.

http://www.atarimagazines.com/compute/issue43/177_1_REVIEWS_MAC_65.php
Artikel aus Compute! Ausgabe 43, Dezember 1983, Seite 43
Zeitgenössischer Testbericht zum MAC 65Zu Meinen Erläuterungen zum Thema Zeilenorientierte Editoren, die nach der Eingabe einen Syntax Check durchführen und die eingegebenen Befehle in sog.Token umwandeln und damit den Arbeitsspeicher wesentlich effizienter nutzen.Das Prinzip der Token – es ist auch die Rede vom sog. „Pre- Compiler – und die Vor- sowie Nachteile von Compiler vs. Interpetierten Sprachen wird in „The Atari Basic Source Book“ sehr schön erläutert.

Optimierung
Querverweis zur Stüzung meiner Aussage, „Schleifen sind elegant aber langsam“

  • MOS Programming Manual, MOS Technology INC, Seite 74

Programmierte Grafik
Zur Aussage es gibt Möglichkeiten alle 256 Farben des Atari gleichzeitig darzustellen. 

Wer’s ganz genau wissen will, der schaut nach im:

  • 1. Atari Sonderheft der Happy Computer, Sonderheft Nr. 2/86

Einige Interessante Fragen aus dem Kreis der Zuhörer:

Zur Physik Engine: Es gab den Vorschlag, zur Geschwindigkeitsoptimierung, einen andern Algorithmus zu verwenden. Und zwar sollten nur die Koordinaten jener Objekte überprüft werden, die zur Auslösung eines Ereignisses benötigt werden. Also die der Felsen und Diamanten. Aus meiner Sicht ein sehr guter Ansatz, wobei dann aber ein besonderes Augenmerk auf die konstante Ablaufgeschwindigkeit des Spieles gerichtet werden muss. Denn: Je mehr Objekte – Steine und Diamanten – desto langsamer wird die Hauptschleife durchlaufen (oder bei weniger Objekten eben schneller…). Es müsste eine Methode implementiert werden, die dafür sorgt, dass das kontrolliert und dem entgegengesteuert wird. Des weiteren wäre zu beachten, dass mehr RAM benötigt wird. Bei meiner Methode ist die Information zur Position der zu manipulierenden Objekte direkt in der Bildschirmgrafik selbst enthalten. Bei der Vorgeschlagenen Methode, ist eine Matrix im RAM anzulegen – zusätzlich zum Bildschirmspeicher – die die Koordinaten (X + Y) der Objekte enthält. Wie ich das sehe, gäbe es auf modernen Plattformen nur diese eine Möglichkeit das Spiel zu realisieren, da man dort ja nie direkt auf den Bildschirmspeicher zugreift.

Warum die Hauptschleife und die Bewegung der Spielfigur nicht im Vertical Blank Interrupt realisieren: Ebenfalls ein sehr guter Ansatz. Von mir aber nicht umgesetzt, weil ich zu beginn meiner Arbeit an „Rock“ noch keine Ahnung von derlei Dingen hatte. Das Ganze nun umzuarbeiten ist nicht möglich, weil die Bewegungs- und Animationsroutine zu viele Unterprogramme anspringt. Dabei ist nun zum Einen nicht klar, wie viele Taktzyklen dabei verbraucht werden, das sollte man bei Anwendung dieser Methode schon wissen, sonst gerät der Bildschirmaufbau durcheinander, und zum Anderen viele „JSR“ – Jump to Subroutine – den Stack stark beanspruchen, das tut die Interrupt Routine aber auch. Da ist es schwer den Überblick zu behalten, selbst wenn man das von Anfang an so (Interrupt-gesteuert) machen wollte.

Ablaufgeschwindigkeit optimieren, in Assembler?…..: Tja, dass überrascht! Aber, wenn man seinerzeit von Basic auf Assembler umgestiegen ist und nun geglaubt hat, man habe den Stein der Weisen gefunden, dann irrte man! Bei unüberlegter Programmierung gerieten auch einfache Programme schnell an ihrer Grenzen. Das habe ich anhand der Schleifen- Thematik – im Vortrag unter der Überschrift „ Optimierung, das Programm wird schneller„ anhand der Schleifen-Problematik dargestellt. Wer viele Schleifen nutzt und die auch noch miteinander verknüpft, der potenziert die Anzahl der Schleifendurchläufe und damit die Verlangsamung des Programmablaufs. Nutzt man zeitkritische Interrupt gesteuerte Routinen, ist die Optimierung des Programmlaufs sowieso unabdingbar.


Atari Basic Source Book….

…die Beschreibung auf dem Buchdeckel sagt bereits alles! 

Kommentierter Source und ausführliche Beschreibung der Funktionen im Text. Was will man mehr? Ein Schönes Beispiel für die ausführliche Behandlung des Themas ist die Beschreibung der Interpretation mathematischer Terme im Detail. Wer also schon immer einmal wissen mochte, wie Atari Basic 1 + 1 zusammenzählt, bitte Sehr!

The Atari Basic Source Book

Verlinkt: 12.9.2014

Bildschirmfoto 2013-04-06 um 23.08.41