CHARWINDOW
- Kleine Grafikfenster im Programm -
----------------------------------------
"Charwindow" ist eine Basic-Erweiterung,
die Ihnen hilft, in eigenen Programmen
ein kleines, 128x64-Pixel großes Grafik-
fenster in den normalen Text einzubauen,
um dort z.B. grafische Zusatzinformatio-
nen anzugeben. Auf diese Weise wird es
Ihnen sehr einfach gemacht, Dinge wie
Balken- oder Kuchengrafiken, Diagramme
oder Funktionsplotter in eigenen Pro-
grammen einzubauen.
1) PROGRAMMSTART
Zunächst müssen Sie die Erweiterung mit-
tels LOAD"CHARWINDOW .OBJ",8,1 in den
Speicher des C64 laden. Geben Sie hier-
nach bitte den "NEW"-Befehl ein, um die
Ladevektoren zurückzusetzen. Um die Ba-
sicerweiterung 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ß selbi-
ge 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 Basicerweite-
rung, die den Speicherbereich von
$C000-$CFFF belegt. Sie verwaltet insge-
samt 15 der 128x64-Pixel großen Grafik-
fenster (im Folgenden oft auch "Screen"
genannt), die in den Bereichen von
$A000-$BFFF, sowie von $E000-$FFFF abge-
legt sind. Beachten Sie also bitte, daß
Sie die hier angegeben Bereiche nicht
mehr für eigene Erweiterungen in Assem-
bler verwenden können. Die 15 Grafik-
fenster 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 sich-
tabre Grafikfenster durch die inversen
Zeichen eines Zeichensatzes ab $0800
dargestellt werden. Sie können dort also
auch Änderungen eintragen, um den norma-
len Zeichensatz zu verändern. Beachten
Sie jedoch auch, daß dieser Zeichensatz
nur dann eingeschaltet ist, wenn auch
das Charwindow-Fenster auf dem Bild-
schirm geöffnet wurde! Da der neue Zei-
chensatz am normalen Anfang des Basic-
speichers liegt, musste selbiger an
Adresse $1000 hochverlegt werden. Beach-
ten Sie hier, daß Sie Basic-Programme
immer mit ",8" laden, damit sie automa-
tisch an die neue Adresse gelangen (mit
",8,1" könnten solche Programme, die
nicht unter Charwindow geschrieben wur-
den, 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 bereitge-
stellt werden. In der nun folgenden
Auflistung sehen Sie den Befehlsnamen
immer in Großbuchstaben. Ihm folgen ggf.
einige Parameter, die als - in Klein-
buchstaben geschriebene - Variablen auf-
gelistet sind. Dies sind lediglich Refe-
renzvariablen für diese Anzeitung, mit
denen Ihnen gezeigt wird, welche Parame-
ter ein Befehl verlangt. In der Praxis
können Sie für numerische Werte natür-
lich auch beliebige Basicvariablen oder
auch konstante Wertangaben verwenden.
Ebenso müssen Strings, die hier in "Gän-
sefüßchen" angegeben sind, nicht unbe-
dingt 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 auszuge-
ben 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 Text-
bildschirms, 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 wie-
der 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 sicht-
bare Grafikfenster als Grafikfile unter
dem Namen "name" auf dem Gerät 'ga'.
PAGE sc
Hiermit legen Sie fest, auf welchem Gra-
fikscreen (= -fenster) gezeichnet werden
soll. 'sc' steht dabei für eine der
Fensternummern von 0-14. Diese Einstel-
lung bezieht sich auf ALLE Zeichenbefeh-
le, 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 gezeich-
neten 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üs-
sen beide ungleich sein.
IN sc
Kopiert den sichtbaren Grafikscreen in
den mit 'sc' bezeichneten Screen im Hin-
tergrund (einer der Screens von 1-14).
OUT sc
Kopiert den mit 'sc' bezeichneten Hin-
tergrundscreen in das sichtbare Grafik-
fenster.
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 un-
tere 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 Be-
reich an die Koordinate (x/y) des akti-
ven Zeichenschirms. (x/y) gibt dabei die
linke, obere Ecke an, an der der AREA-
Bereich einkopiert werden soll. Die Pa-
rameter 'inv' (Inverieren), 'sp' (Spie-
gelung), und 'tr' (Transparenz) sind
Zusatzparameter, die mit folgenden Wer-
ten belegt werden müssen, um die ent-
sprechende Wirkung beim Kopieren zu er-
zielen:
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 X- und Y-Achse spiegeln
tr =0: Grafik normal einkopieren
=1: Grafik mit Ziel ODER-verknü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 Bild-
schirm (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 Grafikcur-
sor, 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 Be-
deutung:
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 Kan-
tenlänge in die Mitte des Grafikfens-
ters)
TEST(x,y,sc)
Dies ist die einzige Funktion, die von
Charwindow unterstzützt wird. Sie te-
stet, ob ein Pixel an der Position (x/y)
auf dem Screen 'sc' gesetzt oder
gelöscht ist. Sie liefert einen numeri-
schen Wert zurück, und kann somit in
IF-Abfragen oder Variablenzuweisungen
benutzt werden. Die rückgelieferten Wer-
te 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 inner-
halb 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 soll-
ten Sie die drei Demoprogramme
"DEMO 1.BAS", "APFEL.BAS" und "DIA-
GRAMM.BAS" auf dieser MD bei eingeschal-
teter Erweiterung laden und starten.
Anhand der Listings können Sie sich bei
Problemen auch Lösungsansätze heraussu-
chen. Zugleich sehen Sie, welche Mö-
glichkeiten Ihnen Charwindow bietet.
(ub)