Bauanleitung: Centronics-Interface
Sie haben Probleme, Ihren Drucker mit Centronics-Schnittstelle an den seriellen Port des C 64 anzuschließen? Dann bauen Sie sich doch ein Interface, das das gleiche leistet wie die käuflichen Geräte.

Selbstbau ist preiswerter als der Kauf eines fertigen Produktes. Darum stellen wir Ihnen in dieser Ausgabe als Hardware des Monats die Bauanleitung eines Centronics-Interfaces vor, das von der Leistung her käuflichen Interfaces nicht nachsteht. Wenn Sie sich zum Nachbau entschließen, haben Sie anschließend nicht nur ein gut funktionierendes Interface, Sie lernen auch einen neuen, sogenannten Ein-Chip-Mikrocomputer kennen, der zur Zeit für die unterschiedlichsten Steuerungsaufgaben eingesetzt wird. Da dieser Ein-Chip-Mikrocomputer alle zu einem Computer gehörenden Baueinheiten, wie Mikroprozessor, RAM, ROM, EPROM und Ein-/Ausgabe-Ports enthält, und in der letzten Zeit zu erschwinglichen Preisen vertrieben wird, wurde das Interface mit ihm ausgestattet. Er eignet sich aber nicht nur für den Einsatz in Interfaces, vielmehr lassen sich mit ihm relativ preisgünstig »intelligente« Peripheriegeräte wie EPROM-Brenner, MIDI-Interfaces und so weiter an den seriellen Port des C 64 oder C 128 problemlos anschließen. Der Befehlssatz des Ein-Chip-Mikrocomputers ist identisch mit dem des 6800. All jene, die sich näher mit ihm beschäftigen wollen, finden einen entsprechenden Assembler auf der Programmservice-Diskette zu dieser Ausgabe. Zum Programmieren des internen EPROMs ist ein spezielles Programmiergerät erforderlich, dessen Schaltbild und Layout Sie in dieser Ausgabe auf Seite 58 finden.
Was leistet das Interface?
Anschließen läßt sich das Interface an jeden handelsüblichen, grafikfähigen Matrixdrucker mit genormter Centronics-Schnittstelle. Mit Hilfe verschiedener Sekundäradressen können Betriebsarten oder -Modi aktiviert werden, mit denen sich die beiden C 64-Zeichensätze (Groß-/Grafikzeichen und Groß-/Kleinschrift) inklusive aller C 64-Steuer- und Grafikzeichen zu Papier bringen lassen. Auch ermöglicht das Interface den Anschluß eines Typenraddruckers. Um HiRes-Grafiken einzusetzen, existiert eine Betriebsart, bei der alle vom C 64 gesendeten Daten unmittelbar zum Drucker weitergeleitet werden. Die Möglichkeit, eine der Betriebsarten für alle Sekundäradressen zu fixieren, erhöht die Kompatibilität zu vorhandener Software. Wollen Sie zum Beispiel mit einem Programm arbeiten, das die Sekundäradresse 4 zum Interface sendet, um den Modus Groß-/Kleinschrift zu aktivieren, ist es nicht erforderlich, das Programm an das Interface anzupassen. Vielmehr reicht in einem solchen Fall die Befehlssequenz: OPEN 4,4:OPEN 5,4,3:CLOSE 4: CLOSE 5
Von nun an ist es egal, welche Sekundäradresse das Programm sendet. Der Drucker gibt so lange Groß-/ Grafikzeichen aus, bis er aus und wieder eingeschaltet wird.
Mit vier DIP-Schaltern läßt sich sowohl die Geräteadresse wie aber auch Auto-Linefeed ein/aus und der Druckertyp festlegen. Das Interface unterstützt nämlich Drucker, bei denen Grafik mit der Sequenz »ESC "*" ...« oder »ESC "K" ..« eingeschaltet wird.
In den beiden Commodore-Modi, die sich mit den Sekundäradressen 0 und 7 ansprechen lassen, kann das Interface teilweise den Commodore-Drucker MPS 801/803 simulieren.
Mit dieser und den zuvor beschriebenen Eigenschaften ist das Selbstbau-Interface den meisten käuflichen Geräten gleichzustellen. Allerdings ist es erheblich preiswerter als die käuflichen Typen, was nicht zuletzt auch durch den Einsatz neuester Technik erreicht wurde.
(A.Bos / ah)Centronics-Interface für den Selbstbau
Matrixdrucker mit einer Centronics-Schnittstelle lassen sich jetzt für wenig Geld an den seriellen Port des C 64 anschließen. Do it yourself heißt die Devise! Wir geben eine Bauanleitung für ein Centronics-Interface, das es mit käuflichen Interfaces in jeder Beziehung aufnehmen kann.
Wenn Sie Ihren Matrixdrucker mit Centronics-Schnittstelle an den C 64 anschließen wollen, brauchen Sie ein Interface. Die preiswerteste Lösung ist der Selbstbau. Bei der hier vorgestellten Bauanleitung sparen Sie nicht nur Geld, sondern werden einen neuen Computertyp kennenlernen, der in Zukunft an Bedeutung gewinnen wird.
Centronics-Interfaces sind in der Regel sehr aufwendig und entsprechend kostspielig (zwischen 200 und 400 Mark). Denn ähnlich wie die 1541-Disketten-Station kommen sie ohne »intelligente« Baueinheiten nicht aus, da sie mehr leisten müssen als eine seriell-parallel-Wandlung. So muß das Interface zum Beispiel erkennen, ob es vom Computer über eine Geräteadresse angesprochen wurde. Dann muß der Commodore-Zeichensatz in den Standard-ASCII-Zeichensatz, mit dem die meisten Drucker arbeiten, gewandelt werden. Die C 64-Grafik- und Steuerzeichen, die außer den Commodore- und kompatiblen Druckern kein anderer Drucker ausgeben kann, müssen im Grafik-Modus übertragen werden. Außerdem müssen über Sekundäradressen bestimmte Betriebsarten wählbar sein, die bestimmen, ob nun Großschrift und Grafikzeichen oder Groß-/Kleinschrift ausgegeben oder das, was der Computer sendet, ohne Wandlung direkt zum Drucker weitergeleitet werden soll. Um all diese Aufgaben, von denen nur die wichtigsten genannt wurden, zu erledigen, ist ein kompletter Computer erforderlich, und genau aus diesem bestehen die Druckerinterfaces. Es muß also alles, was zu einem Computer gehört, vorhanden sein, angefangen beim Mikroprozessor über RAM und ROM bis hin zu den I/O-Bausteinen. Werden Interfaces diskret, also mit den genannten Bausteinen aufgebaut, sind sie teuer und vom Aufbau her sehr aufwendig. Es geht aber auch anders. Seit einigen Jahren werden sogenannte Ein-Chip-Mikrocomputer hergestellt, in denen alle erforderlichen, zum Computer gehörende, Bausteine untergebracht sind. Weil Bausteine dieser Art in der letzten Zeit zu erschwinglichen Preisen (etwa 30 Mark) vertrieben werden, haben wir uns dazu entschlossen unser Interface mit einem solchen Ein-Chip-Computer, dem MC68705 von Motorola, zu bestücken. Er enthält neben 112 Byte RAM und 1804 Byte EPROM 20 TTL/CMOS-kompatible, bidirektionale I/O-Leitungen. Weitere externe Bausteine reduzieren sich daher auf ein Minimum. Einige Nachteile hat der Einsatz eines solchen Ein-Chip-Computers jedoch für den C 64-Anwender:
Was ist zu beachten?
- Die Maschinensprache, mit der sich der MC68705 programmieren läßt, hat nichts mit der Maschinensprache des 6510 zu tun. Man muß also, möchte man den MC68705 für eigene Zwecke einsetzen, eine neue Sprache erlernen. Außerdem ist ein sogenannter Cross-Assembler erforderlich, mit dem sich Programme für den MC68705 auf dem C 64 entwickeln lassen. Ein solcher Cross-Assembler erzeugt also MC68705-Maschinen-Code. Diejenigen, die sich näher mit dem MC68705 beschäftigen wollen, finden einen entsprechenden Cross-Assembler auf der Programmservice-Diskette zu dieser Ausgabe.
- Der MC68705-Maschinencode muß nun mit Hilfe eines EPROM-Brenners in ein 2716-EPROM übertragen werden.
- Zur Programmierung des Mikrocomputer-Chips ist eine spezielle Schaltung (Bild 1) erforderlich. Das im 2716-EPROM gespeicherte MC68705-Maschinenprogramm wird damit in das EPROM des MC68705 übertragen. Wie das funktioniert, können Sie im entsprechenden Absatz nachlesen.

Möchten Sie jedoch nur das im folgenden beschriebene Interface nachbauen und sonst nichts mit dem MC68705 zu tun haben, können Sie den programmierten Ein-Chip-Mikrocomputer beim Autor gegen entsprechendes Entgeld anfordern. Die Adresse finden Sie am Schluß des Artikels.
Wie programmiert man den MC68705
Tippen Sie zunächst das Programm für das Interface (Listing 1) mit dem MSE ab und speichern es anschließend auf Diskette oder Kassette.
Mit einem EPROM-Brenner Ihrer Wahl muß das soeben gespeicherte Programm in ein 2716-EPROM übertragen werden. Wie das funktioniert, und was dabei zu beachten ist, entnehmen Sie bitte der Anleitung zu Ihrem EPROM-Brenner.
So, jetzt wird's interessant, denn nun geht es an die Hardware, und zwar an das Programmiergerät zum MC68705. Wie eingangs schon erwähnt, ist dazu eine spezielle Schaltung erforderlich, die Sie in Bild 1 finden.
Das entsprechende Layout im Verhältnis 1:1 zeigt Bild 2 (Vorsicht spiegelverkehrt). Wollen Sie keine Platine für das Programmiergerät ätzen, können Sie die Schaltung auch auf einer Lochrasterplatine aufbauen. Welche Bauteile dazu benötigt und wie sie positioniert werden, zeigt Bild 3. Um das im EPROM gespeicherte Programm in den MC68705 zu übertragen, sind folgende Schritte erforderlich:
- Bevor der MC68705 und das mit dem Listing 1 gebrannte EPROM in die dafür vorgesehene Fassung gesteckt wird, überzeugen Sie sich davon, daß die im Schaltbild mit S1 und S2 gekennzeichneten Schalter geschlossen sind und weder VCC = 5V noch die erforderlichen 26V anliegen.
- Befinden sich die Bausteine in den entsprechenden Fassungen, und sind die beiden erforderlichen Spannungen angelegt, muß zuerst der Schalter S2 und anschließend der Schalter S1 geöffnet werden. Nun wird automatisch ein im MC68705 resistent enthaltenes Boot-Programm gestartet, das die Daten aus dem 2716-EPROM ausliest und im EPROM des Ein-Chip-Computers speichert.
- Bevor Sie nun den MC68705 aus der Fassung ziehen, überzeugen Sie sich davon, daß die beiden Schalter S1 und S2 geschlossen und die angelegten Spannungen abgeklemmt sind.


Aufbau des Interfaces
Bild 4 zeigt das Schaltbild, Bild 5 das dazugehörige Layout im Verhältnis 1:1 und Bild 6 den entsprechenden Bestückungsplan mit allen erforderlichen Bauteilen. Um das Interface mit dem Drucker zu verbinden, nehmen Sie am besten ein 36poliges Flachbandkabel. Das eine Ende ist mit dem Centronics-Stecker und das andere mit dem Interface zu verbinden. Achten Sie beim Löten unbedingt darauf, daß Leitungen nicht vertauscht werden. Das gleiche gilt auch für die Verbindung zwischen Computer und Interface. Die Pinbelegungen für den Centronics- und für den seriellen Stecker zeigt Bild 7. Ist das Interface zusammengebaut, muß noch der Pin 18 der Centronics-Buchse im Drucker auf 5 V gelegt werden, um das Interface mit der erforderlichen Spannung zu versorgen.



| Pin | Signal |
|---|---|
| 1 | SERIAL SRQIN |
| 2 | GND |
| 3 | SERIAL ATN/IN/OUT |
| 4 | SERIAL CLK IN/OUT |
| 5 | SERIAL DATA IN/OUT |
| 6 | RESET |

| Pin | Signal |
|---|---|
| 1 | Strobe |
| 2-9 | D0 - D7 |
| 11 | / |
| 16 | Busy |
| 18 | +5 V |

Achten Sie bei der Herstellung der Platine unbedingt darauf, daß sie richtig herum geätzt wird, denn das abgedruckte Layout ist spiegelverkehrt. Spiegelverkehrt deshalb, weil bei der von Ihnen erstellten Folie die Farbschicht der Leiterbahnen auf der Unterseite liegen müssen, um Unterlichtungen beim Belichten der Platine zu vermeiden.
Was leistet das Interface?
Doch nun zum eigentlich interessanten Thema, zu dem, was das Interface leistet. Es soll an dieser Stelle noch angemerkt sein, daß mit dem Interface keine reversen Zeichen ausgegeben werden können (zum Beispiel die Kopfzeile beim Drucken des Directory).
Die vom Computer gesendeten Sekundäradressen dienen dazu, unterschiedliche Interface-Funktionen beziehungsweise Betriebsarten zu selektieren:
Sekundäradresse = 0: Wird mit dem Befehl OPEN 4,4,0 oder OPEN 4,4 ein Druckerkanal geöffnet, werden alle Daten im Groß-/Grafikmodus gedruckt. Dabei werden alle C 64-Sonderzeichen berücksichtigt (Listing 2 und Ausdruck 1).

Sekundäradresse = 1, 5 oder 6: In diesem Modus schaltet das Interface auf »Durchgang«, das heißt alle vom Computer gesendeten Daten werden direkt zum Drucker weitergeleitet. Somit lassen sich alle druckerspezifischen Befehle wie Fettschrift ein/aus, Unterstreichen ein/aus oder auch die unterschiedlichen Bit-Image-Modi der verschiedenen Druckertypen ansprechen. Dieser Modus wird auch als Linearkanal oder Direktmodus bezeichnet (Listing 3 und Ausdruck 2).

Sekundäradresse = 2: Die Sekundäradresse 2 ermöglicht den Anschluß eines Typenraddruckers mit Centronics-Schnittstelle. Dabei gilt der Standard-ASCII-Zeichensatz, der auch bei allen Matrixdruckern Gültigkeit hat. Jedoch wird das höchstwertige Bit (Bit 8) abgeschnitten, so daß maximal 128 unterschiedliche Zeichen ausgegeben werden können. Wird vom Computer ein Zeichen gesendet, das größer ist als 128, zum Beispiel 193, so gibt der Typenraddrucker den Buchstaben »A« aus, denn 193 - 128 = 65. Und die Zahl 65 entspricht im normalen 8-Bit-ASCII-Zeichensatz einem »A« (Listing 4 und Ausdruck 3).

Sekundäradresse = 3: Wird ein Kanal mit der Sekundäradresse 3 geöffnet, wird die zuletzt angewählte Betriebsart fixiert. Beispiel: OPEN 4,4,7:OPEN 5,4,3:PRINT #4:PRINT #5:CLOSE4:CLOSE5
Mit dem ersten OPEN-Befehl wird der Kanal für den Groß/ Kleinschriftmodus geöffnet, um zum Beispiel einen Text mit einem Textverarbeitungsprogramm auszugeben. Der zweite OPEN-Befehl fixiert diesen Modus für alle Sekundäradressen. Das heißt unabhängig davon, welche Sekundäradresse von dem Textverarbeitungsprogramm gesendet wird, der zuvor im OPEN-Befehl festgelegte Modus bleibt so lange aktiv, bis der Drucker ausgeschaltet beziehungsweise das Interface zurückgesetzt wird. Bis auf den Linearkanal lassen sich alle Betriebsarten genauso fixieren. Wird ein Kanal mit der Sekundäradresse 1 geöffnet, fixiert das Interface den Linearkanal. Dieser bleibt wieder so lange aktiv, bis der Drucker ausgeschaltet oder das Interface zurückgesetzt wird.
Sekundäradresse = 7: Diese Betriebsart selektiert den Groß-/Kleinschriftmodus. Alle Zeichen werden so ausgegeben, wie sie im entsprechenden C 64-Zeichensatz auf dem Bildschirm erscheinen (Listing 5 Ausdruck 4).

Sekundäradresse = 14: Ist der DIP-Schalter für Auto-Linefeed im Drucker ausgeschaltet, läßt er sich softwaremäßig mit Hilfe der Sekundäradresse 14 im OPEN-Befehl einschalten.
Sekundäradresse = 15: Wurde mit der Sekundäradresse 14 Auto-Linefeed eingeschaltet, so läßt er sich mit Hilfe der Sekundäradresse 15 wieder ausschalten.
Wird ein Druckerkanal mit einer hier nicht aufgeführten Sekundäradresse geöffnet, schaltet das Interface in die Betriebsart für Groß-/Grafikzeichen (entspricht Sekundäradresse 0).
Neben dieser softwaremäßigen Selektion der Betriebsarten über Sekundäradressen lassen sich bestimmte Modi auch hardwaremäßig mit Hilfe von vier DIP-Schaltern einstellen.
DIP-Schalter 1: Auto-Linefeed ein/aus
on = Auto-Linefeed ein
off = Auto-Linefeed aus
DIP-Schalter 2 und 3: Einstellen der Geräteadresse, unter der sich der Drucker ansprechen läßt
| 2 | 3 | |||
|---|---|---|---|---|
| off | off | = | Geräteadresse | 4 |
| off | on | = | ″ | 5 |
| on | off | = | ″ | 6 |
| on | on | = | ″ | 7 |
DIP-Schalter 4: Da das Interface von der Ansteuerung her teilweise den Commodore-Drucker MPS 801/803 simulieren kann, läßt sich mit diesem DIP-Schalter die ESC-Sequenz vorgeben, die das Interface an den Drucker schickt, wenn eine Grafik im Commodore-Modus ausgegeben werden soll. Wie der Schalter einzustellen ist, hängt vom angeschlossenen Drucker ab. Verlangt der Drucker vor der Grafikausgabe die Sequenz »ESC "K" ...«, muß DIP-Schalter 4 auf »off« stehen. Verlangt der Drucker die Sequenz »ESC "*" ..«, muß DIP-Schalter 4 auf »on« stehen.
Der eben angesprochene Commodore-Modus ist automatisch eingeschaltet, wenn ein Druckerkanal mit der Sekundäradresse »0« oder »7« geöffnet wurde. In diesen Modi stehen folgende Steuercodes zur Verfügung.
MPS 801-kompatible Steuercodes
CHR$(8);CHR$(26);CHR$(n);CHR$(xxx): Diese Sequenz wiederholt ein Grafik-Byte. Dabei gibt »xxx« den Inhalt des Grafik-Bytes und »n« die zu wiederholende Anzahl an (Listing 6 und Ausdruck 5).

CHR$(14): Schaltet doppelte Zeichenbreite ein (Listing 7 und Ausdruck 6)

CHR$(15): Schaltet doppelte Zeichenbreite aus
CHR$(16);"AB";"string": Definiert Druckposition. Dabei gibt »A« die Zehnerstelle und »B« die Einerstelle an, ab der »string« ausgegeben wird (Listing 7 und Ausdruck 6).
CHR$(17): Schaltet innerhalb einer Zeile den Zeichensatz in den Cursor-Down-Modus (entspricht der Betriebsart, die mit Sekundäradresse 7 angewählt wird). Haben Sie einen Druckerkanal mit der Sekundäradresse »0« geöffnet (Groß-/ Grafikzeichen), lassen sich nach dem Befehl »CHR$(17)« innerhalb einer Zeile auch Kleinbuchstaben ausgeben (Listing 8 und Ausdruck 7).

CHR$(145): Schaltet innerhalb einer Zeile den Zeichensatz in den Cursor-Up-Modus (entspricht der Betriebsart, die mit Sekundäradresse 7 angewählt wird). Dieser Befehl ist das Gegenstück zu »CHR$(17)«
Damit sind alle Funktionen, Befehle und Steuersequenzen erklärt.
Eine Anmerkung noch zu den Layouts: Wenn Sie die Platinen herstellen, ist zu beachten, daß alle Layouts spiegelverkehrt veröffentlicht sind.
(A.Bos / ah)Den programmierten Ein-Chip-Computer MC68705 können Sie bei folgender Adresse bestellen: A.Bos, Nijlanderhemstraat 21, 8608 BH SNEEK, Holland
PROGRAMM : EPROM INTERF.64 8000 8800 ----------------------------------- 8000 : 00 00 00 00 00 00 00 00 01 8008 : 00 00 00 00 00 00 00 00 09 8010 : 00 00 00 00 00 00 00 00 11 8018 : 00 00 00 00 00 00 00 00 19 8020 : 00 00 00 00 00 00 00 00 21 8028 : 00 00 00 00 00 00 00 00 29 8030 : 00 00 00 00 00 00 00 00 31 8038 : 00 00 00 00 00 00 00 00 39 8040 : 00 00 00 00 00 00 00 00 41 8048 : 00 00 00 00 00 00 00 00 49 8050 : 00 00 00 00 00 00 00 00 51 8058 : 00 00 00 00 00 00 00 00 59 8060 : 00 00 00 00 00 00 00 00 61 8068 : 00 00 00 00 00 00 00 00 69 8070 : 00 00 00 00 00 00 00 00 71 8078 : 00 00 00 00 00 00 00 00 79 8080 : A6 18 2E FE 2E FE 11 02 C1 8088 : 2E 0E 4A 26 FB A6 10 10 6A 8090 : 02 4A 26 FD 1E 11 11 02 B3 8098 : 2F FE 2E FE 03 02 00 56 9F 80A0 : 2F FE 2E FE 03 02 00 56 A7 80A8 : 2F FE 2E FE 03 02 00 56 AF 80B0 : 2F FE 2E FE 03 02 00 56 B7 80B8 : 2F FE 2E FE 03 02 00 56 BF 80C0 : 2F FE 2E FE 03 02 00 56 C7 80C8 : 2F FE 2E FE 03 02 00 56 CF 80D0 : 2F FE 2E FE 03 02 00 56 D7 80D8 : 2F FE 10 02 81 CD 04 CA F7 80E0 : 00 00 FD B7 01 17 02 16 54 80E8 : 02 BD 80 04 02 EF CC 04 44 80F0 : 58 00 00 00 00 00 00 00 49 80F8 : 00 00 00 00 00 00 00 00 F9 8100 : 00 00 00 00 00 00 FE FE FA 8108 : FE 00 00 00 1E 1E 1E 1E 8E 8110 : 1E 1E 80 80 80 80 80 80 7D 8118 : 02 02 02 02 02 02 FE 00 08 8120 : 00 00 00 00 AA 54 AA 54 C1 8128 : AA 54 00 00 00 00 00 FE FA 8130 : 0A 14 0A 14 0A 14 FC F8 71 8138 : F0 E0 C0 80 00 00 00 00 D9 8140 : 00 FE 00 00 00 FE 10 10 18 8148 : 00 00 00 1E 1E 1E 00 00 DF 8150 : 00 F0 10 10 10 10 10 1E CC 8158 : 00 00 06 06 06 06 06 06 4F 8160 : 00 00 00 1E 10 10 10 10 06 8168 : 10 F0 10 10 10 10 10 1E F4 8170 : 10 10 10 10 10 FE 00 00 87 8178 : FE 00 00 00 00 00 FE FE 70 8180 : 00 00 00 00 00 00 00 00 81 8188 : FE FE 80 80 80 80 80 80 45 8190 : C0 C0 C0 C0 C0 C0 0E 0E 5F 8198 : 0E 0E 0E 0E 02 02 02 02 2F 81A0 : 02 FE 1E 1E 1E 00 00 00 4F 81A8 : 00 00 00 E0 E0 E0 10 10 3A 81B0 : 10 F0 00 00 E0 E0 E0 00 D1 81B8 : 00 00 E0 E0 E0 1E 1E 1E C0 81C0 : 10 10 10 10 10 10 38 72 26 81C8 : FE 72 38 00 00 00 FE 00 09 81D0 : 00 00 20 20 20 20 20 20 A0 81D8 : 40 40 40 40 40 40 80 80 5A 81E0 : 80 80 80 80 08 08 08 08 C1 81E8 : 08 08 00 FE 00 00 00 00 D4 81F0 : 00 00 00 00 FE 00 10 10 41 81F8 : 08 06 00 00 00 00 00 C0 85 8200 : 20 10 10 10 20 C0 00 00 37 8208 : FE 02 02 02 02 02 40 20 3A 8210 : 10 08 04 02 02 04 08 10 E6 8218 : 20 40 FE 80 80 80 80 80 37 8220 : 80 80 80 80 80 FE 3C 7E FE 8228 : 7E 7E 3C 00 04 04 04 04 6D 8230 : 04 04 38 7C 3E 7C 38 00 7D 8238 : 00 FE 00 00 00 00 00 00 B8 8240 : 00 06 08 10 42 24 18 18 1D 8248 : 24 42 3C 42 42 42 3C 00 0C 8250 : 38 50 FE 50 38 00 00 00 FE 8258 : 00 00 FE 00 18 3C 7E 3C EE 8260 : 18 00 10 10 10 FE 10 10 D8 8268 : AA 54 AA 00 00 00 00 00 E7 8270 : 00 FE 00 00 10 3E 20 3E DF 8278 : 20 00 80 C0 E0 F0 F8 FC 44 8280 : 00 00 00 00 00 00 FE FE 7A 8288 : FE 00 00 00 1E 1E 1E 1E 0E 8290 : 1E 1E 80 80 80 80 80 80 FD 8298 : 02 02 02 02 02 02 FE 00 88 82A0 : 00 00 00 00 AA 54 AA 54 41 82A8 : AA 54 00 00 00 00 00 FE 7A 82B0 : 0A 14 0A 14 0A 14 FC F8 F1 82B8 : F0 E0 C0 80 00 00 00 00 59 82C0 : 00 FE 00 00 00 FE 10 10 98 82C8 : 00 00 00 1E 1E 1E 00 00 5F 82D0 : 00 F0 10 10 10 10 10 1E 4C 82D8 : 00 00 06 06 06 06 06 06 CF 82E0 : 00 00 00 1E 10 10 10 10 86 82E8 : 10 F0 10 10 10 10 10 1E 74 82F0 : 10 10 10 10 10 FE 00 00 07 82F8 : FE 00 00 00 00 00 FE FE F0 8300 : 00 00 00 00 00 00 00 00 01 8308 : FE FE 80 80 80 80 80 80 C5 8310 : C0 C0 C0 C0 C0 C0 0E 0E DF 8318 : 0E 0E 0E 0E 02 02 02 02 AF 8320 : 02 FE 1E 1E 1E 00 00 00 CF 8328 : 00 00 00 E0 E0 E0 10 10 BA 8330 : 10 F0 00 00 E0 E0 E0 00 51 8338 : 00 00 10 3E 20 3E 20 00 79 8340 : 00 FE 82 82 00 00 12 7E F6 8348 : 92 92 42 00 00 82 82 FE D0 8350 : 00 00 00 20 40 FE 40 20 92 8358 : 10 38 54 10 10 10 10 10 7D 8360 : 10 10 10 10 10 10 10 FE 3E 8368 : 10 10 AA 54 AA 00 00 00 60 8370 : 00 00 00 FE 00 00 CE CE 29 8378 : 30 30 CE CE 24 92 48 24 8E 8380 : 92 48 48 92 24 48 92 24 B2 8388 : 1E 04 08 10 20 00 82 7C B2 8390 : 74 7A 84 FE 00 6E 66 6A 24 8398 : 9C FE 9A 6C 6C 6C B2 FE DA 83A0 : 00 6C 6C 6C 7C FE 00 00 3F 83A8 : A6 1B CD 05 61 A6 44 CD E8 83B0 : 05 61 BD 80 9F A4 0F 48 D1 83B8 : B7 14 48 48 BB 14 B7 14 F8 83C0 : BD 80 9F A4 0F BB 14 CD F4 83C8 : 05 61 A6 00 CD 05 61 A6 FF 83D0 : 09 CD 05 61 CC 05 5E 00 9C 83D8 : A1 9F 23 02 A4 7F A1 0D 39 83E0 : 27 11 A1 60 24 05 A1 40 76 83E8 : 24 05 81 A4 5F 20 FB AA C0 83F0 : 20 20 F7 0F 16 F4 CD 05 4A 83F8 : 61 A6 0A 81 00 00 00 00 5F 8400 : A6 00 B7 04 A6 FF B7 05 68 8408 : 4C B7 01 A6 09 B7 06 4A 40 8410 : B7 02 3F 11 3F 15 3F 1A 88 8418 : 3F 16 3F 1B 3F 1C B6 00 45 8420 : A8 FF 97 47 A4 03 AB 24 F0 8428 : B7 12 A6 D6 B7 20 A6 01 86 8430 : B7 21 3F 22 A6 81 B7 23 28 8438 : 98 9F 48 24 02 1E 1A 98 E1 8440 : 48 24 02 1E 16 04 02 FD 64 8448 : 2F FE 3F 13 3F 17 3F 18 02 8450 : 3F 19 3F 1B 10 02 BD 80 58 8458 : B3 12 27 19 A3 3F 26 02 D2 8460 : 20 03 0F 11 09 A6 0E 10 06 8468 : 02 4A 26 FD 1F 11 11 02 9B 8470 : 05 02 FD 20 D0 BD 80 05 01 8478 : 02 02 BC DD A3 3F 27 E5 03 8480 : 0E 1C 21 9F A4 0F A1 0E 3E 8488 : 24 1C A1 01 27 28 A1 02 81 8490 : 27 30 A1 03 27 18 A1 05 5C 8498 : 27 1C A1 06 27 18 A1 07 BE 84A0 : 27 1A 1F 13 BC E9 A1 0F BE 84A8 : 26 08 1E 16 20 F6 1E 1C 87 84B0 : 20 F2 1F 16 20 EE 1E 15 F0 84B8 : 1F 13 20 E8 1E 13 1E 19 AB 84C0 : 20 E2 1F 13 1F 19 1E 1B E5 84C8 : 20 DA 9F 0F 15 0D A1 0D 79 84D0 : 26 08 0F 16 05 CD 05 61 17 84D8 : A6 0A 81 0E 1B 15 A1 22 CB 84E0 : 26 02 3C 17 A4 7F A1 1F 04 84E8 : 23 3D 9F 0E 13 3C A1 5B A4 84F0 : 24 04 81 CC 03 D8 A1 60 4E 84F8 : 24 1A A6 03 B7 21 A6 40 D3 8500 : B7 22 9F A0 5B B7 14 48 19 8508 : 48 BB 14 BB 14 BB 22 B7 C1 8510 : 22 CC 05 50 A1 9F 22 03 89 8518 : AB 60 97 3F 22 A6 01 B7 8C 8520 : 21 CD 05 2D CC 05 50 CC DF 8528 : 06 06 CC 05 6B 9F A0 A0 7D 8530 : B7 14 98 48 24 03 3C 21 AE 8538 : 98 48 24 03 3C 21 98 B9 00 8540 : 14 24 03 3C 21 98 B9 14 95 8548 : 24 03 3C 21 98 B7 22 81 F4 8550 : CD 06 FC BD 20 CD 05 61 5E 8558 : 5C A3 06 26 F6 4F 9C BC A2 8560 : E9 00 00 FD B7 01 17 02 ED 8568 : 16 02 81 A1 5B 24 08 A1 4E 8570 : 41 24 01 81 AA 20 81 A1 29 8578 : 61 24 14 A0 5B B7 14 A6 16 8580 : 03 B7 21 B6 14 CD 05 32 A6 8588 : AB 40 B7 22 CC 05 50 A1 FF 8590 : 7B 24 03 A4 5F 81 A1 80 FC 8598 : 24 14 A0 7B B7 14 A6 03 1B 85A0 : B7 21 B6 14 CD 05 32 AB 3D 85A8 : 64 B7 22 CC 05 50 A1 A9 B7 85B0 : 26 0B A6 03 B7 21 A6 82 8A 85B8 : B7 22 CC 05 50 A1 BA 26 9D 85C0 : 0B A6 03 B7 21 A6 88 B7 AF 85C8 : 22 CC 05 50 A1 FF 26 0B 64 85D0 : A6 03 B7 21 A6 76 B7 22 4B 85D8 : CC 05 50 A1 C0 26 0B A6 26 85E0 : 03 B7 21 A6 5E B7 22 CC A2 85E8 : 05 50 A1 E0 24 07 A1 C1 1E 85F0 : 24 08 CC 05 1B A4 BF CC 5C 85F8 : 05 AE A1 DB 24 03 A4 7F 24 8600 : 81 A0 DB CC 05 9C 9F A1 59 8608 : 0D 26 17 0F 18 06 B6 19 8F 8610 : B7 13 3F 18 0E 16 03 3F 40 8618 : 17 81 CD 05 61 3F 17 A6 BE 8620 : 0A 81 A1 11 27 16 A1 91 42 8628 : 27 1C A1 12 27 22 A1 13 38 8630 : 27 24 A1 0E 27 3D A1 0F 94 8638 : 27 4E 26 61 00 17 1D 1E A6 8640 : 13 1E 18 CC 05 5E 00 17 73 8648 : 54 1F 13 1E 18 CC 05 5E 6D 8650 : 00 17 14 CC 05 5E 00 17 EC 8658 : 14 CC 05 5E A6 8E B7 22 E1 8660 : A6 03 B7 21 CC 05 50 A6 1D 8668 : 94 B7 22 20 F3 A6 9A B7 B3 8670 : 22 20 ED 00 17 27 A6 1B 99 8678 : CD 05 61 A6 57 CD 05 61 B0 8680 : A6 01 CD 05 61 CC 05 5E 08 8688 : 00 17 12 A6 1B CD 05 61 64 8690 : A6 57 CD 05 61 A6 00 CD DD 8698 : 05 61 CC 05 5E 00 17 17 92 86A0 : A1 10 27 10 A1 08 27 01 0E 86A8 : 81 BD 80 9F A1 1A 27 01 A5 86B0 : 81 CC 07 38 CC 03 A8 AB 3F 86B8 : 40 97 A1 45 26 0B A6 A0 6B 86C0 : B7 22 A6 03 B7 21 CC 05 54 86C8 : 50 A1 80 24 13 A6 03 B7 6F 86D0 : 21 9F A0 5B B7 14 CD 05 B2 86D8 : 32 AB 40 B7 22 CC 06 E9 5B 86E0 : 3F 22 A6 01 B7 21 CD 05 C0 86E8 : 2D CD 06 FC BD 20 A8 FE 9A 86F0 : CD 05 61 5C A3 06 26 F4 11 86F8 : 4F 9C BC E9 0E 1A 15 A6 55 8700 : 1B CD 05 61 A6 4B CD 05 75 8708 : 61 A6 06 CD 05 61 5F 4F 6F 8710 : CD 05 61 81 A6 1B CD 05 6D 8718 : 61 A6 2A CD 05 61 A6 00 07 8720 : CD 05 61 A6 06 CD 05 61 43 8728 : 5F 4F CD 05 61 81 00 00 65 8730 : 00 00 00 00 00 00 00 00 31 8738 : A6 1B CD 05 61 0E 1A 07 7D 8740 : A6 4B CD 05 61 20 0A A6 2C 8748 : 2A CD 05 61 A6 00 CD 05 72 8750 : 61 BD 80 9F B7 14 CD 05 01 8758 : 61 A6 00 CD 05 61 BD 80 19 8760 : 9F BE 14 CD 05 61 5A 26 2E 8768 : FA CC 05 5E 00 00 00 00 D6 8770 : 00 00 00 00 00 00 00 00 71 8778 : 00 00 00 00 00 00 00 00 79 8780 : 00 00 00 00 80 00 00 00 89 8788 : 00 00 00 00 00 00 00 00 89 8790 : 00 00 00 00 00 00 00 00 91 8798 : 00 00 00 00 00 00 00 00 99 87A0 : 00 00 00 00 00 00 00 00 A1 87A8 : 00 00 00 00 00 00 00 00 A9 87B0 : 00 00 00 00 00 00 00 00 B1 87B8 : 00 00 00 00 00 00 00 00 B9 87C0 : 00 00 00 00 00 00 00 00 C1 87C8 : 00 00 00 00 00 00 00 00 C9 87D0 : 00 00 00 00 00 00 00 00 D1 87D8 : 00 00 00 00 00 00 00 00 D9 87E0 : 00 00 00 00 00 00 00 00 E1 87E8 : 00 00 00 00 00 00 00 00 E9 87F0 : 00 00 00 00 00 00 00 00 F1 87F8 : 00 00 00 00 00 00 04 00 09
100 rem sa=0.. gross-/grafikmodus 110 open4,4:rem identisch mit open4,4,0 130 a$="0123456789abcdef" 140 print#4," "; 150 fori=0to15 160 print#4,mid$(a$,i+1,1)" "; 170 nexti 180 print#4 190 : 200 forj=0to15 210 print#4,mid$(a$,j+1,1)" "; 220 print#4,sp$;" "; 230 print#4,chr$(j+32)" "chr$(j+48)" "; 240 print#4,chr$(j+64)" "chr$(j+80)" "; 250 print#4,chr$(j+96)" "chr$(j+112)" "; 260 print#4," "; 270 print#4,chr$(j+160)" "chr$(j+176)" "; 280 print#4,chr$(j+192)" "chr$(j+208)" "; 290 print#4,chr$(j+224)" "chr$(j+240)" " 300 nextj 310 fork=1to8:print#4:nextk 320 close4
100 rem sa=1.. 110 open4,4,1:rem linearkanal 130 a$="0123456789abcdef" 140 print#4," "; 150 fori=0to15 160 print#4,mid$(a$,i+1,1)" "; 170 nexti 180 print#4 190 : 200 forj=0to15 210 print#4,mid$(a$,j+1,1)" "; 220 print#4,sp$;" "; 230 print#4,chr$(j+32)" "chr$(j+48)" "; 240 print#4,chr$(j+64)" "chr$(j+80)" "; 250 print#4,chr$(j+96)" "chr$(j+112)" "; 260 print#4," "; 270 print#4,chr$(j+160)" "chr$(j+176)" "; 280 print#4,chr$(j+192)" "chr$(j+208)" "; 290 print#4,chr$(j+224)" "chr$(j+240)" " 300 nextj 310 fork=1to8:print#4:nextk 320 close4
100 rem sa=2.. ascii-mode fuer typenrad 110 open4,4,2 130 a$="0123456789abcdef" 140 print#4," "; 150 fori=0to15 160 print#4,mid$(a$,i+1,1)" "; 170 nexti 180 print#4 190 : 200 forj=0to15 210 print#4,mid$(a$,j+1,1)" "; 220 print#4,sp$;" "; 230 print#4,chr$(j+32)" "chr$(j+48)" "; 240 print#4,chr$(j+64)" "chr$(j+80)" "; 250 print#4,chr$(j+96)" "chr$(j+112)" "; 260 print#4," "; 270 print#4,chr$(j+160)" "chr$(j+176)" "; 280 print#4,chr$(j+192)" "chr$(j+208)" "; 290 print#4,chr$(j+224)" "chr$(j+240)" " 300 nextj 310 fork=1to8:print#4:nextk 320 close4
100 rem sa=7.. gross-/kleinschriftmodus 110 open4,4,7:rem business mode 130 a$="0123456789abcdef" 140 print#4," "; 150 fori=0to15 160 print#4,mid$(a$,i+1,1)" "; 170 nexti 180 print#4 190 : 200 forj=0to15 210 print#4,mid$(a$,j+1,1)" "; 220 print#4,sp$;" "; 230 print#4,chr$(j+32)" "chr$(j+48)" "; 240 print#4,chr$(j+64)" "chr$(j+80)" "; 250 print#4,chr$(j+96)" "chr$(j+112)" "; 260 print#4," "; 270 print#4,chr$(j+160)" "chr$(j+176)" "; 280 print#4,chr$(j+192)" "chr$(j+208)" "; 290 print#4,chr$(j+224)" "chr$(j+240)" " 300 nextj 310 fork=1to8:print#4:nextk 320 close4
10 rem grafik-byte wiederholen 20 rem chr$(8)chr$(26)chr$(n)chr$(grafik-byte) 30 rem chr$(n) ist eine zahl zwischen 0 und 255 und bestimmt die anzahl der zu 40 rem druckenden grafik-bytes 50 open4,4 60 fori=1to6 70 readn 80 print#4,chr$(8)chr$(26)chr$(n)chr$(243) 90 nexti 100 close4 110 data30,60,90,120,150,255
100 rem chr$(16) .. druckposition setzen 110 open4,4 120 forq=1to4 130 print#4,"0123456789"; 140 nextq 150 print#4 160 print#4,chr$(16)"08";"commodore"; 170 print#4,chr$(16)"30";"printer" 175 forq=1to4:print#4:next 180 forq=1to4 190 print#4,"0123456789"; 200 nextq 210 print#4 220 print#4,chr$(16)"04"chr$(14)"commodore"chr$(15); 230 print#4,chr$(16)"26"chr$(14)"printer"chr$(15) 240 print#4 250 close4
100 rem local-modus
110 rem chr$(17)/chr$(145) = crsr down/up
120 rem chr$(17) funktioniert so lange, bis man chr$(145) oder <return> eingibt
130 rem chr$(145) funktioniert so lange, bis man chr$(17) oder <return> eingibt
140 open4,4:rem gross-/grafikmodus
150 print#4,"{down}Diese Zeile ist im ";
160 print#4,"{down}LOCAL{$a0}BUSINESS MODUS gedruckt"
170 print#4
180 close4
190 open4,4,7:rem gross-/kleinschrift
200 print#4,"Diese Zeile ist im ";
210 print#4,"{up}local grafik{down} modus gedruckt"
220 close4