29 Druckerbefehle für Epson
Oft ist es recht mühsam, die vielen Fähigkeiten der Epson-Drucker auszunutzen. »Epson 29« macht das ständige Nachschlagen im Handbuch überflüssig.
Diese kurze, aber doch recht wirkungsvolle Erweiterung ermöglicht es auf einfachste Weise, Steuercodes an einen Epson-Drucker zu senden. Es belegt den freien RAM-Bereich zwischen den Speicherzellen 50000 und 50503, und arbeitet auch mit dem Centronics-Interface, das Sie in dieser Äusgabe finden, zusammen. Doch hier zuerst eine alphabetisch geordnete Übersicht:
←A | — Adresse: ←A, gefolgt von einer Zahl, legt fest, über welchen Kanal die folgenden Kommandos zum Drucker gesendet werden sollen. Beispiel: ←A4, die nachfolgenden Befehle werden über Kanal 4 zum Drucker geschickt. Wird dieser Befehl nicht gesendet, geht der Computer davon aus, daß Sie Kanal 1 benutzen. |
←B | — Breitschrift an |
←D | — Doppeldruck an |
←E | — Eliteschrift an |
←F | — Fettdruck an |
←G | — Glocke, sendet Bell-Code an Drucker, um zum Beispiel den Druckbeginn akustisch anzukündigen. |
←I | — Indexschrift an |
←K | — Kursivschrift an |
←L | — Linken Rand setzen. Beispiel: — L15 setzt linken Rand auf die 15. Druckposition. |
←N | — unidirektionaler Ausdruck (verbessert Qualität des Schriftbildes). |
←O | — Potenzieren an |
←P | — Pica an |
←R | — Rechten Rand setzen (parallel zu «- L) |
←S | — Schmalschrift an |
←U | — Unterstreichen an |
←6 | — Zeilenabstand auf 1/6 Zoll |
←7 | — Zeilenabstand auf 1/72 Zoll |
←8 | — Zeilenabstand auf 1/8 Zoll |
←2 | — Zeilenabstand auf n/216 Zoll. Beispiel: ←2 159 setzt Zeilenabstand auf 159/216 Zoll. |
←@ | — Drucker-Reset |
←0B | — Breitschrift aus |
←0D | — Doppeldruck aus |
←0F | — Fettdruck aus |
←0I | — Indizieren aus |
←0K | — Kursivschrift aus |
←0N | — unidirektionaler Druck aus |
←0O | — Potenzieren aus |
←0S | — Schmalschrift aus |
←0U | — Unterstreichmodus aus |
Als Kennzeichen für einen neuen Befehl steht ein Pfeil nach links (Taste in der linken oberen Ecke der Tastatur). Anstelle dieses Pfeiles kann man jedoch auch ein anderes Zeichen verwenden (zum Beispiel»!«), indem man in die Speicherzelle 50020 den ASCII-Wert dieses Zeichens POKEt. Falls Sie einen nicht definierten Wert senden, dies wäre zum Beispiel ←*, gibt der Computer die Fehlermeldung »PRINTER COMMAND ERROR« aus.
Hier noch zwei weitere Vorteile des Programms:
- Die Befehle sind bis zu 6mal schneller. Um auf Breitschrift umzuschalten, benötigt der C 64 mittels CHR$-Codes zirka 0,013 Sekunden, mit dem Befehl — B sind es nur noch 0,002 Sekunden.
. 2. Der Basic-Speicherplatzbedarf ist wesentlich geringer! So benötigt das Demoprogramm 1 (Listing 2) im Vergleich zu dem in Standard-Basic geschriebenen Demoprogramm 2 (Listing 3) 66 Bytes weniger, dies sind nur 57% des benötigten Speicherplatzes von Listing 2.
Ich empfehle Ihnen zum besseren Verständnis, sich einmal die Listings der Demoprogramme anzuschauen, um den Umgang mit den neuen Befehlen kennenzulernen.
Achtung:
Wenn einem Druckerbefehl kein PRINT#-Befehl folgt (eigentlich unlogisch, denn warum sollte man einen Befehl an den Druckersenden, wenn man gar nichts ausdrucken will?), . befindet man sich im CMD-Modus. Angenommen, Sie geben ←F und danach LIST ein, erscheint das Listing auf dem Drucker statt auf dem Bildschirm.
Wollen Sie einen dieser neuen Befehle innerhalb einer IF…THEN-Schleife verwenden, so müssen Sie nach THEN einen Doppelpunkt setzen (Beispiel: IF A=1 THEN:←S)
Haben Sie den Basic-Lader eingetippt, können Sie das Programm als reinen Maschinencode auf Diskette oder Kassette abspeichern; geben Sie dazu folgendes im Direktmodus ein:
POKE 43,80
POKE 44,195
POKE 45,22
POKE 46,197
SAVE "DRUCKERBEF.MC",8,1 (für Diskette)
oder
SAVE "DRUCKERBEF.MC",1,1 (für Kassette)
(Olaf Amblank/gk)PROGRAMM : EPSON29 C350 C516 ----------------------------------- C350 : A9 01 8D 44 C5 A9 60 A0 D2 C358 : C3 8D 08 03 8C 09 03 60 22 C360 : 20 73 00 C9 5F F0 49 20 56 C368 : 79 00 4C E7 A7 A9 D1 8D 1B C370 : 46 C5 4C EB C4 A9 6C 8D 90 C378 : 46 C5 4C EB C4 A0 D3 20 12 C380 : E0 C4 A9 00 4C DA C4 A0 1D C388 : D3 20 E0 C4 A9 01 4C DA C5 C390 : C4 A0 30 4C BE C4 A0 31 31 C398 : 4C BE C4 A0 32 4C BE C4 93 C3A0 : A9 33 8D 46 C5 4C EB C4 07 C3A8 : 20 CA C4 A9 07 4C DA C4 5B C3B0 : 20 73 00 C9 32 F0 E9 C9 A9 C3B8 : 36 F0 E0 C9 37 F0 D7 C9 C5 C3C0 : 38 F0 CE C9 49 F0 C0 C9 10 C3C8 : 4C F0 AA C9 52 F0 9E C9 2B C3D0 : 40 F0 70 C9 4F F0 A6 C9 88 C3D8 : 46 F0 6D C9 44 F0 6E C9 44 C3E0 : 45 F0 56 C9 50 F0 57 C9 EA C3E8 : 53 F0 71 C9 55 F0 31 C9 7E C3F0 : 4B F0 41 C9 4E F0 33 C9 0A C3F8 : 42 F0 1B C9 41 F0 0B C9 0E C400 : 30 F0 7D C9 47 F0 A1 4C 5C C408 : FE C4 20 73 00 20 9E B7 CA C410 : 8E 44 C5 4C AE A7 A0 D7 16 C418 : 20 E0 C4 A9 01 4C DA C4 76 C420 : A0 2D 20 E0 C4 A9 01 4C B1 C428 : DA C4 A0 D5 20 E0 C4 A9 B7 C430 : 01 4C DA C4 A0 34 4C BE 01 C438 : C4 A0 CD 4C BE C4 A0 D0 7F C440 : 4C BE C4 A0 40 4C BE C4 1B C448 : A0 C5 4C BE C4 A0 C7 4C BF C450 : BE C4 A0 C6 4C BE C4 A0 80 C458 : C8 4C BE C4 20 CA C4 A9 4D C460 : 0F 4C DA C4 20 CA C4 A9 A3 C468 : 12 4C DA C4 A0 D4 4C BE 4F C470 : C4 A0 35 4C BE C4 A0 D5 9B C478 : 20 E0 C4 A9 00 4C DA C4 C6 C480 : 20 73 00 C9 46 F0 CB C9 42 C488 : 4E F0 EB C9 44 F0 C8 C9 05 C490 : 53 F0 D1 C9 4B F0 DA C9 44 C498 : 55 F0 19 C9 42 F0 0B C9 50 C4A0 : 4F F0 C9 C9 49 F0 C5 4C DF C4A8 : FE C4 A0 D7 20 E0 C4 A9 9B C4B0 : 00 4C DA C4 A0 2D 20 E0 DB C4B8 : C4 A9 00 4C DA C4 20 CA C4 C4C0 : C4 20 D4 C4 98 A0 00 4C 89 C4C8 : DA C4 AE 44 C5 20 C9 FF BD C4D0 : 20 73 00 60 A9 1B 20 D2 50 C4D8 : FF 60 20 D2 FF 4C AE A7 D6 C4E0 : 20 CA C4 20 D4 C4 98 20 B1 C4E8 : D2 FF 60 20 CA C4 20 9E 66 C4F0 : B7 20 D4 C4 AD 46 C5 20 E9 C4F8 : D2 FF 8A 4C DA C4 A9 07 7E C500 : 85 22 A9 C5 4C 45 A4 50 DB C508 : 52 49 4E 54 45 52 20 43 0B C510 : 4F 4D 4D 41 4E C4 23
1 rem ********************************* 3 rem ** demo 1 - mit neuen befehlen ** 5 rem ********************************* 10 : 100 open1,16:rem *oeffnet druckerkanal 110 _f:rem *fettdruck an* 120 _d:rem *doppeldruck an* 125 _l10:rem *linken rand auf 10 einstellen* 130 print#1,"x"; 135 _o:rem *potenzieren an* 140 print#1,"2"; 150 _0o:rem *potenzieren aus* 160 print#1,"=256"
1 rem ********************************* 3 rem ** demo 2 - normale chr$-code *** 5 rem ********************************* 10 : 100 open1,16:rem *druckerkanal oeffnen* 110 print#1,chr$(27);"E";:rem *fettdruck an* 120 print#1,chr$(27);"G";:rem *doppeldruck an* 125 print#1,chr$(27);chr$(108);chr$(10);:rem *linken rand auf 10 setzen* 130 print#1,"x"; 135 print#1,chr$(27);"S";chr$(0);:rem *poteizieren an* 140 print#1,"2"; 150 print#1,chr$(27);"T";:rem *potenzieren aus* 160 print#1,"=256"