HSG
HSG | |
---|---|
Entwickler | Wolfgang Lohwasser |
Firma | Markt & Technik |
Verleger | Markt & Technik |
Release | 1986 |
Lizenz | Vollversion |
Plattform(en) | C64 |
Genre | BASIC-Erweiterung |
Steuerung | |
Medien | Listing |
Sprache(n) | , Anleitung |
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 | Quelltext 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 | Quelltext 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 | Quelltext bearbeiten]
Abkürzungen[Bearbeiten | Quelltext bearbeiten]
In der folgenden Befehlstabelle werden für die Parameter die folgenden Abkürzungen benutzt:
Abk Bedeutung SCR 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 | Quelltext 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 | Quelltext 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 (für TSB). Der Code für die Zeitmessung ist von TOD Clock im Commodore Programming Wiki (Internet Archiv) abgeguckt und angepasst. Er ist für alle Erweiterungen gleich:
200 REM:INIT TOD CLOCK 210 FORI=2TO3:POKE56331-I,0:NEXT:POKE56334,PEEK(678)*128+1:RETURN 220 REM:READ TOD CLOCK 230 TM$="":FORI=2TO3:T=PEEK(56331-I) 240 TM$=TM$+CHR$(48+(240ANDT)/16)+CHR$(48+(15ANDT)) 250 NEXTI:TM$=LEFT$(TM$,2)+","+RIGHT$(TM$,1):RETURN
Wie man sieht, sind die HSG-Algorithmen am effektivsten, was besonders für die Kreiszeichnung gilt.
Sonstiges[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]
Artikel
- 64'er Sonderheft 6/1986 - "Die schnellste Grafikerweiterung für den C64" auf archive.org
- 64'er 64'er 12/1986 S.78 - Korrektur gefährlicher Zeropage-Adressen, auf archive.org
Weblinks