Archiv der Kategorie: Retroprogrammierung

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.

 


Computer, ganz easy…….

The Register hat bereits 2016 bekannt gegeben, dass das Verlaghaus Usborne (Vereinigtes Königreich) seine in den 1980er Jahren veröffentlichen Lehrbücher zum Thema Computer online gestellt hat.

Die Links zum Download hat The Register hier veröffentlicht.

Direkt zu Usborne geht es hier.

Der Verlag wurde 1975 gegründet, das Angebot richtet sich vor allem an Kinder. Soweit ich weiss, wurden die Bücher zu Thema Computer seinerzeit auch in Deutschland veröfdentlicht. Der Verlag hat zu dem Thema seine Traririon fortgesetzt. Einen Eindruck über das aktuelle, deutschsprachige Angebot kann man sich da verschaffen:

Usborne Deutschland

Die Links habe ich zuletzt am 8.1.2019 getestet. Viel Spass!


Mark Williams (C)

Ende der 1980er Jahre bin ich in die 16- Bit Welt aufgestiegen und habe mir einen Atari 1040 ST zugelegt. Die Sprache C war damals en Vouge und ausserdem recht sexy, das neue Atari Basic, nett ausgedrückt, langsam….

Der Compiler meiner Wahl war das in Deutschland von Markt und Technik vertriebene Mark Williams C. Nicht etwa lange Recherchen führten mich zum Kauf des recht kostspieligen Produktes, sondern seine Verfügbarkeit in meiner Heimatstadt.

 

Mwclogo.svg

Logo, Mark Williams Company. Quelle: Wikipedia, Copyrighted free use

Keine GUI, eine Bash ähnliche Shell ist die Kommandozentrale des Compilers. So kam es, dass mein erstes getipptes Unix/ Linux Kommando „ls“ ungefähr zwischen 1989 und 1990 in der Konsole landete. Unmittelbar danach habe ich meine ersten Gehversuche mit dem (micro)Emacs gemacht. Man sollte denken das mein Jüngeres ich sich davon hätte abschrecken lassen. Schließlich hatte ich meinen 8- Bit Atari eingemottet und dachte mit der Maus wird alles besser. Wäre dem so gewesen, dann wäre auch meine Geschichte hier zu Ende. Im Gegenteil, es war Liebe auf den ersten Blick!

Screen Shot 2017-07-07 at 11.09.37 PM

Micro Shell – MSH

Screen Shot 2017-07-07 at 11.17.28 PM

ST- MicroEmacs

Screen Shot 2017-07-07 at 11.21.09 PM

Mark Williams ReSource Editor, der einzige GUI- Anteil im Paket. Ganz komfortabel die Benutzeroberfläche deiner App (sorry, .PRG) gestalten.

Ich werde diesen Artikel als Startpunkt für weitere, ausführliche recherchierte Fakten zum Mark Williams C nutzen. Bis hierhin erst einmal ein paar Dinge die ich bis jetzt gefunden, beziehungsweise eben nicht gefunden habe.

Da wäre zunächst einmal ein Funktionierendes Disk Image des Compiler’s. Gefunden habe ich das im AtariAge Forum, allerdings nicht vollständig. Die Shell und der Emacs laufen, der Compiler nicht:

Mark Williams C auf AtariAge (verlinkt am 7.7.2017)

Mein absoluter Wunsch und Traum, bis jetzt, wäre eine Original Ausgabe von Markt und Technik. Bis jetzt, blieb die Suche erfolglos.

Ein Ehemaliger angestellter der Mark Williams Company hat mit Erlaubnis seines ehemaligen Arbeitgebers den Source Code und einige Bücher der Firma online gestellt:

Mark Williams Company Sources, Stephen A. Ness  (verlinkt am 7.7.2017)

 

 


Stephen Lawrow

….hat den Mac/65 Assembler für die Atari 8-Bit Computer programmiert.

Auf ANTIC the Atari 8-bit Podcast (letzter Aufruf: 17.3.2016) ist nun ein Interview mit Stephen erschienen. Einige der Dinge die ich im Rahmen meines Vortrages  zum  Thema Assembler im allgemeinen und den MAC/65 im speziellen angesprochen habe, werden durch den Programmierer im Interview bestätigt. Unter Anderem geht es um den Vergleich des weitgehend zu  MAC/65 kompatiblen Atari Assembler Editor Moduls bezüglich der Geschwindigkeit beim Assemblieren und warum der erstgenannte schneller ist (Stichwort: Pre Compiler und Speicherung des Quelltextes – ähnlich dem Atari Basic – als Tokens).

in meinem Blog habe ich bereits einiges zum  Thema Assembler und der 6502 Assembler Sprache veröffentlicht. Eine kleine Auswahl findet sich hier:

 

 

 

 

 

 

 

 


Effekt Hascherei…

…ist durchaus eine positive Eigenschaft unter Spiele- oder Demo Codern.

Wer auf modernen Maschinen ein Spielchen schreibt und etwa einen animierten Titel möchte, der gestaltet den mit dem Zeichenprogramm und diversen anderen Tools zur Animation. Das war es.

Früher, auf den 8- Bit Maschinen, wurde dasselbe, quasi von Hand, in Stein gemeißelt, möchte sagen, mühsam programmiert.

Zur Zeit habe ich dazu einige eigene Sachen, im Selbstversuch für die Atari 8- Bit Computer geschrieben, nur so, um mal zu sehen ob ich den technischen Hintergrund einiger der bekannteren Effekte verstanden habe.

Das Video zeigt wie sich mit Hilfe des Display- List Interrupts auf dem Atari mehrfarbige, bewegte Objekte darstellen lassen.

Dieses Video zeigt, wie sich auf dem Atari ein – wie ich es nenne –  Curtain Effect realisieren lässt.


Bored of Floppy

Horizontales fein- Scrolling. Ein Mysterium, für mich, auf dem kleinen Atari. Bis Jetzt. 

Sicher, das Prinzip war klar. Nur das ganze in Code – 6502 Assembler – zu fassen, das habe ich mich noch nicht getraut. Damit es etwas spannender wird als eine einfache Machbarkeitsstudie, die irgendwelche Zeichen aus den Tiefen des Atari OS über den Bildschirm scrollt, habe ich mich dazu entschieden ein berühmt berüchtigtes Spielprinzip zu kopieren.

Das Spielchen darf man sich von meinem repository herunterladen, inklusive Source Code.

GitHub, Bored of Floppy

 

 


Zeichensätze….

…für die Atari 8- Bit Computer.

Wer Talent hat kann sich die selber zeichnen. Wer das nicht kann, der bekommt fertige Zeichensätze bei Atari ONLINE.PL unter dem Folgenden Link:

Zeichensätze (23.8.2014) 


Anatomy of a Bird

Kaum ein System, auf das es der muntere Vogel mit dem nervösen Feuerknopf nicht geschafft hätte. Ich erspare dem geneigten Leser die Einzelheiten. Aber, wie funktioniert es, das Spiel, technisch?

Das Spielfeld scrollt endlos von links nach rechts. Nun ist das Spielfeld nichts anderes als das, was der jeweilige Rechner vom RAM auf dem Bildschirm anzeigt und das ist mit Sicherheit nicht endlos.

Also, ich nehme einmal an, es wird eine endlich Anzahl Spielebildschirme gescrollt und irgendwann, ohne das es der Spieler merkt, wird ein neues Spielfeld gezeichnet und das ganze beginnt vorn vorne.

Selber machen ist das Gebot der Stunde. In Assembler auf dem Atari 8- bit. Nachstehend, kurz skizziert, wie der Antic der Atari Rechner das Anzeigegerät verwaltet, wenn er davon ausgehend muss, dass der Programmierer jetzt von ihm wünscht, dass er horizontal fein- scrollen soll. Ein Custom Chip erster Güte und Stunde, der seinesgleichen unter zeitgenössischen 8- Bit Rechnern sucht.

 

Floppy Screen Ram and Fine Scroll

 

To be continued…………

 

 


Shift – Escape – Restore zum nachlesen

Shift – Escape – Restore ist der Name eine Vortragsreihe die im Sommer 2012 an der Berliner Humbolt Universität stattgefunden hat. 

Mehr als einem Duzend Retro- Aktivisten wurde hier die Möglichkeit geboten, ihre Projekte Vorzustellen.

Retro möchte dabei  nicht als der verklärende Blick in die Vergangenheit verstanden werden, sondern als die aktive Beschäftigung mit alter Hard- und Software als Mittel zum Verständnis der modernen Medienwelt, auch zum Zweck der Kritischen Auseinandersetzung mit derselben.  So zumindest habe ich die Motivation der meisten Teilnehmer aufgefasst. Manch einer mag aber auch nur deshalb aktiv sein, weil es schlicht und einfach Spass macht etwas neues zu entdecken.

image

Letzteres nun war für mich der Ausgangspunkt mich selbst einmal mit dem Thema auseinanderzusetzen.

Das Ergebnis kann im aus der Vortragsreihe entstandenen Buch aus dem CSW- Verlag nachgelesen werden, in dem ich ein Kapitel mitgestalten durfte.

Ich erkläre am Beispiel eines simplen Computerspieles für den Atari 8- Bit Computer, dass ich in 6502- Maschinensprache geschrieben habe, wie die Vorgänger der heutigen App- Macher vor knapp 30 Jahren gearbeitet haben, welche Software Tools zu Verfügung standen und wieviel Spass es mir gemacht hat mich nach einer Zeit der Abstinenz wieder kreativ mit dem Medium Computer auseinanderzusetzen.

Das Buch kann direkt beim Verlag vorbestellt werden:
CSW Verlag, Shift – Restore – Escape

Mehr zu dem Projekt aus dem der Vortrag und schließlich der Artikel entstanden sind, kann man hier im Blog nachlesen:
Projekt Rock

Und last, but not least, hier gibt es das Video zum Vortrag selbst:

 

 

 

 


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!