C 64
Grafikkurs-Anwendung

Hires-3 – 15 neue Basic-Befehle (Teil 2)

Hier ist er, der 2. Teil von Hires-3, dem grafikunterstützenden Maschinenprogramm. Mit den diesmal gezeigten 15 neuen Basic-Befehlen kann Dornröschen (die hochauflösende Grafik) schnell und leicht ihr ganzes Können entfalten.

Mit einigen der neu vorgestellten Funktionen werden vor allem diejenigen viel anfangen können, die ihren Computer für mathematische, technische oder naturwissenschaftliche Zwecke gebrauchen. Das sollte aber die künstlerisch Interessierten nicht vom Experimentieren abhalten. Es gibt eine unbegrenzte Anzahl von Möglichkeiten, Hires-3 zu nutzen.

Wieder ist das Programm (Listing 1) mit dem MSE, den Sie an anderer Stelle in diesem Heft finden, einzugeben. Danach sollten Sie alles zunächst auf Kassette oder Diskette speichern.

Sie werden sofort bemerkt haben, daß Sie damit auch den Bereich zwischen $89B7 und $9000 abspeichern, in dem kein Maschinenprogramm enthalten ist. Das ist ein Manko, das sich aus der Entstehungsgeschichte von Hires-3 erklärt. Andererseits kann jede Erweiterung in diesen Bereich gelegt werden, ohne daß man sich immer wieder neue Start- oder Endadressen merken muß.

Jedesmal, wenn Sie jetzt Hires-3 benötigen, laden Sie es (mit Sekundäradresse 1); stellen Sie danach die Basic-Zeiger mittels NEW zurück, schützen Sie Hires-3 durch POKE52, 128:POKE56, 128, und starten Sie es dann mit SYS 36864. (Das wurde schon in der vorangegangenen Ausgabe beschrieben.)

Nun sollen die neuen Befehle erklärt werden:

Einrichten eines frei wählbaren Koordinatensystems TRS, XU, X0, YU, Y0

Für alle nachfolgenden Befehle mit T oder LT am Anfang muß dieser TRS-Befehl vorher gegeben worden sein. TRS baut den Bildschirm nach unseren eigenen Wünschen um. Das normale Bildschirmkoordinatensystem, in dem X von 0 bis 319, Y von 0 bis 199 (abwärts) läuft, wird durch ein uns genehmes ersetzt. XU und XO sind dabei die kleinste und größte X-Koordinate, YU und YO entsprechend die kleinste und die größte Y-Koordinate, die wir wünschen.

Beispiel: Wir wollen eine Sinus-Funktion zeichnen lassen. Uns interessiert der Verlauf von XU = -10 bis XO = 6. Wir wissen, daß die Y-Werte zwischen +1 und —1 hin- und herpendeln, wählen daher YU = -1.5 und YO = 1.5: Wir geben ein TRS, -10, 6, -1.5, 1.5. Unser Bildschirm ist jetzt so organisiert, wie es Bild 1 zeigt.

Bild 1. Bildschirmorganisation nach: TRS,-10,6,-1.5,1.5

Dieser Befehl ist wohl der stärkste, der in Hires-3 enthalten ist. Innerhalb von Programmen kann er mehrmals verwendet werden, was zum Beispiel die Erstellung von 3D-Grafik erleichtert. Als Argumente dürfen beliebige Zahlen, arithmetische Ausdrücke oder mathematische Basic-Funktionen verwendet werden.

Nehmen Sie mal an, Sie untersuchten eine Funktion, bei der Sie ein Maximum im X-Bereich —200 bis —300 vermuten, und wo der Y-Wert irgendwo zwischen 1000 000 und 10 000 000 sein könnte. Dann benutzen Sie unseren Bildschirm wie ein Kameraobjektiv: Fahren Sie ihn auf diesen interessanten Ausschnitt mit TRS, -300, -200, 1E6, 1E7! Grenzen sind Ihnen nur insofern gesetzt, als unser Computer keine größere Zahl als 1.701411 83E38 und keine dem Betrag nach kleinere als 2.93873588E-39 kennt.

Dazu noch eine Bemerkung. Alle Eingaben werden als Gleitkommazahlen verarbeitet. Der Prozessor 6510 unseres C 64 ist mit nicht ganz 1 MHz getaktet. Gleitkomma-Arithmetik ist eine recht aufwendige Angelegenheit. Je komplizierter die Ausdrücke werden, die als Argumente auftreten, desto längere Interpreterteile werden durchlaufen, und desto langsamer erfolgt die Befehlsausführung. Beispielsweise kann ein Argument 2.234 sofort verarbeitet werden, wohingegen bei einem Argument SIN(SQR(A↑COS(B))) ein erheblich längerer Rechengang erforderlich ist. Das sind eben die Grenzen unseres Systems, die wir hier spüren. Trotzdem geht alles noch erheblich schneller als in Basic.

Auch nachdem Sie mittels des TRS-Befehls den Bildschirm neu organisiert haben, können Sie die Befehle benutzen, die sich auf den alten Bildschirm beziehen. Sie haben somit zwei Koordinatensysteme gleichzeitig zur Verfügung: Das normale (X von 0 bis 319, Y von 0 bis 199) und Ihr selbstdefiniertes.

Die Abkürzung TRS kommt von dem Wort Transformation. Hier soll nicht näher erklärt werden, was das ist und wie das funktioniert. Wenn Sie mehr darüber wissen möchten, dann schlagen Sie mal die vergangenen Ausgaben des 64’er nach. In den Teilen 6 und 7 der Reise durch das Wunderland der Grafik ist der Begriff näher erläutert. Mehr dazu werden spätere Ausgaben bringen. Nur soviel soll dazu gesagt werden: Mittels geeigneter Transformationen können Sie wahre Wunderdinge auf dem Bildschirm vollbringen.

Zeichnen im selbstdefinierten System

Zu allen folgenden Befehlen sollte beachtet werden, daß vorher mit TRS das neue System definiert worden ist. Alle X und Y-Werte sollten möglichst innerhalb der damit festgelegten Grenzen XU-XO und YU-YO liegen. Überschreiten oder Unterschreiten der Grenzen führt im allgemeinen jedoch nicht zu Fehlermeldungen. Es können sich aber unter Umständen falsche Bildschirmdarstellungen ergeben. Im allgemeinen kann man diese dann deutlich erkennen und durch geeignete Neuwahl der TRS-Argumente beheben.

TPK, X, Y

zeichnet einen Punkt mit den Koordinaten X und Y in das vorher definierte System.

Beispiel:

TRS, -1,5, -2,6:TPK, 1,1 zeichnet in der in Bild 2 gezeigten Weise einen Punkt auf den Bildschirm.

Bild 2. Bildschirm nach: TRS,-1,5,-2,6 : TPK,1,1

TLN, XA, YA, XB, YB

zeichnet eine Linie in das vorher selbstdefinierte Koordinatensystem ein, die vom Punkt A (XA,YA) bis zum Punkt B (XB,YB) verläuft. Mit TLN läßt sich nun recht einfach das Achsenkreuz des selbstgewählten Systems zeichnen: TLN, XU, 0, XO, 0 zeichnet die X-Achse und TLN, O, YU, 0, YO die Y-Achse.

TRE, XA, YA, XB, YB

zeichnet in das selbstgewählte System ein Rechteck. Der Punkt A (XA, YA) ist der linke obere, B (XB, YB) der rechte untere Eckpunkt.

TBK, XA, YA, XB, YB

zeichnet in das durch TRS definierte System ein ausgefülltes Rechteck. Die Bezeichungen sind dieselben wie bei TRE.

TKR, XM, YM, RX, RY, W

zeichnet in das neue Koordinatensystem eine Ellipse oder einen Kreis (dann ist RX = RY). Für die Bezeichnungen gelten die Regeln des GIR-Befehls (siehe letzte Ausgabe).

TRA, XM, YM, RX,RY, W

zeichnet ins TRS-System einen Radius ein. Es gelten dieselben Bezeichnungen wie beim RAD-Befehl (siehe vorangegangene Ausgabe).

FUNKT, Name, XA, XB

zeichnet in das mittels TRS definierte Koordinatensystem die Funktion »Name« ein. Gezeichnet wird dabei der Bereich von XA bis XB. Im Gegensatz zu den sonstigen Basic-Regeln für Funktionsnamen ist hier nur ein Buchstabe als Name erlaubt. Mehr als 26 (Buchstaben A bis Z) Funktionen gleichzeitig wird aber vermutlich kaum jemand auf dem Bildschirm darstellen wollen, oder?

Beispiel: DEFFNA(X) = SIN(X) TRS, -10, 10, -2, 2 FUNKT, A, 0, 3.14 zeichnet die definierte Sinus-Funktion in das durch TRS festgelegte System. Das Ergebnis zeigt Bild 3.

Bild 3. Bildschirm nach: DEFFNA(x)=SIN(x) TRS, -10,10-2,2 FUNKT,A,0,3.14

Auch für diesen Befehl gilt das für TRS Gesagte (nur deutlicher). Die Ausführungszeit steigt stark an, je komplexer die Funktion ist. Trotzdem geht alles noch schneller als in einer FOR… NEXT-Schleife, die Punkt für Punkt die Funktion zeichnet.

Löschen im selbstdefinierten System LTP, X, Y

löscht einen Punkt im TRS-System.

LTL, XA, YA, XB, YB

löscht eine Linie im neuen System.

LTR, XA, YA, XB, YB

löscht das Rechteck im neudefinierten Koordinatensystem.

LTB, XA, YA, XB, YB

löscht ein ausgefülltes Rechteck im selbstdefinierten System.

LTK, XM, YM, RX, RY, W

löscht eine Ellipse (einen Kreis) im TRS-System.

LTV, XM, YM, RX, RY, W

löscht einen Radius im neuen System.

LFUNK, Name, XA, XB

löscht die Funktion Name im Bereich XA bis XB im selbstgebauten Koordinatensystem.

Noch zwei Kleinigkeiten

Zwei Programmteile gibt es noch, die über SYS-Befehle anzuspringen sind.

SYS34647

zeichnet auf den Normalbildschirm einen schwarzen Rahmen mit einer Kopfzeile. Den Inhalt dieser Zeile können Sie verändern, indem Sie den neuen Inhalt in die Tabelle ($87FE bis $8830) einschreiben, durch Ein-POKEn des Commodore-ASCII-Codes ihres Textes. Nach dem Aufruf dieses Programmes ist die Zeichenfarbe Schwarz. Durch POKE 646, gewünschter Farbcode können Sie das schnell ändern.

SYS34865, Bit-Map-Start

Damit können Sie jede gewünschte Bit-Map per Drucker zu Papier bringen. Die Startadresse der Bit-Map ist in Hires-3 dez. 40960. Wenn dieser Befehl gegeben wird, während sich am Bildschirm die Hochauflösung tummelt, dann braucht die Bit-Map-Startadresse nicht angegeben werden.

Zwei Wermutstropfen mischten sich in die freudige Anwendung dieser Hardcopy-Routine:

Erstens muß sich irgendwo im Programm eine besonders gut versteckte Wanze (bug) befinden. Ich bin mir nicht einmal sicher, ob die Ursache nicht etwa im Druckerbetriebssystem versteckt liegt. Wenn man vor jedem Aufruf dieser Hardcopy-Routine den Drucker in die Ausgangsstellung bringt, durch OPENl,4,10:PRINT # 1:CLOSE1, dann funktioniert der Ausdruck fast fehlerfrei. Lediglich dann, wenn ganz links oben auf dem Bildschirm schon eine Information zu übermitteln ist, gibt der Drucker dort das Pi-Zeichen aus. Der Rest des Bildes ist einwandfrei.

Hardcopy für den Drucker 1526

Zweitens aber ist dieses Programm für den Commodore-Drucker 1526 erstellt worden. Jeder, der dieses Gerät besitzt, wird den Ärger mit den vielen verschiedenen Betriebssystemen des 1526 kennen. Vermutlich werden Sie gar nicht wissen, welches Sie nun in Ihrem Drucker haben. Da hilft nur eines: Probieren Sie mal den Aufruf der Hardcopy-Routine aus. Wenn’s funktioniert, dann haben Sie das richtige Betriebssystem, wenn nicht, dann wenden Sie sich doch mal vertrauensvoll an Manfred Böhmel, Am Töbele 2 in 7923 Königsbronn. Der hat meinen nicht grafikfähigen 1526 in ein mich zufriedenstellendes Gerät verwandelt. In Tabelle 5 sind die Startadressen aller Hires-3 Programmteile angegeben. In vielen Zeitschriften finden sich Maschinenprogramme für Hardcopies auf diversen Druckern. Sollten Sie solch ein Programm für Ihren Drucker finden, können Sie es leicht gegen das hier vorgestellte austauschen.

Damit kennen Sie Hires-3 von der Anwendung her. In Listing 2 finden Sie wieder ein kleines Testprogramm, das alle neuen Funktionen überprüft (Bild 4 bis 7). Profis der Programmierung in Maschinensprache wird nun natürlich noch einiges interessieren: Welche Zeropage-Adressen benötigt Hires-3 und welche Adressen aus den Seiten 1-3? Welche Routinen werden aufgerufen? Wo findet man welche Programmteile? Um all diese Fragen zu klären, sind die Tabellen 1 bis 5 angefügt.

Bild 4. Das 1. Bild des Testprogramms.
Bild 5. Das 2. Bild des Testprogramms.
Bild 6. Das 3. Bild des Hires-3-Testprogramms
Bild 7. Das letzte Bild des Hires-3-Testprogramms

Tabelle 1 gibt alle durch Hires-3 ausdrücklich verwendeten Zeropage-Adressen an. Ausdrücklich deshalb, weil im Rahmen von Interpreter- oder Betriebssystem-Routinen ebenfalls Zeropage-Adressen angesprochen werden, die aber hier nicht benannt sind (es handelt sich dann ja um die normale Ansprache dieser Speicherstellen, wie sie ständig auch vom herkömmlichen Basic aus geschieht). Die meisten Zeropage-Speicherplätze werden in derselben Weise benutzt, wie es Interpreter und Betriebssystem vorgeben. Nur dort, wo Hires-3 eine andere Bedeutung eingeführt, ist das dann angegeben. Die Seiten 1 bis 3 unseres Speichers bergen ebenfalls wichtige Parameter unseres Computers. Deshalb ist die Tabelle 2 angefügt, die Auskunft gibt über Aktivitäten von Hires-3 in diesem Bereich.

Speicherstelle (hex.) Normale Verwendung Hires-3-Verwendung
01 Prozessor-Port
02 leer DEEK-Ergebnis
Farbcodespeicher
10 Flagge: Sperren der Annahme von Integer- oder Feldvariablen
14/15 Zwischenspeicher für Adressen und Integers
22/23 Diverse Zeiger
24/25 Zwischenspeicher bei NEXT
26 Ergebnis bei Gleitkommarechungen (*,/) Zwischenspeicher bei DUMP
2B/2C Zeiger auf Basic-Start
2D/2E Zeiger auf Basic-Variablen-Start
2F/30 Zeiger auf Basic-Array-Start
37/38 Zeiger auf Basic-Speicher-Ende
3D/3E Zeiger: Aktueller Basic-Befehl (für CONT) Zwischenspeicher für RENUMBER
3F/40 Zeiger: Aktuelle DATA-Zeile Zwischenspeicher für RENUMBER
41/42 Zeiger: Nächstes DATA-Element Zwischenspeicher für RENUMBER
43/44 Zeiger Auswertung einer Eingabequelle (INPUT, GET, READ) Zwischenspeicher für RENUMBER
45/46 Zeiger: Aktueller Basic-Variablen-Name
47 Tabellenzeiger Zwischenspeicher
47/48 Zeiger: Aktueller Basic-Variablen-Wert
4E/4F Zeiger: FN-Variable
Auch als Zwischenspeicher bei Gleitkommaoperationen
57-5B Fließkommaregister (Polynomauswertung, TAN)
58/59 Diverse Zeiger
57/58 Ergebnis des UP 16-Bit-Multiplikation Diverse Zwischenspeicher
5C-60 Fließkommaregister (Zwischenspeicher Polynomauswertung)
5D,5F Diverse Zähler und Flaggen (TI$, 16-Bit-Multiplik., STRFAC, FACSTR)
5F,60 Startadresse einer Programmzeile, Variablenverw., Stringtransfer
60 Vorzeichen des Exponenten
5C,5D Ergebnis des UP 16-Bit-Division Diverse Zwischenspeicher
61-66 FAC
69-6E ARG
7A/7B CHRGET-Zeiger
8B-8F Gleitkommawert der letzten RND-Zahl
8E,8F UP 16-Bit-Division: Divisionsrest
B9 Aktuelle Sekundäradresse
C5 SCNKEY (Aktueller Wert des Tastatur-Matrixcodes) = gedrückte Taste
C6 Anzahl gültiger Zeichen im Tastaturpuffer
CB Tastatur-Matrixcode, Zeiger in Decodierungstabelle für Tastatur
CE Zeichen unter dem Cursor Zwischenspeicher für RENUMBER
D1/D2 Zeiger: Aktueller Anfang der Cursor-Zeile im Bildschirm-RAM
D3 Cursorspalte innerhalb der Cursorzeile
FB-FE leer Diverse Zwischenspeicher und Zeiger
Die Hires-3-Verwendung ist nur dann angegeben, wenn sie von der normalen Verwendung abweicht.
Tabelle 1. Von Hires-3 verwendete Zeropage-Adressen
Speicherstelle (hex.) Normale Verwendung Hires-3-Verwendung
Page 1
101 und folgende Prozessorstack (auch für Datenspeicherung bei FOR...NEXT und GOSUB Zwischenspeicher für RENUMBER
Page 2
277 ff. Tastaturpuffer
288 Startseite der Videomatrix
28D Flagge für Shift, Commodore
28F/290 Vektor: Tastaturabfrage Wird verbogen auf 900B
2A7-2FF
2A7,2AF-2B5
leer Diverse Zwischenspeicher und Zeiger
Page 3
302/303 Vektor: Eingabewarteschleife (nach READY) AUTONUMBER verbiegt nach $90BC und zurück zum Normalwert $A483
308/309 Vektor: Routinenaufruf (Interpreter) Die Basic- Befehlserweiterungen verbiegen nach $9292 und zurück zum Normalwert $A7E4
314/315 IRQ-Vektor UHR verbiegt nach $852D und zurück zum Normalwert $EA31
Die Hires-3-Verwendung ist nur dann angegeben, wenn sie von der normalen Verwendung abweicht.
Tabelle 2. Von Hires-3 verwendete Adressen der Seiten 1 bis 3

Einige Zeiger werden verbogen und durch Hires-3 auch wieder gerade gerückt. Das geschieht zum Beispiel mittels AUS oder aber spätestens bei RUN/ STOP und RESTORE.

Tabelle 3 gibt einen Überblick über alle durch Hires-3 angesteuerten Interpreter-Routinen. Es wird jeweils die verwendete Einsprung-Adresse und die Bedeutung dieser Programmsegmente angegeben.

Einsprungadresse (hex.) Interpreter-Routine
A3BF Block-Verschiebe-Routine
A437 Ausdruck einer Fehlermeldung und READY
A483 Eingabewarteschleife
A533 Neuberechnung des Linkpointers für Basic-Zeilen
A613 Berechnung der Startadresse einer Basic-Zeilennummer
A6S5 Zurücksetzen des CHRGET-Zeigers und Ausführen von CLR
A660 Ausführen von CLR
A68E Zurücksetzen des CHRGET-Zeigers auf den Programmstart
A69C LIST-Routine
A7AE Interpreterschleife. Routinenaufruf
A7E7 Interpretation und Routinenaufruf, danach Interpreterschleife
A96B Lesen eines Zeichens aus einer Basic-Textzeile und Umwandlung in 16-Bit-Integer
AB1E Ausdrucken eines Strings
AD8A Auswerten und Prüfen von Ausdrücken
AD9E Auswerten von Ausdrücken
AEFD Prüfen auf Komma
AF08 Ausdrucken von SYNTAX ERROR und Herstellen des READY-Zustandes
B113 Prüfung, ob Zeichen im Akku ein Buchstabe ist
B248 Ausdrucken von ILLEGAL QUANTITY ERROR und Herstellen des READY-Zustandes
B391 Umwandlung einer 16-Bit-Integer-Zahl in eine Gleitkommazahl
B3A2 Umwandlung einer 8-Bit-Integer-Zahl in eine Gleitkommazahl
B44F Alten Wert der FN-Variablen wiederherstellen = Abschluß der FN-Auswertung
B6A3 Stringverwaltungsroutine
B79B Liest eine Zahl zwischen 0 und 255 aus dem Basic-Text ins X-Register ein
B79E Wertet einen numerischen Ausdruck (0 bis 255) aus
B7EB Lesen einer Adresse und eines Bytes aus dem Basic-Text
B7F7 Lesen einer Adresse (0 bis 65535) aus dem Basic-Text
B850 Gleitkommasubtraktion, Variante 1
B853 Gleitkommasubtraktion, Variante 2
B867 Gleitkommaaddition
BA28 Gleitkommamultiplikation
BB05 Gleitkommadivision, Variante 1
BB0F Gleitkommadivision, Variante 2
BBA2 Konstante in den FAC laden als Gleitkommazahl
BBD4 FAC abspeichern
BC0C FAC nach ARG übertragen
BC2B Vorzeichen der Gleitkommazahl im FAC prüfen
BC44 Umwandlung Integerzahl in Gleitkommazahl im FAC
BC5B Zahlenvergleich FAC mit Konstante
BC9B Umwandlung einer Gleitkommazahl in eine 4-Byte-Integerzahl
BDCD Ausdruck der laufenden Zeilennummer
BDDD Umwandlung des FAC-Inhaltes in einen Zahlenstring
Tabelle 3. Von Hires-3 verwendete Interpreter-Routine

Aus zwei Gründen ist diese Tabelle interessant: Zum einen gibt sie Assembler-Programmierern eine kleine Orientierungshilfe für eigene Programme. Das kann in diesem Zusammenhang aber nur in relativ kurzer Form geschehen. Ausführlich wird zu einem späteren Zeitpunkt in der Serie »Assembler ist keine Alchimie« uns dieser ganze Komplex noch beschäftigen. Sie sind herzlich eingeladen, daran teilzunehmen.

Zum anderen haben mich verschiedene Gerüchte erreicht, daß Commodore klammheimlich mehrere Änderungen des Betriebssystems und eventuell auch des Interpreters durchgeführt habe. Ich habe gerade ein neueres Betriebssystem untersucht, um die Unterschiede benennen zu können (siehe »Hokus-Pokus…« in dieser Ausgabe). Es könnte deswegen sein, daß im Falle eines Falles auch Routinen geändert wurden, die Hires-3 verwendet. Ob dadurch Fehlfunktionen auftreten und wenn ja, welche, kann man kaum vorhersagen — es kommt eben sehr auf die Art der Veränderungen an. Testläufe auf verschiedenen C 64 gaben keinen Hinweis darauf: Alles lief — wie bei mir — einwandfrei.

Routinen aus dem oberen ROM-Bereich $E000 bis $FFFF, die Hires-3 anwendet, zeigt die Tabelle 4.

Einsprungadresse (hex.) ROM-Routine
E1D4 Parameter für LOAD, SAVE, VERIFY aus Basic-Text lesen
E264 Basic-Funktion COS
E26B Basic-Funktion SIN
E716 Ausgabe eines Zeichens auf den Bildschirm
EA31 IRQ-Routine
EB42 Abschluß der Tastaturabfrage
EB48 Umschaltung auf Decodierungstabelle per Shift, Commodore, CTRL
F6ED Abfrage der RUN/STOP-Taste
Kernal-Routinen
FFBA SETLFS: Festsetzung der Parameter für OPEN
FFBD SETNAM: Festsetzung des File-Namens
FFC0 OPEN: Spezifiziertes File setzen
FFC3 CLOSE: File schließen
FFC9 CHKOUT: Vorbereitung der File-Ausgabe
FFCC CLRCHN: Schließen der aktiven Ein-/Ausgabekanäle
FFD2 CHROUT: Ausgabe des Akku-Inhaltes auf aktiven Ausgabekanal
FFD5 LOAD: Load und Verify von Programmen
FFD8 SAVE: Abspeichern von Programmen
Tabelle 4. Von Hires-3 verwendete Routinen aus dem oberen ROM-Bereich

ROM-Änderungen bei Commodore

Der untere Teil dieser Tabelle enthält die sogenannten Kernal-Sprungadressen. Für diesen Bereich garantiert Commodore, keine Änderungen durchzuführen. Leider — wie man aus dem vorangegangenen schnell ersehen kann — ist die Aufgabenvielfalt dieser Kernal-Adressen recht begrenzt. Man kommt ohne die anderen Routinen kaum aus.

Es wäre ja mal etwas völlig Neues, wenn Commodore etwas Vergleichbares wie die Kernal-Adressen auch für Gleitkomma- und auch andere Operationen einrichten würde. Dem steht aber die allgemein bekannte Publikationsfreundlichkeit des Hauses Commodore entgegen.

Im Gegensatz dazu sollen Sie Hires-3 geradezu durchleuchten können. Daher ist als Tabelle 5 noch eine Liste aller Teile von Hires-3 angegeben.

Startadresse Unterprogramm
9000 Belegung der Funktionstasten
909A Autonumber
916B Old
91BA Merge
927A Basic-Befehlserweiterungen
93E7 DEEK PEEK für RAM unter ROM
9410 16-Bit-Multiplikation
9434 16-Bit-Division
9522 FAR Farbgebung für Hochauflösungsbild
9546 LOE Bit-Map löschen
955D HAN Hochauflösung an
9572 HOF Hochauflösung aus
9587 HFL Kombination aus HAN, FAR und LOE
9590 PKT Punkt setzen
961C LIN Linie zeichnen
97D2 REC Rechteck zeichnen
9888 BLO Rechteck ausfüllen
98FA CIR Ellipse (Kreis) zeichnen
99E8 RAD Radiusvektor zeichnen
9A74 PAU Pause machen
9AC4 HIS Hochauflösungsbild extern abspeichern
9AE8 HIL Hochauflösungsbild einladen
9AF7 LPK Punkt löschen
9AFF LLN Linie löschen
9B07 LRE Rechteck löschen
9B0F LBK Ausgefülltes Rechteck löschen
9B17 LKR Ellipse (Kreis) löschen
9BlF LRA Radiusvektor löschen
9B27 TRS Transformation
9BA6 TPK Punkt in transformiertes System zeichnen
9C0B TLN Linie in transformiertes System zeichnen
9CEB TRE Rechteck in transformiertes System zeichnen
8000 TBK Ausgefülltes Rechteck in transformiertes System zeichnen
80E0 TKR Ellipse (Kreis) in transformiertes System zeichnen
814C TRA Radiusvektor in transformiertes System zeichnen
81B8 LTP Punkt im transformierten System löschen
81C0 LTL Linie im transformierten System löschen
81C8 LTR Rechteck im transformierten System löschen
81D0 LTB Ausgefülltes Rechteck im transformierten System löschen
81D8 LTK Ellipse (Kreis) im transformierten System löschen
81E0 LTV Radiusvektor im transformierten System löschen
81E8 Renumber
83DA DUMP Anzeige aller einfachen Variablen
849D UHR Anzeige einer Uhrzeit
85B8 FUNKT Zeichnen einer vorher definierten Funktion im transformierten System
874F LFUNK Löschen einer vorher definierten Funktion im transformierten System
8757 Rahmen mit Kopfzeile
87FE-8830 Texttabelle für Kopfzeile
8831 Hardcopy des Hochauflösungsbildes auf Drucker Commodore 1526
Tabelle 5. Die einzelnen Routinen von Hires-3

Sollten Sie bei der Gelegenheit noch Bugs (Programmfehler) finden, dann würde ich mich über Information darüber freuen. Außerdem sollen Sie durch einige schwächere Programmteile animiert werden, sich bessere Lösungen auszudenken. Da gibt es viele Möglichkeiten. Veröffentlichungen — denke ich — können hervorragend dazu dienen, daß jeder etwas neues lernen kann, Anregungen für seine eigenen Programme erhält, etc.

In Hires-3 sind viele solcher Anregungen verarbeitet. Als besonders hilfreich haben sich erwiesen:

  1. Schneider, Ebert »Das Commodore 64-Buch«, Band 1, Markt & Technik Verlag
  2. »Computerspiele und Wissenswertes, Commodore 64«, Markt & Technik Verlag
  3. Angerhausen, Englisch, Gerits, »64 Tips & Tricks«, Data Becker
  4. H.-J. Kutz, mc6 (1984) S. 78f.

Murphys Gesetze gehen natürlich nicht an so einer guten Gelegenheit wie Hires-3 vorbei. Wenn ich also weiter oben sagte, ich würde mich freuen, wenn Sie noch Bugs entdecken, ist das durchaus erst gemeint.

Ich benütze Hires-3 in dieser Form seit mehreren Monaten ausgiebig. Dasselbe tun einige meiner Freunde. Einer hat festgestellt, daß — aus welchen Gründen auch immer — sich Probleme ergeben können, wenn man direkt nach der Zeilennummer einen Doppelpunkt eingibt. Ich habe bisher noch keine Notwendigkeit gefunden, so etwas zu tun.

Sollten Sie’s vorhaben oder aber gewohnt sein, dann achten Sie auf mögliche Störungen. Ein selten benutztes Programm-Segment hat mir in letzter Minute noch einen Fehler offenbart. Es geht um eine Fehlermeldung bei falscher Eingabe des FUNKT-Befehls. Anstelle einer 8 ist da ein B hineingerutscht. Der Fehler ist schnell behoben durch diesen POKE: POKE34249,8

Geben Sie diese Anweisung ein, bevor Sie mittels SMON das gesamte Hires-3 abspeichern, dann ist alles in Ordnung.

Nun wünsche ich Ihnen viel Vergnügen mit Hires-3. Testen Sie, probieren sie, verbessern Sie… In den nächsten Ausgaben werden in lockerer Reihenfolge weitere Grafik-Artikel erscheinen, in denen auf die praktische Anwendung von Grafik besonderer Wert gelegt wird. Ich werde dabei dann Hires-3 als Grundlage verwenden. Falls Sie noch besondere Wünsche oder Fragen haben sollten, dann melden Sie sich doch einfach mal.

Ich versuche dann die interessantesten und wichtigsten Fragen im 64’er zu beantworten.

(Heimo Ponnath/gk)
PROGRAMM : HIR.2$8000-89B6 8000 89B8
-----------------------------------
8000 : A9 00 8D A8 94 20 FD AE   C1
8008 : 20 8A AD A9 6C A0 94 20   6C
8010 : 5B BC C9 FF D0 0B A9 00   48
8018 : 8D 9F 94 8D A0 94 4C 42   B0
8020 : 80 20 0C BC A9 6C A0 94   F5
8028 : 20 A2 BB 20 53 B8 A9 62   F3
8030 : A0 94 20 28 BA 20 9B BC   BC
8038 : A5 65 8D 9F 94 A5 64 8D   0A
8040 : A0 94 20 FD AE 20 8A AD   64
8048 : A9 71 A0 94 20 5B BC C9   C8
8050 : 01 D0 08 A9 00 8D A1 94   0D
8058 : 4C 71 80 A9 71 A0 94 20   61
8060 : 50 B8 A9 67 A0 94 20 28   E3
8068 : BA 20 9B BC A5 65 8D A1   B0
8070 : 94 20 FD AE 20 8A AD A9   CA
8078 : 6C A0 94 20 5B BC C9 FF   20
8080 : D0 0B A9 00 8D A2 94 8D   9C
8088 : A3 94 4C AE 80 20 0C BC   11
8090 : A9 6C A0 94 20 A2 BB 20   70
8098 : 53 B8 A9 62 A0 94 20 28   7D
80A0 : BA 20 9B BC A5 65 8D A2   EA
80A8 : 94 A5 64 8D A3 94 20 FD   35
80B0 : AE 20 8A AD A9 71 A0 94   98
80B8 : 20 5B BC C9 01 D0 08 A9   F8
80C0 : 00 8D A4 94 4C DD 80 A9   4B
80C8 : 71 A0 94 20 50 B8 A9 67   F3
80D0 : A0 94 20 28 BA 20 9B BC   5C
80D8 : A5 65 8D A4 94 4C B3 98   D3
80E0 : A9 00 8D A8 94 20 FD AE   A1
80E8 : 20 8A AD 20 0C BC A9 6C   E3
80F0 : A0 94 20 A2 BB 20 53 B8   B2
80F8 : A9 62 A0 94 20 28 BA 20   FB
8100 : 9B BC A5 65 8D A5 94 A5   B3
8108 : 64 8D A6 94 20 FD AE 20   5C
8110 : 8A AD A9 71 A0 94 20 50   D9
8118 : B8 A9 67 A0 94 20 28 BA   F3
8120 : 20 9B BC A5 65 8D A7 94   7C
8128 : 20 FD AE 20 8A AD A9 62   78
8130 : A0 94 20 28 BA A0 94 A2   70
8138 : 79 20 D4 BB 20 FD AE 20   5B
8140 : 8A AD A9 67 A0 94 20 28   78
8148 : BA 4C 25 99 A9 00 8D A8   C7
8150 : 94 20 FD AE 20 8A AD 20   97
8158 : 0C BC A9 6C A0 94 20 A2   2F
8160 : BB 20 53 B8 A9 62 A0 94   71
8168 : 20 28 BA 20 9B BC A5 65   50
8170 : 8D 92 94 A5 64 8D 93 94   4A
8178 : 20 FD AE 20 8A AD A9 71   E6
8180 : A0 94 20 50 B8 A9 67 A0   34
8188 : 94 20 28 BA 20 9B BC A5   AB
8190 : 65 8D 94 94 20 FD AE 20   60
8198 : 8A AD A9 62 A0 94 20 28   2F
81A0 : BA A0 94 A2 79 20 D4 BB   87
81A8 : 20 FD AE 20 8A AD A9 67   02
81B0 : A0 94 20 28 BA 4C 13 9A   37
81B8 : A9 FF 8D A8 94 4C AB 9B   6B
81C0 : A9 FF 8D A8 94 4C 10 9C   06
81C8 : A9 FF 8D A8 94 4C F0 9C   92
81D0 : A9 FF 8D A8 94 4C 05 80   B2
81D8 : A9 FF 8D A8 94 4C E5 80   3D
81E0 : A9 FF 8D A8 94 4C 51 81   F5
81E8 : 20 AD 83 86 41 85 42 20   1A
81F0 : B8 83 20 AD 83 86 3D 85   94
81F8 : 3E E4 41 E5 42 B0 05 A2   B8
8200 : 0E 4C 37 A4 20 AD 83 86   21
8208 : 3F 85 40 A0 01 B1 43 F0   BB
8210 : 37 A9 FF 85 15 85 14 20   DA
8218 : 6B 83 20 8E A6 B0 32 A0   19
8220 : 00 B1 43 AA C8 B1 43 F0   28
8228 : 1F 48 C8 A5 3D 91 43 C8   51
8230 : A5 3E 91 43 86 43 68 85   F0
8238 : 44 A5 3D 18 65 3F 85 3D   82
8240 : A5 3E 65 40 85 3E 90 D7   A2
8248 : 4C 60 A6 E6 7A D0 02 E6   4F
8250 : 7B A0 00 B1 7A D0 13 A0   0D
8258 : 02 B1 7A F0 C2 A5 7A 18   63
8260 : 69 05 85 7A 90 EB E6 7B   F7
8268 : B0 E7 C9 22 D0 0B 20 73   8F
8270 : 00 C9 00 F0 E2 C9 22 D0   1A
8278 : F5 C9 89 F0 17 C9 8D F0   AA
8280 : 13 C9 A7 F0 0F C9 8A F0   CB
8288 : 0B C9 CB D0 BE 20 73 00   3F
8290 : C9 A4 D0 BF 20 73 00 B0   D6
8298 : BA 84 14 84 15 E9 2F 90   A8
82A0 : 33 AA A5 15 85 22 C9 19   F7
82A8 : B0 ED A5 14 0A 26 22 0A   A9
82B0 : 26 22 65 14 85 14 A5 22   97
82B8 : 65 15 85 15 06 14 26 15   70
82C0 : 8A 65 14 85 14 90 02 E6   4E
82C8 : 15 C8 B1 7A C9 20 F0 F9   52
82D0 : C9 3A 90 C9 A5 14 C5 41   A8
82D8 : A5 15 E5 42 90 48 84 CE   C4
82E0 : 20 6B 83 38 A2 90 20 44   55
82E8 : BC 20 DD BD A0 FF C8 B9   84
82F0 : 01 01 D0 FA A5 7A A6 7B   C5
82F8 : 85 5F 86 60 38 98 E5 CE   58
8300 : 30 26 F0 40 85 CE A5 2D   47
8308 : 85 5A 18 65 CE 85 58 A5   33
8310 : 2E 85 5B 69 00 85 59 C5   22
8318 : 38 90 06 A5 58 C5 37 B0   C1
8320 : 43 20 BF A3 F0 1E 90 30   7A
8328 : 49 FF A8 C8 A2 00 A5 5F   33
8330 : C5 2D A5 60 E5 2E B0 0C   AC
8338 : B1 5F 81 5F E6 5F D0 EE   70
8340 : E6 60 D0 EA A0 00 B9 01   DB
8348 : 01 F0 05 91 7A C8 D0 F6   54
8350 : 20 B8 83 20 73 00 90 FB   23
8358 : A0 00 C9 2C D0 02 A9 89   C7
8360 : AA 4C 55 82 A9 45 20 D2   C1
8368 : FF D0 E8 A5 3D A6 3E 85   CB
8370 : 63 86 62 A5 43 A6 44 85   E9
8378 : 22 86 23 A0 02 B1 22 C5   7C
8380 : 14 C8 B1 22 E5 15 B0 2F   D1
8388 : A0 00 B1 22 AA C8 B1 22   D5
8390 : 86 22 85 23 B1 22 F0 1F   1B
8398 : A5 63 65 3F 85 63 A5 62   FF
83A0 : 65 40 85 62 B0 04 C9 FA   1B
83A8 : 90 D1 4C FF 81 20 FD AE   A2
83B0 : 20 6B A9 A6 14 A5 15 60   48
83B8 : 20 33 A5 18 A5 22 69 02   F3
83C0 : 85 2D A5 23 69 00 85 2E   B3
83C8 : A5 41 A6 42 85 14 86 15   3D
83D0 : 20 13 A6 A5 5F 85 43 86   14
83D8 : 44 60 A5 2D A4 2E 85 14   55
83E0 : 84 15 C4 30 D0 02 C5 2F   B9
83E8 : B0 18 69 02 90 01 C8 85   7E
83F0 : 22 84 23 20 20 84 20 54   71
83F8 : 84 8A 10 07 20 5D 84 4C   3E
8400 : 0F 84 60 98 30 06 20 6D   0B
8408 : 84 4C 0F 84 20 76 84 A9   22
8410 : 0D 20 D2 FF A5 14 A4 15   9A
8418 : 18 69 07 90 C1 C8 B0 BE   5B
8420 : A0 00 B1 14 AA 29 7F 20   E1
8428 : D2 FF C8 B1 14 A8 29 7F   8C
8430 : F0 03 20 D2 FF 8A 10 11   BB
8438 : 98 30 0A A9 21 20 D2 FF   FE
8440 : 68 68 4C 0F 84 A9 25 D0   9D
8448 : 4E 98 10 04 A9 24 D0 47   F4
8450 : 60 20 D2 FF A9 20 20 D2   37
8458 : FF A9 3D D0 3A A0 00 B1   A1
8460 : 22 AA C8 B1 22 A8 8A 20   11
8468 : 95 B3 4C 70 84 20 A6 BB   53
8470 : 20 DD BD 4C 1E AB 20 95   63
8478 : 84 A0 02 B1 22 85 25 88   F7
8480 : B1 22 85 24 88 B1 22 85   D2
8488 : 26 F0 0A B1 24 20 D2 FF   6E
8490 : C8 C4 26 D0 F6 A9 22 4C   3C
8498 : D2 FF 00 00 00 AD 0E DC   C9
84A0 : 09 80 8D 0E DC AD 0F DC   40
84A8 : 29 7F 8D 0F DC 20 79 00   8B
84B0 : F0 65 20 FD AE 20 9E AD   DC
84B8 : 20 A3 B6 C9 06 D0 6B A0   66
84C0 : 00 B1 22 38 E9 30 C9 03   76
84C8 : B0 60 0A 0A 0A 0A 85 FB   6B
84D0 : C8 B1 22 38 E9 30 C9 0A   5C
84D8 : B0 50 05 FB D0 04 A9 92   6A
84E0 : D0 0F C9 24 B0 44 C9 13   A9
84E8 : 90 07 38 F8 E9 12 D8 09   CE
84F0 : 80 8D 0B DC 20 9A 85 8D   9D
84F8 : 0A DC 20 9A 85 8D 09 DC   6E
8500 : A9 00 8D 08 DC 20 79 00   C2
8508 : F0 0D 20 FD AE 20 9E B7   1C
8510 : E0 10 B0 16 8E A7 02 78   06
8518 : AD 14 03 49 1C 8D 14 03   3E
8520 : AD 15 03 49 6F 8D 15 03   00
8528 : 58 60 4C 48 B2 A5 FB 48   A5
8530 : A5 FC 48 AD 88 02 85 FC   C4
8538 : A9 00 85 FB A0 1E AD 0B   8A
8540 : DC C9 12 F0 11 C9 80 90   26
8548 : 0F 29 7F C9 12 F0 09 F8   C4
8550 : 18 69 12 D8 D0 02 A9 00   80
8558 : 20 78 85 AD 0A DC 20 78   C4
8560 : 85 AD 09 DC 20 78 85 AD   D1
8568 : 08 DC 09 30 20 90 85 68   94
8570 : 85 FC 68 85 FB 4C 31 EA   FB
8578 : 48 29 F0 4A 4A 4A 4A 18   2B
8580 : 69 30 20 90 85 68 29 0F   7A
8588 : 18 69 30 20 90 85 A9 3A   B5
8590 : 91 FB AD A7 02 99 00 D8   1E
8598 : C8 60 C8 B1 22 38 E9 30   E5
85A0 : C9 06 B0 86 0A 0A 0A 0A   96
85A8 : 85 FB C8 B1 22 38 E9 30   7F
85B0 : C9 0A B0 EE 05 FB 60 00   3A
85B8 : A9 00 8D A8 94 20 FD AE   79
85C0 : 20 79 00 20 13 B1 B0 03   28
85C8 : 4C 0B AF 09 80 48 E6 7A   82
85D0 : A5 7A D0 02 E6 7B 20 FD   ED
85D8 : AE 20 8A AD A9 6C A0 94   98
85E0 : 20 5B BC C9 FF D0 07 A9   0C
85E8 : 6C A0 94 20 A2 BB A2 79   53
85F0 : A0 94 20 D4 BB 20 17 86   A3
85F8 : 8D 92 94 8C 93 94 20 FD   DF
8600 : AE 20 8A AD A2 7E A0 94   E0
8608 : 20 D4 BB 20 17 86 8D 95   8C
8610 : 94 8C 96 94 4C 33 86 20   DB
8618 : 0C BC A9 6C A0 94 20 A2   EF
8620 : BB 20 53 B8 A9 62 A0 94   31
8628 : 20 28 BA 20 9B BC A5 65   10
8630 : A4 64 60 68 85 45 85 10   E4
8638 : A0 00 84 46 A5 2D A6 2E   7D
8640 : 86 60 85 5F E4 30 D0 04   5F
8648 : C5 2F F0 19 A5 45 D1 5F   8F
8650 : D0 08 A5 46 C8 D1 5F F0   D1
8658 : 11 88 18 A5 5F 69 07 90   E7
8660 : E1 E8 4C 40 86 A2 1B 4C   53
8668 : 37 A4 A5 5F 18 69 02 A4   65
8670 : 60 90 01 C8 85 4E 84 4F   ED
8678 : A0 02 B1 4E 85 47 C8 B1   69
8680 : 4E 85 48 C8 B1 47 48 88   43
8688 : 10 FA A9 79 A0 94 20 A2   23
8690 : BB A5 7A 48 A5 7B 48 A5   68
8698 : 47 48 A5 48 48 A5 4E 48   F1
86A0 : A5 4F 48 A0 00 68 85 4F   0B
86A8 : 68 85 4E B1 4E 85 7A C8   29
86B0 : B1 4E 85 7B 68 85 48 A8   7E
86B8 : 68 85 47 AA 20 D4 BB A5   ED
86C0 : 47 48 A5 48 48 A5 4E 48   19
86C8 : A5 4F 48 20 8A AD A9 71   CB
86D0 : A0 94 20 5B BC C9 01 D0   EE
86D8 : 05 A2 00 4C FC 86 A9 71   45
86E0 : A0 94 20 50 B8 A9 67 A0   94
86E8 : 94 20 28 BA 20 9B BC A5   0B
86F0 : 65 AA AD 92 94 85 14 AD   89
86F8 : 93 94 85 15 20 9F 95 18   5F
8700 : AD 92 94 69 01 8D 92 94   39
8708 : AD 93 94 69 00 8D 93 94   B5
8710 : CD 96 94 D0 08 AD 92 94   C9
8718 : CD 95 94 F0 1D AD 93 94   AA
8720 : AC 92 94 20 91 B3 20 0C   8E
8728 : BC A9 62 A0 94 20 05 BB   3B
8730 : A9 6C A0 94 20 67 B8 4C   83
8738 : A3 86 68 85 4F 68 85 4E   D4
8740 : 68 85 4F 68 85 4E 68 85   C3
8748 : 7B 68 85 7A 4C 4F B4 A9   0D
8750 : FF 8D A8 94 4C BD 85 A9   EF
8758 : 4F A2 00 8D 00 04 8A 8D   10
8760 : 00 D8 A9 50 8D 27 04 8A   78
8768 : 8D 27 D8 A9 4C 8D C0 07   36
8770 : 8A 8D C0 DB A9 7A 8D E7   E1
8778 : 07 8A 8D E7 DB A0 00 A9   3B
8780 : 77 99 01 04 8A 99 01 D8   B0
8788 : C8 C0 26 D0 F2 A9 6F 99   C1
8790 : C0 07 8A 99 C0 DB 88 D0   58
8798 : F4 A9 74 8D 28 04 8A 8D   18
87A0 : 28 D8 A9 4F 85 FB 85 FD   D3
87A8 : A9 04 85 FC A9 D8 85 FE   CA
87B0 : A9 6A 91 FB A9 00 91 FD   4F
87B8 : C8 A9 74 91 FB A9 00 91   D4
87C0 : FD A0 00 E8 E0 16 F0 1D   E7
87C8 : 18 A5 FB 69 28 85 FB A5   C9
87D0 : FC 69 00 85 FC 18 A5 FD   55
87D8 : 69 28 85 FD A5 FE 69 00   6E
87E0 : 85 FE 4C B0 87 A9 6A 8D   98
87E8 : BF 07 A9 00 8D BF DB A0   1D
87F0 : 00 B9 FE 87 F0 07 20 D2   EB
87F8 : FF C8 4C F1 87 60 13 90   95
8800 : 12 20 20 48 45 49 4D 4F   A6
8808 : 20 50 4F 4E 4E 41 54 48   BF
8810 : 20 20 20 56 45 52 53 49   DA
8818 : 4F 4E 20 31 34 2E 30 36   9E
8820 : 2E 31 39 38 34 20 20 20   41
8828 : 20 92 00 FF FF FF FF FF   91
8830 : FF A5 01 48 A9 37 85 01   B8
8838 : A9 7C A2 04 A0 00 84 FB   5D
8840 : 84 FC 8C A7 02 8C B0 02   A6
8848 : 8C B1 02 8C B2 02 8C B3   94
8850 : 02 8C B4 02 8C AF 02 8C   6D
8858 : B5 02 20 BA FF 98 20 BD   2E
8860 : FF 20 C0 FF A9 7D A2 04   B8
8868 : A0 05 20 BA FF 20 C0 FF   EE
8870 : A9 7E A2 04 A0 06 20 BA   B2
8878 : FF 20 C0 FF A2 7E 20 C9   EA
8880 : FF A9 15 20 D2 FF 20 CC   E4
8888 : FF 20 79 00 C9 2C D0 14   5F
8890 : 20 73 00 20 8A AD 20 F7   F4
8898 : B7 A5 14 A4 15 85 FB 84   32
88A0 : FC 18 90 18 AD 00 DD 49   B4
88A8 : FF 29 03 18 6A 6A 6A 85   AE
88B0 : FC AD 18 D0 29 08 0A 0A   B2
88B8 : 05 FC 85 FC 20 46 89 A2   DC
88C0 : 7D 20 C9 FF A2 00 A0 00   6C
88C8 : BD A7 02 F0 01 C8 20 D2   74
88D0 : FF E8 E0 08 D0 F2 20 CC   3B
88D8 : FF A2 7C 20 C9 FF C0 00   EB
88E0 : F0 12 AE AF 02 F0 08 A9   96
88E8 : 20 20 D2 FF CA D0 F8 A9   37
88F0 : FE 20 D2 FF EE AF 02 AD   83
88F8 : AF 02 C9 28 D0 0D EE B5   BC
8900 : 02 A9 00 8D AF 02 A9 0D   54
8908 : 20 D2 FF A9 8D 20 D2 FF   EB
8910 : 20 CC FF A5 FB 18 6D B0   E2
8918 : 02 85 FB 90 02 E6 FC AD   94
8920 : B5 02 C9 19 D0 96 A2 7E   B5
8928 : 68 85 01 20 C9 FF A9 24   23
8930 : 20 D2 FF 20 CC FF A9 7C   2A
8938 : 20 C3 FF A9 7D 20 C3 FF   57
8940 : A9 7E 20 C3 FF 60 A9 00   52
8948 : 8D B0 02 A9 00 8D B2 02   1E
8950 : F0 45 D0 12 AD B2 02 AC   2B
8958 : B0 02 99 A7 02 C8 8C B0   5F
8960 : 02 C0 08 D0 E6 60 78 A9   85
8968 : 30 85 01 A9 00 8D B1 02   08
8970 : A9 01 D0 23 AC B1 02 B1   F6
8978 : FB 2D B3 02 F0 0A AD B2   B2
8980 : 02 18 6D B4 02 8D B2 02   DC
8988 : C8 8C B1 02 C0 08 D0 E0   94
8990 : A9 37 85 01 58 D0 BD A0   9B
8998 : 01 48 AA A9 07 38 FD B0   29
89A0 : 02 F0 07 AA 98 0A CA D0   D8
89A8 : FC A8 68 AA 98 9D B3 02   B1
89B0 : E0 01 D0 9E F0 BE FF EB   F6
Listing 1. Hires 3, 2. Teil. Dieses Programm muß mit dem MSE (als Listing in dieser Ausgabe) eingegeben werden
1 rem *********************************
2 rem *                               *
3 rem *       grafik test-demo        *
4 rem *             zum               *
5 rem *   2.teil von h i r e s - 3    *
6 rem * (laeuft nur zusammen mit dem  *
7 rem *     1. teil von hires-3)      *
8 rem * heimo ponnath,2102 hh 93,1984 *
9 rem *                               *
10 rem*********************************
20 poke52,128:poke56,128:sys37498:printchr$(147)
24 rem
25 rem ++++++ der rahmen ++++++++++++++
26 rem
30 sys34647:poke646,14:sp=4:z=5:gosub1000
35 print"dies ist der rahmen mit kopfzeile":z=6:gosub1000
40 print"---------------------------------":pau,1:z=8:gosub1000
45 print"trs und funkt fuer zoom-effekt":pau,2
47 rem
48 rem +++ trs,funkt,tln,lfunk,tbk,ltl+++
49 rem
50 deffna(x)=x^x
55 hfl,6,14:trs,-1,10,-1,30:funkt,a,0,3
60 tln,-1,0,5,0:tln,0,-1,0,30:tre,-.5,2,1.5,-.5
65 trs,-3,1.8,-2.5,2.5:tbk,-.5,2,1.5,-.5
70 lfunk,a,0,1.5:ltl,-.5,0,1.5,0:ltl,0,-.5,0,2:rec,0,0,319,199
80 pau,3:hof:sp=7:z=10:gosub1000:print"rechts ausschnittvergroesserung"
85 z=11:gosub1000:print"mit minimum bei .3679":pau,2:han:fori=1to5
90 tln,.3679,0,.3679,fna(.3679):pau,1:ltl,.3679,0,.3679,fna(.3679):nexti
95 pau,3:hof:sp=5:z=18:gosub1000:print"wuenschen sie eine hardcopy(j/n)?"
100 gosub2000:ifa$="j"thengosub3000
108 rem
109 rem +++++ tpk,tre ++++++++++++++++++
110 deffnx(t)=3*sin(4*t):deffny(t)=3*sin(9*t):printchr$(147):sp=5:z=10
115 sys34647:gosub1000:print"lissajous-figuren mit tpk":pau,2:hfl,1,6
120 trs,-5,5,-5,5:fort=0to2*~step.01:tpk,fnx(t),fny(t):nextt
125 fori=5to3.5step-.25:tre,-i,i,i,-i:nexti
130 pau,3:hof:poke646,14:z=18:gosub1000:print"hardcopy erwuenscht(j/n)?"
135 gosub2000:ifa$="j"thengosub3000
138 rem
139 rem +++++ tra,tkr,ltv,ltk ++++++++++
140 printchr$(147):sys34647:poke646,14:sp=5:z=10:gosub1000
145 print"polare kurven mittels tra":z=12:gosub1000:print"hier:vierblaettriger klee"
150 pau,2:hfl,1,2:deffnb(x)=-a*sin(2*x)/2
155 a=5:trs,-4,4,-4,4:forx=0to2*~step.1:tra,0,0,fnb(x),fnb(x),x:nextx
160 ltk,0,0,.25,.25,2*~:tkr,0,0,4,4,2*~:fori=0to2*~step.1:ltv,0,0,.2,.2,i:nexti
165 rec,0,0,319,199:pau,3:hof
170 z=20:gosub1000:print"diesmal eine hardcopy(j/n)?":gosub2000
175 ifa$="j"thengosub3000
178 rem
179 rem +++++++ ltp,ltr,ltb ++++++++++++
180 printchr$(147):sys34647:poke646,14:sp=5:z=8:gosub1000
185 print"gewoehnliche zykloide mittels ltp":pau,2
190 deffnc(t)=3*(t-sin(t)):deffnd(t)=3*(1-cos(t)):trs,-3,40,-3,50
195 hfl,14,6:tbk,-1,10,38,-2:ltr,0,9,37,0
200 fort=0to2*~+3step.1:ltp,fnc(t),fnd(t):nextt:ltb,30,8,36,.5
300 pau,3:hof:z=10:gosub1000:print"abschliessend noch:":z=12:gosub1000
305 print"3d-darstellung mittels":z=13:gosub1000:print"trs und funkt":pau,3
310 deffne(x)=exp(x/z)*sin(x):han:rec,0,0,319,199
315 trs,-3,5,-5,9:tln,-2,0,4,0:tln,0,-1,0,8:tln,-1,-1,2,2:d=1/20
320 fori=0to20:z=5-4*i*d:trs,-3-i*d,5-i*d,-5-i*d,9-i*d:funkt,e,-.5,3.31:nexti
325 pau,4:hof:sp=3:z=18:gosub1000:print"solls jetzt eine hardcopy sein(j/n)?"
330 gosub2000:ifa$="j"thengosub3000
398 rem
399 rem +++++++ ende +++++++++++++++++++
400 printchr$(147):sys34647:poke646,14:sp=10:z=12:gosub1000:print"das wars !"
405 pau,5:printchr$(147):aus:end
996 rem
997 rem ++++++ unterprogramme ++++++++++
998 rem
999 rem ++++++ cursor setzen +++++++++++
1000 poke211,sp:poke214,z:sys58640:return
1998 rem
1999 rem +++++++ get-abfrage +++++++++++
2000 geta$:ifa$=""then2000
2100 return
2998 rem
2999 rem ++++++ hardcopy +++++++++++++++
3000 open1,4,10:print#1:close1:han:sys34865:hof:return
Listing 2. Mit diesem Programm testen Sie Hires-3

PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →