CODINGLISTINGS ★ BANKFLIP (SCHNEIDER AKTIV) ★

Bankflip (Schneider Aktiv)Coding Listings
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

BASIC-TRICKKISTE

Die CPC-Serie verfügt über ein ausgeklügeltes Betriebssystem, in dem ungeahnte Fähigkeiten schlummern. Diese können auch vom BASIC ausgeschöpft werden, wobei das Handbuch nur spärlich Hilfestellung leistet. Aber zum Glück gibt es ja SCHNEIDER AKTIV, das dieses Manko wieder ausbügelt.

TRICKREICHE SCREENS

Beim nachdenklichen Betrachten des Monitor-Bildschirms haben Sie sich vielleicht auch schon mal gefragt: Wie macht der CPC das eigentlich? Da werden drei verschiedene MODE's zur Verfügung gestellt, Grafik und Text können beliebig gemischt werden und zudem gibt's noch bis zu 16 verschiedene Farben. Die Antwort klingt im ersten Moment recht einfach — der CPC ,merkt* sich jeden Bildschirmpunkt mit der. zugehörigen Farbe. Doch — wie alles — hat auch diese Leistung ihren Preis, denn der CPC benötigt für sein Video-Gedächtnis satte 16 KB Speicherplatz. Dieses Gedächtnis, auch Video-RAM genannt, belegt die 16* 1024 Speicherplätze ab der Adresse 44152 oder liegt — hexadezimal ausgedrückt — im Adreßbe-reich von &C000 bis &FFFF. Genauer gesagt, liegt es dort normalerweise, denn mit einem einfachen CALL-Befehl kann der Videospeicher in den Adreß-bereichvon &4000 bis &BFFF verlegt werden, muß jedoch dann mit MEMORY &3FFF geschützt werden.

Das ist ja prima, werden Sie sagen, aber was habe ich denn, außer weniger Platz für BASIC-Program-me, von einr solchen Opera me, von einer solchen Operation? Ganz einfach, Ihnen stehen zwei voneinander unabhängige, schnell auswechselbare Bildschirmseiten zur Verfügung! Der alte BiJdschirmspeicher bleibt Ihnen nämlich erhalten und kann jederzeit mitsamt seinem Inhalt wieder in die alten Rechte eingesetzt werden. Die Auswahl der Bildschirm-Bank erfolgt über den Firmware-Vektor &BC06, wobei das High-Byte 0) an den CALL angehangen werden. Im Klartext: CALL &BC06,&40 — Zusatz-Bank wählen CALL &BC00,&C0 — Standard-Bank wählen Aber das ist noch nicht alles! Denn normalerweise findet die Video-Ausgabe in der gerade angewählten und damit sichtbaren Bank statt. Damit der CPC auch Bescheid weiß, wo er die Video-Informationen ablegen kann, merkt er sich das erwähnte High-Byte der aktuellen Videobank in einer Speicherstelle. Dies ist beim CPC 464 die Adresse & Bl CB und beim CPC 664/6128 die Adresse &B7C6. Hier kann man den gewünschten Wert ,po-ken‘ und in Zusammenhang mit einem MODE-Befehl den obigen CALL umgehen. Interessant wird es, wenn nach dem CALL das Highbyte der gerade , brach-liegenden1 Bank eingetragen wird. Dann erfolgt die Video-Ausgabe auf der nicht-sichtbaren Bildschirmseite, während der aktuelle Bildschirm unangetastet bleibt. Ein Umschalten der Bildschirm-bank sorgt für einen schnellen Bildwechsel, so daß sich unter BASIC einfache Trick Sequenzen erzeugen lassen. Ein Beispiel hierfür stellt das folgende Programm Bankflip dar.

Das ,Herzstück' des Programms liegt in den Zeilen 160—200: Hier werden die Koordinaten in den DATA-Zeilen 260—290 ausgelesen und entsprechend der Kennung „P" bzw. „D" wird ein Punkt oder eine Linie gezogen. Um die Grafik laufend zu verkleinern, werden diese Koordinaten mit der Variablen .Faktor1 multipliziert. Für die perspektivische Wanderung sorgt der ORIGIN-Befehl in Zeile 100: Der Ursprung des Grafik-Bildschirmes wird hier auf eine Reise von .links unten* nach ,rechts oben* geschickt. Für den Bildschirm-Wechsel und den verborgenen Grafik-Aufbau sorgen — wie beschrieben — die Zeilen 140-160.

Nun aber zurück zum Bildschirm-Speicher, dessen Aufbau kurz erläutert werden soll:

Im hochauflösenden MODE 2 stehen nur zwei Farben, dafür jedoch 640*200 Punkte zur Verfügung. Ein Video-Byte enthält hier die Information von 8 nebeneinanderliegenden Punkten. Im MODE 1 ist die Anzahl der ansteuerbaren Punkte auf die Hälfte reduziert - es können nur 320*200 Punkte angesprochen werden. Damit das Video-RAM dennoch ausgelastet ist, können diese Punkte doppelt soviele Zustände, d.h. 4 Farben, annehmen. Ein Byte kontrolliert hier 4 nebeneinanderliegende Punkte, die jeweils doppelt so breit sind wie ein MODE 2-Pixel. Analog verhält es sich im MODE 0, Die Anzahl der Punkte wird erneut auf 160*200 halbiert, die Anzahl der Farben hingegen wird auf 16 verdoppelt. Ein Byte verwaltet nur noch zwei voneinander unabhängig ansteuerbare Punkte, die nun über die vierfache Breite eines MODE 2-Pixels verfügen und deswegen auch schon etwas unförmig wirken.

Fiii die In formations-Abläge im Speicher haben sieh die CPC-Konstrukteure etwas ganz besonderes ausgedacht, denn hier wird nicht etwa der Reihe nach vorgegangen.

Der Bildschirm besteht ja aus 25 Grobzeilen, die ihrerseits wieder aus je 8 Pixelzeilen bestehen. Fassen wir diesen Sachverhalt als 25 Stapel mit S übereinandergeschichteten Elementen auf. Nun werden Pakete gebildet - die jeweils obersten Elemente bzw. Pixelreihen werden der Reihe nach zusammengefaßt, dann die zweitobersten usw., bis 8 Pakete fertig sind. Diese Pakete werden nun, jeweils durch einen Puffer von 48 Bytes (sog. „Gap“) voneinander getrennt, in der Reihenfolge 1—8 im Video-RAM abgelegt. Rechnen wir zur Sicherheit noch ‘mal nach: 25 'gleichrangige* Pixefreihen mit je 80 Bytes bilden ein Paket von 2000 Bytes, darauf folgt ein ,Gap‘ mit 48 Bytes, das ganze 8 Mal ergibt 8*2048 Bytes, was genau 16384 Bytes und damit den erwähnten 16 KB (=16*1024 Bytes) benötigten Speicherplatz ergibt. Ein Scroll-Vorgang macht das Ganze noch komplizierter, denn hier wird nicht etwa der gesamte Video-Speicherinhalt verschobcn, sondern lediglich eine interne Markierung. Aber lassen wir das und kommen lieber von der grauen Theorie zur verspielten Praxis. Dieses kleine Programm greift direkt in den Video-Speicher ein und setzt in gleichen, aber mit jedem Durchlauf größer werdenden Absätnden ein Video-Byte auf den Wert 255:

10 MODE 2
20 DEFINT i,s
30 FOR s=1 TO 100
40 FOR i=&C000 TO &FFFF STEP s
50 POKE i,255
60 NEXT i
70 CLS
80 NEXT s

Bei den ersten Durchläufen kann man noch recht gut das .Marschieren* durch die einzelnen Pakete verfolgen, später wird dies schwieriger, aber dafür haben die schnell wechselnden Strukturen und Muster ihren optischen Reiz. Der Wert 255 entspricht der Binär-Zahl 11111111, d.h. alle 8 Bits des Video-Bytes werden gesetzt. Im MODE 2 heißt das, daß 8 nebeneinanderliegende Puntke auf PEN 1 gesetzt werden. Diesen Wert können Sie natürlich in Zusammenhang mit verschiedenen MODE.s ändern - zum besseren Kennen-lemen des Video-RAM's bietet sich ein wenig Experimentier-Freude an!

SA

★ PUBLISHER: Schneider Aktiv
★ YEAR: 1986
★ LiCENCE: LISTING
★ COLLECTION: SCHNEIDER AKTIV 1986
★ AUTHOR: Olav Pankow
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Bankflip    (Schneider  Aktiv)    GERMANDATE: 2021-06-12
DL: 141
TYPE: ZIP
SiZE: 4Ko
NOTE: Dumped by Johnny Farragut ; 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Tableau Banks
» Coding » Logon System ACPC n°40 - Gerez vos Banks ... de mémoire
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 549 millisecondes et consultée 659 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.