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.

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.

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.

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.




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. |
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 |
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 |
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 |
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 |
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:
- Schneider, Ebert »Das Commodore 64-Buch«, Band 1, Markt & Technik Verlag
- »Computerspiele und Wissenswertes, Commodore 64«, Markt & Technik Verlag
- Angerhausen, Englisch, Gerits, »64 Tips & Tricks«, Data Becker
- 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
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