Tips und Erweiterungen zu Hi-Eddi und Simons Basic
Sie haben sicher schon selbst festgestellt, wie hervorragend das Listing des Monats aus der Ausgabe 1/85 ist, unser »fantastisches Zeichen- und Mal-Programm«. Der Autor des Hi-Eddi hat jedoch noch etwas weitergearbeitet und stellt kleine Programme vor, die es ermöglichen, mit Simons Basic erstellte Bilder in Hi-Eddi zu laden. Außerdem gibt es eine Reihe von Tips, die die Arbeit mit Hi-Eddi erleichtern.
Simons Basic bietet leider keine Möglichkeit, High-Resolution-Bilder auf Diskette zu speichern und zu laden. Dies ist jedoch Voraussetzung, um Bilder, die mit Simons Basic erstellt wurden, auch in Hi-Eddi und andere Programme zu laden.
Ich habe deshalb das Programm »Screensave« (Listing1) geschrieben, das die Simons-Basic-Befehle »SCRSV« und »SCRLD« um die Fähigkeit, Hires-Bilder zu laden und zu speichern, erweitert. Leider funktioniert das nicht für die Modul-Version, da direkt das Simons Basic modifiziert wird. Dafür wird kein Speicherplatz außerhalb des Simons Basic gebraucht. Außerdem ist die modifizierte Version abspeicherbar, nach ihrem Laden stehen die erweiterten Befehle sofort zur Verfügung, ohne ein weiteres Programm nachladen zu müssen.
Hinweise zum Eintippen:
- Simons Basic starten
- »Screensave« eintippen, sicherheitshalber abspeichern und starten
- Nachdem alle DATA-Fehler beseitigt wurden, stehen die erweiterten Befehle »SCRSV« und »SCRLD« zur Verfügung: Die Syntax ist dieselbe wie bisher, mit der Sekundäradresse wird jetzt der Bildschirm gewählt:
- Sekundäradresse = 2: Low-Resolution-Bildschirm,
- Sekundäradresse = 3: High-Resolution-Bildschirm
Das Aufzeichnungsformat des Low-Resolution-Bildschirmes ist leider nicht kompatibel mit dem der alten Befehle. Das des High-Resolution-Bildschirmes ist dasselbe wie bei Hi-Eddi, Diashow und anderen Grafikprogrammen. Dazu muß das Bild aber unbedingt als PGM-File, also zum Beispiel mit:
SCRSV1,8,3,»NAME,P,W«
abgespeichert werden, da Hi-Eddi keine SEQ-Files laden kann.
Zum Abspeichern des »neuen« Simons Basic dient das Programm »Saver« (Listing 2). Dieses Programm speichert nicht nur das komplette Simons Basic, das übrigens auch noch andere Modifikationen, zum Beispiel die aus 64’er Ausgabe 11/84, enthalten kann, sondern auch die Funktionstastenbelegung mit ab. Nach dem Laden der mit »Saver« erstellten Simons-Basic-Version stehen somit nicht nur die neuen Befehle, sondern auch die individuelle Funktionstastenbelegung sofort zur Verfügung.
Hinweise zum Eintippen:
- Funktionstasten nach eigenen Wünschen belegen
- »Saver« eintippen, abspeichern, eine Diskette mit mindestens 66 freien Blocks einlegen und Programm starten. Nun fragt der »Saver« nach dem Namen, unter dem er die neue Version ablegen soll. Diese neue Version ist um einen Block länger als die alte (66 statt 65), da die Funktionstastenbelegung hinzugekommen ist.
Tips zu Hi-Eddi
Erfreulicherweise ging das Druckfehlerteufelchen bei den Listings offensichtlich leer aus, denn schon einige Tage nach Erscheinen des Heftes meldete sich der erste, der nicht nur das komplette Programm abgetippt, sondern auch gleich das Beispiel-Menü abgepinselt hatte und alles lief einwandfrei. Im folgenden möchte ich auf die Fragen der Anrufer eingehen.
Druckeranpassung
Die Anleitung in den REM-Zeilen des Programms »Hi-PRINT.DATA« ist zugegebenermaßen etwas dürftig ausgefallen, so daß eine ausführlichere Erklärung dringend nötig ist:
Wie schon in der Bedienungsanleitung erwähnt, beschränkt sich die Anpaßbarkeit dieses Programms auf 8-Nadel-Drucker mit »vernünftiger« Einzelnadelansteuerung, wie zum Beispiel Drucker von Epson oder Mannesmann (im Gegensatz zum 1526/MPS 802). Mit dem Datum in Zeile 420 wird zwischen dem seriellen Bus (also Hardware-Interface) oder dem User-Port gewählt. Im ersten Fall muß mit den Daten in Zeile 440 (Primäradresse) und 460 (Sekundäradresse) das Interface auf Direktmodus gestellt werden. Hardwareinterfaces bieten in der Regel verschiedene Betriebsmodi (zum Beispiel Emulation eines Commodore-Druckers, spezielle List- oder Grafikmodi und eben den Direktmodus oder Linearmodus), die meist über die Sekundäradresse angewählt werden. »Hi-PRINT« braucht den Direktmodus, in dem sich das Interface wie ein einfaches Kabel verhält und die Bytes vom Computer unverändert an den Drucker übergibt. Für das Data-Becker-Interface muß zum Beispiel die Sekundäradresse 1 eingegeben werden, für das Görlitz-Interface 4 oder 12 (ohne beziehungsweise mit Auto-Linefeed). Beim Anschluß an den User-Port sind die Daten in Zeile 440 und 460 zwar nicht relevant, man darf sie jedoch nicht weglassen, da sonst die nachfolgenden DATAs verschoben würden.
Aus dem gleichen Grund dürfen auch die Längen der folgenden DATA-Zeilen nicht verändert werden, sie müssen nach Bedarf mit 255 aufgefüllt werden. Außerdem muß jede dieser Zeilen mit mindestens einem 255 enden, da diese Zahl als Ende-Kennzeichen einer Sequenz dient.
Die Zeile 530 legt die Sequenz für einen Carriage-Return Linefeed fest, sie ist 13,255,255 für Drucker mit Auto-Linefeed und 13,10,255 für Drucker ohne Auto-Linefeed.
Zeile 550 stellt den Drucker auf den für Grafik passenden Zeilenvorschub ein. Für den Epson RX-80 ist dies zum Beispiel ESC »3« 23 oder in Zahlen 27,51,23, aufgefüllt mit 255 auf die erforderliche Länge.
In Zeile 580 wird der Grafikmodus (Bit-Image-Mode) für 640 Punkte/Zeile angesteuert. Beispiele:
Epson RX-80: | ESC »*« 4 | entspricht | 27,42,4 |
Mannesmann MT-80: | ESC »K« | entspricht | 27,75 |
In Zeile 600 wird wieder der normale Zeilenabstand eingestellt (ESC »2«) und die -2 in Zeile 610 signalisiert für den DATA-Lader das Ende der DATAs.
Betrieb mit der Datasette
Ich besitze selbst keine Datasette, so daß die hier gegebenen Hinweise nicht getestet sind:
Zunächst muß in den Listings 1 und 2 (Hi-Exe und Hi-PRINT) die »8« in den OPEN-Befehlen durch eine »1« ersetzt werden. Das gleiche gilt für alle LOAD-Befehle im Listing 3 (Hi-Eddi). An diesem Listing müssen außerdem noch die folgenden Änderungen vorgenommen werden:
Zeile 300: POKE8115,8 durch POKE8115,1 ersetzen
Folgende Zeilen müssen gelöscht werden:
200,210,220,340,400
Folgende Zeilen müssen dafür eingefügt werden:
200 RETURN
400 RETURN
Auf der Programmkassette speichert man die Files dann am besten in folgender Reihenfolge ab:
- Hi-Eddi (Listing 3)
- Hi-Exe (Das von Listing 2 erzeugte Maschinenprogramm, nicht den Data-Lader!)
- Menü
- Hi-PRINT (Das von Listing 1 erzeugte Maschinenprogramm)
Die Overlay-Technik gestaltet sich mit der Datasette natürlich nicht so komfortabel wie mit der Diskette: Nachdem zu Beginn eines Druckvorganges die Druckerroutine geladen wurde, muß die Kassette wieder zurückgespult werden, damit nach dem Drucken das Maschinenprogramm »Hi-Exe« wieder geladen werden kann.
Koala- und Paint-Magic-Bilder
In Ausgabe 1/85 wurde schon erwähnt, daß auch die Bilder von Paint Magic und Koalapainter geladen werden können. Das ist richtig, aber man muß einiges dazu wissen:
Laden von Bildern
Bei Schwarzweiß-Bildern, wie die der Diashow, Supergrafik oder natürlich des erweiterten Simons Basic geht’s problemlos. Bei Grafikprogrammen, die im Multicolour-Modus arbeiten, treten zwei Schwierigkeiten auf:
- Da Hi-Eddi im High-Resolution-Modus arbeitet, sehen Multicolour-Bilder recht ungewöhnlich aus. Dabei kommt es vor allem auch auf die Farborganisation des betreffenden Programmes an: Die des Koalapainter ist so chaotisch, daß dessen Bilder im »Hi-Eddi« fast unbrauchbar sind (Ein und dieselbe Farbe erhält verschiedene Multicolour-Codes). Paint-Magic-Bilder sind dagegen sofort »druckreif«.
- Für Multicolour-Bilder gibt es kein einheitliches Format für die Speicherung auf Diskette, so daß viele Bilder nicht direkt von »Hi-Eddi« geladen werden können.
Für den Koalapainter tritt die 2. Schwierigkeit nicht auf, seine Bilder lassen sich sofort laden. Den Filenamen gibt man dabei in der Form »?PIC…« ein, um das Steuerzeichen am Anfang auszutricksen. Da jedoch Koala-Bilder länger sind als die vom »Hi-Eddi«, werden Farbinformationen nicht nur des geladenen, sondern noch eines weiteren Bildes überschrieben. Nach dem Laden eines Koala-Bildes herrscht somit buntes Chaos im Computer, das erst durch Neu-Einfärben beseitigt werden muß.
Etwas komplizierter wird’s bei Paint Magic, dessen Bilder sich nicht direkt laden lassen, da sie in Form eines Basic-Laders abgespeichert werden. Man muß erst ein Bild mit »LOAD"..",8« laden, dann mit RUN starten, anschließend »Hi-Eddi« laden und in Betriebsart 1 starten. Die 1 ist nötig, damit »Hi-Eddi« das im Speicher befindliche Bild nicht löscht. Außerdem darf »Hi-Eddi« nicht im Farbbetrieb gestartet werden, da das Paint-Magic-Bild im Speicherbereich $4000-$6000 liegt, wo »Hi-Eddi« sonst seine Farbinformationen ablegen würde. Nach dem Start ist das Bild in Speicher Nummer 7 zu finden.
Lädt man übrigens im Schwarzweiß-Betrieb ein Farbbild (36 Blocks), dann wird auch hier durch die Farbinformation ein Teil eines anderen Bildes überschrieben, was sich durch »Gerümpel« in den ersten paar Zeilen dieses Bildes bemerkbar macht.
Laden von »Hi-Eddi«-Bildern in Basic-Programmen
Will man »Hi-Eddi«-Bilder in normalen Basic-Programmen (oder mit der Simons Basic Modulversion) laden, dann tut’s das Listing »Pic-Lader (Listing 3), das natürlich in eigene Programme eingebaut werden kann. Das Bild wird unter das Betriebssystem-ROM gelegt, der Farbspeicher ab $C000 (=49152, wie bei Simons Basic). Damit wird kein Basic-Speicherplatz belegt. Allerdings dürfen nur Schwarzweiß-Bilder (33 Blocks) geladen werden, bei Farbbildern gibt’s einen Absturz.
Fehler
Falls Sie erwartet haben, daß ich Ihnen jetzt irgendwelche schwerwiegende Fehler mitteile, muß ich Sie enttäuschen. Lediglich ein paar Kleinigkeiten sind mir aufgefallen:
Auf Seite 51, in der Bildüberschrift zum Ottomotor, steht »sieben Bilder pro Sekunde«. Das gilt jedoch für große Bilder. Die Viertelbilder dagegen werden mit maximal 24 Bilder pro Sekunde abgearbeitet. Und auf Seite 60, rechts oben, vierte Zeile, müßte es natürlich heißen »Felder« und nicht »Fehler«.
Auch am Programm selbst sind mir noch vier Kleinigkeiten aufgefallen:
- Bei einem STOP/RESTORE schreibt das Betriebssystem ein paar Bytes in den RAM-Bereich über $E000. Diese sind dann in einem der Bilder am unteren Rand als »Gerümpel« zu sehen.
- Beim Befehl »Paint« kann es bei extrem verwinkelten Flächen vorkommen, daß Teile übersehen werden (Grund dafür ist der begrenzte Stack des 6510). Diese müssen eben extra aufgefüllt werden.
- Der Sequenzstring sollte nicht länger als zirka 40 Zeichen werden, sonst könnte es bei LOAD oder SAVE zu einem OUT OF MEMORY ERROR kommen. Sollte das passieren, so muß Hi-Eddi mit GOTO 150 gestartet und der Sequenzstring verkürzt werden.
- Bei gewaltigem »Herumwürgen« am Joystick kann es vorkommen, daß der Computer meint, es wurde eine Taste gedrückt. Ergebnis ist dann eine Befehlsausführung, die man gar nicht wollte. Allerdings passiert das äußerst selten, vielleicht liegt’s auch nur an meinem mickrigen Joystick. Wenn ansonsten mal ein Befehl nicht das tut, was er sollte, dann liegt es meistens an einer eingerasteten SHIFT-LOCK-Taste. Bei Befehlen, die die SHIFT-Taste nicht benutzen, fällt es gar nicht auf. Will man jedoch zum Beispiel den Fore-Modus anwählen und färbt statt dessen das ganze Bild ein, dann war’s SHIFT-LOCK!
1 rem****** screensave ****** 2 rem 3 rem von: hans haberl 4 rem bahnhofstr. 3 5 rem 8018 grafing 6 rem 10 data32,3,178,166,184,32,201,255,152,32,210,255,165,252,32,210,255,169 20 data210,133,248,162,32,36,250,48,2,162,4,36,250,48,12,177,253,32,0,178 30 data145,253,177,251,56,176,14,120,169,52,133,1,177,251,72,169,54,133 40 data1,88,104,32,0,178,145,251,200,208,29,230,252,230,254,202,208,22,240 50 data26,234,32,3,178,166,184,32,198,255,32,207,255,32,207,255,169,207 60 data208,180,234,169,195,36,144,240,183,32,204,255,165,184,32,195,255 70 data76,42,130,108,248,0,32,219,131,32,35,129,160,0,132,251,132,253,165 80 data185,106,106,133,250,48,8,169,216,133,254,169,4,208,2,169,224,133 90 data252,169,255,133,249,96,234 100 s=0:fori=45455to45608:reada:s=s+a:pokei,a:nexti 110 ifs<>22096thenprint"fehler in data's":end 120 print"ok"
1 rem****** saver ****** 2 rem 3 rem von: hans haberl 4 rem bahnhofstr. 3 5 rem 8018 grafing 6 rem 10 data198,1,169,96,141,123,129,162,2,32,201,255,162,97,160,0,185,159,127 20 data32,210,255,200,202,208,246,169,0,133,253,169,128,133,254,162,64,160 30 data0,177,253,32,210,255,200,208,248,230,254,202,208,243,185,77,198,32 40 data210,255,200,208,247,32,204,255,230,1,96,1,8,13,8,191,7,158,40,50 50 data48,54,51,41,0,0,0,120,169,96,133,252,169,8,133,253,169,0,133,254 60 data169,128,133,255,162,64,32,69,8,32,10,128,169,169,141,123,129,169 70 data96,133,252,169,72,133,253,169,77,133,254,169,198,133,255,162,1,32 80 data69,8,76,123,129,160,0,177,252,145,254,136,208,249,230,253,230,255 90 data202,208,242,96,0,0,0,0,0,0,0,0,0,0 100 poke56,112:clr 110 fori=32605to32767:reada:s=s+a 120 pokei,a:nexti 130 ifs<>21569thenprint"fehler in datas":goto200 140 input"name der neuen version";n$ 150 open15,8,15:open2,8,2,n$+",p,w" 160 gosub170:sys32605:close2:gosub170:close15:goto200 170 input#15,a,b$,c,d:printa;b$;c;d 180 ifa>0thenclose2:close15:goto200 190 return 200 poke56,128:clr:end
10 rem******************************* 20 rem* * 30 rem* laden von hi-eddi-bildern * 40 rem* in basicprogrammen * 50 rem* * 60 rem******************************* 100 input"filename";n$ 110 poke781,8:rem geraeteadresse 120 poke782,0:rem sekundaeradresse 130 sys65466:rem fileparameter setzen 140 poke780,len(n$) 150 poke781,192:poke782,2:rem pointer auf filenamen 160 fori=1tolen(n$):poke703+i,asc(mid$(n$,i)):next:rem filename 170 sys65469:rem namensparameter setzen 180 poke780,0:rem load-flag 190 poke781,0:poke782,224:rem adresse=$e000 200 sys65493:rem load 210 rem grafik einschalten 220 m1=peek(56576):poke56576,m1 and 252:rem vic-adressbereich ab $c000 230 m2=peek(53272):poke53272,8:rem videoram- und grafik-adressen 240 m3=peek(53265):poke53265,m3or32:rem hires einschalten 250 f=16*7+6:rem 16*vordergrundfarbe+hintergrundfarbe 260 fori=49152to50152:pokei,f:next 270 poke198,0:wait198,1:rem auf taste warten 280 poke56576,m1:poke53272,m2:poke53265,m3:rem wieder normalzustand