Schlagwort-Archive: Antic

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

 

 

Advertisements

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.


Display List ….

…dem Atari Kenner auch als „Antic Programm“  bekannt. Der „Antic“ ist die „Grafikkarte“ des Atari. Die Display- List (DLI)  enthält Bytes, die dem Chip mitteilen, wie der Bildschirm aufgebaut werden soll.

Das Mischen aller verfügbaren Grafikmodi läßt sich damit ebenso realisieren wie das beliebte Fein- Scrolling oder auch die gleichzeitige Darstellung aller möglichen Farben des Atari (Stichwort „Display List Interrupt“). Einmalig in der 8- Bit Welt (oder?).

Ein paar Notizen dazu:

  • Die DLI beginnt meist mit einer gewissen Anzahl Leerzeichen
    z.B.
    112,112,112
    Je „112“ werden 8 Leere Scan- Lines auf dem CRT generiert
  • Es folgt der sog. LMS- Befehl
    Teilt dem Antic Chip mit, wo der Bildschirminhalt steht.
    Besteht aus 3 Bytes,Byte 1:
    64+ Antic- Modus
    Beispiel: Textmodus 0 ergibt sich aus => 2 (Antic- Modus für „Basic Modus“ 0) + 64 (LMS) = 66.

    Wichtig: Dieses Byte, stellt bereits die erste Zeile des gewünschten Grafikmodi dar!

    Weiteres:
    Addiert man die 16 =>Horizontales Fine Scrolling aktivieren
    Addiert man die  32=>Vertikales Fine Scrolling

  • Byte 2+3:
    High und Low- Byte der Adresse des Bildspeichers.Durch das zielgerichtete ändern jener Adresse,  kann man den Bildschirm in jede beliebige Richtung scrollen (…grob, für’s feine werden noch ein bis zwei Kniffe notwendig)
  • „Jump“
    Setzt sich aus 3 Bytes zusammen:Byte 1: 65=“Jump“
    Byte 2+3: High und Low- Byte der Adresse des Beginns der DLIDiese Byte Folge zwingt den Antic die DLI wiederholt darzustellen

Das war’s. Wer mehr wissen möchte, schaut in der einschlägigen Fachliteratur nach.

Happy Coding!