HSG

Aus C64-Wiki
Wechseln zu: Navigation, Suche
HSG
HSG Einschaltmeldung
Entwickler Wolfgang Lohwasser
Firma Markt & Technik
Verleger Markt & Technik
Release 1986
Lizenz Vollversion
Plattform(en) C64
Genre BASIC-Erweiterung
Steuerung Icon tastatur.png
Medien Listing
Sprache(n) Sprache:englisch, Anleitung Sprache:deutsch
Information 64'er Sonderheft 6/1986

HSG ("High-Speed-Grafik") ist eine BASIC-Erweiterung mit Befehlen für die hochauflösende Grafik. Sie wurde von Wolfgang Lohwasser programmiert und im 64'er Sonderheft 6/1986 veröffentlicht.


Beschreibung[Bearbeiten]

HSG basiert auf einem sehr schnellen Algorithmus für das Zeichnen einer Linie, der u.a. im 64'er Magazin 4/1984 (Artikel "Ein schneller Drawline-Algorithmus") beschrieben worden ist. Die Erweiterung ist nur für den Grafikmodus Hires (nicht für Multicolor) geeignet. Das Programm belegt den Speicherbereich $9000 bis $9C60 (36864 bis 40032). Es arbeitet mit zwei Grafikbildschirmen, zwischen denen beliebig hin- und hergeschaltet werden kann:

1) Bitmap $A000-$BFFF, Farben ab $8C00
2) Bitmap $E000-$FFFF, Farben ab $CC00.

Damit bleibt ein 33KB großer Bereich für BASIC frei.

Laden und Starten[Bearbeiten]

Im Direktmodus wird das Maschinensprache-Programm geladen und gestartet mit den Anweisungen

LOAD "HSG-W",8,1
NEW
SYS 9*4096

Möglich ist auch das Nachladen durch ein Basic-Programm, wobei die Einschaltmeldung nicht angezeigt wird. Beim Start der Erweiterung werden beide Grafikbildschirme gelöscht und mit den Farben Weiß auf schwarzen Hintergrund initialisiert.

Befehle[Bearbeiten]

Abkürzungen[Bearbeiten]

In der folgenden Befehlstabelle werden für die Parameter die folgenden Abkürzungen benutzt:

Abk	Bedeutung
SRC	Grafikbildschirm; 0 für Bildschirm 0, 1 bis 255 für Bildschirm 1
ZM	Zeichenmodus; 0 = Zeichnen in der Hintergrundfarbe, 1 bis 255 = Zeichnen in Vordergrundfarbe
X	X-Koordinate im aktuellen Grafikbildschirm (0 bis 319)
Y	Y-Koordinate im Grafikbildschirm (0 bis 199)
R	Kreisradius (0 bis 199)
F	Farbwert (= Hintergrundfarbe + 16*Vordergrundfarbe)
V	Fließkomma-Variable
V$	String-Variable

Befehlstabelle[Bearbeiten]

Kennzeichen der erweiterten Befehle ist das Pfundzeichen "£", mit der jede Befehlszeichenfolge beginnt.

Befehl Parameter Ausführung
£H ,SCR Grafikschirm einschalten
£E ,SCR Grafikschirm löschen
£C ,SCR,F Farbe setzen
£N Textschim einschalten
£P ,X,Y,ZM Punkt setzen (in Grafik)
£S ,X,Y Cursor setzen (in Grafik)
£D ,X,Y,ZM Linie ab Cursor-Pos.
£L ,Xa,Ya,Xb,Yb,ZM Linie von Pos. bis Pos. ziehen
£R ,Xa,Ya,Xb,Yb,ZM Rechteck zeichnen
£B ,Xa,Ya,Xb,Yb,ZM ausgefülltes Rechteck zeichnen
£K ,XM,YM,Rx,Ry,ZM Kreis bzw. Ellipse zeichnen um Mittelpunkt XM,YM mit Radien Rx, Ry (bei Kreis gleich, bei Ellipse ungleich)
£M ,SCR Grafikseite wählen
£IS ,Yg,Yt Rasterzeilen setzen
£I1 Text in Grafik einblenden
£I0 Text aus Grafik ausblenden
£V ,V,V$ String auswerten
£QA Grafikseiten durch UND verknüpfen
£QO Grafikseiten durch ODER verknüpfen

Besonderheit: Wird ein Grafikbefehl in einer IF-THEN-Unterscheidung benutzt, muss zwischen THEN und dem Grafikbefehl ein Doppelpunkt gesetzt werden.

Geschwindigkeitsvergleich[Bearbeiten]

Hier wird HSG mit Simons' Basic und Supergrafik verglichen.
Bei dem - bis auf die spezifischen Erweiterungsbefehle - für alle drei Erweiterungen gleichen Programm, das Kreise und Linien zeichnet, wird jeweils die Laufzeit gemessen. Das Programm ist eine gekürzte und an die jeweilige Erweiterung angepasste Version des Beispiels in GRAPHICS (TSB). Der Code für die Zeitmessung ist von TOD Clock im Commodore Programming Wiki abgeguckt.

Simons' Basic Demo Programm Simons' Basic Demo Ergebnis
Supergrafik Demo Programm Supergrafik Demo Ergebnis
HSG Demo Programm HSG Demo Ergebnis

Wie man sieht, sind die HSG-Algorithmen am effektivsten, was besonders für die Kreiszeichnung gilt.

Sonstiges[Bearbeiten]

Eine speziell angepasste Version von HSG kann in TSB benutzt werden. Siehe dazu den TSB-Befehl GRAPHICS.
Dort ist auch ein Programmbeispiel enthalten.

Weblinks[Bearbeiten]

Artikel

  • "Die schnellste Grafikerweiterung für den C64" im 64'er Sonderheft 6/1986 (Seiten 96,97,100,101).

Weblinks