★ APPLICATIONS ★ PROGRAMMATION ★ Mehr Farbe ins Bild ★![]() |
| Screen Pack Plus | Applications Programmation |
SCREEN-PACK-PLUS -das Superprogramm Screen Pack Plus bietet Ihnen gleich zwei nützliche Eigenschaften an: Sie können erstens doppelt (weniger einer Farbe) so viele Farben wie üblich in jedem Mode darstellen, und zweitens haben Sie alternativ die Möglichkeit, zwei Auflösungen gleichzeitig auf dem gesamten Bildschirm darzustellen. Das besondere hierbei ist, daß es keine Einschränkungen hinsichtlich der Auflösung gibt und die Eigenschaften nicht auf bestimmte Bildabschnitte beschränkt sind. Mit anderen Worten: Diese Leistungsmerkmale gelten für jeden einzelnen der max. 128.000 Pixel. Was macht das Programm? Es drängt sich natürlich die Frage auf, wie dieses realisiert werden kann, da bisher eine Steigerung der Farbfähigkeit oder eine Mischbarkeit von zwei oder mehreren Modes auf bestimmte Bildabschnitte beschränkt war. So konnte z.B. in Teil 3 der Serie Profi RSX (vergl. PC Schneider Int. 8/87) bis zu achtmal der Mode gewechselt werden. Auch waren bis zu 16 Farben in Mode 2 realisierbar. Das Ganze hatte jedoch einen Nachteil. Die Bildschirmgrafik war nur zeilenweise zu beeinflußen. Es konnten also nur nach mindestens drei Zeilen der Mode oder die Farben gewechselt werden. An einen Wechsel des Modes innerhalb einer Zeile war nicht zu denken. Erfreulicherweise ist Letzteres mit Screen-Pack-Plus jetzt möglich. Auch wenn nur zwei Modes zur gleichen Zeit verfügbar sind, dürfte dieses einen nicht unwesentlichen Fortschritt in den Grafikfähigkeiten Ihres CPCs bedeuten. Bevor wir zu den programmtechnischen Hintergründen kommen, hier kurz einen Überblick über die Leistungsmöglichkeiten: Version 1: Verdoppelung (-1) der max. Farbenzahl auf:
Wobei die Zahlen für die Anzahl der verwendbaren Farbstifte gelten. Diesen können leider nur max. 27 Farben zugewiesen werden, da der CPC nicht mehr verschiedene Farben erzeugen kann. Die restlichen vier Stifte in Mode 0 sind somit in ihrer Verwendbarkeit leicht eingeschränkt. Sie lassen sich jedoch recht gut für zusätzliche Blink-Aktivitäten nutzen, ohne daß andere Stifte auch ins Blinken geraten. Version 2: 2 Modes gleichzeitig auf dem gesamten Bildschirm. Bei beiden Versionen ist zu beachten, daß der Hintergrund (das 'Papier') aus programmtechnischen Gründen immer die Farbe schwarz (Nr. 0) haben muß. Funktionsweise Kommen wir jetzt zu der Eingangs erwähnten Frage zurück, wie dieses eigentlich funktioniert und realisiert wurde. Wie Sie sicherlich wissen, handelt es sich bei den zum CPC serienmäßig mitgelieferten Monitoren (gleich ob grün oder farbig) um 50 Hz-Versionen. Diese erzeugen entsprechend viele Einzelbilder pro Sekunde. Screen Pack Plus greift hier ein und wendet einen kleinen Trick an: Es halbiert die Bildwiederholfrequenz. Folglich ist der Monitor dann nur zur Hälfte ausgelastet. Die freigewordene Zeit wird durch Screen Pack Plus dazu verwendet, ein zweites Bild einzublenden. Um das Ganze nun 'monitorgerecht' zu gestalten, wird immer abwechselnd ein Bild auf den Monitor geschrieben. Um Ihnen die Wirkungsweise zu verdeutlichen, bietet es sich an, ein kleinen Vergleich als Beispiel heranzuziehen: Nehmen wir einmal an, Sie hätten zwei Transparentfolien. Auf der einen haben Sie eine farbige Grafik gezeichnet, auf der anderen dagegen haben Sie passend hierzu einige Texte abgebildet. Legen Sie diese nun übereinander, so sehen Sie beides gleichzeitig: Eine Grafik mit einigen Texten. Als Ergebnis haben Sie statt zwei Einzelbildern ein einziges Bild. Gleiches gilt für Screen Pack Plus, nur daß hier statt zwei Folien zwei Bilder eingeblendet werden. Da dieses bei jedem Bildaufbau immer abwechselnd geschieht, ergibt sich eine transparente Darstellung, die zwei Bilder erscheinen, als ob sie eins wären. Bedauerlich hat (fast) alles, neben vielen Vorteilen, auch oft mehr oder weniger gravierende Nachteile. Bei Screen Pack Plus gibt es in dieser Hinsicht auch einen kleinen 'Schönheitsfehler', der sich so bemerkbar macht, daß das Monitorbild instabiler wird, d.h., das es leicht anfangt zu flimmern. Dieses ist auch ganz logisch durch die halbierte Bildwiederholfrequenz begründbar. Allerdings ist es bei geeigneter Farbwahl und richtig eingestellter Helligkeit (bzw. Kontrast beim Grün-Monitor) noch erträglich, zumal es zum Beispiel die Firma Commodore bei Ihrem Model 'Amiga' allen Käufern auch zumutet. Wird dieser bei höchstmöglicher Auflösung (640*400 [512] Pixel) betrieben, so erreicht er diese Auflösung durch die sogenannte 'lnterlace'-Technik. Bei dieser, auch Zeilensprung-Verfahren genannten Darstellungsmethode wird die Bildwiederholfrequenz ebenfalls praktisch halbiert. Somit befindet sich Ihr CPC in 'bester' Gesellschaft, da es optisch bei beiden Rechnern zu den gleichen Auswirkungen (sprich Flimmern) kommt. Auswirkungen auf die Programmierung in BASIC/ Assembler gibt es bei dem Programm so gut wie gar nicht. Sie können wie bisher weiter Ihre Programme nach gewohntem Muster erstellen. Allerdings ist hier zwischen den beiden zur Verfügung gestellten Varianten zu differenzieren. Bei der Version 1 ist nur zu bedenken, daß Sie mit entsprechend mehr Farben (s. Abbildung 3) arbeiten können. Hinsichtlich der Erzeugung von Hardcopys ist der gleiche Weg wie bei Version 2 zu beschreiten. Bei der zweiten Version ist in Betracht zu ziehen, daß Sie mit zwei Bildschirmen direkt arbeiten müssen. Zu Beginn sollten Sie über das Kommando 'BV.ON' die beiden gewünschten Auflösungen festlegen. Dann ist es ab sofort möglich, Grafik und Texte in einen der beiden Modes auf dem Bildschirm darzustellen. Hierzu Bedarf es lediglich der Anwahl des entsprechenden Bildschirmes durch den Befehl 'Bildschirm'. Screen Pack Plus verwaltet immer zwei Bildspeicher, wobei der eine an der Standardadresse (&C000-&FFFF), der andere jedoch im Bereich von &4000 bis &7fff liegt. Dadurch ergibt sich, daß vor einem Aufruf von Screen Pack Plus HIMEM auf einen Wert von max. &3fff gesetzt werden muß (mittels MEMORY &3fff). Screen Pack Plus selbst liegt ab Adresse &8000 und beansprucht einen Bereich bis einschl. &91 ff. Sie sehen, Screen Pack Plus hat eine nicht unbedeutende Länge. Dieses rührt nicht daher, daß das gewählte Verfahren an sich so kompliziert ist, sondern das sehr viele Betriebssystem-Routinen abgeändert werden mußten, um eine (fast) vollständige Kompatibilität zu diesen zu erreichen. Welche Routinen und Steuerzeichen entsprechend korrigiert wurden, zeigen die Abbildungen 1 und 2. Alle weiteren Informationen entnehmen Sie bitte aus der anschließend abgedruckten Befehlsliste. Praxis-Einsatz Um Ihnen die bis hier vorgestellten neuen Einsatz-Möglichkeiten auch praktisch zu demonstrieren, habe ich ein kleines Demo-Programm erstellt (Listing 4), welches Ansätze für mögliche An wendüngen aufzeigt. Sie finden es ebenfalls im Anschluß abgedruckt. Insbesondere soll es Ihnen auch als Beispiel zum Einsatz der Erweiterung in eigenen Programmendienen. Betrachten wir kurz das Listing. In der Zeile 150 können Sie zwischen zwei Demonstrationen wählen. Entscheiden Sie sich für Version 1, werden die Zeilen 200 bis 400 durchlaufen. Dabei werden die erhöhten Farbzahlen in allen Modes gezeigt. Durch die kombinierte Text-und Grafik-Darstellung wird augenscheinlich, daß die Erhöhung der Anzahl der Farben wirklich für alle Pixel gilt. Auch die Ansteuerung mittels der normalen und der neuen 'PEN' und TNK'-Befehle ist ersichtlich. Zur komfortableren Farbwahl bei Grafiken haben Sie zusätzlich noch den Befehl 'GPEN' zur Verfügung. Ab Zeile 440 finden Sie die Demo- Routine für die Version 2. Da sich hier weitaus mehr Möglichkeiten ergeben, ist sie entsprechend umfangreicher geworden. Ihre Aufgabe liegt darin, ein Säulendiagramm nach vorgegebenen Werten zu erstellen. Die Werte lassen sich entweder über die Input-Routinen in den Zeilen 520 bis 680 einiesen, oder es können die in den Zeilen 720 bis 780 enthaltenen Daten übernommen werden. Ist diese notwendige Abfrage erledigt, wird das Säulendiagramm ab der Programmzeile 790 erstellt. Dieses geschieht prinzipiell so, daß auf dem Bildschirm 1 die Säulen in Mode 0 erstellt werden, damit für jede Säule eine andere Farbe verwendet werden kann. In Mode 2 (in Bildschirm 2) wird das nötige Raster sowie die Beschriftung erstellt, da nur bei 80 Zeichen pro Zeile die Übersichtlichkeit gewährleistet ist. Das Zeichnen der Säulen (der Vorderfläche) geschieht in den Zeilen 1050 bis 1100. Um diesen Säulen einen dreidimensionalen Effekt zu geben, wird in den Zeilen 1120-1170 die nötige Quaderform erzeugt. Nach Fertigstellung des Diagramms sehen Sie auf Ihren Monitor beide Auflösungen gleichzeitig. Jedoch befinden sich beide Darstellungen, wie schon angedeutet, in zwei verschiedenen Speicherbereichen. Um Ihnen dieses vor Augen zu führen, sollten Sie sich die Abbildungen 4 bis 6 ansehen. In Abbildung 4 sehen Sie als Hardcopy den Inhalt des 80 Zeichen Video-RAMs. Äquivalent zeigt hierzu Abbildung 5 die Mode 0 Grafik. Bei letzterer Hardcopy steht jede Rasterung für eine andere Farbe. Wenn nun beide Bildschirme übereinander gelegt werden (wie durch den Monitor), ergibt sich Abbildung 6. Sie zeigt, daß beide Diagramme zusammen eine absolut passende und von Auflösung und Farbigkeit wahrscheinlich nur mit Screen Pack Plus realisierbare Grafik ergeben. Hardcopys anfertigen Solche Hardcopys können Sie auch erstellen. Dazu benötigen Sie nur ein Hardcopy-Programm, wobei die hier abgedruckten Exemplare mit dem Programm 'Copyshop' erstellt worden sind. Dieses geschah wie folgt: Als erstes wurde die Grafiken erstellt und beide Grafiken auf Diskette abgespeichert. Dieses geschah mit nachstehender Befehlsfolge: Bildschirm 1 mit: SAVE "Bild1",b,&C000,&4000Bildschirm 2 mit:SAVE "Bild2",b,&4000,&4000Die so erzeugten Binär-Dateien konnten dann problemlos mit Copyshop weiterverarbeitet werden. Soll nur ein Bildschirm als Hardcopy zu Papier gebracht werden, so ist das Verfahren Copyshop üblich. Sollen zwei Bildschirme übereinander gedruckt werden, ist zu beachten, daß Sie die Papier-Position im Drucker markieren. Danach drucken Sie eine Hardcopy und bringen das Papier durch Zurückdrehen wieder in seine Ausgangsposition. Anschließend drucken Sie den zweiten Bildschirm aus. Falls Sie eine im Speicher resistente Routine besitzen, so ist diese ebenfalls verwendbar. Der Ausdruck muß dann nur zweimal erfolgen, wobei mittels des Befehles 'BILDSCHIRM' dann immer der jeweilige Bildschirm einzuschalten ist. Wichtig ist daß das Papier nach jeder ersten Hardcopy exakt auf seine Anfangsposition zurückgedreht wird.Wenn Sie jetzt noch eine für sich sinnvolle und nützliche Anwendungsmöglichkeit von Screen Pack Plus finden, dürfte sich das Abtippen (oder die Bestellung der DATABOX) des zugegebenermaßen recht langen BASIC-Loaders lohnen. Nachdem dies erfolgt ist, sollten Sie zuerst das BASIC-Listing auf Diskette oder Kassette sichern. Danach setzen Sie den BASIC-Speicher mit MEMORY &7fffherab und starten den Loader mitRUNSie können dabei das neue Binär-File automatisch abspeichem lassen. Nach Durchlauf des BASIC-Loaders löschen Sie diesen mitNEWund setzen den BASIC-Speicher durchMEMORY &3fffweiter herab. Die Initialisierung erfolgt jetzt mitCALL &8000Ab jetzt kann Screen Pack Plus auch in dieser Reihenfolge geladen werden:MEMORY &3fff: LOAD "spp-464.bin":CALL &8000(Die Ziffemfolge “464“ ist entsprechend Ihres Rechnertyps anzupassen).Das Demo-Programm ist nach der Initialisierung von Screen Pack Plus ohne besondere Vorkehrungen ablaufbar. Die Listings Zu den Listings ist noch Folgendes zu sagen: Listing 1 istdieUrversion,und sofort auf einem CPC 464 lauffähig. CPC 664-Besitzer müssen die Zeilen, die in Listing 2 stehen, in das Listing 1 einbauen, CPC 6128-Besitzer entsprechend die Zeilen des Listings 3. Das Demo-Programm fragt nach dem gewünschten Rechner ab, ist also für alle drei Rechner zugelassen. Befehlsliste Screen Pack Plus Alle Befehle von Screen Pack Plus sind als RSX eingebunden. Somit muß allen Befehlen ein senkrechter Strich vorangestellt werden. Screen Pack Plus ersetzt die interne (standardmäßige) Bildschirm-Verwaltung durch neue Routinen, sofem es nach der Initialisierung durch CALL &8000durch den Befehl 'BV.ON' eingeschaltet wurde. Ist dieses nicht der Fall, so beeinflußt es das System in kein-ster Weise, gleiches gilt für den Zustand nach dem Desaktivieren (durch 'BV.OFF'). Zu beachten ist, daß vor der Initalisierung der BASIC-Speicher durch 'Memory &3fff begrenzt werden muß. Zusätzliche Maschinensprache-Programme können erst ab &9200 abgelegt werden (bis zur Speicherobergrenze). Unabhängig von der gewählten Version wird der Bildschirmspeicher verdoppelt und auch die Darstellung seines Inhaltes auf dem Monitor durch Screen Pack Plus besorgt. Dabei werden die beiden RAM-Bänke immer abwechselnd auf dem Monitor dargestellt, die Bildwiederholfrequenz wird pro 'Bild' auf die Hälfte herabgesetzt, damit Zeit für die Darstellung von 'zwei' Bildern frei wird. Die zusammengesetzte Bildfrequenz entspricht der Standardmäßigen (meistens 50 Hz). Der Anwender merkt hiervon nichts, da die zwei Video-RAMs an der Schnittstelle Benutzer/ Screen Pack Pius bzw. Betriebssystem als ein einziger Bildschirm angesehen werden. Dieses wird durch gleichmäßiges Scrolling beider Bildspeicher und dem Beschreiben beider RAMs mit den gewünschten Zeichen oder Pixels erreicht. Es werden alle Betriebssystem-Routinen entsprechend abgeändert, so daß eine nahezu volle Kompatibilität zum Standard-Betriebssystem erreicht wird.Wichtig: Es ist unbedingt zu beachten, daß der Hintergrund (das 'Papier') immer die Farbe schwarz (Nr. 0) hat. Dieses gilt für beide Versionen. (Daraus erklärt sich auch die Verminderung der max. Farbenzahl um eins bei Version 1.) Screen Pack Plus ermöglicht zwei Bildschirmvarianten: Bei der Version 1 kann nach der Aktivierung in jedem Mode die doppelte Anzahl von Farben (-1) verwendet werden (siehe Abbildung 3). Diese Erhöhung der verwendbaren Farbstifte hat keinerlei Einfluß auf die Programmierung. Sie können durch die normalen BASIC 'PEN'- und 'INK'-Kommandos angewählt werden, da das Betriebssystem entsprechend angepaßt wurde. Lediglich in Mode 0 müssen zur Auswahl der Stifte 16 bis 30 die Befehle 5 bis 7 angewendet werden. Sie entsprechen, bis auf der möglichen Stift-nummer, den normalen BASIC-Befehlen. Bei der Version 2 können zwei Auflösungen gleichzeitig benutzt werden. Es ist somit möglich, daß Grafiken, die in Mode 0 erstellt wurden, an jeder (!) beliebigen Stelle in Mode 2 (80 Zeichen/Zeile) beschriftet werden können. Dabei geschieht die Ausgabe in zwei Bildschirme (Nr. 1 und 2). Für jeden der Bildschirme kann ein Mode separat festgelegt werden. Dieses geschieht durch den Befehl 'BV.ON'. Zur Ausgabe muß der gewünschte Bildschirm erst angewählt werden (mit 'Bildschirm'), danach erfolgen alle Angaben in diesen Bildschirm. Der andere Bildschirm wird dabei automatisch, sofern nötig, angepaßt. Es kann jederzeit zwischen den Bildschirmen umgeschaltet werden. Es ist zu beachten, daß bei jeder Umschaltung die Fenstergrenzen sowie alle anderen vom Mode abhängigen Werte auf ihre Standards gesetzt werden. Die Farben beider Bildschirme können unterschiedlich sein, lediglich die Hintergrundfarbe ist ausgenommen. Diese muß, wie oben bereits erwähnt, immer schwarz sein, da ansonsten die Bilddarstellung nicht korrekt ist bzw. stark flimmernd erscheint. Die Befehle im einzelnen 1.) BV.ON (,Version, Parameter (abhängig von der Version)) Wie bei allen Befehlen steht hier das “BV“ für Bildschirm- Verwaltung. Der Befehl kann in drei Variationen angewendet werden: a) BV.ON, 1 (, Mode) - Hiermit wird die Version 1 eingeschaltet (siehe Programm-Beschreibung). Zusätzlich kann (wahlweise!) noch ein Mode für den Bildschirm angegeben werden. In diesem Fall wird der Bildschirm gelöscht, nachdem die Erweiterung eingeschaltet worden ist. Wird kein Mode angegeben, so wird der Momentane beibehalten. b) BV.ON, 2, Mode Bildschirm 2, Mode Bildschirm 1 - Mit diesem Befehl kann die Version 2 (zwei Modes) eingeschaltet werden. Als Parameter werden die beiden Modes nach der Versionsnummer angehängt. Dabei gilt der letzte Parameter für den Bildschirm Nr. 1, während der zweite Parameter für den zweiten Bildschirm zuständig ist. Der Bildschirm wird gelöscht und Sie befinden sich auf dem “ersten“ Bildschirm. c) BV.ON (keine Parameter) - Durch diesen Befehl läßt sich die letzte Konfiguration, welche bei der letzten Anwendung des Befehles 'BV.OFF' gerade aktiv war, wieder herstellen. 2.) BV.OFF (keine Parameter) Mit diesem Befehl kann die Erweiterung wieder ausgeschaltet werden. Der Bildschirm wird gelöscht und der alte Mode (der vor der Einschaltung mit 'BV.ON' definiert war) wird wieder eingestellt. 3.) BV.FLAG, 0 oder 1 Folgt hier eine “0“ auf dem Befehlsnamen, so wird der Bildschirm nach Aufruf von BV.OFF nicht gelöscht. Ansonsten erfolgt die Herstellung des vor dem Aufruf der Erweiterung gültigen Modes (Standard). 4.) F.MELDUNG, 0 oder 1 Screen Pack Plus gibt bei falscher Anwendung der RSX-Befehle Fehlermeldungen aus. Durch diesen Befehl läßt sich dieser Service ein- (1) oder ausschalten (0). 5.) PEN, Nummer (0-30) Durch BASIC sind nur maximal 16 Stifte (0 bis 15) auswählbar. Da jedoch bei der Version 1 in Mode 0 31 Stifte möglich sind, muß dieser Befehl zur Auswahl der Stifte 16 bis 30 angewendet werden. Dieser Befehl setzt analog zu BASIC die Nummer des Text- Stiftes. 6.) GPEN,Nummer(0-30) Dieser Befehl ist das Äquivalent zu Nr. 5 für den Grafikbereich. Anm. zu den Befehlen 5 und 6: Wurde einer der beiden Befehle angewendet, so muß bei dem Wechsel der Ausgabeart (Grafik/Text) der Befehl für den neuen Ausgabebereich erst erneut angewendet werden, bevor dort die Ausgabe erfolgen kann. Letzteres deshalb, da sich die beiden Befehle gegenseitig beeinflussen. Konkret heißt das, daß nach einer Grafikausgabe vor einer folgenden Textdarstellung erst ein ' PEN'-Kommando angewendet werden muß und umgekehrt. 7.) INK, Stift-Nr. (0-30), erste Farbe (0-26) (, zweite Farbe (0-26)) Der Befehl dient zum Setzen der Farben für die Stifte 16 bis 30. Ansonsten entspricht er genau dem BASIC-Befehl TNK\ 8.) BILDSCHIRM, Bildschirm-Nr. Bei eingeschalteter Version 2 ist es mit diesem Befehl möglich, von einem in den anderen Bildschirm zu wechseln und somit auch die Modes zu wechseln. Gültige Parameter sind 'l' und '2\ Der Bildschirm, in dem gewechselt wird, wird vollständig zurückgesetzt (Windows etc.) und der Cursor in die linke obere Ecke gesetzt. Alle Ausgaben erfolgen jetzt in diesen Bildschirm, unter Beachtung der Schreibart (transparent/ undurchsichtig). Dabei wirkt sich eine Ausgabe von Text oder Grafik auch auf den anderen Bildschirm derart aus, daß verhindert wird, daß ein Pixel gleichzeitig in beiden Schirmen gesetzt ist. Da hier umfangreiche Umwandlungen notwendig sind (von einem Mode in den anderen unter 9.) WRITE.V, 0 oder 1 Hiermit kann bei der Version 2 bestimmt werden, wie die Grafik-ausgabe geschehen soll. Normalerweise geschieht dies über eine neue Routine von Screen Pack Plus, welche das Vorhandensein zweier Bildschirme berücksichtigt. Soll nun eine noch höhere Geschwindigkeit bei der Graphik-Ausgabe erreicht werden, so kann auch die 'normale' Betriebssystem-Routine zum Einsatz kommen. Diese sollte jedoch nur in Ausnahmefallen, und wenn sichergestellt ist, daß sich keine Grafik überlappt, gewählt werden. Bei Angabe einer “1“ wird die Screen Pack Plus-Routine zur Grafikausgabe verwendet (Standard), wodurch gesichert ist, daß kein Pixel gleichzeitig in beiden Bildschirmen gesetzt wird. 10.) CLS, Bildschirm-Nr. Durch diesen Befehl wird der gewünschte Bildschirm gelöscht (für Version 2). Der Inhalt des anderen bleibt im Gegensatz zum BASIC-'CLS' erhalten. 11.) TRANSP., 0 oder 1 Dieser Befehl bewirkt ein ein- (1) oder ausschalten (0) der möglichen Transpa-rent-Darstellung für den Text-Bild-schirm.
|