HI-EDDI: ein fantastisches Zeichen- und Malprogramm
HI-EDDI ist ein High-Resolution-Grafik-Editor, der vieles bietet, was man bei teuren, kommerziellen Programmen vergeblich sucht. Sehen Sie sich die Bilder an und Sie bekommen einen Eindruck von seinen Fähigkeiten.

Hier eine Aufstellung der herausragenden Eigenschaften:
- Wahlweise als »Schwarzweiß«-Zeichenprogramm oder als farbiges Malprogramm verwendbar, in jedem Fall mit der vollen Auflösung von 320 x 200 Bildpunkten.
- 7 (in Worten: sieben) Schwarzweiß-Bildschirme oder 6 farbige stehen zur Verfügung.
- Integrierter, leistungsfähiger Sprite-Editor (mit Sprite spiegeln, drehen…) und die Fähigkeit, Sprites aus dem Grafikbild herauszukopieren oder einzupflanzen. Damit ist zum Beispiel Ausschnittvergrößerung (Zoom) ebenso wie das Erstellen von »Construction Sets« möglich.
- Mit einer Zeichentrickfilm-Funktion sind fast flimmerfreie Bewegungsabläufe mit bis zu 24 Bildern pro Sekunde möglich.
- Befehlseingabe wahlweise über Tastatur oder eine selbst zu gestaltende Menütafel (à la Koalapainter).
- Zusammenhängender Ausdruck mehrerer Bilder möglich, das ergibt Superbilder mit einer Breite von minimal 640 Punkten und unbegrenzter Länge (siehe Bild 2 im Listing-Teil).
- Ferner sind alle »Standardbefehle« wie Draw, Line, Rectangle, Circle, Paint, Move und Text vorhanden.
Natürlich ist klar, daß sowas nur in Maschinensprache geht, und die ist mit rund 4700 DATAs nicht gerade kurz. Gemessen an den Möglichkeiten des Programms ist es allerdings auch nicht viel. Die Bilder auf diesen Seiten lassen die Vielfältigkeit von HI-EDDI nur ahnen. Dabei lassen sich nicht nur mit HI-EDDI erzeugte Bilder laden und bearbeiten, sondern auch Grafikbilder anderer Programme, wie von Koala oder Paint Magic, zum Beispiel die der Dia-Show.
(Hans Haberl/gk)

Wie mächtig HI-EDDI ist, können Sie aus der umfangreichen Funktionsbeschreibung ersehen. Es kann sogar mit den »professionellen« Programmen verglichen werden, auf jeden Fall ist es das beste Grafikprogramm zum Abtippen.
Nach dem Start meldet sich HI-EDDI mit der Frage »Betriebsart«. Wird hier 0 eingegeben (oder einfach RETURN), wird HI-EDDI als »Schwarzweiß«-Programm betrieben, bei 128 dagegen als farbiges Malprogramm. Weitere mögliche Eingaben werden später behandelt, ebenso die Befehlseingabe mittels Menütafel. Zunächst werden alle Befehle, die im folgenden zusammengestellt sind, durch Tastendruck eingegeben.
D Draw — »Freihändig« zeichnen
Im Draw-Modus kann mit dem kreuzförmigen Cursor (der wird mit einem Joystick in Port 2 gesteuert) »freihändig« gezeichnet werden. Bei gedrücktem Feuerknopf werden die überfahrenen Punkte gesetzt. Um Punkte zu löschen, muß zusätzlich die SHIFT-Taste (oder SHIFT-LOCK zum Feststellen) gedrückt werden.
L Line — Linien ziehen
Mit dem ersten Knopfdruck am Joystick wird der Anfangspunkt einer Linie festgelegt, mit dem zweiten der Endpunkt, mit dem dritten wieder ein Anfangspunkt etc.. Der jeweilige Anfangspunkt wird auf F7 gespeichert (siehe Funktionstasten), damit lassen sich Strahlen besonders einfach zeichnen. SHIFT wie bei D.
R Rectangle — Rechtecke zeichnen
Wie L — auch bezüglich SHIFT und F7 —, jedoch wird zwischen den zwei markierten Punkten ein Rechteck gezeichnet.
C Circle — Kreise zeichnen
Der erste Knopfdruck ergibt den Mittelpunkt (auf F7 gespeichert, damit ist einfaches Zeichnen konzentrischer Kreise möglich), derzweite einen beliebigen Randpunkt, von dem aus HI-EDDI im Uhrzeigersinn einen Kreis zieht. Wird beim Anstoßen an den Rand abgebrochen.
Möchte man einen Ausschnitt eines Kreises, der nicht ganz auf den Bildschirm paßt, zeichnen, so muß der zweite Knopfdruck einen Punkt am Bildschirmrand markieren, von dem aus der sichtbare Kreisausschnitt im Uhrzeigersinn gezeichnet werden kann. Allerdings darf der Radius maximal 256 Punkte betragen.
P Paint — Ausmalen begrenzter Flächen
Cursor mitten auf die auszumalende Fläche setzen und Knopf drücken. Sollte durch ein Loch in der Umrandung der ganze Bildschirm vollzulaufen drohen, so kann der Vorgang durch nochmaligen Knopfdruck abgebrochen werden (dazu ist allerdings eine gute Reaktion nötig, denn HI-EDDI füllt Flächen um einiges schneller als Simons Basic). Zum Löschen von Flächen: Bildschirm mit »I« invertieren, entstandenes »Loch« vollaufen lassen, zurückinvertieren.
M Move — Verschieben von Bildschirmbereichen
Mit den ersten beiden Knopfdrücken werden zwei diagonale Ecken des zu transportierenden Bereiches gesetzt (nach dem zweiten Knopfdruck erscheint eine farbliche Markierung dieses Bereiches), der dritte Knopfdruck gibt die linke, obere Ecke des Zielbereiches an. Der Zielbereich muß noch ganz auf den Bildschirm passen (sonst wird der Knopfdruck nicht akzeptiert), er darf jedoch den Quellbereich überlappen oder in einem anderen Bildschirm liegen. Die Auflösung des Move-Befehls entspricht der des normalen Textbildschirmes, es kann also nur im 40 x 25-Raster verschoben werden.
Soll ein Bereich mehrmals kopiert werden, so muß er nicht jedesmal neu markiert werden: Ein Druck auf die Pfeil-nach-oben-Taste holt die letzte Markierung wieder auf den Bildschirm, es kann danach sofort der Zielbereich bestimmt werden (funktioniert nur, solange zwischenzeitlich kein Moduswechsel erfolgte).
Hat man sich beim Markieren vertan, so löscht ein Druck auf die Pfeil-nach-links-Taste die Markierung wieder (gilt auch für L, R, C).
T Text — Buchstaben und Grafiksymbole einfügen
Es erscheint ein 8 x 8-Pixel großer Rahmen, der sich fast so benimmt, wie der Blinkcursor im Textbildschirm: Drucken von Buchstaben und Grafikzeichen, Cursorsteuerung mittels Cursortasten, Löschen mittels DEL (rückwärts) und INST (vorwärts, um für Text Platz zu schaffen), Reverse on/off und Umschaltung der beiden Zeichensätze mit C = SHIFT (es können alle 512 Zeichen der beiden Zeichensätze gleichzeitig dargestellt werden!).
Daneben bleibt die Cursorsteuerung mittels Joystick erhalten, ebenso alle anderen Befehle, die jedoch nur durch gleichzeitiges Drücken der CTRL-Taste eingegeben werden können. Durch Anwahl eines anderen Modus, zum Beispiel CTRL D für Draw, wird der Textmodus verlassen und es ist wieder »Ein-Hand-Eingabe« der Befehle möglich.
G Get Sprite — Sprite aus Bildschirm kopieren
In diesem und den folgenden drei Modi erscheint ein spritegroßer Rahmen als Cursor. Auf Knopfdruck wird der Bildschirmausschnitt, auf dem der Rahmen sitzt, in das Sprite hineinkopiert, anschließend geht HI-EDDI automatisch in den Append-Modus, das Sprite kann an anderer Stelle wieder eingepflanzt oder im Sprite-Editor bearbeitet werden.
A Append — Sprite in Bildschirm einfügen
Auf Knopfdruck wird der Spriteinhalt in den Bildschirm eingefügt, ohne jedoch den Bildschirmausschnitt vorher zu löschen (Oder-Verknüpfung). Bei gleichzeitiger Bewegung wird das Sprite zum »programmierbaren Pinsel«.
S Stamp — Sprite auf Bildschirm kleben
Wie A, jedoch wird vor dem Einfügen der Untergrund gelöscht, das Sprite wird wie eine Briefmarke auf den Bildschirm geklebt.
E Erase — Löschen
Der Rahmen wird zum Radiergummi, der alles löscht, was er überfährt.
F Foreground-Colourmode — Vordergrund einfärben
B Background-Colourmode — Hintergrund einfärben
Diese beiden Modus-Befehle sind nur wirksam, wenn HI-EDDI als farbiges Malprogramm betrieben wird. Doch dazu ist vorweg einiges zum Konzept zu sagen:
Im Gegensatz zu den meisten käuflichen Programmen, die im Multicolour-Modus arbeiten (mehrere Farben, aber nur halbe Auflösung), ist HI-EDDI konsequent als Zeichenprogramm mit maximaler Auflösung konzipiert. Die Farbfähigkeiten sind nur ein »Nebenprodukt« und deshalb nicht so ausgeprägt: Pro 8 x 8-Punkte-Feld (entsprechend einer Position im Textbildschirm) stehen nur zwei Farben — je eine für Vorder- und Hintergrund — zur Verfügung. Bei insgesamt 1 000 Feldern und 16 Farben kann das allerdings auch recht bunt werden. Außerdem ist es durch die Trennung von Zeichnen und Einfärben möglich, bestehende »Schwarzweiß-Bilder« leicht nachträglich zu colorieren.
Nun zu den Befehlen F und B: Sie schalten einerseits die Rahmenfarbe (und die Farbe des Sprite-Inhalts bei A und S) weiter, andererseits wählen sie den Fore- beziehungsweise Back-Mode an, in dem auf Knopfdruck die gesetzten Pixel (=Vordergrund) beziehungsweise gelöschten Pixel (= Hintergrund) des 8 x 8-Feldes, auf dem sich der Cursor befindet, mit der Rahmenfarbe eingefärbt werden. Beispiel: Um den Vordergrund gelb anzumalen, muß die Taste F so oft gedrückt werden, bis der Rahmen gelb ist. Dann kann mit dem Cursor gepinselt werden.
Hat man ein Feld zuviel angepinselt, so kann durch gleichzeitiges Drücken der SHIFT-Taste (wie bei D, L, R, C) die gerade gemalte Farbe gelöscht werden. Genauer gesagt: Es erscheint wieder die Farbe, die beim letzten Bildschirmwechsel dort war. Als Bildschirmwechsel gelten:
- Bildschirmspeicherwechsel (1 bis 7)
- Ausschalten des High-Resolution-Bildschirmes (Sprite-Editor, Befehle H, V, SHIFT W, Disk- und Druckerbefehle).
- Move-Befehl, auch wenn nur innerhalb eines Bildes »gemovet« wurde.
Die Pfeil-nach-links-Taste (Korrekturtaste) hat die gleiche Wirkung wie SHIFT + Knopfdruck, jedoch für den ganzen Bildschirm: Es werden alle Farbveränderungen seit dem letzten Bildschirmwechsel rückgängig gemacht.
Direkte Befehle
Alle bisher beschriebenen Befehle haben eins gemeinsam: Sie dienen zur Anwahl eines Modus, sie haben also eine »Nachwirkung«, vor allem, was die Funktion des Feuerknopfes anbelangt. Die nun folgenden Befehle ändern den gerade eingestellten Modus nicht, sie haben nur eine unmittelbare Wirkung.
1 bis 7 beziehungsweise 1 bis 6: Bildschirmspeicher-Anwahl
HI-EDDI hat im Schwarzweiß-Betrieb sieben und im Farbbetrieb sechs Bildschirmspeicher, die durch Eingabe ihrer Nummer auf den Bildschirm geholt werden.
Wozu so viele? Beispiele: Abspeichern von verschiedenen Zwischenstadien der bearbeiteten Werke, bei denen man wieder ansetzen kann, wenn man was vermurkst hat. Oder Erstellen von »Construction Sets«: Aus einer Anzahl zum Beispiel von Schaltsymbolen kann man mittels der Sprite-Befehle im Nu Schaltpläne aufbauen. Für die Befehle Print und Walk sind sieben Speicher eigentlich zuwenig, aber im C 64 haben eben nicht mehr Platz!
I Invertieren
Die Pixel des Bildschirmes werden invertiert. In Zusammenhang mit den Befehlen Und, Or, Exor, Append, Stamp, Get, Erase, Paint und Print ergibt das eine Vielzahl von Möglichkeiten.
Un Und-Verknüpfung
Der aktuelle (= sichtbare) Bildschirm und der Bildschirm Nummer n werden Und-verknüpft, das Ergebnis im aktuellen Bildschirm abgelegt.
On Oder-Verknüpfung
Wie U, jedoch Oder-Verknüpfung. Eignet sich zum Beispiel zum Duplizieren von Bildern. Da die Befehle I, U, 0, X keinen Einfluß auf die Farbinformation eines Bildes haben, wird sie bei Farb-Betrieb nicht dupliziert. Soll dies geschehen, so muß mit dem Move-Befehl dupliziert werden.
Xn Exor-(Exclusiv-Oder-)Verknüpfung
Zweimalige Exor-Verknüpfung mit demselben Bild bewirkt, daß dieses wieder aus dem sichtbaren Bild »herausgefieselt« wird.
F, B (Fore, Back) — Rahmenfarbe weiterschalten
SHIFT F Total Foreground — Vordergrund-Farbe
SHIFT B Total Background — Hintergrund-Farbe
Die Befehle F und B wurden bereits bei den Modusbefehlen behandelt. Im Schwarzweiß-Betrieb schalten diese Befehle nur die Rahmenfarbe weiter, den aktuellen Modus verändern sie nicht.
SHIFT F und SHIFT B sind dagegen in beiden Betriebsarten (farbig und schwarzweiß) gleich: Sie färben den gesamten Vorder- oder Hintergrund mit der aktuellen Rahmenfarbe ein. Sollte man auf diese Art im Farb-Betrieb versehentlich eine mühsam erstellte Colorierung löschen: Pfeil-nach-links-Taste drücken, und sie ist wieder da.
SHIFT CLR Bildschirm löschen
Die Farbinformation wird nicht gelöscht und kann somit isoliert werden.
- + Schnelle Cursorgeschwindigkeit (beschleunigend)
- — Langsame Cursorgeschwindigkeit
HI-EDDI besitzt einen beschleunigenden Cursor: Er ist langsam genug, um durch Antippen des Joysticks pixelweise zu rangieren, bei größeren Entfernungen wird er jedoch — ohne lästiges Umschalten — schneller. Da jedoch die Beschleunigung manchmal unerwünscht ist, läßt sie sich durch Drücken der Minus-Taste abschalten.
F1 bis F8: Tabulatoren
Die vier Funktionstasten dienen als Speicher für vier Cursorpositionen: Durch gleichzeitiges Drücken der SHIFT-Taste und einer Funktionstaste wird die momentane Cursorposition gespeichert, durch Drücken einer Funktionstaste allein springt der Cursor wieder genau an die gespeicherte Stelle. F7 wird von den Befehlen L, R und C automatisch belegt.
H — Horizontale Schrittweite
V — Vertikale Schrittweite
F1 bis F8: Schrittweiten speichern
Noch eine Speicherfunktion haben die Funktionstasten: Normalerweise bewegt sich der Cursor in 1-Pixel-Schritten bei der Joysticksteuerung, beziehungsweise in 8-Pixel-Schritten bei Steuerung mittels Cursortasten. Diese Schrittweiten sind jedoch — getrennt für horizontale und vertikale Bewegung — frei programmierbar, vier Schrittweitenpaare können auf den Funktionstasten gespeichert werden. Das Anwählen einer Schrittweite erfolgt durch gleichzeitiges Drücken der C = (Commodore-)Taste und einer Funktionstaste (gilt nur für die Cursortastensteuerung, der Joystick holt seine Schrittweite immer aus F1), das Programmieren durch die Befehle H und V, wonach die aktuelle (angewählte) Schrittweite angezeigt wird und geändert werden kann.
Im Einschaltzustand sind die Tasten folgendermaßen belegt:
- F1:H = 1,V = 1,das ist die normale Joysticksteuerung. Durch Vergrößerung auf 2 oder 3 lassen sich im Draw-Modus punktierte Linien zeichnen.
- F3 (Diese Taste ist im Einschaltzustand angewählt): H = 8, V = 8, für Textmodus. Vergrößerung ergibt eine gedehnte Schrift oder einen größeren Zeilenabstand.
- F5: H = 24, V = 21, = Spritemaße, zurflächendeckenden Bearbeitung mittels Sprite-Editor.
- F7: H = 160, V = 96, zur Einteilung des Bildschirmes in Viertelbilder für Walk-Befehl.
Weitere Anwendungsmöglichkeiten sind: Maßstäbe, Gitterraster, exakt symmetrische Zeichnungen etc…
Space: Sprite-Editor
Durch Drücken der Leertaste kommt man in den Sprite-Editor. Das Setzen und Löschen von Punkten geht dort genauso wie im Draw-Modus. Die Befehle des Grafik-Editors sind im Sprite-Editor nicht zugänglich, dafür stehen die folgenden zur Verfügung:
- M Mirror — Das Sprite wird zur Senkrechten gespiegelt.
- T Turn — Drehung um 180 Grad. M und T ergeben eine Spiegelung zur Waagrechten.
- R Rotate — Das Sprite wird um 90 Grad im Uhrzeigersinn gedreht. Da es jedoch 24 Punkte breit, aber nur 21 hoch ist, gehen die rechten drei Spalten verloren. Außerdem ist zweimal R nicht dasselbe wie T.
- G Grid — Zum besseren Abzählen von Punkten wird ein Gitter eingeblendet, bei nochmaliger Eingabe von G wird es wieder ausgeblendet.
- SHIFT CLR Sprite löschen
- Space Sprite-Editor verlassen
- W Walk Bildfolge ablaufen lassen
- SHIFT W Bildsequenz programmieren
Jetzt lernen die Bilder laufen! Mit W werden die Bildschirmspeicher in schneller, programmierbarer Folge zyklisch durchgeschaltet. Da jedoch sechs Bilder für einen Bewegungsablauf recht wenig sind (Speicher 7 wird als »Leinwand« benutzt, sein Inhalt geht verloren) und außerdem die Bildfolge-Geschwindigkeit bei der Verschiebung von jedesmal 8 KByte nicht gerade hoch ist (maximal 7 Bilder/s), können die sechs Bildschirme in 24 Viertelbilder (mit je 160 x 96 Punkten, die unterste Zeile bleibt frei) zerlegt werden, die bei Maximalgeschwindigkeit in einer Sekunde »durchgerasselt« werden.
Bei der Erstellung solcher Viertelbilder ist die programmierbare Schrittweite (160/96) sowie der Move-Befehl besonders nützlich. Die Programmierung der Bildfolge geschieht durch einen Sequenz-String, der aus den Zahlen 1 bis 6 zum Aufruf der großen Bilder oder aus den Buchstaben A bis X zum Aufruf der Viertelbilder bestehen kann. Der Bildschirmspeicher 1 enthält die Viertelbilder A (links oben), B (rechts oben), C (links unten) und D (rechts unten). Das geht so weiter bis zum Speicher 6, der die Viertelbilder U, V, W, X enthält. Beispiel: Zum sequentiellen Durchschalten aller Viertelbilder besteht der Sequenzstring aus den Buchstaben A bis X in alphabetischer Reihenfolge. Zahlen und Buchstaben dürfen mehrfach und sogar gemischt vorkommen.
Mit SHIFT W gelangt man in den Sequenzstring-Editor, mit W wird die Bewegung gestartet. Während des Laufes kann die Geschwindigkeit mit der Plus- und Minus-Taste geregelt werden, bei gedrückter SHIFT-Taste läuft der Film rückwärts. Durch Druck auf den Feuerknopf wird die Vorführung beendet.
Bei Farb-Betrieb wird Bildschirm 6 als Leinwand verwendet, es stehen nur noch 5 große oder 20 kleine Bilder zur Verfügung.
Z Zeichensatz
HI-EDDI kann auch als Zeichensatz-Editor verwendet werden: Mittels Z wird der gerade angewählte Zeichensatz in die ersten sieben Zeilen des Grafikbildschirmes kopiert. Dort kann er mittels Get, Sprite-Editor und Stamp modifiziert, anschließend auf Diskette gespeichert und von anderen Programmen, zum Beispiel Textverarbeitungsprogramme, verwendet werden.
- C= L LOAD (C = bedeutet Commodore-Taste)
- C= S SAVE
- C= D Directory anzeigen
- C= C Commando an Disk oder (wenn nur RETURN) Fehlerkanal lesen
Bei LOAD und SAVE hat man die Wahl zwischen (schwarz-weißem) Grafikbild, Farbbild, Zeichensatz und Sprite. LOAD und SAVE beziehen sich immer auf den aktuellen (= sichtbaren) Bildschirmspeicher (beziehungsweise Sprite). Bei SAVE Zeichensatz muß dieser in den ersten sieben Zeilen des sichtbaren Bildschirmes stehen. Bei LOAD Sprite sollte man wirklich nur ein Sprite und nichts längeres laden, sonst gibt’s einen netten Absturz. Es können auch Diashow-Bilder und Files anderer Grafikprogramme gelesen werden.
C= P Print — Ausdrucken
Die Druckerroutine HI-PRINT wird bei Bedarf in Overlaytechnik nachgeladen, nach Beendigung des Druckvorganges wird wieder HI-EXE geladen.
Die vorliegende Druckerroutine bietet folgende Möglichkeiten:
- Ausdruck eines Bildes, groß oder klein.
- Zwei Bilder nahtlos nebeneinander, was natürlich nur in klein geht.
Superhardcopy
Vor und nach dem Ausdruck werden keine zusätzlichen Zeilenvorschübe ausgegeben, aufeinanderfolgende Ausdrucke hängen somit nahtlos aneinander (Bild 1). So läßt sich zum Beispiel mit sechs Bildern eine Superhardcopy mit 640 x 600 Punkten erstellen (Bild 2), lädt man zwischendurch weitere Bilder von Diskette nach, kann man meterlange Bilder ausdrucken.

Leider ist Drucker nicht gleich Drucker! Die vorliegende Druckerroutine (Listing 1) läßt sich nur für Epson-Drucker und kompatible mit Interface verwenden. Deshalb möchte ich im folgenden Kapitel Hinweise zur Erstellung einer Druckerroutine für andere Konfigurationen geben.
Die Speicherbelegung von HI-EDDI
Die Speicherbelegung von HI-EDDI sieht folgendermaßen aus:
$57-$60 und $F9-$FE: | Temporäre Speicherzellen |
$2C0-$2FE: | Residenter Datenbereich (Sprite-Inhalt) |
$340-$3FE: | Temporärer Datenbereich (Kreuz-, großes und kleines Rahmen-Sprite |
$801-$CFF: | Basic-Speicher |
$D00-$1F4C: | Maschinenprogramm |
$1F80-$1FFF: | Residenter Datenbereich (Betriebszustände etc.) |
$2000, $4000, $6000 etc.: | Grafikspeicher |
Die Druckerroutine wird in denselben Bereich wie HI-EXE geladen, also ab $D00, nach Beendigung des Druckvorganges wird wieder HI-EXE geladen (Listing 1 und 2).
Die vorliegende Druckerroutine enthält auch ein Software-Interface, das den User-Port zur Centronics-Schnittstelle umfunktioniert. Dazu muß ein Kabel mit folgender Pinbelegung verwendet werden:
Pin am User-Port | Pin am Centronics-Stecker | ||
M | (PA2) | 1 | (Strobe) |
C | (PBO) | 2 | (DATA 1) |
D | (PB1) | 3 | (DATA 2) |
E | (PB2) | 4 | (DATA 3) |
F | (PB3) | 5 | (DATA 4) |
H | (PB4) | 6 | (DATA 5) |
J | (PB5) | 7 | (DATA 6) |
K | (PB6) | 8 | (DATA 7) |
L | (PB7) | 9 | (DATA 8) |
B | (FLAG2) | 10 oder 11 | (ACKNLG oder BUSY) |
A | (GND) | 16 |
Will man eine Routine für andere Drucker schreiben, so darf diese den gesamten Speicherbereich von $D00 bis $1F7F belegen, lediglich die residenten Speicherbereiche und der Basic-Speicher sind tabu. Die Information darüber, wo welcher Bildschirm im Speicher liegt, steht in den 7 Bytes von $1F96 bis $1F9C: In $1F96 steht die Nummer des Bildes, das ab $2000 in Speicher liegt (das ist das sichtbare Bild!), in Zelle $1F97 steht die Nummer des Bildes ab $4 000 und so weiter. Beispiel: Soll Bild Nummer 2 ausgedruckt werden, so sucht man in der Tabelle nach der 2. Steht sie zum Beispiel in Zelle $1F9A, so liegt Bild 2 im Bereich ab $A000 (unter dem Basic-ROM). Im Farb-Betrieb steht in Zelle $1F97 eine 0, weil im Bereich $4 000 bis $6 000 dann die Farbinformationen für die sechs Bilder liegen und dieser Bereich für Grafikbilder somit gesperrt sein muß.

Für den nicht Maschinenspracheerfahrenen Leser sind dies sicherlich alles spanische Dörfer, aber vielleicht sind einige »Maschinen-Profis« so nett und schicken Lösungen für andere Drucker ein.
HI-EDDI als Menüprogramm
Wem die Eingabe der Befehle über die Tastatur nicht gefällt, der kann HI-EDDI zu einem Menüprogramm nach dem Vorbild des Koala Painter umfunktionieren, bei dem die Befehle über eine bunte, illustrierte Menütafel eingegeben werden. Ehrlich gesagt: Ich finde die Eingabe über Menütafel alles andere als benutzerfreundlich: Menü holen, Cursor auf das gewünschte Feld bugsieren und dann Knopf drücken ist eine wesentlich umständlichere Prozedur als ein einfacher Tastendruck. Dafür macht das Entwerfen und Realisieren einer Menütafel so viel Spaß, daß ich mich entschlossen habe, diese Möglichkeit vorzusehen.
Doch zunächst zurück zu dem Bytewert, der bei Programmstart auf die Frage »Betriebsart« eingegeben werden muß. Er setzt sich wie folgt zusammen:
Bit 7: | = 0 : | Schwarzweiß-Betrieb |
= 1 : | Farb-Betrieb | |
Bit 6: | = 0 : | nur Tastatureingabe |
= 1 : | Menü-Eingabe | |
Bit 5-1: | keine Funktion | |
Bit 0: | = 0 : | Beim Start werden alle Bildschirmspeicher gelöscht |
= 1 : | Es wird nichts gelöscht, im Speicher befindliche Bilder bleiben erhalten |
Für Farbe und Menü zum Beispiel muß 192 eingegeben werden. Ich finde die Menü-Eingabe nur in Farbe sinnvoll, ein Schwarzweiß-Menü sieht recht langweilig aus. Ist das Bit 6 gesetzt, also die Menü-Betriebsart angewählt, so muß sich auf der Diskette unter dem Namen »MENUE« die Menütafel befinden, die beim Start automatisch nachgeladen wird. Das Erstellen einer solchen Menütafel soll nun erklärt werden:
Die Menütafel wird in 20 x 12, also insgesamt 240 Felder von je 16 x 16 Punkten eingeteilt. 20 x 16 = 320, die Breite des Bildschirms, aber 12 x 16 = 192 gibt nicht ganz die Höhe des Bildschirmes: Die letzte Zeile (acht Punkte) bleibt, wie bei Walk, frei. In dieser Zeile werden die Steuerbytes untergebracht, für jedes der 240 Felder 2 Bytes. Wird im Menü-Modus der Cursor auf eines der Felder gefahren und der Feuerknopf gedrückt, dann holt sich HI-EDDI aus der letzten Zeile die diesem Feld zugeordneten Steuerbytes und entnimmt aus ihnen, welcher Befehl ausgeführt werden soll. Die Zuordnung von Feldern zu Steuerbytes geht zeilenweise, der Reihe nach: Die ersten beiden Steuerbytes (Adresse $3E00 und $3E01, wenn die Menütafel angewählt ist) gehören zum ersten Feld links oben, die nächsten beiden Bytes zu dem daneben und so weiter. Die Steuerbytes zum letzten Feld haben die Adressen $3FDE und $3FDF, das liegt bereits im unsichtbaren Teil des Bildschirmspeichers. Die nicht gerade ansehnlichen Steuerbytes im sichtbaren Teil können durch gleiche Farben für Vorder- und Hintergrund versteckt werden.
Somit ist klar, wie man vorgehen muß: Zunächst ist ein Menü-Bild zu zeichnen, bei dessen Einteilung nur die 20 x 12-Feld-Rasterung zu berücksichtigen ist. Wie man die Befehle anordnet, wieviele Fehler man für einen Befehl zusammenhängt und welche Befehle man überhaupt ins Menü aufnimmt, bleibt jedem selbst überlassen. Denn keineswegs alle Befehle sind »menüfähig«: Die Korrekturtaste (Pfeil nach rechts) wirkt nur bis zum letzten Bildschirmwechsel zurück. Da jedoch das Anwählen der Menütafel ein Bildschirmwechsel ist, verliert die Korrekturtaste dabei ihre Wirkung. Dasselbe gilt für die Pfeil-nach-oben-Taste: Die Anwahl der Menütafel gilt als Moduswechsel! Aus demselben Grund muß beim MOVEn über zwei Seiten die Seitennummer über die Tastatur eingegeben werden, da bei einem Moduswechsel die Markierung eines Quellbereiches gelöscht wird.
Aus dem Textmodus kommt man nicht direkt ins Menü (SPACE wird als zu druckendes Zeichen interpretiert). Es muß daher zuerst ein anderer Modus über die Tastatur angewählt werden (zum Beispiel CTRL D für Draw), bevor das Menü wieder zugänglich ist.
Dafür bietet die Menütafel auch einige Vorteile: Die Farbenwahl erfolgt nicht mehr durch umständliches Fortschalten, sondern durch Direktanwahl der Farben. Und die Befehle U, 0, X, die normalerweise zwei Eingaben erfordern, werden jetzt mit einer Eingabe »erschlagen«.
Hat man nun ein Menübild gemalt (und abgespeichert!), so folgt der zweite Teil, das Erstellen der Steuerbytes, am besten in Form eines DATA-Laders (siehe Listing 4). Von den zwei Steuerbytes pro Feld enthält das zweite den Tastaturcode des jeweiligen Befehls. Die Tastaturcodes sind im 64’er, Ausgabe 5/84, Seite 105 zusammengestellt, sie lassen sich auch mit dem folgenden »Programm« ermitteln:
10 PRINT PEEK(203):GOTO10
Beim ersten Steuerbyte muß man zwischen verschiedenen Befehlskategorien unterscheiden:
- »Normale« Befehle: Bit 0 : SHIFT-Bit, muß gesetzt sein, wenn für den entsprechenden Befehl die SHIFT-Taste gedrückt werden muß. Bit 1 : C=-Bit, muß bei gedrückter Commodore-Taste gesetzt sein. Die Bits 2 bis 7 müssen 0 sein. Beispiel: Sprite-Editor einschalten ergibt die Bytes 1 (SHIFT, im Menü-Betrieb dient Space zur Anwahl der Menütafel, der Sprite-Editor ist nur mehr über SHIFT-Space erreichbar) und 60 (Tastaturcode Space).
- Befehle U, 0, X: Tastaturcode der entsprechenden Nummerntaste. Beispiel: X 5 ergibt die Steuerbytes 16 (Tastaturcode »5« und 23 (Tastaturcode »X«),
- Farbbefehle: Bit 0: SHIFT-Bit. Bits 2 bis 5: Nummer der Farbe, wie im Commodore-Handbuch angegeben. Die Bits 1 und 6 müssen 0 sein, das Bit 7 ist 1. Beispiel: Total Foreground, Blau ergibt: 128 (Bit 7) + 4 x 6 (blau) + 1 (SHIFT) = 153 und 21 (»F«),
- »Leerer« Befehl ohne Verlassen der Menütafel (zum Beispiel für Überschrift): 1. Byte = 64, 2. Byte = 0
- »Leerer« Befehl mit Verlassen des Menüs: 1. Byte = 0, 2. Byte = 64.
Die 5 Bytes im Anschluß an die 480 Steuerbytes müssen die Kennung »CBM80« enthalten. Das ist eigentlich die ROM-Kennung, ich habe sie hier als Menütafel-Kennung mißbraucht, um versehentliche Menü-Zugriffe auf ein normales Bild zu vermeiden. Vorsicht: Fehler in den Steuerbytes können zum Programmabsturz führen!
Nun braucht man nur noch Menübild und Steuerbytes zu verknubbeln: Dazu HI-EDDI laden, Starten (Betriebsart 128), Menübild laden und Programm mit STOP/RESTORE unterbrechen. Steuerbyte-DATA-Lader laden und starten. Der Lader muß, wie im Beispiel (Listing 4) zu sehen,mit den Befehlen POKE56, 32:CLR beginnen, um das im Speicher befindliche Menübild zu schützen! Dann HI-EDDI laden, starten (Betriebsart 129, damit die jetzt bereits fertige Menütafel im Speicher nicht gelöscht wird) und die nun sichtbare Menütafel unter dem Namen »MENUE« speichern.
Wie wird der »Menü-HI-EDDI« nun bedient? Beim Start muß auf die Frage Betriebsart 192 (oder 193) eingegeben werden. Auf der Menütafel fährt man den Cursor auf den gewünschten Befehl und drückt den Feuerknopf. Daraufhin wird das Menü verlassen, auf den aktuellen Bildschirm zurückgeschaltet (im Einschaltzustand ist das jetzt 2, da in Speicher 1 die Menütafel steckt) und der Befehl ausgeführt. Das Menü wird durch Drücken der Space-Taste auf den Bildschirm geholt. Die Tastatureingabe bleibt neben dem Menü voll erhalten. Wie schon erwähnt, belegt das Menü den Speicher 1. Dieser Speicher kann natürlich auch direkt angewählt werden, allerdings befindet man sich dann nicht im Menü-Modus, sondern die Menütafel wird wie ein ganz normales Bild behandelt!
Zum Abschluß noch ein Tip: HI-EDDI läßt sich mit STOP/RESTORE unterbrechen (nicht während einer Befehlsausführung!), ein Warmstart ist mit GOTO150 möglich, ein Kaltstart ohne Nachladen von HI-EXE, aber mit Betriebsart-Eingabe durch RUN100.
(Hans Haberl/gk)10 rem******************************** 20 rem* * 30 rem* hi-eddi * 40 rem* von hans haberl * 50 rem* * 60 rem* data-lader zur erzeugung * 70 rem*der druckerroutine "hi-print",* 80 rem* wird auf diskette abgelegt * 90 rem******************************** 100 : 110 rem checksummen, nicht vertippen !! 120 data-205,164,-457,322,689,-834,-49,290,-87,17 130 : 140 rem m-code programm 150 data 0,13,133,91,173,105,14,240,34,120,169,255,141,3,221,173,2,221,9,4 160 data 141,2,221,173,0,221,9,4,141,0,221,169,16,141,13,221,173,13,221,88,-1 170 data 76,68,13,32,204,255,169,4,174,106,14,172,107,14,32,186,255,169,0 180 data 32,189,255,32,192,255,162,4,32,201,255,169,4,133,94,160,3,32,34,14,-1 190 data 169,128,133,95,169,2,133,96,165,91,41,192,208,4,70,95,70,96,165,91 200 data 41,7,162,0,32,48,14,165,91,48,3,74,74,74,41,7,162,2,32,48,14,169,-1 210 data 25,133,92,165,95,48,10,160,20,169,32,32,71,14,136,208,250,160,8,32 220 data 34,14,165,95,32,71,14,165,96,32,71,14,169,40,133,93,120,169,52,133,-1 230 data 1,160,7,177,87,153,125,14,136,16,248,169,55,133,1,88,165,87,24,105 240 data 8,133,87,144,2,230,88,160,8,162,0,62,125,14,8,42,232,40,36,91,48,-1 250 data 6,224,8,208,241,240,8,42,228,94,208,234,32,71,14,32,71,14,136,208 260 data 223,198,93,208,186,165,95,16,38,162,1,180,87,181,89,149,87,148,89,-1 270 data 202,16,245,165,94,73,12,133,94,201,4,240,15,165,91,48,3,76,151,13 280 data 160,0,32,34,14,76,122,13,198,92,208,244,160,0,32,34,14,160,13,32,-1 290 data 34,14,32,204,255,169,4,32,195,255,96,185,108,14,201,255,240,6,32 300 data 71,14,200,208,243,96,160,6,217,150,31,240,3,136,208,248,169,0,149,-1 310 data 87,24,105,32,136,16,251,149,88,96,174,105,14,208,3,76,210,255,72 320 data 141,1,221,173,0,221,41,251,141,0,221,9,4,141,0,221,173,13,221,41,-1 330 data 16,240,249,104,96,-1 340 : 350 rem die folgenden datas muessen an 360 rem den drucker angepasst werden!! 370 rem (die angegebenen werte sind 380 rem fuer einen epson rx-80 mit 390 rem data becker interface) 400 : 410 rem 0=ser. bus, 1=userport 420 data 0 430 rem geraeteadresse 440 data 4 450 rem sekundaeradresse (direktmodus) 460 data 1 470 rem die laenge der folgenden data- 480 rem zeilen darf nicht veraendert 490 rem werden, ggf. mit 255 auffuellen 500 rem (mind. ein 255 muss in jeder 510 rem zeile bleiben, ist endekennz.) 520 rem carriage return line feed 530 data 13,10,255 540 rem zeilenabstand fuer grafik 550 data 27,51,23,255,255 560 rem crt-grafik (640 punkte/zeile) 570 rem (ohne byte-anzahlen!) 580 data 27,42,4,255,255 590 rem normaler zeilenabstand 600 data 27,50,255,255 610 data-2:rem data-ende 620 : 630 rem checksummenpruefung 640 v=1:for i=0 to 9:read s(i):next 650 for b=0 to 9 660 read a:if a>=0 then s=s+a*v:v=-v:goto 660 670 if s<>s(b)then print"data-fehler in zeile"150+20*b"oder"160+20*b:end 680 s=0:next:print"datas ok" 690 : 700 rem file-ablage 710 restore:for i=0 to 9:read a:next 720 open 2,8,2,"hi-print,p,w" 730 read a:if a>=0 then print#2,chr$(a); 740 if a>-2 then 730 750 close 2:end
1 rem ******************************** 2 rem * hi-exe * 3 rem * * 4 rem * programm wird auf * 5 rem * floppy erzeugt * 6 rem * * 7 rem ******************************** 8 : 9 open 2,8,2,"@:hi-exe,p,w" 10 print#2,chr$(0);chr$(13); 15 dim h(75) : for i=0 to 9 20 h(48+i)=i : h(65+i)=i+10 : next 30 for i=3328 to 8013 : read a$ : rem hier aktuelle werte einsetzen! 40 h=asc(left$(a$,1)):l=asc(right$(a$,1)) 50 d=h(h)*16+h(l) : s=s+d :print#2,chr$(d); 60 a=a+1:if a<9 then next : a=-1 65 print "zeile:";1000+z; 70 read v : z=z+1 : if v=s then 85 80 print" pruefsummenfehler !";999+z:close2:stop 85 if a<0 then close 2: end 90 s=0 : a=0 : print : next : close2:end 95 : 96 : 97 : 98 : 99 : 1000 data 4c,11,1b,4c,c1,1e,4c,36,1f, 580 1001 data 20,74,1c,20,24,0d,ad,83,1f, 592 1002 data 20,d3,1c,20,67,12,20,d1,13, 684 1003 data ee,28,d0,ee,29,d0,4c,0c,0d, 1074 1004 data a5,cb,cd,80,1f,f0,28,8d,80, 1281 1005 data 1f,c9,40,f0,21,a8,ad,8d,02, 1053 1006 data 8d,81,1f,aa,29,04,d0,0a,ad, 907 1007 data 84,1f,c9,01,d0,03,4c,12,10, 686 1008 data 98,a2,2a,dd,6e,0d,f0,04,ca, 1146 1009 data 10,f8,60,8a,ae,84,1f,e0,0c, 1071 1010 data d0,05,48,20,0d,11,68,0a,aa, 631 1011 data bd,9a,0d,48,bd,99,0d,48,8a, 993 1012 data 4a,60,33,38,3b,08,0b,10,13, 390 1013 data 18,1d,1f,1c,15,04,05,06,03, 151 1014 data 12,16,2a,11,14,29,24,09,0e, 219 1015 data 1a,0d,0a,21,26,17,1e,0c,20, 217 1016 data 23,02,07,00,3c,39,36,28,2b, 298 1017 data 54,0e,63,0e,63,0e,63,0e,63, 536 1018 data 0e,63,0e,63,0e,63,0e,f7,0d, 613 1019 data f7,0d,ed,0e,ed,0e,ba,0f,ba, 1149 1020 data 0f,ba,0f,ba,0f,ee,0d,06,0e, 688 1021 data ee,0d,06,0e,ee,0d,ee,0d,06, 779 1022 data 0e,23,11,06,0e,06,0e,ee,0d, 357 1023 data 06,0e,3d,0e,bf,0e,c5,0e,b9, 696 1024 data 0e,b2,10,00,10,04,10,bc,12, 450 1025 data 3a,13,fa,12,e2,10,73,1c,f4, 974 1026 data 18,f6,0f,fa,0f,aa,ad,81,1f, 1053 1027 data 29,02,f0,0f,8a,29,0f,8d,80, 761 1028 data 1f,20,47,1c,20,e1,1c,68,68, 655 1029 data 60,8a,29,0f,8d,84,1f,aa,bd, 953 1030 data 24,0e,8d,f9,07,bd,31,0e,8d, 840 1031 data 15,d0,a9,00,8d,aa,1f,8d,a9, 1050 1032 data 1f,4c,5f,13,0d,0e,0d,0d,0d, 287 1033 data 0d,0d,0d,0f,0f,0f,0f,0d,02, 114 1034 data 02,02,02,02,02,02,02,02,02, 18 1035 data 03,03,02,a2,20,86,58,a0,00, 584 1036 data 84,57,b1,57,49,ff,91,57,c8, 1243 1037 data d0,f7,e6,58,ca,d0,f2,60,ad, 1694 1038 data 81,1f,29,01,f0,f8,a9,51,8d, 1081 1039 data a9,1f,ad,96,1f,20,cc,0e,48, 876 1040 data 86,fc,78,a9,34,85,01,ad,a9, 1203 1041 data 1f,d0,29,b1,57,aa,b1,59,91, 1125 1042 data 57,8a,91,59,c8,d0,f3,e6,58, 1428 1043 data e6,5a,c6,fc,d0,eb,68,20,80, 1477 1044 data 0f,a8,ae,96,1f,b9,96,1f,8d, 1045 1045 data 96,1f,8a,99,96,1f,d0,17,8d, 1025 1046 data a2,0e,b1,59,31,57,91,57,c8, 1010 1047 data d0,f7,e6,58,e6,5a,ca,d0,f0, 1743 1048 data 8e,a9,1f,68,a9,37,85,01,58, 892 1049 data 60,a9,31,8d,a9,1f,60,a9,11, 937 1050 data 8d,a9,1f,60,a9,51,8d,a9,1f, 1028 1051 data 60,a0,06,d9,96,1f,f0,03,88, 1039 1052 data d0,f8,98,48,18,a9,00,69,20, 1010 1053 data 88,10,fb,85,5a,a2,20,86,58, 1042 1054 data a0,00,84,57,84,59,68,60,29, 841 1055 data 01,85,fd,ad,89,1f,29,fe,05, 1028 1056 data fd,8d,89,1f,aa,ad,81,1f,29, 1106 1057 data 01,d0,0f,ee,20,d0,ee,27,d0, 1187 1058 data 8a,10,05,a9,07,20,07,0e,60, 484 1059 data ad,f9,07,48,a2,04,86,58,a0, 1049 1060 data 00,84,57,18,20,5f,1a,c8,d0, 804 1061 data f9,e6,58,ca,d0,f4,f0,3e,ad, 1696 1062 data f9,07,48,ad,88,1f,a2,04,86, 968 1063 data 58,a0,00,84,57,91,57,c8,d0, 1107 1064 data fb,e6,58,ca,d0,f6,f0,23,ae, 1674 1065 data 89,1f,10,e0,a9,40,85,58,a2, 1024 1066 data 04,86,5a,d0,0d,ae,89,1f,10, 807 1067 data 1d,a9,40,85,5a,a2,04,86,58, 873 1068 data ad,f9,07,48,20,c9,10,68,8d, 995 1069 data f9,07,a9,0b,8d,f8,07,a9,0d, 1014 1070 data 8d,fa,07,ae,00,04,8e,88,1f, 885 1071 data 60,48,ad,84,1f,c9,06,d0,0a, 929 1072 data ad,aa,1f,c9,02,d0,03,20,48, 892 1073 data 0f,ad,89,1f,10,18,ad,96,1f, 750 1074 data 20,b1,0f,20,5e,0f,68,48,a8, 709 1075 data b9,96,1f,20,b1,0f,20,4f,0f, 716 1076 data 20,57,0f,68,60,a8,a9,40,18, 759 1077 data 69,04,88,d0,fb,60,29,03,aa, 1014 1078 data ad,81,1f,29,03,c9,01,f0,19, 844 1079 data 29,02,d0,28,bd,9d,1f,8d,85, 942 1080 data 1f,bd,a1,1f,8d,86,1f,bd,a5, 1072 1081 data 1f,8d,87,1f,4c,5f,13,ad,85, 834 1082 data 1f,9d,9d,1f,ad,86,1f,9d,a1, 1032 1083 data 1f,ad,87,1f,9d,a5,1f,60,8e, 961 1084 data 8a,1f,60,a9,06,d0,02,a9,0c, 831 1085 data 8d,94,1f,60,a2,80,d0,02,a2, 1078 1086 data 00,ad,81,1f,29,04,f0,03,8e, 763 1087 data 95,1f,60,e0,03,f0,fb,8a,0a, 1142 1088 data aa,bd,79,eb,85,57,bd,7a,eb, 1481 1089 data 85,58,b1,57,aa,29,7f,c9,20, 1056 1090 data b0,06,ac,80,1f,4c,48,0d,8a, 812 1091 data 29,e0,c9,60,d0,04,a9,40,d0, 1215 1092 data 09,8a,10,04,09,40,d0,02,29, 491 1093 data bf,29,7f,85,fd,8a,29,1f,05, 960 1094 data fd,0d,95,1f,a2,00,86,58,0a, 840 1095 data 26,58,0a,26,58,0a,26,58,85, 531 1096 data 57,ad,18,d0,29,02,0a,0a,09, 564 1097 data d0,05,58,85,58,78,a9,33,85, 995 1098 data 01,a0,07,b1,57,99,ba,1f,88, 938 1099 data 10,f8,a9,37,85,01,58,20,11, 759 1100 data 15,a2,00,20,be,14,a9,08,85, 735 1101 data 5f,a0,00,3e,ba,1f,a9,00,90, 847 1102 data 02,a5,5e,11,57,91,57,20,06, 635 1103 data 15,c6,5f,d0,ec,e6,5b,e8,e0, 1535 1104 data 08,d0,dc,a9,00,8d,81,1f,4c, 982 1105 data bd,12,ad,18,d0,29,02,0a,0a, 675 1106 data 09,d0,85,58,a9,20,85,5a,a2, 1024 1107 data 08,78,a9,33,85,01,a0,00,84, 774 1108 data 57,84,59,b1,57,91,59,c8,d0, 1214 1109 data f9,e6,58,e6,5a,ca,d0,f2,a9, 1708 1110 data 37,85,01,58,60,ad,89,1f,49, 787 1111 data 40,29,40,0d,81,1f,f0,03,4c, 661 1112 data 27,1d,a0,03,b9,84,1f,99,af, 907 1113 data 1f,88,10,f7,ad,96,1f,8d,ae, 1099 1114 data 1f,a9,01,20,64,0e,a9,0c,4c, 604 1115 data 07,0e,ad,ae,1f,20,64,0e,a0, 705 1116 data 03,b9,af,1f,99,84,1f,88,10, 862 1117 data f7,ad,84,1f,4c,07,0e,ad,81, 982 1118 data 1f,29,01,f0,03,4c,f8,0d,ad, 826 1119 data 15,d0,48,a2,00,8e,15,d0,8e, 976 1120 data a9,1f,86,fc,e8,86,fd,ad,89, 1515 1121 data 1f,2a,2a,29,01,49,07,20,64, 369 1122 data 0e,a0,04,b1,2d,99,59,00,88, 778 1123 data d0,f8,c6,5b,10,01,60,a4,fc, 1274 1124 data b1,5c,ae,8d,02,f0,0a,c6,fc, 1286 1125 data 10,10,a6,5b,86,fc,d0,0a,e6, 1123 1126 data fc,c4,5b,90,04,a2,00,86,fc, 1235 1127 data c9,40,b0,2c,29,07,8d,ae,1f, 879 1128 data 20,cc,0e,78,a9,34,85,01,b1, 902 1129 data 59,91,57,c8,d0,f9,e6,58,e6, 1526 1130 data 5a,ca,d0,f2,ad,89,1f,10,09, 1108 1131 data ad,ae,1f,20,b1,0f,20,4f,0f, 728 1132 data 4c,3d,12,38,e9,01,48,4a,4a, 665 1133 data 29,07,18,69,01,8d,ae,1f,20, 556 1134 data cc,0e,68,48,4a,90,04,a2,a0, 938 1135 data 86,59,4a,90,06,a5,5a,09,0f, 726 1136 data 85,5a,a9,27,85,58,a9,d0,85, 1162 1137 data 57,78,a9,34,85,01,a2,0c,a0, 896 1138 data a0,88,b1,59,91,57,98,d0,f8, 1402 1139 data a5,57,18,69,40,85,57,a5,58, 918 1140 data 69,01,85,58,a5,59,18,69,40, 774 1141 data 85,59,a5,5a,69,01,85,5a,ca, 1008 1142 data d0,d9,68,aa,ad,89,1f,10,36, 1110 1143 data ad,ae,1f,20,b1,0f,85,58,a9, 992 1144 data 00,85,57,8a,4a,90,04,a2,14, 762 1145 data 86,57,4a,90,0d,a5,57,18,69, 833 1146 data e0,85,57,a5,58,69,01,85,58, 1024 1147 data a9,fa,85,59,a9,04,85,5a,a2, 1199 1148 data 0b,a0,13,8c,c5,1f,20,1f,1a, 647 1149 data a9,37,85,01,58,a5,fd,20,d3, 1107 1150 data 1c,a5,cb,c9,2b,d0,03,38,26, 945 1151 data fd,c9,28,d0,02,46,fd,ad,00, 1200 1152 data dc,29,10,f0,03,4c,5a,11,68, 807 1153 data 8d,15,d0,4c,e8,1c,20,a2,12, 918 1154 data 29,0f,d0,06,a9,28,8d,83,1f, 782 1155 data 60,48,29,03,f0,0a,29,01,8d, 645 1156 data 81,1f,a2,00,20,3e,13,68,29, 580 1157 data 0c,f0,0c,4a,4a,29,01,8d,81, 724 1158 data 1f,a2,00,20,c0,12,ae,83,1f, 771 1159 data ec,94,1f,90,05,ca,ca,8e,83, 1241 1160 data 1f,60,78,ae,02,dc,a0,00,8c, 943 1161 data 02,dc,ad,00,dc,cd,00,dc,d0, 1248 1162 data f8,8e,02,dc,58,49,ff,8d,82, 1299 1163 data 1f,60,ae,8a,1f,ac,86,1f,ad, 980 1164 data 81,1f,29,01,d0,1a,18,98,7d, 737 1165 data 8b,1f,90,24,ee,87,1f,ae,87, 1063 1166 data 1f,e0,02,90,1a,a9,01,8d,87, 873 1167 data 1f,a9,f0,b0,11,38,98,fd,8b, 1233 1168 data 1f,b0,0a,ce,87,1f,10,05,a9, 779 1169 data 00,8d,87,1f,8d,86,1f,4c,5f, 784 1170 data 13,ad,84,1f,c9,01,d0,38,ad, 994 1171 data 81,1f,29,01,49,01,8d,81,1f, 577 1172 data f0,03,20,bd,12,20,11,15,a2, 714 1173 data 00,20,be,14,a9,08,85,5f,a0, 807 1174 data 00,a5,5e,49,ff,31,57,91,57, 955 1175 data 20,06,15,c6,5f,d0,f1,e6,5b, 1122 1176 data e8,e0,08,d0,e1,ad,81,1f,f0, 1470 1177 data 83,60,ae,8a,1f,ac,85,1f,ad, 1079 1178 data 81,1f,29,01,d0,0b,18,98,7d, 722 1179 data 8f,1f,90,0d,a9,ff,b0,09,38, 996 1180 data 98,fd,8f,1f,b0,02,a9,00,8d, 1067 1181 data 85,1f,20,bb,13,bd,c5,13,cd, 1012 1182 data 85,1f,90,03,8d,85,1f,bd,c6, 1003 1183 data 13,cd,85,1f,b0,03,8d,85,1f, 872 1184 data ad,87,1f,d0,0d,bd,c7,13,cd, 1172 1185 data 86,1f,90,10,8d,86,1f,b0,0b, 818 1186 data bd,c8,13,cd,86,1f,b0,03,8d, 1098 1187 data 86,1f,ad,85,1f,8d,01,d0,8d, 993 1188 data 03,d0,ad,86,1f,8d,00,d0,8d, 1039 1189 data 02,d0,ad,87,1f,0a,0d,87,1f, 738 1190 data 85,fd,ad,10,d0,29,fc,05,fd, 1334 1191 data 8d,10,d0,60,ad,f9,07,38,e9, 1179 1192 data 0d,0a,0a,aa,60,28,ef,0e,4d, 669 1193 data 2b,eb,11,49,32,e5,18,40,ad, 908 1194 data 82,1f,29,10,f0,10,20,11,15, 544 1195 data ad,84,1f,0a,aa,bd,ea,13,48, 1030 1196 data bd,e9,13,48,60,02,14,e7,13, 881 1197 data 68,15,0d,16,55,16,9b,17,74, 561 1198 data 18,42,1a,18,14,86,14,42,14, 400 1199 data 45,14,95,1a,20,be,14,ac,8d, 819 1200 data 02,f0,09,a0,00,49,ff,31,57, 875 1201 data 91,57,60,11,57,91,57,60,a5, 925 1202 data 5b,48,a2,00,20,be,14,a9,18, 760 1203 data 85,5f,a0,00,a5,5e,49,ff,31, 1024 1204 data 57,91,57,20,06,15,c6,5f,d0, 879 1205 data f1,e6,5b,e8,e8,e8,e0,3f,d0, 1753 1206 data df,68,85,5b,60,20,19,14,a2, 886 1207 data 00,20,be,14,a9,18,85,5f,a0, 823 1208 data 00,bd,c2,02,8d,bc,1f,bd,c1, 1127 1209 data 02,8d,bb,1f,bd,c0,02,8d,ba, 1071 1210 data 1f,2e,bc,1f,2e,bb,1f,2e,ba, 792 1211 data 1f,a9,00,90,02,a5,5e,11,57, 709 1212 data 91,57,20,06,15,c6,5f,d0,e6, 1022 1213 data e6,5b,e8,e8,e8,e0,3f,d0,c2, 1706 1214 data 60,a9,03,8d,15,d0,a2,00,20, 832 1215 data be,14,a9,18,85,5f,a0,00,18, 815 1216 data b1,57,25,5e,f0,01,38,3e,c2, 948 1217 data 02,3e,c1,02,3e,c0,02,20,06, 553 1218 data 15,c6,5f,d0,e8,e6,5b,e8,e8, 1539 1219 data e8,e0,3f,d0,d6,a9,0b,8d,84, 1394 1220 data 1f,60,a9,01,85,58,a5,5b,29, 815 1221 data f8,85,57,0a,26,58,0a,26,58, 740 1222 data 18,65,57,90,02,e6,58,0a,26, 724 1223 data 58,0a,26,58,0a,26,58,85,57, 580 1224 data a5,5b,29,07,85,60,a5,5c,29, 831 1225 data f8,18,65,60,65,57,85,57,a5, 1042 1226 data 5d,65,58,85,58,a5,5c,29,07, 808 1227 data a8,a9,00,38,6a,88,10,fc,85, 1036 1228 data 5e,60,46,5e,90,06,66,5e,98, 852 1229 data 69,08,a8,60,20,bb,13,ad,85, 921 1230 data 1f,38,fd,c5,13,85,5b,ad,86, 1087 1231 data 1f,38,fd,c7,13,85,5c,ad,87, 1091 1232 data 1f,e9,00,85,5d,60,20,e8,1c, 878 1233 data ad,aa,1f,49,01,8d,aa,1f,f0, 1030 1234 data 2d,a2,02,b5,5b,9d,ab,1f,ca, 1042 1235 data 10,f8,a2,03,20,e0,0f,ad,02, 875 1236 data d0,8d,04,d0,ad,03,d0,8d,05, 1091 1237 data d0,ad,10,d0,6a,08,2a,28,2a, 843 1238 data 8d,10,d0,a9,06,8d,15,d0,68, 1014 1239 data 68,60,20,2e,15,20,03,14,a5, 519 1240 data 5b,48,a5,5c,48,a5,5d,48,ad, 995 1241 data ac,1f,38,e5,5c,48,ad,ad,1f, 1029 1242 data e5,5d,8d,bd,1f,b0,0b,68,49, 1047 1243 data ff,69,01,48,a9,00,ed,bd,1f, 1059 1244 data 8d,bb,1f,8d,bf,1f,68,8d,ba, 1153 1245 data 1f,8d,be,1f,ad,ab,1f,18,e5, 1021 1246 data 5b,90,04,49,ff,69,fe,8d,bc, 1255 1247 data 1f,6e,bd,1f,38,ed,ba,1f,aa, 1041 1248 data a9,ff,ed,bb,1f,85,fc,b0,06, 1446 1249 data 0a,0a,2a,20,74,17,ad,be,1f, 627 1250 data 6d,bc,1f,8d,be,1f,ad,bf,1f, 1085 1251 data e9,00,4c,f5,15,ad,bd,1f,b0, 1144 1252 data e4,0a,2a,0a,49,02,20,5c,17, 512 1253 data 18,ad,be,1f,6d,ba,1f,8d,be, 1075 1254 data 1f,ad,bf,1f,6d,bb,1f,8d,bf, 1085 1255 data 1f,08,20,03,14,28,e8,d0,d8, 790 1256 data e6,fc,d0,d4,68,85,5d,68,85, 1469 1257 data 5c,68,85,5b,60,20,2e,15,ad, 788 1258 data ab,1f,48,a5,5b,8d,ab,1f,20, 905 1259 data 6c,15,68,8d,ab,1f,a5,5c,48, 905 1260 data a5,5d,48,ad,ac,1f,85,5c,ad, 1104 1261 data ad,1f,85,5d,20,6c,15,68,85, 828 1262 data 5d,68,85,5c,a5,5b,48,ad,ab, 1094 1263 data 1f,85,5b,20,6c,15,68,85,5b, 744 1264 data a5,5c,8d,ac,1f,a5,5d,8d,ad, 1173 1265 data 1f,20,6c,15,60,20,2e,15,a2, 549 1266 data 02,b5,5b,9d,c2,1f,ca,10,f8, 1122 1267 data a9,00,20,ea,16,20,03,14,20, 544 1268 data b8,16,85,f9,20,5a,17,08,a9, 910 1269 data 02,20,ea,16,28,2a,0a,45,f9, 700 1270 data 20,5c,17,20,72,17,08,a9,04, 497 1271 data 20,ea,16,28,2a,45,f9,20,74, 836 1272 data 17,38,ad,bc,1f,ed,be,1f,ad, 1102 1273 data bd,1f,ed,bf,1f,b0,06,20,5a, 983 1274 data 17,4c,a9,16,20,72,17,90,0c, 615 1275 data a2,02,b5,5b,dd,c2,1f,d0,b4, 1270 1276 data ca,10,f6,60,38,a5,5c,ed,ac, 1282 1277 data 1f,a8,a5,5d,ed,ad,1f,08,26, 944 1278 data fd,28,98,b0,04,49,ff,69,01, 1059 1279 data 8d,c1,1f,38,ad,ab,1f,e5,5b, 1116 1280 data 08,26,fd,28,b0,04,49,ff,69, 952 1281 data 01,8d,c0,1f,a5,fd,49,ff,60, 1207 1282 data 48,20,b8,16,ad,c0,1f,a2,00, 868 1283 data 20,36,17,ad,c1,1f,a2,02,20, 702 1284 data 36,17,68,aa,18,a5,57,65,59, 817 1285 data 9d,ba,1f,a5,58,65,5a,9d,bb, 1162 1286 data 1f,8a,f0,23,38,bd,ba,1f,ed, 1143 1287 data ba,1f,48,bd,bb,1f,ed,bb,1f, 1151 1288 data b0,0c,a8,68,49,ff,69,01,48, 966 1289 data 98,49,ff,69,00,9d,bb,1f,68, 1064 1290 data 9d,ba,1f,60,48,a8,a9,08,85, 1020 1291 data fc,a9,00,95,57,16,57,36,58, 908 1292 data 98,0a,a8,90,0b,68,48,18,75, 802 1293 data 57,95,57,90,02,f6,58,c6,fc, 1253 1294 data d0,e8,68,60,a5,f9,29,02,f0, 1337 1295 data 08,a5,5b,f0,36,c6,5b,38,60, 999 1296 data a5,5b,c9,c7,f0,2c,e6,5b,38, 1317 1297 data 60,a5,f9,29,01,f0,10,a5,5c, 1065 1298 data 05,5d,f0,1c,a5,5c,d0,02,c6, 1031 1299 data 5d,c6,5c,38,60,a5,5d,f0,06, 1039 1300 data a5,5c,c9,3f,f0,08,e6,5c,d0, 1299 1301 data 02,e6,5d,38,60,18,60,20,e8, 861 1302 data 1c,a9,01,20,74,17,a9,00,85, 671 1303 data f9,a5,5b,8d,ab,1f,ba,8e,bd, 1365 1304 data 1f,ba,e0,14,90,6c,a5,fd,48, 1203 1305 data a5,fe,48,a5,5c,48,a5,5d,48, 1150 1306 data a5,5b,85,fd,ad,ab,1f,85,fe, 1404 1307 data 20,72,17,90,46,20,23,18,90, 618 1308 data 41,a5,5b,48,ad,ab,1f,48,20, 872 1309 data 23,18,90,05,20,b1,17,90,f6, 830 1310 data 68,85,fe,68,85,fd,a5,f9,49, 1468 1311 data 01,85,f9,20,72,17,20,23,18, 643 1312 data 90,05,20,b1,17,90,f6,a5,f9, 1185 1313 data 49,01,85,f9,20,72,17,ad,00, 798 1314 data dc,29,10,d0,bc,ae,bd,1f,9a, 1221 1315 data 4c,e8,1c,68,85,5d,68,85,5c, 995 1316 data 68,85,fe,68,85,fd,60,a5,fd, 1495 1317 data 85,5b,a5,fe,8d,ab,1f,20,be, 1208 1318 data 14,a0,00,31,57,d0,36,a5,5b, 834 1319 data f0,0d,c6,5b,20,be,14,a0,00, 944 1320 data 31,57,f0,f1,e6,5b,a5,5b,aa, 1364 1321 data 20,be,14,a0,00,31,57,d0,0e, 760 1322 data a5,5e,11,57,91,57,e6,5b,a5, 1081 1323 data 5b,c9,c8,d0,e9,c6,5b,a5,5b, 1478 1324 data 8d,ab,1f,86,5b,38,60,e6,5b, 1041 1325 data ad,ab,1f,c5,5b,b0,b8,60,20, 1151 1326 data e8,1c,ad,aa,1f,c9,03,d0,05, 1051 1327 data a9,00,8d,aa,1f,0a,aa,a5,5c, 948 1328 data 46,5d,6a,4a,4a,9d,bb,1f,a5, 957 1329 data 5b,4a,4a,4a,9d,ba,1f,ee,aa, 1095 1330 data 1f,8a,f0,56,c9,02,d0,6a,a2, 1174 1331 data 00,bd,bc,1f,38,fd,ba,1f,b0, 1110 1332 data 10,bd,bc,1f,a8,bd,ba,1f,9d, 1155 1333 data bc,1f,98,9d,ba,1f,90,e7,9d, 1277 1334 data c4,1f,e8,e0,02,d0,df,20,57, 1235 1335 data 0f,a2,00,20,fa,19,8c,c2,1f, 849 1336 data 8d,c3,1f,ae,c4,1f,ac,c5,1f, 1168 1337 data a9,bf,91,57,88,10,f9,a5,57, 1245 1338 data 18,69,28,85,57,90,02,e6,58, 853 1339 data ca,10,e8,ad,96,1f,8d,ae,1f, 1150 1340 data 60,ad,aa,1f,c9,03,d0,f8,ce, 1336 1341 data aa,1f,ad,ae,1f,20,64,0e,4c, 801 1342 data c5,18,ce,aa,1f,60,ad,be,1f, 1118 1343 data 18,6d,c4,1f,8d,c0,1f,c9,19, 950 1344 data b0,ee,ad,bf,1f,18,6d,c5,1f, 1170 1345 data 8d,c1,1f,c9,28,b0,e0,20,48, 1110 1346 data 0f,a2,04,20,fa,19,a5,57,38, 796 1347 data ed,c2,1f,a5,58,ed,c3,1f,a9, 1347 1348 data 00,2a,2a,85,f9,69,04,aa,20, 777 1349 data fa,19,84,59,85,5a,a6,f9,20, 1166 1350 data fa,19,a0,03,06,57,26,58,06, 663 1351 data 59,26,5a,88,d0,f5,ad,ae,1f, 1184 1352 data a0,06,d9,96,1f,f0,03,88,d0, 1151 1353 data f8,a5,58,18,88,30,04,69,20, 850 1354 data 90,f9,85,58,a9,00,a0,08,a6, 1117 1355 data f9,f0,04,a9,ff,a0,f8,84,5c, 1549 1356 data 85,5d,ad,c4,1f,85,fb,78,a9, 1299 1357 data 34,85,01,a2,ff,a0,07,b1,57, 1034 1358 data 91,59,88,10,f9,a0,02,b9,57, 1069 1359 data 00,18,65,5c,99,57,00,b9,58, 730 1360 data 00,65,5d,99,58,00,88,88,f0, 947 1361 data eb,e8,ec,c5,1f,90,da,e0,27, 1556 1362 data d0,df,c6,fb,10,d0,a9,37,85, 1461 1363 data 01,58,ad,89,1f,10,2f,a2,04, 659 1364 data 20,fa,19,84,59,85,5a,ad,ae, 1098 1365 data 1f,cd,96,1f,f0,05,20,b1,0f, 886 1366 data f0,02,a9,40,18,6d,c3,1f,38, 890 1367 data e9,04,85,58,ad,c2,1f,85,57, 1076 1368 data ae,c4,1f,20,1f,1a,20,57,0f, 624 1369 data 60,a9,00,85,58,bd,ba,1f,0a, 902 1370 data 0a,18,7d,ba,1f,0a,0a,26,58, 522 1371 data 0a,26,58,7d,bb,1f,90,02,e6, 855 1372 data 58,85,57,a8,a5,58,09,04,85, 875 1373 data 58,60,ac,c5,1f,b1,57,91,59, 1082 1374 data 88,10,f9,a5,57,18,69,28,85, 955 1375 data 57,90,02,e6,58,a5,59,18,69, 934 1376 data 28,85,59,90,02,e6,5a,ca,10, 946 1377 data dd,60,20,be,14,a0,03,46,58, 880 1378 data 66,57,88,d0,f9,a5,58,49,44, 1176 1379 data 85,5a,a5,57,85,59,a0,00,ad, 1030 1380 data 8d,02,4a,ad,89,1f,29,01,d0, 808 1381 data 15,b0,06,ad,20,d0,4c,70,1a, 830 1382 data b1,59,29,0f,85,fd,b1,57,29, 1013 1383 data f0,4c,91,1a,b0,0a,ad,20,d0, 1086 1384 data 0a,0a,0a,0a,4c,89,1a,b1,59, 545 1385 data 29,f0,85,fd,b1,57,29,0f,05, 992 1386 data fd,91,57,60,20,e8,1c,a0,04, 1037 1387 data b9,10,fd,d9,e0,3f,d0,53,88, 1385 1388 data 10,f5,a9,3e,85,58,a5,5b,c9, 1170 1389 data c0,90,02,a9,bf,29,f0,85,fd, 1365 1390 data 4a,4a,65,fd,85,fd,a5,5d,4a, 1220 1391 data a5,5c,6a,4a,4a,4a,18,65,fd, 963 1392 data 0a,90,02,e6,58,85,57,a0,01, 855 1393 data b1,57,aa,88,b1,57,29,40,d0, 1147 1394 data 1b,b1,57,30,18,c9,04,b0,08, 752 1395 data 8d,81,1f,8a,a8,4c,48,0d,48, 840 1396 data 8a,a8,20,48,0d,68,a8,4c,48, 843 1397 data 0d,60,a8,29,01,8d,81,1f,08, 628 1398 data 98,4a,4a,a8,28,d0,01,88,8c, 993 1399 data 20,d0,8c,27,d0,8a,a8,4c,48, 1081 1400 data 0d,48,29,01,d0,1f,a9,20,85, 700 1401 data 58,a2,e0,78,a9,34,85,01,a9, 1118 1402 data 00,85,57,a8,91,57,c8,d0,fb, 1279 1403 data e6,58,ca,d0,f6,a9,37,85,01, 1332 1404 data 58,a2,00,8e,17,d0,8e,1d,d0, 1002 1405 data 8e,1c,d0,8e,1b,d0,20,c8,1c, 1015 1406 data a9,04,8d,20,d0,a0,25,b9,91, 1081 1407 data 1b,99,84,1f,88,10,f7,68,8d, 987 1408 data 89,1f,10,23,a9,00,8d,97,1f, 711 1409 data ad,89,1f,29,01,d0,17,a9,40, 847 1410 data 85,58,ad,88,1f,a2,1c,a0,00, 911 1411 data 84,57,91,57,c8,d0,fb,e6,58, 1428 1412 data ca,d0,f6,ad,89,1f,29,40,f0, 1342 1413 data 08,20,f2,10,a9,02,8d,ae,1f, 815 1414 data 4c,74,1c,00,8c,ae,00,f6,00, 780 1415 data 01,01,08,18,a0,01,08,15,60, 320 1416 data 20,06,00,01,07,02,03,04,05, 60 1417 data 06,8c,8c,8c,8c,ae,ae,ae,ae, 1262 1418 data 00,00,00,00,a9,93,20,d2,ff, 813 1419 data a9,01,8d,15,d0,8d,10,d0,a9, 1074 1420 data 10,8d,00,d0,a9,88,8d,01,d0, 1020 1421 data a9,04,85,58,a9,d8,85,5a,a2, 1164 1422 data 00,86,57,86,59,a9,19,85,fb, 1022 1423 data a0,00,bd,c0,02,8d,ba,1f,bd, 1090 1424 data c1,02,8d,bb,1f,bd,c2,02,8d, 1080 1425 data bc,1f,a9,06,91,59,c0,18,b0, 1020 1426 data 1c,a5,fb,c9,05,90,16,ad,93, 1136 1427 data 1f,49,80,91,57,2e,bc,1f,2e, 775 1428 data bb,1f,2e,ba,1f,90,04,a9,04, 802 1429 data 91,59,c8,c0,28,d0,d7,e8,e8, 1553 1430 data e8,a5,57,18,69,28,85,57,85, 1006 1431 data 59,90,04,e6,58,e6,5a,c6,fb, 1324 1432 data d0,ad,a9,06,8d,27,d0,a5,5b, 1200 1433 data 8d,ba,1f,a5,5c,8d,bb,1f,a2, 1136 1434 data 00,20,fa,19,60,20,57,0f,ad, 710 1435 data 18,d0,29,f7,8d,18,d0,ad,11, 1083 1436 data d0,29,df,8d,11,d0,20,cc,ff, 1329 1437 data a9,93,20,d2,ff,a9,0f,8d,21, 1171 1438 data d0,a9,06,8d,86,02,a9,00,85, 962 1439 data c6,8d,15,d0,60,20,e1,1c,a2, 1111 1440 data 00,a0,00,b9,f0,1c,85,57,f0, 1073 1441 data 27,c9,ff,d0,04,e8,c8,d0,f1, 1588 1442 data b9,f1,1c,9d,40,03,e8,b9,f2, 1337 1443 data 1c,9d,40,03,e8,b9,f3,1c,9d, 1097 1444 data 40,03,e8,c6,57,d0,e7,c8,c8, 1423 1445 data c8,c8,d0,d2,ad,18,d0,09,08, 1240 1446 data 8d,18,d0,ad,11,d0,09,20,8d, 953 1447 data 11,d0,20,48,0f,ad,20,d0,8d, 898 1448 data 27,d0,ad,84,1f,4c,07,0e,a9, 849 1449 data 00,a0,3f,99,c0,02,88,10,fa, 972 1450 data 60,aa,f0,0a,a0,00,ea,ea,88, 1280 1451 data d0,fb,ca,d0,f8,60,a5,cb,c9, 1782 1452 data 40,d0,fa,60,20,a2,12,29,10, 887 1453 data d0,f9,60,08,00,20,00,02,00, 595 1454 data 00,00,01,ff,07,f8,02,00,00, 513 1455 data 00,08,00,20,00,ff,06,00,00, 301 1456 data 00,01,03,ff,00,08,02,01,00, 270 1457 data 01,03,ff,00,05,00,00,00,ff, 519 1458 data 01,ff,ff,ff,13,c0,00,03,01, 981 1459 data ff,ff,ff,00,20,e1,1c,a9,20, 1251 1460 data 8d,93,1f,a9,00,85,5b,85,5c, 937 1461 data 8d,83,1f,20,47,1c,20,b6,1b, 675 1462 data 20,55,1d,20,2e,1e,20,7d,1e, 441 1463 data a9,30,20,d3,1c,a5,cb,c9,3c, 1117 1464 data d0,ec,4c,74,1c,a5,cb,cd,80, 1365 1465 data 1f,d0,01,60,8d,80,1f,c9,24, 873 1466 data d0,25,a0,3c,b9,c0,02,20,0a, 886 1467 data 1e,99,bc,1f,b9,c2,02,20,0a, 825 1468 data 1e,99,ba,1f,b9,c1,02,20,0a, 822 1469 data 1e,99,bb,1f,88,88,88,10,e0, 1049 1470 data 4c,19,1e,c9,16,d0,14,a0,00, 742 1471 data a2,3e,b9,c0,02,20,0a,1e,9d, 832 1472 data ba,1f,c8,ca,10,f3,4c,19,1e, 1009 1473 data c9,11,d0,44,a9,02,85,fb,a4, 1213 1474 data fb,84,fd,be,28,1e,b9,2b,1e, 1154 1475 data 85,fa,a9,03,85,fc,a9,08,85, 1250 1476 data fe,a4,fa,8a,48,a9,00,3e,c0, 1301 1477 data 02,6a,e8,e8,e8,88,d0,f6,a4, 1558 1478 data fd,99,ba,1f,c8,c8,c8,84,fd, 1608 1479 data 68,aa,c6,fe,d0,e0,e8,c6,fc, 1840 1480 data d0,d7,c6,fb,10,c3,4c,19,1e, 1214 1481 data c9,1a,d0,0b,ad,93,1f,49,6f, 981 1482 data 8d,93,1f,4c,b6,1b,c9,33,d0, 1064 1483 data 0d,ad,8d,02,29,01,f0,06,20, 649 1484 data c8,1c,4c,b6,1b,60,85,fe,84, 1128 1485 data fd,a0,08,26,fe,6a,88,d0,fa, 1413 1486 data a4,fd,60,a0,3e,b9,ba,1f,99, 1290 1487 data c0,02,88,10,f7,20,b6,1b,60, 930 1488 data 27,0f,00,08,08,05,20,a2,12, 287 1489 data a0,00,29,0f,f0,35,4a,a6,5b, 840 1490 data f0,04,90,02,c6,5b,4a,90,06, 903 1491 data e0,14,b0,02,e6,5b,4a,a6,5c, 1075 1492 data f0,04,90,02,c6,5c,4a,90,06, 904 1493 data e0,17,b0,02,e6,5c,ad,93,1f, 1098 1494 data 49,80,91,57,20,37,1c,ad,93, 868 1495 data 1f,a0,00,91,57,ad,83,1f,49, 831 1496 data 01,8d,83,1f,f0,06,b1,57,49, 887 1497 data 80,91,57,60,ad,82,1f,29,10, 847 1498 data f0,3c,20,f7,14,a5,5c,4a,4a, 1004 1499 data 4a,a0,03,18,65,5b,88,d0,fb, 1048 1500 data a8,a5,5e,ae,8d,02,d0,0b,19, 988 1501 data c0,02,99,c0,02,a9,04,4c,b1, 967 1502 data 1e,49,ff,39,c0,02,99,c0,02, 956 1503 data a9,06,a8,a5,58,aa,49,dc,85, 1192 1504 data 58,98,a0,00,91,57,86,58,60, 950 1505 data a0,03,d9,22,1f,f0,03,88,d0, 1032 1506 data f8,c8,98,0a,0a,aa,a0,03,ca, 1155 1507 data bd,26,1f,99,b6,1f,88,10,f6, 1022 1508 data ad,80,1f,4a,4a,4a,8d,b4,1f, 906 1509 data a9,04,ae,b3,1f,ac,b4,1f,20, 972 1510 data ba,ff,a0,02,b1,2d,48,c8,b1, 1274 1511 data 2d,aa,c8,b1,2d,a8,68,20,bd, 1130 1512 data ff,ae,b6,1f,86,57,ac,b7,1f, 1249 1513 data 84,58,ad,b4,1f,d0,06,a9,00, 987 1514 data 20,d5,ff,60,a9,57,ae,b8,1f, 1241 1515 data ac,b9,1f,20,d8,ff,60,47,46, 1128 1516 data 53,5a,00,20,00,40,00,20,00, 301 1517 data 44,c0,02,ff,02,00,20,00,28, 591 1518 data a2,03,20,c6,ff,20,cf,ff,20, 1176 1519 data d2,ff,d0,f8,a9,0d,20,d2,ff, 1600 1520 data 20,cc,ff,60,ff,9c, 998
50 ifa<2thena=a+2:load"hi-exe",8,1 60 ifa=3then150 70 ifa=4then650 100 input"betriebsart";c:poke780,c:poke56,13:clr:w$="123456":sys3328 110 ifpeek(8073)and64thena=3:load"menue",8,1 150 sys3337:a=peek(8064) 160 ona+1gosub200,250,300,290,400,600,290,290,500,510,300:goto150 200 open3,8,0,"$0":get#3,c$,c$ 210 get#3,c$,c$,l$,h$:ifc$=""thenclose3:wait198,1:return 220 print256*asc(h$+chr$(0))+asc(l$+chr$(0));:sys3334:goto210 250 print"{clr}{down}sequenz:":print"{down} "w$:input"{home}{down}{down}{down}";w$:iflen(w$)<2then250 290 return 300 poke8115,8:print"{clr}{down}g=grafikbild":ifpeek(8073)>127thenprint"f=farbbild" 310 print"s=sprite":print"z=zeichensatz":print"{down} -->"; 320 getc$:ifc$<>"g"andc$<>"f"andc$<>"s"andc$<>"z"then320 330 printc$:poke780,asc(c$):h$=w$:input"{down}filename";w$:sys3331:w$=h$:h$="" 340 open1,8,15,h$:input#1,a,h$:printa;h$:ifa>0thenwait198,1 350 close1:return 400 poke631,34:poke198,1:h$="":input"{clr}{down}";h$:goto340 500 a=8075:goto520 510 a=8079 520 d=peek(8074):c=peek(a+d):print"{clr}{down}f"2*d+1:print"schrittweite:"c, 530 inputc:ifc<1orc>160then530 540 pokea+d,c:return 600 input"{clr}{down}nummer 1.bild";d:c=(dand7) 610 input"{down}nummer 2.bild (0=nur 1 bild)";d:c=c+8*(dand7):ifd>0thenc=c+64 620 ifd=0thenprint"{down}gross";:gosub800:ifc$="j"thenc=c+128 630 print"{down}drucken";:gosub800:ifc$="n"then660 640 ifa=5thena=4:load"hi-print",8,1 650 poke780,c:sys3328:print"{down}nochmal";:gosub800:ifc$="j"then600 660 ifa=5thenreturn 670 a=1:goto50 800 print" ? (j/n)"; 810 getc$:ifc$<>"j"andc$<>"n"then810 820 printc$:return
10 rem********************************* 20 rem* * 30 rem* hi-eddi * 40 rem* von hans haberl * 50 rem* * 60 rem* data's fuer die steuerzeile * 70 rem* der beispiel-menuetafel * 80 rem********************************* 90 rem je zwei aufeinanderfolgende data-zeilen 100 rem ergeben eine zeile in der menuetafel (=20 felder) 110 data 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0 120 data 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0 130 data 0,18,0,18,0,18,0,20,0,20,0,20,0,22,0,22,0,22 140 data 0,13,0,13,0,13,0,10,0,10,0,10,0,56,56,23,56,38,56,30,1,51 150 data 0,18,0,18,0,18,0,20,0,20,0,20,0,22,0,22,0,22 160 data 0,13,0,13,0,13,0,10,0,10,0,10,0,59,59,23,59,38,59,30,1,51 170 data 0,42,0,42,0,42,0,41,0,41,0,41,0,9,0,9,0,9 180 data 0,26,0,26,0,26,0,14,0,14,0,14,0,8,8,23,8,38,8,30,1,51 190 data 0,42,0,42,0,42,0,41,0,41,0,41,0,9,0,9,0,9 200 data 0,26,0,26,0,26,0,14,0,14,0,14,0,11,11,23,11,38,11,30,0,33 210 data 0,17,0,17,0,17,0,36,0,36,0,36,1,9,1,9,1,9 220 data 1,60,1,60,1,60,1,60,1,60,1,60,0,16,16,23,16,38,16,30,0,33 230 data 0,17,0,17,0,17,0,36,0,36,0,36,1,9,1,9,1,9 240 data 1,60,1,60,1,60,1,60,1,60,1,60,0,19,19,23,19,38,19,30,0,33 250 data 128,21,132,21,136,21,140,21,144,21,148,21,152,21,156,21,160,21 260 data 164,21,168,21,172,21,176,21,180,21,184,21,188,21,0,4,0,5,0,6,0,3 270 data 128,28,132,28,136,28,140,28,144,28,148,28,152,28,156,28,160,28 280 data 164,28,168,28,172,28,176,28,180,28,184,28,188,28,1,4,1,5,1,6,1,3 290 data 129,21,133,21,137,21,141,21,145,21,149,21,153,21,157,21,161,21 300 data 165,21,169,21,173,21,177,21,181,21,185,21,189,21,2,4,2,5,2,6,2,3 310 data 129,28,133,28,137,28,141,28,145,28,149,28,153,28,157,28,161,28 320 data 165,28,169,28,173,28,177,28,181,28,185,28,189,28,0,29,0,29,0,31,0,31 330 data 2,18,2,18,2,18,2,18,2,42,2,42,2,42,2,42,2,13,2,13,2,13,2,13 340 data 2,20,2,20,2,20,2,20,2,41,2,41,2,41,2,41 350 rem kennung "cbm80" ,als menuekennung missbraucht 360 data 195,194,205,56,48 370 : 380 poke 56,32:clr:rem im speicher befindliche menuetafel schuetzen 390 for i=15872 to 15872+484:read a:poke i,a :s=s+a:next i 400 if s<>18329 then print"data-fehler!"