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 für TSB 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 4 KByte verkleinert.

HSG wird im Speicher ab $7000 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.

Die Uniprom-CRT-Version von TSB lädt "tsb.hsg" beim Start direkt aus der Cartridge. Die Erweiterung ist aber nicht automatisch aktiv, sondern muss mit SYS$7000 gestartet werden.

HSG arbeitet ausschließlich im Hires-Modus (kein Multicolor!), dafür aber sind seine Zeichenroutinen - vor allem die Kreise - derartig schnell, dass man das Entstehen eines einzelnen Objekts nicht mehr nachvollziehen kann (was bei TSB und Simons' Basic immer geht). Das Programmierbeispiel bei CIRCLE ist mit HSG-Befehlen einfach atemberaubend.

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 aus Platzmangel deaktiviert. Der gültige Screen hat die Nummer 1 und sollte einmal am Anfang des Programms mit £m, £h oder £e definiert werden (sonst sieht man nichts).
  • Bei der UNIPROM-Version von TSB liegt die Routine für das Nachladen von "tsb.mem" bzw. "tsb.ext" aus dem Modul ab $7F80. Da COLD das BASIC-Ende auf $8000 setzt, muss man dies hier sofort mit D!POKE 55,$7F80 korrigieren.

Hinweis: Der Zeichensatz im Normaltextbereich des Splitscreens von HSG kann mit POKE $7658,21 auf Groß-Grafik gestellt werden, und mit POKE $7658,23 auf Groß-Klein.


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 (s. CSET 2)
£e,1              ⇒  löscht den Screen (s. HIRES)
£m,1              ⇒  Screen anwählen (beachte: immer 1 wählen!) 
£c,1,f            ⇒  färbt die Grafik (s. MOD)
£n                ⇒  Grafikscreen ausschalten (s. NRM)
£s,x,y            ⇒  Grafikcursor auf x,y setzen
£d,x,y,m          ⇒  zeichnen bis zu Punkt x,y im Modus m (s. DRAW TO)
£p,x,y,m          ⇒  Punkt setzen im Modus m (s. PLOT)
£l,x1,y1,x2,y2,m  ⇒  Linie ziehen zwischen x1,y1 und x2,y2 im Modus m (s. LINE)
£r,x1,y1,x2,y2,m  ⇒  Rechteck zeichnen (s. REC) (beachte: andere Parameter als bei REC!)
£b,x1,y1,x2,y2,m  ⇒  ausgefülltes Rechteck zeichnen (s. BLOCK)
£k,x,y,r1,r2,m    ⇒  Kreis, Ellipse zeichnen (s. CIRCLE)
£is,top,bottom    ⇒  Splitscreen, Grafik zwischen Rasterline <top> und <bottom>
£i1               ⇒  Splitscreen ein
£i0               ⇒  Splitscreen aus
£v,var1,var2$     ⇒  numerischen Ausdruck im String <var2$> auswerten und <var1> zuweisen
  • f = paper+16*ink
  • 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]