Magic Disk 64

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



Valid HTML 4.0 Transitional Valid CSS!