Magic Disk 64

home to index to text: MD9502-UTILITIES-CHARWINDOW.txt
               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)

Valid HTML 4.0 Transitional Valid CSS!