SCALE

Aus C64-Wiki
Zur Navigation springenZur Suche springen
SCALE
Syntax: SCALE <n> [ ,<xres>, <yres> ]
Parameter
<n>: numerischer Ausdruck im Wertebereich von 0 bis 1
<xres>: nur BASIC 7.0, numerischer Ausdruck im Wertebereich von 320 bis 32767
<yres>: nur BASIC 7.0, numerischer Ausdruck im Wertebereich von 200 bis 32767
Einordnung
Typ: Anweisung
Kontext: Grafik-Anweisung
Aufgabe: Bildschirmskalierung ein- bzw ausschalten und konfigurieren
Abkürzung: scA
Token: $e9 (233)
Verwandte Befehle
GRAPHIC

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

Die Anweisung SCALE (engl. Skalierung, Maßstab) aktiviert oder deaktiviert die Bildschirmskalierung in einem der Grafikmodi für hochauflösende oder Multicolor-Grafiken.

Der Parameter <n> kann 2 Werte annehmen:

  • 0 schaltet die Skalierung aus.
  • 1 schaltet die Skalierung ein.

Andere Werte lösen einen ?ILLEGAL QUANTITY ERROR aus.

Bei ausgeschalteter Skalierung werden die den Grafikbefehlen übergebenen Koordinaten direkt übernommen. Wird die Skalierung eingeschaltet, werden dagegen die Koordinaten auf eine logische Bildschirmauflösung von 1024x1024 Pixeln umgerechnet.

Folgende Grafikbefehle berücksichtigen die Skalierung: BOX, CIRCLE, DRAW, LOCATE, PAINT, SSHAPE, GSHAPE. Wird bei CIRCLE kein Wert für den Y-Radius übergeben, wird dieser automatisch so gewählt, dass ein runder (und nicht wie zu erwarten abgeplatteter) Kreis gemalt wird. Bei GSHAPE wird zwar die Ausgabeposition skaliert, Breite und Höhe der Figur bleiben aber gleich. Nicht skaliert wird die Ausgabe von CHAR. Die Funktion RDOT gibt die Position des Pixelcursors immer unskaliert zurück.

SCALE unter BASIC 7.0

Allgemeine Programmier-Syntax: SCALE <n> [, <xres>, <yres>]
Unter BASIC 7.0 wurde SCALE um 2 Parameter erweitert:

  • <xres > gibt die skalierte Bildschirmbreite an. Erlaubt sind die Werte von 320 bis 32767, außerhalb dieses Bereichs wird ein ?ILLEGAL QUANTITY ERROR ausgegeben. Im Multicolor-Modus muss xres für den selben horizontalen Maßstab doppelt so groß sein wie im Hires-Modus.
  • <yres> gibt die skalierte Bildschirmhöhe an. Erlaubt sind die Werte von 200 bis 32767, außerhalb dieses Bereichs wird ein ?ILLEGAL QUANTITY ERROR ausgegeben.

xres und yres müssen immer gemeinsam angegeben werden, ansonsten wird ein ?SYNTAX ERROR ausgelöst.

Weitere Unterschiede zu BASIC 3.5:

  • Durch den Befehl GRAPHIC wird die Skalierung deaktiviert.
  • Beim CIRCLE-Befehl wird der Standard-Y-Radius nicht so an die Skalierung angepasst, dass Kreise kreisförmig bleiben.

Beispiele[Bearbeiten | Quelltext bearbeiten]

10 GRAPHIC 1,1
20 SCALE 0
30 GOSUB 100
40 SCALE 1
50 GOSUB 100
60 END
100 CIRCLE 1,159,99,30
110 CIRCLE 1,159,99,50,50
120 BOX 1,109,49,209,149
130 RETURN

Es wird zuerst im normalen Maßstab ein kleiner Kreis sowie ein von einem Quadrat umschlossener größerer Kreis gezeichnet und dasselbe anschließend bei aktivierter Skalierung. Unter BASIC 3.5 bleibt der kleinere Kreis kreisförmig, während der große Kreis und das Quadrat deutlich abgeplattet sind. Unter BASIC 7.0 ist auch der kleine Kreis in der Höhe gestaucht.

10 GRAPHIC 1,1
20 GOSUB 100
30 GETKEY K$
40 GRAPHIC 3,1
50 SCALE 1,640,200
60 GOSUB 100
70 END
100 CIRCLE 1,159,99,30
110 CIRCLE 1,159,99,50,50
120 BOX 1,109,49,209,149
130 RETURN

Dieses Programm läuft nur unter BASIC 7.0. Ähnlich wie im vorigen Beispiel werden ein kleiner und ein großer Kreis sowie ein Quadrat gezeichnet, aber zuerst ohne Skalierung auf dem Hires-Bildschirm und nach einem Tastendruck skaliert im Multicolor-Modus. Zu beachten ist, dass der kleinere Kreis zu einer Ellipse verzogen wird.