GRAPHICS (TSB)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
GRAPHICS (TSB)
Syntax: GRAPHICS
Parameter
keine
Einordnung
Typ: Kommando
Kontext: Erweiterung des TSB
Aufgabe: installiert die Erweiterung High-Speed-Grafik
Abkürzung: gR
Token: $64 $61 (100 97)
Verwandte Befehle
keine


Dieser Artikel beschreibt das TSB-Schlüsselwort GRAPHICS (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls GRAPHICS.

Typ: Kommando
Syntax: GRAPHICS

GRAPHICS lädt die Grafikerweiterung "High-Speed-Grafik" ("HSG") von Wolfgang Lohwasser aus dem 64'er Sonderheft Grafik 6/1986[1] (in einer ab TSB v2.40.612 stark angepassten Version). Die HSG-Datei muss unter dem Namen "tsb.hsg" auf der im aktuellen Laufwerk befindlichen Diskette sein. Die Erweiterungsbefehle (s.u.) funktionieren wie normale Interpreter-Befehle. Der freie BASIC-Speicher wird durch HSG um 3 KByte verkleinert.

HSG wird im Speicher ab $7400 abgelegt und automatisch eingebunden. Es wird mit dem Befehl COLD abgeschaltet und der Platz wieder freigegeben.

Wird die Datei beim Aufruf von GRAPHICS nicht gefunden, meldet der Interpreter einen ?FILE NOT FOUND ERROR und alles bleibt, wie es vorher war.

HSG arbeitet ausschließlich im Hires-Modus, dafür aber sind seine Zeichenroutinen - vor allem die Kreise - derartig schnell, dass man das Entstehen eines einzelnen Objekts nicht mehr nachvollziehen kann. Das Programmierbeispiel bei CIRCLE ist mit HSG-Befehlen einfach atemberaubend und das animierte Beispielbild auf dieser Seite weiter unten zeigt das sehr eindrücklich.

Zu beachten:

  • HSG stellt eigentlich zwei Grafikbildschirme zur Verfügung (einen zum verdeckten Aufbau von Grafik, damit es noch schneller aussieht, wenn etwas erscheint). Dieses Feature wurde in TSB komplett entfernt, da für einen zweiten Grafikbildschirm kein Platz vorhanden ist. Daher können alle Befehle, die einen der Grafikscreens auswählen, jetzt auch ohne diesen Parameter aufgerufen werden (s.u.)

Hinweis: Der Zeichensatz im Normaltextbereich des Splitscreens von HSG kann mit POKE $79E0,21 auf Groß-Grafik gestellt werden, und mit POKE $79E0,23 auf Groß-Klein (Voreinstellung). Der Rastersplit ist außerdem jetzt zum ersten Mal stabil.


HSG-Befehle


Nach dem Aufruf von GRAPHICS erhält man einen Einschalt-Screen und kann jetzt mit mehr Befehlen programmieren:

£h [,1]           ⇒  schaltet Grafikscreen ein, ohne zu löschen (wie CSET 2)
£e [,1]           ⇒  löscht den Screen (wie HIRES, aber ohne Farbangaben)
£m [,1]           ⇒  Screen anwählen 
                      (keine Funktion, aber wegen Speicherstellenüberschneidung 
                       erforderlich nach allen Textscreen-Befehlen, z.B. nach FCHR) 
£c [,1] ,f        ⇒  färbt die Grafik (wie MOD)
£n                ⇒  Grafikscreen ausschalten (wie NRM)
£s,x,y            ⇒  Grafikcursor auf x,y setzen
£d,x,y,m          ⇒  zeichnen bis zu Punkt x,y im Modus m (wie DRAW TO)
£p,x,y,m          ⇒  Punkt setzen im Modus m (wie PLOT)
£l,x1,y1,x2,y2,m  ⇒  Linie ziehen zwischen x1,y1 und x2,y2 im Modus m (wie LINE)
£r,x1,y1,x2,y2,m  ⇒  Rechteck zeichnen (wie REC) (beachten: andere Parameter als bei REC!)
£b,x1,y1,x2,y2,m  ⇒  ausgefülltes Rechteck zeichnen (wie BLOCK)
£k,x,y,r1,r2,m    ⇒  Kreis, Ellipse zeichnen (wie CIRCLE)
£is,top,bottom    ⇒  Splitscreen, Grafik zwischen Textzeile <top> und <bottom> (0..25)
£i1               ⇒  Splitscreen ein
£i0               ⇒  Splitscreen aus
£v,var1,var2$     ⇒  numerischen Ausdruck im String <var2$> auswerten und <var1> zuweisen
£qa / £qo         ⇒  Verknüpfen der Bitmap mit dem Bereich ab $4000
                     (A: AND-Verknüfung, O: OR-Verknüpfung)
  • f = paper+16*ink, z.B. f = $75 (gelb auf grün)
  • m:
    • =1: zeichnen
    • =0: löschen

Vor allem £l, £r und £k sind erheblich schneller als ihre TSB-Pendants.


Beispiel[Bearbeiten | Quelltext bearbeiten]

Unglaublich viele Ellipsen in unglaublich kurzer Zeit.

Programm in HSG:

10 i=10: HIRES i,0: COLOUR i,0
15 REPEAT: £E,1: GET x$
20 FOR x=5 TO 165 STEP i: £K,159,99,x,165-x,1: NEXT
30 FOR x=5 TO 165 STEP i: £K,159,99,x,165-x,0: NEXT
40 i=INT(RND(ti)*20)+1: j=INT(RND(ti)*14)+1
50 MOD 0,j: COLOUR 0,i
60 FOR x=0 TO 149 STEP 10+i
70 FOR y=189 TO 0 STEP -10-i
80 £L,x,y,310-x,190-y,1
90 NEXT y,x
100 FOR y=189 TO 0 STEP -10-i
110 FOR x=0 TO 149 STEP 10+i
120 £L,x,y,310-x,190-y,0
130 NEXT x,y
140 i=INT(RND(ti)*20)+1: j=INT(RND(ti)*14)+1
150 UNTIL x$>"" 

Programm mehrmals laufen lassen, es verändert sich.


Weblinks[Bearbeiten | Quelltext bearbeiten]