Schlagwort-Archive: Assembler

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:

 

 

 

 

 

 

 

 


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…………

 

 


Sprachensammlung

Meine Obsession für historische IDE’s – ursprünglich vor allem für Atari 8- Bit Assembler – belege ich einfach mal mit diesem Link : Atari 8- Bit Assembler (hier im Blog)

Auf Facebook bin ich über die Folgende nette Übersicht zum Thema Assembler und weitere, sogenannte Höhere Programmiersprachen, für den kleinen Atari gestolpert:

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

Viel Spaß!


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.


Zahlenspielereien die Vierte

Die gute alte Highscore. Was täten wir nur ohne Sie. Die Highscore macht das Spiel erst zum Wettbewerb. Wie aber sage ich es meinem Computer in 6502 Assembler.

Ja, wie kann ich in 6502 Maschinensprache zwei beliebig große Zahlen miteinander vergleichen?

So geht’s:

Bildschirmfoto 2013-06-30 um 18.04.46

 War eine kleine Übung am Sonntag morgen. Hat jemand eine bessere Idee? Anregungen nehme ich gerne an!

„Neues“ von Bill….

Bill Wilkinson, ehemals angestellt bei Shepartson Micro Systems , verantwortlich für das erste Atari DOS, schreibt in Compute! Ausgabe 4 vom November 1982 u.a. über die für den Atari erhältlichen Compiler/ Interpreter- Sprachen und Assembler.

Den o.g. Artikel und weitere interessante Beiträge von Bill finden sich hier.

Zum Thema Programmiersprachen, speziell Assembler,  und zum Thema DOS’e der Atari 8- Bit, einige meiner Artikel, ebenfalls hier im Blog:

Viel Spass beim stöbern


Zahlenspiele (in 6502 Assembler). Es geht weiter…

..der im Folgenden verlinkte Artikel aus der Compute! Ausgabe 34 vom März 1983, zeigt wie die Eingabe von Zahlen programmiert werden könnte:

Zum Artikel

Die bisherigen „Zahlenspiele“ und wie man das in 6502 Assembler machen könnte finden sich hier im Blog, einfach dem Link folgen:

Zahlenspiele mit Retrozock 

Unter dem Schlagwort „Zahlenspiele“ finden sich Artikel mit Beispielen die zeigen, wie in Assembler 8/ 16 Bit Integer auf dem Bildschirm ausgegeben werden können. Die Artikel entstanden bei meiner Arbeit an „Diamonds“ (Projekt Rock).

Es galt zu ergründen, wie ich die aktuelle Punktezahl, Level, Leben usw. auf dem Bildschirm ausgeben könne. Es gelang!

Viel Spass!


Testbericht zum Mac 65 Assembler

Einen zeitgenössischen Artikel findet man da:

Craig Chamberlain / Compute! Ausgabe 43 / Dezember 1983 / 

Bildschirmfoto 2013-04-29 um 21.44.26

Assembler, frühe IDE, eine Auswahl


Lean Code am lebenden Beispiel…

…Source zum „Projekt Rock“ entrümpelt.

Die Erkentnisse aus „6502 Lean Code durch sparsame Flags“ gleich ausprobiert. Spart einiges an Source Code und gewinnt damit mehr Speicherplatz für’s Editieren. Der Objekt Code wird ca. 12 Bytes kleiner. Schön!

Source, Projekt Rock. Stand: 9.4.2013

Source, Projekt Rock. Stand: 9.4.2013

Die als Kommentar gekennzeichneten Zeilen können selbstverständlich entfallen. Was ehemals „MOVE“ hies und ein Byte verschwendete, wurde nun durch das Carry- Flag des 6502 ersetzt.

Schon Toll. Wir nähern uns einem Boulder Dash- alike, das nur knapp 2kB! RAM belegt.


6502 Lean Code durch sparsame Flags

Man ruft ein Sub. Das Sub soll signalisieren ob einen Bedingung erfüllt ist oder nicht. 

Nun ja, wir lassen das Sub einfach ein Flag entsprechend der zu prüfenden Bedingung setzten. Der Aufrufende Programmteil prüft nun diese Flag und reagiert entsprechend. Könnte so aussehen:

JSR CHECK
LDA FLAG
CMP #ISOK
BNE NOTOK
ALLES KLAR. DO WHATEVER….

NOTOK:
DO WAHTEVER…..

CHECK:
LDA BEDINGUNG
CMP #ERFÜLLT
BNE NICHTERFÜLLT
LDA #ISOK
STA FLAG
RTS

NICHTERFÜLLT
LDA #NOTOK
STA FLAG
RTS

Umständlich!

Wir verschwenden ein ganzes Byte für das Flag und wir müssen LDA / STA und LDA / CMP ausführen. Noch mehr verschwendeter Platz! Nun bietet unser 6502 eine Menge Register. Warum nicht das Carry- Flag als „Flag“ nutzen. Dafür ist es schließlich gedacht.

Das Bespiel oben könnte dann so aussehen:

JSR CHECK
BCS ISOK
DO WHATEVER…. (Not Ok!)

ISOK:
ALLES KLAR, DO WHATEVER!

CHECK:
LDA BEDINGUNG
CMP #ERFÜLLT
BNE  NICHTERFÜLLT
SEC  (Bedingung ist erfüllt)
RTS

NICHTERFÜLLT:
CLC
RTS

Recht elegant…….