GRAPHIC

Aus C64-Wiki
Zur Navigation springenZur Suche springen
GRAPHIC
Syntax: GRAPHIC <Modus>[,<Löschen>[,<Textzeile>]] oder GRAPHIC CLR
Parameter
<Modus>: numerischer Ausdruck im Wertebereich von 0 bis 4 (BASIC 3.5) bzw. 0 bis 5 (BASIC 7.0)
<Löschen>: numerischer Ausdruck im Wertebereich von 0 bis 1
<Textzeile>: nur BASIC 7.0, numerischer Ausdruck im Wertebereich von 0 bis 25
Einordnung
Typ: Anweisung
Kontext: Grafik-Anweisung
Aufgabe: Grafik- oder Textmodus ein- bzw ausschalten
Abkürzung: gR oder gR cL
Token: $de (222)
Verwandte Befehle
RGR

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl GRAPHIC ab Commodore BASIC V3.5 oder höher.


Durch die Anweisung GRAPHIC wird der entsprechende Grafik- oder Textmodus gesetzt. Im Falle eines Grafikmodus' wird ein Teil des freien BASIC-RAMs für die Grafiknutzung reserviert. Dies sind ca. 10 KByte. Beim C128 und Plus/4 wird hierbei der BASIC-Programmanfang nach oben verschoben, während er beim C16/116 wegen dem geringen Arbeitsspeichers verkürzt wird.

Für den Parameter Modus sind folgende Werte erlaubt:

  • 0 : Textmodus mit 40 Zeichen pro Zeile
  • 1 : hochauflösende Grafik (320×200 Pixel)
  • 2 : hochauflösende Grafik gemischt mit Text (geteilter Bildschirm).
  • 3 : Mehrfarbengrafik (160×200 Pixel)
  • 4 : Mehrfarbengrafik gemischt mit Text (geteilter Bildschirm).
  • 5 : Textmodus mit 80 Zeichen pro Zeile (nicht bei C16/C116 und Plus/4, sondern nur bei C128!)

Der Parameter Löschen (0 oder 1) gibt an, ob die Grafikmodi 1 bis 4 beim Aufruf mit dem Wert 1 gelöscht wird. Bei den gemischten Modi 2 und 4 wird auch der Textbereich gelöscht.

Nur BASIC 7.0: Der Parameter Textzeile (0 bis 25) bestimmt bei den gemischten Grafikmodi 2 und 4, wie viele Bildschirmzeilen bezogen auf den Textmodus der Grafik gewidmet sind. Standardmäßig vorgegeben sind 20 Bildschirmzeilen, was beim C16/116 und Plus/4 unveränderlich ist. Mit 0 hat der Bildschirm keine Grafik, bei 25 keine Textzeilen.

Im Gegensatz zur Umschaltung in den Textmodus mit GRAPHIC 0, erreicht nur ein GRAPHIC CLR, dass zusätzlich auch der reservierte Grafikbereich gelöscht und wieder dem freien BASIC-RAM zugeordnet wird.
BASIC 3.5-Bug: GRAPHIC CLR vergisst bei 32 KByte den BASIC-Speicher wieder nach unten zu kopieren. Das nächste GRAPHIC 1 setzt ihn aber wieder nach oben, was irgendwann einen Überlauf in die TED-Register und die Zeropage verursacht.

Andere Werte als die angegebenen für Modus und Löschen bzw. bei Werten für Textzeile außerhalb des zulässigen Bereichs führen zur Fehlermeldung ?ILLEGAL QUANTITY ERROR.

Der aktuelle Grafikmodus kann aus einem Programm mittels Funktion RGR ermittelt werden. Befindet man sich allerdings standardmäßig im 80-Zeichen-Modus, so erhält man mitunter einen Wert > 5, der dann dem Modus − 5 entspricht.

Hinweis bei Verwendung von VERIFY bzw. DVERIFY: Auf jenen Rechnern, wo das BASIC-Programm bei aktiver Grafik verschoben wird, kann das an sich identische Programm, je nach dem, ob mit oder ohne aktivierter Grafik gespeichert wurde, dennoch von dem im Speicher befindlichen unterscheiden (da im BASIC-Code die Zeilenverknüpfungsadressen als absolute Speicheradressen enthalten sind und je nach Lage des Programms unterschiedlich sind). Man muss also darauf achten, das Programm bei identischer Grafikkonstellation zu speichern und zu vergleichen.

Beispiele[Bearbeiten | Quelltext bearbeiten]

GRAPHIC 1

Der hochauflösende Grafikmodus wird aktiviert.

GRAPHIC 2, 1

Der gemischte hochauflösende Text-Grafikmodus (mit 5 Textzeilen) wird aktiviert und gelöscht.

C128:

GRAPHIC 4, 1, 10

Der gemischte Text-Mehrfarbenmodus wird aktiviert und gelöscht, wobei die ersten 10 Textzeilen des Bildschirms der Grafik gewidmet sind (Textbeginn ab der 11. Zeile).