80-Bus Journal |
Juni 1983 · Ausgabe 6 |
1AB8 0D 17 0C 16 0C 16 0C 16 5C 1AC0 0C 16 0B 15 0B 15 0B 15 5C 1AC8 0B 15 0A 14 0A 14 0A 14 5C 1AD0 0A 14 09 13 09 13 09 12 5B 1AD8 09 12 08 11 08 11 08 10 57 1AE0 08 10 07 0F 07 0F 07 0E 53 1AE8 07 0E 06 0D 06 0D 06 0C 4F 1AF0 06 0C 05 0B 05 0B 05 0A 4B 1AF8 05 0A 05 0A 05 0A 04 09 4C 1B00 04 09 04 09 04 09 04 09 4F 1B08 04 08 04 08 04 08 04 08 53 1B10 03 08 02 08 01 07 00 07 4F 1B18 00 08 01 09 01 0A 02 0B 5D 1B20 02 0C 03 0D 03 0E 03 0D 7A 1B28 04 0C 04 0B 05 0A 05 09 7F 1B30 05 0A 05 09 04 09 03 09 81 1B38 02 08 02 07 01 07 00 06 74 1B40 00 06 00 08 00 0A 02 0C 81 1B48 04 0E 06 10 08 12 0A 14 C3 1B50 0A 16 08 14 06 12 04 10 D3 1B58 02 0E 04 10 06 12 08 14 CB 1B60 0A 16 0C 14 0D 13 0D 13 FB 1B68 0D 13 0D 13 0D 13 0D 13 03 1B70 0D 13 0D 13 0D 13 0D 13 0B 1B78 0D 13 0D 13 0D 13 0D 13 13 1B80 0D 13 0D 11 0D 13 0D 13 19 1B88 0D 13 0D 13 0D 13 0D 13 23 1B90 0D 13 0D 13 0D 13 0D 13 2B 1B98 0D 13 0D 13 0D 13 0F 13 35 1BA0 0D 13 0D 13 0D 13 0D 13 3B 1BA8 0D 13 0D 13 0D 13 0D 13 43 1BB0 0D 13 0D 13 0D 13 0D 13 4B 1BB8 0D 13 0D 13 0D 13 0D 13 53 1BC0 0D 13 0D 11 0D 13 0D 13 59 1BC8 0D 13 0D 13 0D 13 0D 13 63 1BD0 0D 13 0D 13 0D 13 0D 13 6B 1BD8 0D 13 0D 13 0D 13 0D 13 73 1BE0 0D 13 0F 13 0D 13 0F 13 7F 1BE8 0D 13 0F 13 0D 13 0F 13 87 1BF0 0D 13 0F 13 0D 13 0F 13 8F 1BF8 0D 13 0D 13 0D 13 0D 13 93 1C00 0D 13 0D 13 0D 13 0D 13 9C 1C08 0D 13 0D 13 0D 13 0D 13 A4 1C10 0D 13 0D 13 0D 13 0D 13 AC 1C18 0D 13 0D 13 0D 13 0D 13 B4 1C20 0D 13 0F 13 0D 13 0D 13 BE 1C28 0D 13 0D 13 0D 13 0D 13 C4 1C30 0D 13 0D 13 0D 13 0D 13 CC 1C38 0D 13 0D 13 0D 13 0D 13 D4
1C40 0D 13 0D 13 0D 13 0D 13 DC 1C48 0D 13 0C 12 0B 12 0A 12 DB 1C50 0A 12 0A 12 0A 12 0A 12 DC 1C58 0A 12 0A 12 0A 12 0A 12 E4 1C60 0A 12 0A 12 0A 12 0A 12 EC 1C68 0A 12 0A 12 0A 12 0A 12 F4 1C70 0A 12 0A 12 0A 12 0A 12 FC 1C78 0A 12 0A 12 0A 12 0A 12 04 1C80 0A 12 0A 12 0A 12 0A 12 0C 1C88 0A 12 0A 12 0A 12 0A 12 14 1C90 0A 12 0A 12 0A 12 0A 12 1C 1C98 0A 12 0A 12 0A 12 0A 12 24 1CA0 0A 12 0A 12 0A 12 0B 13 2E 1CA8 0B 13 0C 14 0C 14 0D 16 45 1CB0 0E 18 0F 1A 10 1C 12 1E 77 1CB8 14 20 16 22 18 24 1A 26 BC 1CC0 1C 28 1E 2A 20 2C 22 2E 04 1CC8 24 2F 25 2F 24 2E 23 2D 2D 1CD0 22 2C 21 2B 20 2A 1F 29 18 1CD8 1E 28 1D 27 1C 26 1B 25 00 1CE0 1A 24 19 23 18 22 17 21 E8 1CE8 16 20 15 1F 14 1E 13 1D D0 1CF0 12 1C 12 1C 12 1C 12 1C C4 1CF8 12 1C 11 1B 11 1B 10 1A C4 1D00 10 1A 0F 19 0E 19 0D 18 BB 1D08 0C 18 0B 17 0A 17 09 17 AC 1D10 09 17 07 15 05 13 16 1E B5 1D18 0C 0F 25 10 12 21 0E 0C D2 1D20 2D 12 32 14 08 48 49 47 A2 1D28 48 20 53 43 4F 52 45 3A 63 1D30 20 30 30 30 30 20 42 59 E8 1D38 20 4E 4F 42 4F 44 59 20 60 1D40 20 20 20 20 20 4C 41 53 DD 1D48 54 20 53 43 4F 52 45 3A 8F 1D50 20 30 30 30 30 30 30 30 DD 1D58 30 20 73 65 63 20 20 20 60 1D60 20 20 20 20 20 20 20 20 7D 1D68 20 20 20 30 30 30 20 6B 00 1D70 6D 2F 68 20 20 20 20 20 31 1D78 20 20 20 20 20 20 20 30 A5 1D80 30 30 30 20 6D 31 38 30 53 1D88 30 30 30 30 30 39 39 39 40
Hier noch etwas Interessantes für die Leser, die einen EPSON MX 80 o. MX 80F/T haben:
Um Ihrem Drucker die wohl gepriesene Punktgrafik zu entlocken, bedarf es nicht viel. Um genau zu sein, benötigen Sie nur 3 Eproms des Types 2716, in welchen eine Programmerweiterung für den 8049 (Drucker-CPU) steht inkl. des Zeichensatzes des 2332. Nach Entfernen eines Jumpers und Ausbau des Proms 2332 können die 3 Eproms eingesetzt werden. Es stehen nun 2 weitere Befehle zur Verfügung:
1.ESC „K“ m n
2.ESC „L“ m n
Dies sind nun Ihre Grafik-Befehle, wobei der Drucker durch den ersten Befehl veranlaßt wird, die ihm folgenden Bytes im Normal Density Mode auszudrucken. Technisch umschrieben heißt das, daß eine Abbildung bis maximal 480 dots/line möglich ist.Wem dies nicht genug ist, der sollte es mit der zweiten Befehlsform versuchen. Dieser Befehl schaltet den Dual Density Mode ein und besagt, daß bis zu 960 dots/line gedruckt werden können. Rein rechnerisch würde der Drucker es überhaupt nicht schaffen, diese Anzahl von Punkten in eine Zeile zu bekommen. Aber wie der Name des Befehls schon verlauten läßt, benutzt hier der Drucker eine andere Schreib- bzw. Druckdichte. Die einzelnen Punkte werden nicht nebeneinander gedruckt, so daß noch ein wenig Platz zwischen den Punkten bleibt, sondern sie werden so gedruckt, daß sie einander überlappen. Das erste Druck-Verfahren wird mit Normal Density, das zweite Verfahren mit Dual Density bezeichnet. Beiden Befehlen gleich sind die Variablen m,n. Diese Werte geben der Drucker-CPU eine Information darüber, wieviele von den nun folgenden Bytes sie als Grafik interpretieren soll, um dann wieder auf ASCII-Code umzuschalten. Eine genaue Berechnung dieser Werte ist sehr wichtig, da der Drucker im Grafik-Mode keine Steuerzeichen (mit Ausnahme von Reset) mehr erkennt, sondern diese als binären Punktcode behandelt, und dies macht er so lange, bis sein interner Grafik-Zähler auf 0 ist oder ein Reset erfolgte. Will man nun nach einer bestimmten Anzahl von Bytes aus dem Grafik Mode aussteigen, um so z.B. ein CR und LF für diese Zeile ausführen zu lassen, so müssen die Werte m,n nur für die Anzahl der „Grafik“-Bytes pro Zeile berechnet sein, wobei sich die Werte m,n wie folgt berechnen:
m= amount of DATA – 256
n= Int(amount of DATA/256)
Ein Beispiel: Anzahl der zu übertragenen Zeichen für den Grafik Mode pro Zeile soll z.B. 300 sein. Dann berechnen sich m,n wie folgt: m = 300 – 256 = 44 (Decimal) = 2C (HEX); n = int(300/256) 1. Die Wertangaben für m,n müssen immer Hexadezimal sein. Sollten Sie nun richtig gerechnet haben, so müßte es Ihnen jetzt möglich sein, nach Beendigung des Grafik Modes die Steuerzeichen für CR und LF an den Drucker zu senden und diese zur Ausführung zu bringen. Nach meinen Erfahrungen ist es aber noch ein weiter Weg bis zu dem Zeitpunkt, an dem auch ein LF und CR nach einer Grafikzeile vom Drucker ausgeführt wird. Aber nicht den Kopf hängen lassen, es gibt auch hier noch ein paar Hilfsmittel (Siehe ein paar Zeilen tiefer). Sollte dies zuletzt genannte für Sie nun kein Problem mehr sein, so werden Sie sicherlich sehr bald festellen, daß Ihre Grafik doch noch nicht perfekt ist, denn der Drucker läßt zwischen je 2 Grafik-Zeilen eine Zeile frei, wodurch eine geschlossene Bildeinheit in Streifen zerlegt wird, und dies sieht nicht gerade gut aus. Nun ja, des Rätsels Lösung ist im Operation Manual sicherlich zu finden und, siehe da, mit „ESC A“ läßt sich das line spacing verändern. Als geeignet erwies sich nun folgende Befehlsfolge „ESC A 07H“ (1B,41,07). Und hier nun eine Hilfe zur Ausgabe von Grafikblöcken. Bei der Erstellung des Programms bin ich davon ausgegangen, daß das Grafik-Bild irgendwo im Speicher oder in einem von der CPU direkt adressierbaren Bildschirmspeicher liegt. Das Programm PACO erfragt nur noch die Anfangsadresse, Endadresse des Speicherbereiches und die Bildbreite. Alle Eingaben sind vierstellig zu machen. Nach Eingabe der Bildbreite kann noch zwischen Normal Density oder Dual Density entschieden werden, und dann legt der Drucker auch schon los. Für diejenigen, die nach dem Lotter’schen Prinzip ihren UART angezapft haben, sind am Programmanfang noch 3 Bytes freigelassen, um hier noch ein Unterprogramm zur Freigabe des Bit 7 ueber Port 0, Bit 2 einzufügen. Bei den einzelnen Ausgabe-Anweisungen (0F 6F) habe ich jeweils noch ein NOP eingefügt für den Fall, daß jemand seinen Drucker nicht über den UART ansteuert. Ich hoffe, somit allen Anpassungswünschen gerecht geworden zu sein. Der Preis für diesen Umrüstungssatz beträgt im Handel ca. 160,– DM.
Seite 26 von 28 |
---|
Download des Programms von der Nascom Home Page.