C 64
Listing des Monats

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.

Es lassen sich nicht nur Bilder zeichnen, sondern auch technische Zeichnungen realisieren. Text kann ebenso eingefügt werden wie Sprites und selbstdefinierte Zeichensätze.

Hier eine Aufstellung der herausragenden Eigenschaften:

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)
Solche oder auch ganz andere Menüs können Sie sich selbst erstellen. Auf der Diskette zu dieser Ausgabe finden Sie diese und noch andere Beispiele.
Wenn Sie dieses Bild sechsmal im Speicher ablegen (mit wenigen Tasten möglich) und in jedem Bild die Stellung der Kolben ändern, kann mit dem Walk-Befehl ein Zeichentrickfilm-ähnlicher Effekt erzielt werden (zirka sieben Bilder pro Sekunde).

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:

  1. Bildschirmspeicherwechsel (1 bis 7)
  2. Ausschalten des High-Resolution-Bildschirmes (Sprite-Editor, Befehle H, V, SHIFT W, Disk- und Druckerbefehle).
  3. 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.

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:

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:

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.

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:

  1. Ausdruck eines Bildes, groß oder klein.
  2. 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.

Bild 1. In dieser Hardcopy wurden zwei Bilder untereinander ausgedruckt. Dies geschieht nahtlos. Es können zwei Bilder nebeneinader und unbegrenzt viele untereinander gesetzt werden. Siehe dazu auch Bild 2.

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ß.

Bild 2. Dieser verkleinerte Schaltplan wurde aus insgesamt sechs verschiedenen Bildern zusammengesetzt. Je zwei nebeneinander und drei untereinander. Auch ein reverser Ausdruck ist mit einem Tastendruck möglich. Die Symbole aus dem Construction-Set können einzeln in jedes beliebige Bild hineinkopiert werden.

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:

  1. »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).
  2. Befehle U, 0, X: Tastaturcode der entsprechenden Nummerntaste. Beispiel: X 5 ergibt die Steuerbytes 16 (Tastaturcode »5« und 23 (Tastaturcode »X«),
  3. 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«),
  4. »Leerer« Befehl ohne Verlassen der Menütafel (zum Beispiel für Überschrift): 1. Byte = 64, 2. Byte = 0
  5. »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
Listing 1. HI-PRINT ist die ausgezeichnete Drucker-Routine des HI-EDDI. Alle Hardcopies auf diesen Seiten wurden mit HI-PRINT erstellt. Auch dieses Unterprogramm speichert sich nach dem Starten als Maschinenprogramm auf Diskette. Beachten Sie den Beitrag »Checksummer« in dieser Ausgabe. Er gibt Ihnen wichtige Hinweise zum Abtippen.
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
Listing 2. HI-EXE ist das umfangreichste Unterprogramm im HI-EDDI-System. Nach dem Starten speichert es sich selbst als Maschinenprogramm auf Diskette. Lesen Sie vor dem Abtippen den Beitrag »Checksummer« in dieser Ausgabe.
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
Listing 3. HI-EDDI ist sozusagen das Steuerprogramm. ruft die anderen benötigten Programme auf. Tippen Sie die REM-Zeilen nicht mit ab.
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!"
Listing 4. Ein Beispiel für den Aufbau einer Steuertafel für ein selbsterstelltes Menü. Einzelheiten finden Sie in der Beschreibung.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →