Schlagwort-Archive: 6502

Atari Basic, anpassen

Das Atari Basic wurde für die ersten Atari 400 und Atari 800 Computer auf Steckmodul geliefert. In den Rechnern der XL- Reihe war das Basic ROM auf der Platine fest verdrahtet. Dennoch, es gab pfiffige Erweiterungen dieser Sprache. Ich habe mich immer gefragt, wie kann man die Software im ROM ändern? Antwort: Im ROM schon mal überhaupt nicht, aber, wenn man das Binary aus dem ROM Bereich ins RAM hinüberkopiert, dort ändert, na dann, dann klappts.

Man verzeihe mir die Phrasen- Drescherei, aber, ein Bild, dass sagt nun einmal wirklich mehr als tausend Worte…

Der unter [1] verlinkte Source Code zeigt wie man das Atari Basic ins RAM kopiert, den READY- Prompt nach seinen Gunsten umbenennt und überdies hinaus auch noch zwischen der geänderten Version des Basic und der junfräulichen Variante, hin- und herschalten kann.

Auf den Trick bin ich durch einen Artikel aufmerksam geworden, der unter [2] verlinkt ist.

Viel Spass!

[1] Atari Basic patch, Source Code auf GitHub
[2] Goto10 Retrocomputing Blog, Change the Atari Basic Ready prompt.

Werbung

Ed Fries

Antic, the Atari 8- bit Podcast, lange nicht gehört, Lange Zugfahrt, logische Folge: Nachholbedarf gestillt. Das Interview Nummer 409, mit Ed Fries war interessant. Es ging vor allem um seine Zeit als Programmierer für Romox – ein Software Publisher der frühen 1980er Jahre – und natürlich um die von ihm entwickelten Spiele.

Den Link zum Podcast und dem Wikipedia Eintrag über Ed Fries habe ich hier im Artikel hinterlassen.

Schon früher habe ich einen kleinen Artikel zu Ed geschrieben. Darin ging es vor allem um sein Spiel Sea Chase über das im Podcast ebenfalls gesprochen wird. Das schöne am aktuellen Interview ist, dass Ed den Source Code für seine Spiele zur Verfügung gestellt hat. Viel Spaß beim reinhören.

Zum Interview, Antic the Atari 8- bit Podcast

Die Links:

Wikipedia Eintrag zu Ed Fries

Ed Fries/ Sea Chase hier im Blog

Die veröffentlichten Quell- Codes:

Sea Chase
Nach Ed’s eigenen Worten, im Vergleich zu seinen übrigen Spielen, technisch das vollendeste.

Nitro
Unveröffentlicht, work in progress.

Princess and Frog
Frosch und Prinzessin, ganz klar, es geht um….. Frogger!

Ant Eater
Leicht zu verwechseln mit einem „ähnlichen“ Spiel eines anderen Herausgebers. Die Version von Ed Fries war mir bislang nicht bekannt.

Chess
Unveröffentlichtes Schach Programm


Ich habe veröffentlich….

Vor ein paar Jahren habe ich, nur so zum Spass, ein kleines Spielchen für die kleinen Atari 8- Bit Computer geschrieben. Es war eine schöne Überraschung, als ich entdeckt habe, das es irgendwie seinen Weg zu Atarimania gefunden hat.

Atarimania, Bored of Floppy
GitHub, Source Code, Binarys

Bored of Floppy


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.

 


Apple Logo Source Code…..

Der Source Code für das Apple ][ Logo wurde gefunden und veröffentlicht: Ada Fruit Blog (Letzter Aufruf am 10.11.2018)


Plot Routine, ein Geschwindigkeitsvergleich

Im Basic Grafik- Modus 7 des Atari 8- Bit soll an beliebiger Stelle ein Bildpunkt ein/ ausgeschaltet werden. Vergleichbar mit dem Plot- Befehl des Atari Basic.

Die Routine die das tut, soll in 6502- Assembler laufen. Farbe und X- sowie die Y Koordinate werden an das Programm übergeben. Aus den Koordinaten muss nun die Adresse des Bytes im Bildspeicher berechnet werden, in dem sich das gesuchte Bit – der Bildpunkt/ das Pixel – befindet. Schließlich wird das Bit und damit der Bildpunkt gesetzt.

In der Grafikstufe 7 besteht eine Zeile auf 160 Bildpunkten und belegt 40 Bytes. Aus der Y- Koordinate ergibt sich die Zeilenadresse indem man die mit der Anzahl der Bytes multipliziert. Je Größer Y, desto mehr Zeit vergeht, bis die Zeilenadresse berechnet ist. Film 1 zeigt die Variante der Routine, die für jeden Bildpunkt die Zeilenadresse immer wieder neu berechnet.


Film 1

Film 2 zeigt eine Variante bei der die Zeilenadressen einmal berechnet und dann in einer Tabelle abgelegt wurden. Das Ergebnis: Es geht schneller.


Film 2

Ganz ähnlich habe ich das im Rahmen eines Spiels verwirklicht. Auch hier wurde es vermeiden, dass Selbe zu wiederholen, sondern, zeitaufwendiges wurde nur einmal gemacht und die benötigten Ergebnisse in einer Tabelle abgelegt von wie die dann nur noch abgeholt werden müssen. Näheres dazu da: Rock, Determinismus in Assembler

Viel Spass!


Sweet 16

Sweet 16 ist eine Betriebssystem Routine im ROM des Apple II, eine Erweiterung des 6502 Befehlssatzes die dem 8- Bit Prozessor zu 16- Bit Funktionalität verhilft.

weiterlesen


Undokumentierte Opcodes…..

…zumindest hat das MOS nicht getan. Wie gut das es eine funktionierende Community gibt.

Auf der folgenden Seite findet ihr außer dem DOP – dem doppelten NOP – noch weitere neckische Spielereien für die 6502 Architektur eurer Wahl. So richtig was für lange kalte Winterabende. Viel Spass wer’s noch nicht kannte.

http://www.ataripreservation.org/websites/freddy.offenga/illopc31.txt


Bubble Sort V2

Meine erste Lösung zum Bubble Sort Algorithmus in 6502 Assembler kann man sich hier im Blog anschauen: Bubble Sort. Ein Array von max. 255 8- Bit Integern wird aufsteigend sortiert.

Die aktuelle – auf das vorgenannte Programm aufbauende – Routine schafft es ein Array mit 255 Elementen zu sortieren. Die Maximale Länge je Element beträgt 255 Buchstaben/ Ziffern.

Wie das geht? Schaut mal da: Bubble Sort

Das Array darf entweder Zahlen oder Buchstaben enthalten oder eine Kombination aus beidem.


Bubble Sort

Ich glaube das hier  funktioniert….

Bubble Sort Routine. Sortiert eine Feld von max 255 8- Bit Integern, aufsteigend.

Bubble Sort Routine.
Sortiert eine Feld von max 255 8- Bit Integern, aufsteigend.