CHARWINDOW - Kleine Grafikfenster im Programm -
" Charwindow" ist eine Basic-Erweiterung, die Ihnen hilft, in eigenen Programmen
ein kleines,128 x64- Pixel großes Grafikfenster in den normalen Text einzubauen, um dort z. B. grafische Zusatzinformationen anzugeben. Auf diese Weise wird es
Ihnen sehr einfach gemacht, Dinge wie
Balkenoder Kuchengrafiken, Diagramme
oder Funktionsplotter in eigenen Programmen einzubauen.
1) PROGRAMMSTART Zunächst müssen Sie die Erweiterung mittels LOAD" CHARWINDOW . OBJ",8,1 in den
Speicher des C64 laden. Geben Sie hiernach bitte den " NEW"- Befehl ein, um die
Ladevektoren zurückzusetzen. Um die Basicerweiterung nun zu aktivieren, geben
Sie bitte " SYS49152, farbe" ein.' farbe'
steht hierbei für einen der Farbcodes
von 0-15 . In der hier angegebenen Farbe
werden die Charwindow-Befehle in einem
Programmlisting angezeigt, so daß selbige hervorgehoben dargestellt werden. Ist
der Programmstart geglückt, so sehen Sie
nun die Einschaltmeldung der Erweiterung
auf dem Bildschirm. Von nun an stehen
Ihnen die neuen Charwindow-Basicbefehle
zur Verfügung, die wir weiter unten näher besprechen werden.
2) TECHNISCHES Vor Erläuterung der Befehle, noch einige
technische Hinweise: Charwindow ist eine
in Assembler geschriebene Basicerweiterung, die den Speicherbereich von
$ C000-$ CFFF belegt. Sie verwaltet insgesamt 15 der 128 x64- Pixel großen Grafikfenster ( im Folgenden oft auch " Screen" genannt), die in den Bereichen von
$ A000-$ BFFF, sowie von $ E000-$ FFFF abgelegt sind. Beachten Sie also bitte, daß Sie die hier angegeben Bereiche nicht
mehr für eigene Erweiterungen in Assembler verwenden können. Die 15 Grafikfenster werden mit Nummern von 0 bis 14 bezeichnet, wobei 0 immer für das auf
dem Bildschirm sichtbare Fenster steht.
Die Nummern 1-14 beziehen sich auf die
unsichtbaren Fenster im oberen Speicher, die zur Bildpufferung verwendet werden
können.
Beachten Sie desweiteren, daß das sichtabre Grafikfenster durch die inversen
Zeichen eines Zeichensatzes ab $0800 dargestellt werden. Sie können dort also
auch Änderungen eintragen, um den normalen Zeichensatz zu verändern. Beachten
Sie jedoch auch, daß dieser Zeichensatz
nur dann eingeschaltet ist, wenn auch
das Charwindow-Fenster auf dem Bildschirm geöffnet wurde! Da der neue Zeichensatz am normalen Anfang des Basicspeichers liegt, musste selbiger an
Adresse $1000 hochverlegt werden. Beachten Sie hier, daß Sie Basic-Programme immer mit ",8" laden, damit sie automatisch an die neue Adresse gelangen ( mit
",8,1" könnten solche Programme, die
nicht unter Charwindow geschrieben wurden, den Zeichensatz überschreiben) .
3) DIE NEUEN BEFEHLE Kommen wir also zu den neuen Befehlen, die Ihnen von Charwindow zusätzlich zu
den normalen Basic-V2- Befehlen bereitgestellt werden. In der nun folgenden
Auflistung sehen Sie den Befehlsnamen
immer in Großbuchstaben. Ihm folgen ggf.
einige Parameter, die als - in Kleinbuchstaben geschriebene - Variablen aufgelistet sind. Dies sind lediglich Referenzvariablen für diese Anzeitung, mit
denen Ihnen gezeigt wird, welche Parameter ein Befehl verlangt. In der Praxis
können Sie für numerische Werte natürlich auch beliebige Basicvariablen oder
auch konstante Wertangaben verwenden.
Ebenso müssen Strings, die hier in " Gän- sefüßchen" angegeben sind, nicht unbedingt in dieser Form erscheinen, sondern
es können auch Stingvariablen ( z. B. a$, x$, o. ä.) eingesetzt werden. Desweiteren
taucht in allen Zeichenfunktionen der
Wert " m" auf, der angibt, in welcher Art
Charwindow zu zeichnende Pixel auszugeben hat. Ist m=0, so sollen die Pixel
gelöscht werden. Bei m=1 werden zu
zeichnende Pixel gesetzt. Mit m=2 werden
die Pixel invertiert, so daß gesetzte
Pixel gelöscht werden und umgekehrt.
Hier nun also die neuen Befehle:
WINDOW( x, y, f) Dieser Befehl öffnet das Grafikfenster
in Spalte " x" und Zeile " y" des Textbildschirms, wobei die Farbe " f" als
Zeichenfarbe voreingestellt wird.
SCREEN Hiermit wird das Grafikfenster wieder
geschlossen und vom Bildschirm entfernt.
Dabei wird der, vor dem Öffnen unter dem Fenster liegende, Bildschirminhalt wieder restauriert ( incl. der Farbe) .
HELP Dieser Befehl listet Ihnen alle neuen
Charwindow-Befehle auf.
LDGRAF" name", ga Hiermit laden Sie das File " name" vom
Gerät " ga"( z. B.8 für die Floppy) als
Grafik in das Grafikfenster.
SVGRAF" name", ga Speichert das auf dem Bildschirm sichtbare Grafikfenster als Grafikfile unter
dem Namen " name" auf dem Gerät ' ga' .
PAGE sc Hiermit legen Sie fest, auf welchem Grafikscreen (=- fenster) gezeichnet werden
soll.' sc' steht dabei für eine der
Fensternummern von 0-14 . Diese Einstellung bezieht sich auf ALLE Zeichenbefehle, sowie auf COPY, ZOOM und CLEAR!
CLEAR Löscht den durch Page eingestellten
Screen.
PLOT x, y, m Zeichnet einen Punkt an der Stelle ( x/ y) im Modus ' m'(' x' zwischen 0 und 127,' y' zwischen 0 und 63) .
LINE x1, y1, x2, y2, m Zeichnet eine Line von der Koordinate
( x1/ y1) nach Koordinate ( x2/ y2) im Modus
' m' .
MOVE x1, y1, m Zeichnet eine Line vom zuletzt gezeichneten Punkt nach Koordinate ( x1/ y1) im
Modus ' m' .
REC x1, y1, x2, y2, m Zeichnet ein Rechteck mit ( x1/ y1) und
( x2/ y2) als diagonal gegenüberliegenden
Eckpunkten.
CIRCLE xm, ym, xr, yr, m Zeichnet einen Kreis ( Ellipse) mit den
Mittelpunktkoordinaten ( xm/ ym) und den
Radien ' xr' und ' yr' im Modus ' m' . Für
Kreise muß xr= yr sein, für Ellipsen müssen beide ungleich sein.
IN sc Kopiert den sichtbaren Grafikscreen in
den mit ' sc' bezeichneten Screen im Hintergrund ( einer der Screens von 1-14) .
OUT sc Kopiert den mit ' sc' bezeichneten Hintergrundscreen in das sichtbare Grafikfenster.
AREA x1, y1, x2, y2, sc Legt den Bearbeitungsbereich für den
COPY-Befehl fest.( x1/ y1) steht für die
linke obere,( x2/ y2) für die rechte untere Ecke des zu kopierenden Bereichs.
Mit ' sc' wird die Nummer des Quellbild- schirms angegeben.
COPY x, y, inv, sp, tr Kopiert den mit AREA festgelegten Bereich an die Koordinate ( x/ y) des aktiven Zeichenschirms.( x/ y) gibt dabei die
linke, obere Ecke an, an der der AREA-Bereich einkopiert werden soll. Die Parameter ' inv'( Inverieren),' sp'( Spiegelung), und ' tr'( Transparenz) sind
Zusatzparameter, die mit folgenden Werten belegt werden müssen, um die entsprechende Wirkung beim Kopieren zu erzielen:
inv=0 : Grafik nicht invertieren =1 : Grafik invertieren sp =0 : Grafik nicht spiegeln sp =1 : Grafik an Y-Achse spiegeln sp =2 : Grafik an X-Achse spiegeln sp =3 : Grafik an Xund Y-Achse spiegeln
tr =0 : Grafik normal einkopieren =1 : Grafik mit Ziel ODERverknüpfen
ZOOM x1, y1, x2, y2, x3, y3, x4, y4 Vergrößert oder verkleinert den Bereich
zwischen den Koordinaten ( x1/ y1) und
( x2/ y2), und legt ihn an den Koordinaten
zwischen ( x3/ y3) und ( x4/ y4) ab. Ist der
Quellbereich größer als der Zielbereich, so wird er verkleinert, im anderen Fall
vergrößert ( Beispiel: ZOOM 0,0,20,20,0,0,40,40 zum doppelten vergrößern
des Bereichs bei 0/0 und 20/20)
HARD ga Dieser Befehl druckt den gesamten Bildschirm ( Text und Grafikfenster) auf den
seriell angeschlossenen Drucker mit der
Gerätenummer ' ga' aus.
DRAW x, y, m, f$ Zeichnet ab den Koordinaten ( x/ y) einen
Punktezug, der durch den String ' f$' angegeben wird, im Zeichenmodus ' m' .
Legen Sie in f$ eine Folge von Ziffern
zwischen 1 und 8 ab, um einen solchen
Zug zu zeichnen. Die einzelnen Ziffern bewegen eine Art unsichtbaren Grafikcursor, der zu Beginn an die Position ( x/ y) gesetzt wird, um einen Pixel in eine
bestimmte Richtung weiter, wobei dieser
Punkt dann im Modus ' m' gesetzt wird.
Die einzelnen Ziffen haben folgende Bedeutung:
1 : Cursor nach oben u. Pkt. setz.
2 : Cursor nach rechts oben u. Pkt. setz.
3 : Cursor nach rechts u. Pkt. setz.
4 : Cursor nach rechts unten u. Pkt. setz.
5 : Cursor nach unten u. Pkt. setz.
6 : Cursor nach links unten u. Pkt. setz.
7 : Cursor nach links u. Pkt. setz.
8 : Cursor nach links oben u. Pkt. setz.
Beispiel:
f$="3335577711" : DRAW 63,31,1, f$( Zeichnet Quadrat mit 3 Punkten Kantenlänge in die Mitte des Grafikfensters)
TEST( x, y, sc)
Dies ist die einzige Funktion, die von
Charwindow unterstzützt wird. Sie testet, ob ein Pixel an der Position ( x/ y) auf dem Screen ' sc' gesetzt oder
gelöscht ist. Sie liefert einen numerischen Wert zurück, und kann somit in
IF-Abfragen oder Variablenzuweisungen
benutzt werden. Die rückgelieferten Werte haben folgende Bedeutungen:
0: Punkt ist gelöscht 1: Punkt ist gesetzt 2: Teststelle ausserhalb d. Fensters
4) HINWEISE Wie Sie sehen bietet Ihnen Charwindow
eine Fülle von neuen, teilweise sehr
mächtigen Befehlen zum Zeichnen innerhalb des Grafikfensters und ist zudem
sehr einfach anzuwenden, wenn man sich
mich dem Basic des C64 schon ein wenig
auskennt. Wenn Sie sich die Bedienung
und Möglichkeiten dieser Erweiterung etwas näher anschauen möchten, so sollten Sie die drei Demoprogramme
" DEMO 1 . BAS"," APFEL. BAS" und " DIA-GRAMM. BAS" auf dieser MD bei eingeschalteter Erweiterung laden und starten.
Anhand der Listings können Sie sich bei
Problemen auch Lösungsansätze heraussuchen. Zugleich sehen Sie, welche Möglichkeiten Ihnen Charwindow bietet.
(ub)