Monatsarchiv: September 2013

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.


Was der Antic so tut…

Ein paar schnelle Gedanken zum Thema Zusammenarbeit der beiden Prozessoren des Atari. dem 6502 und dem ANTIC.

Bildschirmfoto 2013-09-15 um 00.31.57

Der ANTIC arbeitet sein Programm ab, die sog. „Display List“. Er schickt die Bilddaten an den GTIA. Der sorgt für die Farben und dafür, dass das Bild richtig auf dem CRT ankommt.

Braucht der ANTIC zuviel Zeit, darf er den Prozessor anhalten und direkt auf den Speicher zugreifen. Das nennt man DMA – Direct Memory Access –

Der Antic darf nur lesen, nicht schreiben? Ich denke schon, allerdings bin ich mir nicht sicher…….

Zum 6502
In den Computern der XL- Reihe ist der 6502C – „Sally“ genannt – eingebaut. Den kann man über Pin 35 anhalten. Das macht der ANTIC nach Bedarf damit er direkt auf den Sprecher zugreifen kann. In den Computern der Atari 400 und 800 Reihe sind Prozessoren vom Ty 6502B verbaut.  Dort funktioniert der DMA ebenso, allerdings wird diese Funktionalität über vier zusätzliche Chips erkauft.

Die GTIA
In den Computern der 400 und 800er Reihe sind i.d.R. keine GTIA- sondern CTIA Chips eingebaut und das, obwohl die GTIA zur Markeinführung dieser Geräte bereits entwickelt war aber, mit Fehlern. Deshalb entschied man sich eine abgespeckt Version, nämlich die CTIA zu verwenden. Der Unterschied: Mit dem Letzteren konnten die zusätzlichen 3 Basic Grafik Modi 9,10 und 11 nicht dargestellt werden.

Anzahl der Farben? GTIA 256/ CTIA 128? Recherche!

Quellen im Netz:

Diskussion zur Grafik und den Speziealchips der Atari 8- Bit auf Atari Age
Wer Schaltpläne braucht, bitte, hier seit Ihr richtig!

GTIA Design Dokument (Atari Historical Society)
Wer’s genau wissen möchte. Hier gibt es aus berufenem Munde – den Ingenieuren selber – Insiderwissen en‘ Masse. Es handelt sich um die NTSC Version der GTIA.

 


Große Display List’s

Ein bisschen was zu dem Thema Antic und dessen Programm, der Display List, habe ich hier im Blog schon beschrieben.

Das Antic Programm, Schnelleinstieg

Aktuell bemühe ich mich eine eigene Display List mit 320 x 192 Bildpunkten zu programmieren die genau so ausschaut wie der Atari Basic Modus 8.

Kleine Komplikation dabei:

  • Die Display List (das Antic Programm) darf eine 1K Grenze nicht überschreiten
  • Der Bildschirmspeicher auf den die Display List zeigt, dar 4K nicht überschreiten

Herausforderung 1 lässt sich meistern, wenn man genau vor der 1K Grenze einfach einen Befehl einsetzt, der auf das erste Byte der Display List nach der 1K Grenze zeigt. Dazu benutz man die JMP Anweisung (JMP dez. 1). Im Gegensatz zur  JVB Anweisung (JVB Dez 65) – die dazu dient das Ende eine Display List zu kennzeichnen und auf den Vertical Blank, also auf den Beginn des neuen Bildes zu warten – tut genau das letzter die JMP Anweisung nicht.

Genau so macht man es mit dem Bildspeicher, wenn der die 4K Grenze erreicht. Man benutzt den LMS (Load Memeory Scan Dez 64) und zeigt auf genau das erste Byte nach der 4K Grenze.

Die Befehle sind alle gleich aufgebaut:

1. LMS/JVB oder JMP = 1 Byte

2. Adress = 2 Bytes

Beim LMS ist noch zu beachten, dass der bereits selbst die jew. erste Zeile des Bildes ist. Beim Basic Modus 2 also:

Anfang 64+2
2
2
2
65,Anfang

Sind 4 Zeilen.

Soviel zur Theorie. Nun, leider ist es mir bis jetzt nicht gelungen eine Display List zu schreiben, die einen 8K Großen Bildschirmspeicher abbildet.