Super-Hardcopies für Epson-Drucker und Kompatible
Eröffnen Sie sich ganz neue Wege, Grafiken zu Papier zu bringen. Unterschiedliche Größen und unterschiedliche Punktdichten ermöglichen erstmals, extrem kontrastreiche Grafiken zu erzeugen.
Super-Print ist eine universelle Hardcopyroutine für Hi-Res-Grafiken. Sie ist geschrieben für Epson-Drucker und Kompatible sowie alle grafikfähigen Drucker, die sich über ESC-Sequenzen (CHR$(27)) ansteuern lassen. (Listing 1).
Sie unterstützt alle Grafik-Optionen und bietet darüber hinaus noch vier softwaremäßig erzeugte Dichten sowie Ausgabeformate mit sehr hoher Punktdichte (Bild 1, 2). In der Hardcopy ist keine eigene Centronics-Software integriert, sie muß, falls kein Interface vorhanden ist, vorgeladen werden.


Das Menü
1) bis 6) Druckerparameter
Die Auswahl der Druckerparameter erfolgt mit den Zahlentasten (1) bis (6) oder den Tasten Cursor auf/ab. Mit den Tasten Cursor rechts/links können die Parameter verändert werden. Zu den Druckereinstellungen aber später.
P) Print
Mit der (P)-Taste wird der Ausdruck gestartet. Das Drucken kann jederzeit durch Drücken einer beliebigen Taste unterbrochen werden. Der Drucker wird am Anfangund Ende des Druckvorgangs neu initialisiert.
L) Load
Mit (L) kommt man ins Lademenü. Gibt man nur (RETURN) ein, kommt man wieder ins Hauptmenü. Wird ein ($) als Filename eingegeben, so wird das Inhaltsverzeichnis der Diskette gelistet. Nach ($) können die üblichen Spezifikationen folgen (zum Beispiel $:Nam*). Gibt man nun einen Filenamen ein, gefolgt von (RETURN), so erscheint die Frage »Colorram too? (Y/N)«.
Antwortet man nun mit (N), so wird das File direkt in den Bildspeicher geladen.
Mit (Y) liegt die Ladeadresse $400 Byte tiefer, so daß Files, die zusammen mit dem Farb-RAM gespeichert wurden, ebenfalls korrekt geladen werden.
Achtung!! Super-Print lädt alle Programm-Files, also auch Basic-Programme in den Grafik-Speicher. Dann ist natürlich in der Regel nur Bit-Müll auf dem Bildschirm zu sehen.
E) Grafik ein
Durch Drücken der (E)-Taste wird die Grafik eingeschaltet. Anschließend kann mit ® die Grafik invertiert werden. Sie wird dann auch revers gedruckt.
X) Exit
Mit (X) gelangt man ins Basic zurück. Startet man das Programm wieder mit RUN, so wird dabei der Grafikspeicher neu initialisiert. Eine eventuell vorhandene Grafik wird also gelöscht und muß neu geladen werden.
Die Druck-Modi
Super-Print bietet eine Vielzahl von Druckmöglichkeiten, so daß der Umgang am Anfang ein wenig Übung bedarf. Zunächst aber die grundsätzlichen Möglichkeiten, der Schwierigkeit nach geordnet:
6) Sec. Adress
Die Grafik wird generell im Direktmodus zum Drucker geschickt. Da die verschiedenen Interfaces für den Direktmodus unterschiedliche Sekundäradressen benutzen, lassen sich diese Sekundäradressen zwischen 0 und 80 frei einstellen. Bei den meisten Interfacesist eine »1« einzusetzen.
5) Linefeed
Es wird bestimmt, ob Super-Print nach dem CR (Carriage Return = Wagenrücklauf) am Zeilenende auch noch einen Line-Feed (Zeilenvorschub) senden soll.
4) Left Margin
Hier kann der Abstand vom linken Rand angewählt werden. Der eingestellte Rand bleibt auch erhalten, wenn die Grafik über den rechten Blattrand hinausgeht. Der Drucker verschluckt dann den Rest der Zeile, druckt aber trotzdem die Zeilen richtig untereinander, so daß der druckbare Teil des Bildes richtig ausgegeben wird.
1) Size
Es gibt vier verschiedene Ausgabeformate:
Large, Normal, Small und Micro.
In den Modi »Normal« und »Large« beträgt der senkrechte Punktabstand %2 Zoll, also normaler Nadelabstand.
Normal: In der Größe »Normal« beträgt damit die Bildhöhe etwa 7 cm. Ein Bildpunkt im Druckbild entspricht dabei einem Punkt auf dem Bildschirm.
Large: Im »Large«-Format wird das Bild doppelt so groß ausgegeben, also einem Bildschirmpunkt entsprechen vier Punkte auf dem Papier mit normaler Dichte. Die Grafik wird dabei um 90 Grad gedreht.
Small: In der Größe »Small« wird der senkrechte Punktabstand auf % der normalen Höhe reduziert, also %i6 Zoll. Die Höhe eines Bildschirmausdruckes beträgt dann noch zirka 4,5 cm. In diesem Modus überlappen sich die Bildpunkte im Ausdruck schon ein wenig, es entstehen auch bei normaler Dichte vollschwarze Flächen.
Micro: In der Größe »Micro« wird der senkrechte Punkteabstand weiter reduziert auf 1/216 Zoll. Ein kompletter Bildschirmausdruck ist jetzt noch zirka 2,5 cm hoch. In dieser Auflösung verlaufen die Einzelpunkte zu glatten Konturen. Dieser Modus ist ideal für kleine Embleme etc. in Foto-Qualität.
2) Density
Es stehen drei Dichten zur Verfügung.
Single: druckt das Bild in einfacher Dichte aus.
Double: gibt jeden Punkt zweimal aus, und zwar so, daß zwischen dem ersten und zweiten Mal ein kleiner Versatz entsteht. In den Größen »Large« und »Normal« ist dieser Versatz 1/216 senkrecht, in den Größen »Small« und »Micro« beträgt er 1/270 Zoll waagerecht.
Quadruple steht nur in den Größen Normal und Large zur Verfügung. Hier wird jeder Punkt viermal ausgegeben, und zwar zweimal eng nebeneinander und zweimal eng untereinander. In »Quadruple«-Density werden durchgehende Flächen vollschwarz wiedergegeben, es sind keine Lücken mehr zwischen den Bildpunkten vorhanden.
3) Image Mode
Durch die Option »Size« wird die Höhe der Grafik ausgewählt. Dabei wird aber eine Grafik in »Micro« ebenso breit ausgegeben wie eine in »Normal«, das heißt sie wird sehr breit im Verhältnis zur Höhe. Um diesen Effekt auszugleichen, kann man mit dem Image Mode die Punktdichte des Druckers verändern. Es wird die Punktdichte in »Punkte pro Zeile« angegeben, dahinter in Klammern ein Stichwort.
Die Image Modes werden über die Druckeroption »ESC"*"…« an den Drucker gesendet. Dabei stehen sieben Image Modes zur Verfügung:
0) Standard Dichte, 480 Punkte/Zeile
1) Doppelte Dichte, 960 Punkte/Zeile
2) Doppelte Dichte, Doppelte Geschwindigkeit, 960 Punkte/Zeile
3) Dreifache Dichte, 1920 Punkte/Zeile
4) 640 Punkte/Zeile
5) Plotter-Modus, 576 Punkte/Zeile
6) 720 Punkte/Zeile
Falls es sich nicht um einen Epson-Drucker oder Kompatiblen handelt, können die Modi auch etwas anders belegt sein. Um Hardcopies im Bildschirmformat zu erhalten, seien folgende Kombinationen angeraten:
| Size | Image Mode |
|---|---|
| Micro | und Quadruple |
| Small | und Double/Normal Speed |
| Normal | und Plotter |
| Large | und Plotter |
Alle anderen Kombinationen sind natürlich auch möglich. Besondere Aufmerksamkeit erfordert auch der »Plotter«-Mode. Werden Grafiken in den Größen Large und Normal mit dem Image Mode »Plotter« ausgegeben, so ist der Punktabstand senkrecht und waagerecht exakt gleich (Bild 3). Dies ist besonders für den Ausdruck von Platinenvorlagen wichtig.

Es sei noch darauf hingewiesen, daß in den Image Modes »Quadruple« und »double Density/double Speed« von zwei direkt nebeneinanderliegenden Punkten nur der linke gedruckt werden kann.
Tips und Tricks
Lademenü
$ beziehungsweise $0:NAME als Filename ruft die Catalog-Funktion auf. Eingabe des Filenamen lädt ein File in den Grafik-Speicher (unabhängig von Anfangsadresse). Akzeptiert auch Grafik-Files mit vorangestelltem Color-RAM (Abfrage).
Speichern der Änderungen
Super-Print mit RUN starten und gewünschte Parameter einstellen. Anschließend mit X ins Basic zurück und wie ein normales Basic-File mit SAVE »NAME« speichern. Super-Print setzt alle Basic-Pointer so, daß der SAVE-Befehl das Programm vollständig auf die Diskette zurückschreibt.
Grafik-Speicher nicht löschen
Normalerweise wird beim Einsprung in Super-Print der Grafik-Speicher gelöscht. Ist dies nicht erwünscht, folgende Änderung durchführen: Vom Basic aus mit LIST den Programmanfang auflisten,
1986 sys 2064+0
statt der 0 nun eine 3 einfügen, also
1986 sys 2064+3
Nun bleibt der Grafik-Speicher auch beim Neustart erhalten. Natürlich kann diese Änderung mitgespeichert werden.
Druckeranpassung
Nach dem Programmstart meldet sich die »Druckeranpassung« (Listing 2) mit der Aufforderung, eine beschreibbare Diskette mit »Super-Print« einzulegen. Es müssen noch mindestens 13 Blocks auf dieser Diskette frei sein.
Zunächst wird nun die Diskette zum Schreiben vorbereitet. Es werden die aktuellen Parameter von Super-Print ausgelesen. Nun wird die Steuersequenztabelle ausgegeben. Dabei erscheint revers der zugehörige Name der Steuersequenz, entsprechend dem Super-Print-Menü.
Anschließend wird der Escape-Code, in der Regel 27 ausgegeben, dann die Steuercodes, zum Beispiel 42 und 0. Falls nur zwei Byte Steuercode benötigt werden, zum Beispiel ESC + K, muß der dritte den Wert 255 erhalten.
Falls der Drucker einige Auflösungen nicht kennt, sollte jeweils die nächstliegende Punktdichte eingestellt werden. Nach den sieben Grafikmodi wird noch »Höchste mögliche Dichte« abgefragt. Hier muß eine der vorher eingegebenen Sequenzen mit hoher Punktdichte noch einmal eingegeben werden, also Quadruple oder, falls nicht vorhanden (zum Beispiel RX80), Double. Es soll auf jeden Fall die höchste Punktdichte eingestellt werden, die der Drucker beherrscht.
Im Anschluß folgt die Steuersequenz, die vor und nach jedem Druckvorgang den Drucker neu initialisiert. Wird keine Initialisierung gewünscht, kann auch dreimal eine 255 eingegeben werden. Nächste Steuersequenz ist die Einstellung des linken Randes (zum Beispiel 27, 108). Super-Print schickt nach dieser Sequenz jeweils noch ein Byte an den Drucker, das den Wert des aktuellen Randabstandes hat. Letzte Sequenz ist die Einstellung des Zeilenvorschubes in 1/216 Zoll-Schritten. Die Parameter lassen sich jeweils durch Überschreiben ändern.
Wenn alle Sequenzen editiert sind, werden sie noch einmal zur Kontrolle ausgegeben.
Im nächsten Teil lassen sich die übrigen Parameter einstellen:
- Codes für CR und Linefeed
- Geräteadresse des Druckers und
- die Bildschirmfarben des Menüs
Die Änderungen werden direkt in das Programm übernommen, deshalb ist eine Einstellung in der Regel nur einmal erforderlich.
Das Programm funktioniert nicht?
Kein Grund zur Verzweiflung, es gibt viele mögliche Fehlerquellen, gerade beim Betrieb eines Druckers mit Interface.
Super-Print druckt nicht
Haben Sie einen Drucker am User-Port angeschlossen?
Dann wird auf jeden Fall noch ein Centronics-Programm benötigt, Super-Print simuliert keine Schnittstelle. Möglichst ein einfaches Centronics-Programm im Bereich $c000 verwenden, da hier keine Störungen zu erwarten sind.
Benutzen sie ein Interface am seriellen Bus?
Jedes Interface benötigt seine speziellen Modifikationen. Meist wird zum Drucken von Grafik eine besondere Gerätenummer oder Sekundäradresse benötigt (Linear-Kanal).
Haben Sie ein Betriebssystem mit Centronics-Ausgabe im Computer (zum Beispiel Speeddos plus oder ähnliches)?
Hier sollte es keine Probleme mit dem Interface geben. Auch hier zuerst testen, ob der Drucker eine besondere Sekundäradresse benötigt.
Wenn nichts geht, zunächst das Druckerhandbuch aufschlagen und das Programm »Druckeranpassung« laden. Stimmen die Steuersequenzen für Grafik-Modi? Ist die Gerätenummer richtig? Super-Print ist eingestellt für Epson FX80 oder Panasonic-Drucker. Andere Drucker brauchen eventuell andere Steuersequenzen.
Nun wieder Super-Print laden und verschiedene Image-Modes testen. Eventuell nochmals die Sekundäradresse ändern.
Und wenn nur Unsinn gedruckt wird?
Dann liegt der Verdacht nahe, daß die Steuersequenzen falsch sind und der Drucker gar nicht in den Grafik-Modus gebracht wird. Wenn allerdings in der Grafik nur einzelne Bits vertauscht sind, kann es sein, daß ein (Soft- oder Hardware-) Interface eine unzulässige Code-Wandlung vornimmt. Ist eventuell durch Ändern der Sekundäradresse zu beheben (Linearkanal).
(E. Fiedler/ah)PROGRAMM : SUPER-PRINT 0801 1149 ----------------------------------- 0801 : 0E 08 0A 00 9E 20 32 30 AA 0809 : 36 34 AA 30 00 00 00 20 4A 0811 : 70 0D 4C BB 0C 1B 2A 00 D5 0819 : FF 1B 2A 01 FF 1B 2A 02 D6 0821 : FF 1B 2A 03 FF 1B 2A 04 22 0829 : FF 1B 2A 05 FF 1B 2A 06 6F 0831 : FF 1B 2A 03 FF 18 1B 40 56 0839 : FF 1B 6C FF FF 1B 33 FF 86 0841 : FF 0D 0A 04 0F 00 00 00 BB 0849 : 05 0A 00 05 00 00 00 00 F4 0851 : 00 04 FF 00 00 00 00 00 53 0859 : 20 F8 0A AD 47 08 F0 0A BA 0861 : C9 FF F0 03 4C 8B 09 4C A4 0869 : F8 08 A9 19 8D 50 08 A9 C2 0871 : 00 8D 52 08 A9 60 8D 53 48 0879 : 08 A9 00 8D 4E 08 A9 28 24 0881 : 8D 51 08 AD 52 08 85 1B 20 0889 : AD 53 08 85 1C 20 53 0B B9 0891 : A9 40 20 D2 FF A9 01 20 4E 0899 : D2 FF A2 00 38 8A 6A B0 F6 08A1 : 24 AA A0 00 8C 4D 08 8A AB 08A9 : 31 1B C9 00 F0 09 B9 E5 E4 08B1 : 0E 0D 4D 08 8D 4D 08 C8 8F 08B9 : C0 08 D0 EB AD 4D 08 20 D4 08C1 : D2 FF 18 90 D8 A5 1B 18 02 08C9 : 69 08 85 1B 90 02 E6 1C E8 08D1 : CE 51 08 D0 C5 20 E4 FF 55 08D9 : F0 03 4C 29 0B 20 64 0B DC 08E1 : 90 9C A5 1B 8D 52 08 A5 63 08E9 : 1C 8D 53 08 CE 50 08 D0 D3 08F1 : 03 4C 29 0B 4C 7A 08 A9 D2 08F9 : 7E 8D 53 08 A9 00 8D 52 89 0901 : 08 8D 4F 08 A9 28 8D 50 57 0909 : 08 A9 00 8D 4E 08 A9 19 96 0911 : 8D 51 08 AD 53 08 85 1C C2 0919 : AD 52 08 85 1B 20 53 0B B8 0921 : A9 90 20 D2 FF A9 01 20 06 0929 : D2 FF A2 07 8A A8 B1 1B 6F 0931 : 2C 4F 08 30 04 4A 4A 4A 5D 0939 : 4A 29 0F A8 B9 ED 0E 20 74 0941 : D2 FF 20 D2 FF CA 10 E4 D6 0949 : A5 1B 38 E9 40 85 1B A5 AF 0951 : 1C E9 01 85 1C CE 51 08 E0 0959 : D0 D0 20 E4 FF F0 03 4C 62 0961 : 29 0B 20 64 0B 90 A7 A9 CC 0969 : FF 4D 4F 08 8D 4F 08 D0 F9 0971 : 16 A9 08 18 6D 52 08 8D 06 0979 : 52 08 90 03 EE 53 08 CE 9B 0981 : 50 08 D0 03 4C 29 0B 4C 3D 0989 : 0A 09 A9 19 8D 50 08 A9 74 0991 : 00 8D 52 08 A9 60 8D 53 68 0999 : 08 A9 00 8D 4F 08 A9 28 54 09A1 : 8D 51 08 AD 52 08 85 1B 40 09A9 : AD 53 08 85 1C 20 53 0B D9 09B1 : A9 40 20 D2 FF A9 01 20 6E 09B9 : D2 FF A2 00 38 8A 6A B0 16 09C1 : 33 AA A0 00 8C 4D 08 8C DE 09C9 : 58 08 A9 80 8D 54 08 AD 97 09D1 : 47 08 C9 02 D0 03 4C 81 28 09D9 : 0A AD 4F 08 C9 02 F0 0F 1D 09E1 : C9 01 F0 03 4C 5C 0A 4E 34 09E9 : 54 08 A0 02 4C 5C 0A A0 BB 09F1 : 01 4C 5C 0A A5 1B 18 69 D7 09F9 : 08 85 1B 90 02 E6 1C CE 02 0A01 : 51 08 F0 03 4C BB 09 20 FA 0A09 : E4 FF F0 03 4C 29 0B AD 1F 0A11 : 48 08 F0 10 EE 4E 08 AD 78 0A19 : 4E 08 C9 01 D0 06 20 87 CB 0A21 : 0B 4C 9F 09 A9 00 8D 4E C9 0A29 : 08 EE 4F 08 AD 4F 08 C9 86 0A31 : 03 F0 06 20 AC 0B 4C 9F C6 0A39 : 09 AD 47 08 C9 02 D0 03 E2 0A41 : 4C D2 0A 20 AF 0B A5 1B 9D 0A49 : 8D 52 08 A5 1C 8D 53 08 42 0A51 : CE 50 08 D0 03 4C 29 0B B1 0A59 : 4C 9A 09 8A 31 1B F0 09 48 0A61 : AD 54 08 0D 4D 08 8D 4D C2 0A69 : 08 4E 54 08 4E 54 08 C8 E8 0A71 : C8 C8 C0 08 30 E5 AD 4D 52 0A79 : 08 20 D2 FF 18 4C BE 09 37 0A81 : A5 1B 85 1D A5 1C 85 1E 46 0A89 : AC 4F 08 8A 31 1D F0 09 02 0A91 : AD 54 08 0D 4D 08 8D 4D F2 0A99 : 08 C8 C8 C8 AD 50 08 C9 62 0AA1 : 01 D0 09 4E 54 08 C0 08 AF 0AA9 : 30 E1 10 1B C0 08 30 12 63 0AB1 : 98 38 E9 08 A8 18 A5 1D FD 0AB9 : 69 40 85 1D A5 1E 69 01 3A 0AC1 : 85 1E 4E 54 08 90 C4 AD E7 0AC9 : 4D 08 20 D2 FF 18 4C BE EC 0AD1 : 09 20 B2 0B 38 A5 1D E9 F1 0AD9 : 38 8D 52 08 A5 1E E9 01 62 0AE1 : 8D 53 08 CE 50 08 CE 50 15 0AE9 : 08 CE 50 08 AD 50 08 10 0B 0AF1 : 03 4C 29 0B 4C 9A 09 20 C4 0AF9 : B5 0D A9 02 8D 20 D0 A9 50 0B01 : 04 AE 44 08 AC 4C 08 20 FC 0B09 : BA FF A9 00 20 BD FF 20 5D 0B11 : C0 FF A2 04 20 C9 FF A9 9E 0B19 : 08 20 56 0B A9 09 20 56 38 0B21 : 0B AD 4A 08 20 D2 FF 60 F0 0B29 : A2 00 A9 08 20 56 0B A2 5D 0B31 : 03 20 C9 FF 20 CC FF A9 72 0B39 : 04 20 C3 FF 4C BB 0C 85 1C 0B41 : 1D 86 1E A0 00 B1 1D C9 D3 0B49 : FF F0 06 20 D2 FF C8 D0 38 0B51 : F4 60 AD 49 08 0A 0A A8 54 0B59 : A9 16 85 1D A9 08 85 1E 40 0B61 : 4C 46 0B AD 48 08 F0 4F 70 0B69 : EE 4E 08 2C 48 08 30 0C A4 0B71 : AD 4E 08 C9 01 D0 3D 20 4C 0B79 : AC 0B 18 60 AE 4E 08 8A 50 0B81 : 29 01 C9 01 D0 18 20 A9 5F 0B89 : 0B A9 07 20 56 0B A9 01 95 0B91 : 20 D2 FF A9 00 20 D2 FF 9C 0B99 : A9 00 20 D2 FF 60 8A C9 65 0BA1 : 02 D0 11 20 AC 0B 18 60 98 0BA9 : A2 00 2C A2 01 2C A2 0E C3 0BB1 : 2C A2 16 2C A2 17 2C A2 12 0BB9 : 18 AD 3E 08 20 D2 FF AD 2C 0BC1 : 3F 08 C9 FF F0 0D 20 D2 14 0BC9 : FF AD 40 08 C9 FF F0 03 16 0BD1 : 20 D2 FF 8A 20 D2 FF 2C 9C 0BD9 : 4B 08 10 06 AD 43 08 20 43 0BE1 : D2 FF AD 42 08 20 D2 FF 33 0BE9 : A4 6B 38 60 20 E0 0D AD F6 0BF1 : 45 08 8D 20 D0 8D 21 D0 41 0BF9 : AD 46 08 8D 86 02 A9 00 9C 0C01 : 8D 11 D0 20 0A 0C 4C CD 1D 0C09 : 0D A9 FD A2 0E 20 40 0B B7 0C11 : A9 05 8D 54 08 20 1E 0C 3D 0C19 : CE 54 08 D0 F8 AD 54 08 8C 0C21 : 0A AA BD 71 0F 85 1D BD 2B 0C29 : 72 0F 85 1E AD 54 08 20 26 0C31 : B0 0C 20 E0 0D 20 44 0B 04 0C39 : 20 8F 0C AE 54 08 BD 47 05 0C41 : 08 AC 56 08 F0 3A D1 1D 98 0C49 : F0 03 88 D0 F9 98 8D 57 40 0C51 : 08 0A A8 B1 1B 85 1D C8 A2 0C59 : B1 1B 85 1E 20 44 0B AD 69 0C61 : 55 08 20 B0 0C A9 E3 A2 BB 0C69 : 0F 20 40 0B AD 54 08 20 D8 0C71 : B0 0C A9 F4 A2 0F 20 40 D4 0C79 : 0B AD 54 08 8D 55 08 60 D5 0C81 : AA A9 00 20 CD BD A9 20 B6 0C89 : 20 D2 FF 4C 60 0C AE 54 66 0C91 : 08 BD 0F 10 8D 56 08 8A FE 0C99 : 0A AA BD 05 10 85 1B BD 1D 0CA1 : 06 10 85 1C BD 15 10 85 64 0CA9 : 1D BD 16 10 85 1E 60 0A 0B 0CB1 : 18 69 04 AA A0 04 18 4C F7 0CB9 : F0 FF A9 49 A2 11 85 2D 5F 0CC1 : 86 2E 20 ED 0B 20 E4 FF 69 0CC9 : F0 FB C9 58 F0 2E C9 45 66 0CD1 : F0 35 C9 4C F0 2E C9 50 A0 0CD9 : F0 27 C9 9D F0 46 C9 1D 25 0CE1 : F0 5F C9 91 F0 24 C9 11 9F 0CE9 : F0 2D 38 E9 31 30 D6 C9 3F 0CF1 : 06 10 D2 8D 54 08 20 1E A8 0CF9 : 0C 4C C6 0C A9 93 4C D2 6C 0D01 : FF 4C 59 08 4C E8 0D 4C 57 0D09 : 8C 0D AD 54 08 C9 00 F0 C2 0D11 : B4 CE 54 08 4C F7 0C AD 53 0D19 : 54 08 C9 05 F0 F1 EE 54 87 0D21 : 08 4C F7 0C AD 56 08 F0 5E 0D29 : 0A AD 57 08 F0 97 CE 57 96 0D31 : 08 10 1B AE 54 08 BD 47 E9 0D39 : 08 F0 D4 DE 47 08 4C F7 A0 0D41 : 0C AD 56 08 F0 19 CD 57 78 0D49 : 08 F0 C4 EE 57 08 20 8F 2E 0D51 : 0C AC 57 08 B1 1D AE 54 F2 0D59 : 08 9D 47 08 4C F7 0C AE 15 0D61 : 54 08 BD 47 08 C9 50 F0 04 0D69 : A6 FE 47 08 4C F7 0C A0 57 0D71 : 00 84 1B A9 5C 85 1C A2 57 0D79 : 24 A9 01 91 1B C8 D0 FB 18 0D81 : E0 21 D0 01 98 E6 1C CA 0D 0D89 : D0 F1 60 20 B5 0D 20 E4 7C 0D91 : FF F0 FB C9 52 F0 03 4C 92 0D99 : BB 0C A9 60 85 1C A0 00 8C 0DA1 : 84 1B A2 20 B1 1B 49 FF 79 0DA9 : 91 1B C8 D0 F7 E6 1C CA D1 0DB1 : D0 F2 F0 DA 20 E0 0D A9 22 0DB9 : 3B 8D 11 D0 AD 18 D0 29 4A 0DC1 : 07 09 78 8D 18 D0 A9 56 78 0DC9 : 8D 00 DD 60 20 E0 0D A9 6A 0DD1 : 1B 8D 11 D0 A9 15 8D 18 BB 0DD9 : D0 A9 97 8D 00 DD 60 AD E1 0DE1 : 12 D0 C9 FF D0 F9 60 A9 7F 0DE9 : FB A2 10 20 40 0B 20 AD 76 0DF1 : 0E A9 2B A2 11 20 40 0B 1C 0DF9 : A5 1B F0 4D A2 49 A0 11 2B 0E01 : 20 BD FF A6 1B A9 24 DD 20 0E09 : 48 11 F0 40 CA D0 F8 A9 88 0E11 : 00 A2 08 A0 00 20 BA FF 64 0E19 : A9 2F A2 11 20 40 0B A9 A8 0E21 : 00 85 CC 20 E4 FF F0 FB 25 0E29 : 85 CC C9 4E F0 07 C9 59 72 0E31 : D0 17 A9 5C 2C A9 60 8D 2F 0E39 : 4D 08 20 70 0D AC 4D 08 1C 0E41 : A2 00 20 B5 0D 8A 20 D5 F3 0E49 : FF 4C BB 0C A9 08 85 BA 45 0E51 : A9 60 85 B9 20 D5 F3 A5 8F 0E59 : BA 20 B4 FF A5 B9 20 96 26 0E61 : FF A9 00 85 90 A0 03 84 09 0E69 : 69 20 A5 FF 85 6B A4 90 B3 0E71 : D0 2F 20 A5 FF A4 90 D0 9F 0E79 : 28 A4 69 88 D0 E9 A6 6B 2C 0E81 : 20 CD BD A9 20 20 D2 FF 7B 0E89 : 20 A5 FF A6 90 D0 12 AA 7E 0E91 : F0 06 20 D2 FF 4C 89 0E 8B 0E99 : A9 0D 20 D2 FF A0 02 D0 DA 0EA1 : C6 20 42 F6 20 E4 FF F0 F2 0EA9 : FB 4C E8 0D A9 00 85 1B 8D 0EB1 : 85 CC 20 E4 FF F0 FB C9 4C 0EB9 : 14 F0 18 C9 0D F0 22 C9 F9 0EC1 : 00 30 EF C9 1F 30 EB A6 7F 0EC9 : 1B 9D 49 11 E6 1B 20 D2 95 0ED1 : FF D0 DF A6 1B F0 DB C6 3B 0ED9 : 1B 78 20 D2 FF 58 4C B3 EE 0EE1 : 0E 85 CC 60 80 40 20 10 9C 0EE9 : 08 04 02 01 00 03 0C 0F FB 0EF1 : 30 33 3C 3F C0 C3 CC CF AF 0EF9 : F0 F3 FC FF 93 11 20 20 A4 0F01 : 20 20 2A 2A 2A 2A 20 53 1C 0F09 : 55 50 45 52 20 50 52 49 82 0F11 : 4E 54 20 33 2E 30 20 2A 31 0F19 : 2A 2A 2A 0D 11 11 11 11 85 0F21 : 11 11 11 11 11 11 11 11 21 0F29 : 11 11 20 20 20 20 50 29 66 0F31 : 20 50 52 49 4E 54 0D 0D 0D 0F39 : 20 20 20 20 4C 29 20 4C 9D 0F41 : 4F 41 44 0D 0D 20 20 20 76 0F49 : 20 45 29 20 47 52 41 46 F3 0F51 : 49 4B 20 45 49 4E 20 2F D6 0F59 : 20 52 45 56 45 52 53 20 33 0F61 : 3C 52 3E 0D 0D 20 20 20 8A 0F69 : 20 58 29 20 45 4E 44 FF DC 0F71 : 7D 0F 8E 0F 9F 0F B0 0F 4F 0F79 : C1 0F D2 0F 31 29 20 53 DC 0F81 : 49 5A 45 20 20 20 20 20 11 0F89 : 20 20 3A 20 FF 32 29 20 C2 0F91 : 44 45 4E 53 49 54 59 20 53 0F99 : 20 20 20 3A 20 FF 33 29 3A 0FA1 : 20 49 4D 41 47 45 20 4D 9B 0FA9 : 4F 44 45 20 3A 20 FF 34 7D 0FB1 : 29 20 4C 45 46 54 20 4D C8 0FB9 : 41 52 47 49 4E 3A 20 FF 56 0FC1 : 35 29 20 4C 49 4E 45 46 C5 0FC9 : 45 45 44 20 20 20 3A 20 F2 0FD1 : FF 36 29 20 53 45 43 2E 03 0FD9 : 20 41 44 52 45 53 53 3A A6 0FE1 : 20 FF 11 20 20 20 20 20 0D 0FE9 : 20 20 20 20 20 20 20 20 E9 0FF1 : 20 20 FF 11 A3 A3 A3 A3 70 0FF9 : A3 A3 A3 A3 A3 A3 A3 A3 F8 1001 : A3 A3 A3 FF 2F 10 52 10 3B 1009 : 73 10 00 00 EF 10 03 02 14 1011 : 06 00 01 00 1F 10 23 10 77 1019 : 26 10 00 00 2D 10 02 01 A5 1021 : 00 FF 00 01 FF 00 01 02 49 1029 : 03 04 05 06 FF 00 37 10 2D 1031 : 3D 10 44 10 4B 10 4D 49 86 1039 : 4B 52 4F FF 53 4D 41 4C BE 1041 : 4C 20 FF 4E 4F 52 4D 41 A6 1049 : 4C FF 4C 41 52 47 45 20 85 1051 : FF 58 10 5F 10 69 10 53 A0 1059 : 49 4E 47 4C 45 FF 44 4F 29 1061 : 55 42 4C 45 20 20 20 FF 17 1069 : 51 55 41 44 52 55 50 4C E7 1071 : 45 FF 81 10 90 10 A0 10 44 1079 : B1 10 C2 10 D3 10 E1 10 4A 1081 : 34 38 30 20 28 53 54 41 D2 1089 : 4E 44 41 52 44 29 FF 39 94 1091 : 36 30 20 28 44 4F 55 42 85 1099 : 4C 45 29 20 20 20 FF 39 4C 10A1 : 36 30 20 28 44 4F 55 42 95 10A9 : 4C 45 2F 44 53 29 20 FF EB 10B1 : 31 39 32 30 20 28 51 55 45 10B9 : 41 44 52 55 50 4C 45 29 2A 10C1 : FF 36 34 30 20 50 4F 49 43 10C9 : 4E 54 20 20 20 20 20 20 11 10D1 : 20 FF 35 31 32 20 28 50 CA 10D9 : 4C 4F 54 54 45 52 29 FF F8 10E1 : 37 32 30 20 50 4F 49 4E 83 10E9 : 54 20 20 20 20 FF F3 10 4B 10F1 : F7 10 59 45 53 FF 4E 4F FC 10F9 : 20 FF 93 11 20 20 20 20 E4 1101 : 20 2A 2A 2A 2A 2A 20 4C 13 1109 : 4F 41 44 20 50 49 43 54 13 1111 : 55 52 45 20 2A 2A 2A 2A D6 1119 : 2A 0D 0D 0D 0D 0D 20 20 A9 1121 : 20 20 4E 41 4D 45 20 3A 01 1129 : 20 FF 20 0D 0D FF 11 20 48 1131 : 20 20 20 43 4F 4C 4F 52 0B 1139 : 52 41 4D 20 54 4F 4F 20 C0 1141 : 3F 20 3C 59 2F 4E 3E FF 29
10 rem ******************************** 11 rem * * 12 rem * super-print-editor fuer * 13 rem * * 14 rem * super-print v 3.0 * 15 rem * * 16 rem * 11.2.1986 * 17 rem * * 18 rem * eckehard fiedler * 19 rem * adalbertsteinweg 74 * 20 rem * 5100 aachen * 21 rem * 0241/500303 * 22 rem * * 23 rem ******************************** 24 : 25 : 90 dim w(50):wm=49 100 print chr$(147) 110 print tab(5)"**** super-print editor ****" 120 print:print:print:print:print 130 print tab(5)"bitte diskette einlegen und" 140 print:print 150 print tab(7)"schreibschutz entfernen" 160 print:print 180 print tab(9)"taste druecken > <" chr$(157) chr$(157); 190 poke 204,0 200 geta$:ifa$=""then 200 201 : 202 : 203 : rem zwischenfile loeschen 204 : 205 : 210 poke 204,1:print" " 220 print:print 230 open 15,8,15,"i" 240 nn$ = chr$(21)+"super-print" :rem name fuer zwischenfile 250 print#15,"s0:"nn$ :rem ev. altes zwischenfile 255 : 260 gosub 50000 :rem loeschen 270 if m1<>1then 60000 :rem abbruch 290 : 291 : 292 : rem alte werte auslesen 293 : 294 : 300 open 3,8,3,"super-print,p,r" 310 gosub 50000 :rem fehlermeldung holen 311 print tab(5)m2$ 312 if m1<>0then 60000 318 : 319 : 320 fori=1to23 325 get#3,a$:if st<>0then 60000 :rem abbruch 330 next i 340 : 341 : 350 for i=1 to wm :rem alte werte einlesen 360 get#3,w$: if st<>0 then 60000 :rem abbruch 370 w(i)=0:if w$<>"" thenw(i)=asc(w$) 380 next i 390 close 3 400 : 401 : 402 : rem werte editieren 403 : 404 : 407 restore: poke 198,0 409 : 410 sm=10:for ea=0tosm :rem schleife drucker-codes <--- 411 : 412 : 420 print chr$(147):print 430 print tab(6)"bitte steuersequenzen fuer":print 440 print tab(10)"drucker eingeben :":print 441 print tab(2)"(fuer 2-byte-befehle 3. wert 255!)" 442 print:print:print 445 print tab(2)"steuerbefehl :":print 449 : 450 read o$ 451 data 480 punkte/zeile (standard) 452 data 960 punkte/zeile (double) 453 data 960 punkte/zeile double speed 454 data 1920 punkte/zeile (quadruple) 455 data 640 punkte/zeile 456 data 512 punkte/zeile (plotter) 457 data 720 punkte/zeile 458 data hoechste moegliche dichte 459 data drucker initialisieren 460 data linken rand einstellen 461 data zeilenvorschub n/216 462 : 463 print tab(2)chr$(18)"*** "o$" ***" 464 print:print:print 465 : 466 : 470 a=4*ea+1 480 b=4*ea+2 490 c=4*ea+3 500 : 510 : 520 print tab(26)w(a);chr$(145) 530 input " 1) escape-code : ";w(a) 535 : 540 print tab(26)w(b);chr$(145) 550 input " 2) erster steuercode : ";w(b) 555 : 560 print tab(26)w(c);chr$(145) 570 input " 3) zweiter steuercode: ";w(c) 575 : 576 : 580 next ea :rem schleife drucker-codes ---> 581 : 582 : 583 : rem drucker-tabelle ok ? 584 : 585 : 590 printchr$(147):restore :rem werte darstellen 591 print 592 : 593 for i=0tosm 594 read a$ 595 print a$" :" 596 print tab(24);chr$(18);w(4*i+1);w(4*i+2);w(4*i+3) 597 nexti 598 : 599 printchr$(19); 600 print tab(4)"steuercodes ok ? [j/n] > <"chr$(157)chr$(157); 610 poke 204,0 620 get a$:ifa$=""then 620 625 poke 204,1 630 ifa$="n"then 400 640 ifa$<>"j"and a$<>"y"then 610 690 : 691 : 692 : rem rest einstellen 693 : 694 : 700 print chr$(147) 705 print:print 710 print tab(5)"**** sonstige parameter ****" 715 print:print:print 716 p0=45 718 : 719 : 720 print tab(25);w(p0);chr$(145) 730 input " carriage return :";w(p0) 735 print 740 print tab(25);w(p0+1);chr$(145) 750 input " linefeed character :";w(p0+1) 755 print 760 print tab(25);w(p0+2);chr$(145) 770 input " printer-geraetenummer:";w(p0+2) 775 print 780 print tab(25);w(p0+3);chr$(145) 790 input " hintergrund-farbe :";w(p0+3) 795 print 800 print tab(25);w(p0+4);chr$(145) 810 input " text-farbe :";w(p0+4) 812 print:print 815 : 816 : 817 : rem parameter ok? 818 : 819 : 820 print " parameter ok ? [j/n/^] > <"chr$(157)chr$(157); 825 : 830 poke 204,0 840 get a$:ifa$=""then 840 850 poke 204,1 855 : 860 if a$="n"then 700 865 if a$="^"then 400 870 if a$<>"j"and a$<>"y"then 830 875 : 876 : 877 : rem abspeichern ? 878 : 879 : 880 print chr$(147) 885 print:print:print:print 890 print tab(5)"abspeichern ? [j/n] > <"chr$(157)chr$(157); 895 : 900 poke 204,0 910 get a$:ifa$=""then 910 920 poke 204,1 925 : 930 ifa$="n"then end 940 ifa$<>"j"and a$<>"y"then 900 951 : 952 : 953 : rem super-print-file aendern 954 : 955 : 1000 printchr$(147) 1005 print:print:print:print 1010 printtab(10)"working..."chr$(191)chr$(157); 1020 poke204,0 1031 : 1032 : rem files oeffnen 1033 : 1100 print#15,"i" 1110 open 3,8,3,"super-print,p,r" :rem lesefile 1115 nm$ = nn$+",p,w" 1120 open 4,8,4,nm$ :rem schreibfile 1130 for i=1to23 :rem ersten 23 bytes uebernehmen 1135 get#3,a$:if a$=""then a$=chr$(0) 1140 if st<>0 then 60000 :rem abbruch 1150 print#4,a$; 1160 next i 1161 : 1162 : rem werte einfuegen 1163 : 1170 for i=1towm :rem alte werte ignorieren 1175 get#3,a$:ifst<>0 then 60000 :rem abbruch 1180 next i 1181 : 1182 : rem neue werte einfuegen 1183 : 1190 for i=1towm 1195 print#4,chr$(w(i)); 1196 ifst<>0then 60000 :rem abbruch 1200 next i 1201 : 1202 : rem rest uebernehmen 1203 : 1210 j=0:for i=0to1 :rem endlosschleife 1215 : 1220 get#3,a$ 1221 : 1225 ifa$=""then a$=chr$(0) 1230 if st<>0 then j=1 :rem file-ende ?? 1235 : 1240 print#4,a$; :rem wert schreiben 1245 i=j: next i 1246 : 1247 gosub 50000:if m1<>0 then 60000 1250 close 4: close 3 1255 : 1256 : 1257 : rem altes file ersetzen 1258 : 1259 : 1260 print#15,"i" 1270 print#15,"s0:super-print" :rem altes loeschen 1275 print#15,"i" 1280 print#15,"c0:super-print="nn$ :rem neues auf alten platz 1290 gosub 50000 1295 print#15,"i" 1297 : 1298 : 1300 poke204,1:print" " 1310 print:print 1315 print tab(5)m2$,m3 :rem fehlermeldung ? 1317 : 1318 : 1320 print#15,"s0:"nn$ :rem zwischenfile loeschen 1330 gosub 50000 1335 print#15,"i" :rem floppy initialisieren 1337 : 1340 if m1=1then print tab(5)"ok":goto1400 1350 print tab(5) m2$ 1400 close 15 :rem ende 1500 end 49000 :rem ------------------------------------------------ 49001 : 49002 : 49003 : rem fehlermeldung von floppy lesen 49004 : 49005 : 50000 input#15,m1,m2$,m3,m4 : return 59000 :rem ------------------------------------------------ 59001 : 59002 : 59003 : rem abbruch bei diskettenfehler 59004 : 59005 : 60000 print:print"diskettenfehler !!":print 60010 gosub 50000: print m2$ 60020 close 3:close 4: close 15:end