C 64
Drucker

Der MPS 802 lernt deutsch

Der MPS 802 ist als zuverlässiger Drucker mit ansprechendem Schriftbild bekannt. Leider kennt er keine deutschen Umlaute. Unser kleines Programm ändert das: Der MPS 802 lernt deutsch.

Bild 1. MPS 802 als Nachfolger des 1526

Die Geschichte des MPS 802 ist interessant und abwechslungsreich wie kaum eine andere. Entstanden ist er aus dem CBM 4022/4023 der für die PET-Generation geschaffen wurde und noch einen parallelen IEC-Bus (IEEE 488) besaß. Daraus entstand der 1526 (mit serieller Schnittstelle), der mit immer neuen Gerüchten über seine Fähigkeiten und seine Fehler überraschte. Von einem zweiten Modus war die Rede, und sogar von einer vollen Grafikfähigkeit. Wie aber jeder weiß, kann sowohl der 1526 als auch der MPS 802 Grafiken nur im »Zitter-Rumpel-Verfahren« erzeugen. Soll heißen, seine Grafikfähigkeit beschränkt sich auf ein einziges Zeichen, das ständig umprogrammiert wird. Seit der Hannover-Messe 1984 nennt sich der 1526 nun MPS 802 (Bild 1), ist aber rein technisch gesehen unverändert geblieben. Was neu ist, ist die sogenannte Firmware, oder um es gleich beim richtigen Namen zu nennen, das Betriebssystem. Es ist müßig, die vielen Fehler der verschiedenen 1526-Versionen aufzuzählen, beim MPS 802 sind sie jedenfalls ausgemerzt. Deshalb ist es auch für jeden Besitzer des 1526 empfehlenswert, sein Kernal-ROM durch das des MPS 802 zu ersetzen, es funktioniert einwandfrei. Der Austausch ist ein einfaches Unterfangen, aber dazu später mehr. Schauen wir uns zunächst einmal die Hardware des MPS 802 an. Gesteuert wird das kleine Druckwunder durch einen zum 6510 softwarekompatiblen 6504-Prozessor. Außer dem 6504 befinden sich noch zwei 6532-RIOT (RAM Input/Output Timer) und eine 6522-VIA (Variable Interface Adapter) auf der Hauptplatine. Das Betriebssystem befindet sich in einem 8-KByte-EPROM vom Typ 2764, wie er überall im Handel erhältlich ist. Im einzelnen ist die Speicheraufteilung des MPS 802 in Bild 2 dargestellt.

$0000-$00FF Zeropage
$0100-$01FF Prozessorstack
$0200-$03FF I/O-Bausteine
$0400-$1FFF Betriebssystem
Bild 2. Die Speicherbelegung des MPS 802

Genug der Theorie. Im praktischen Betrieb fällt bald schon das Fehlen der deutschen Umlaute schmerzlich auf. Dem kann abgeholfen werden. Nachstehend abgedrucktes Programm (Listing 1) verändert in der schon vom Hypra-Perfekt (Ausgabe 4/85) bekannten Overlay-Methode das Original-Betriebssystem. Dazu müssen wir allerdings erst einmal in den Besitz des Kernals kommen. Lösen Sie die vier Schrauben des Gehäuses und nehmen Sie (nach dem Farbband) vorsichtig das Gehäuseoberteil ab (Vorsicht! Garantieverlust bei neuen Geräten). Nachdem Sie sich gemerkt haben, wie das Verbindungskabel vom Deckel zur Hauptplatine eingesteckt war, können Sie auch dieses entfernen. Auf der linken, hinteren Seite des Druckers ist eine ebenfalls abschraubbare Verkleidung aus Blech angebracht — weg damit. Jetzt braucht nur noch der 2764-EPROM in der rechten hinteren Ecke der Platine (Bild 3) geortet und vorsichtig herausgehebelt werden. Die Besitzer eines EPROM-Programmiergerätes wissen jetzt sicherlich schon was kommt — das EPROM wird ausgelesen und abgespeichert. Im folgenden wird deshalb davon ausgegangen, daß der Inhalt des MPS 802-EPROMs von $6000 bis $7FFF im Speicher des C 64 steht.

Bild 3. Der EPROM 2764 (mit dem silbernen Plättchen) muß herausgenommen und neu programmiert werden.

Die Zeichenmatrizen, daß heißt die Informationen über das Aussehen der einzelnen Zeichen, stehen nun im Bereich von $6400 bis $69FF. Aber in welcher Form? Da der MPS 802 einen Druckkopf mit 8 Nadeln besitzt, besteht jedes Zeichen aus 8 mal 8 Punkten. Jedes Zeichen belegt also 8 Byte. Jedes Byte definiert eine Spalte des Zeichens, da die Nadeln im Druckkopf senkrecht angebracht sind. Ist ein Bit gesetzt, so wird die entsprechende Nadel beim Druck des Zeichens aktiviert. Steht das entsprechende Bit auf Null, wird natürlich auch kein Punkt gedruckt. Das Leerzeichen besteht beispielsweise aus acht mal Byte 0. Etwas deutlicher wird das Ganze, wenn wir uns einmal das Zeichen »A« genauer anschauen. Die Zeichenmatrix für das A steht von $6408 bis $640F.

Ein Monitor liefert uns für diesen Bereich die Werte: 3E 50 90 90 50 3E 00 00

Bild 4. So wird die Zeichenmatrix des Buchstabens »A« berechnet

Jede Hexadezimalzahl repräsentiert die Summe einer Spalte (Bild 4). Man erkennt, welcher Zusammenhang zwischen der Hexadezimalzahl (Bitmuster) und der gedruckten Matrix besteht. Das Programm aus Listing 1 verändert die vorhandene Zeichenmatrix so, daß es die deutschen Umlaute an Stelle einiger Grafikzeichen zusammen mit der deutschen Version von Vizawrite druckt. Außerdem werden die Steuercodes für Breitschrift von CHR$(1) auf CHR$(14) und die Rückstellung auf Normalschrift von CHR$(129) auf CHR$(16) geändert, was gebräuchlicher ist. Wer aber dennoch selber den Zeichensatz abändern möchte, findet die einzelnen Zeichensätze an folgenden Speicherstellen:

Von $6400-$6407 steht der Klammeraffe. Darauf folgen die Großbuchstaben von A—Z ($6408— $34DF). Ab $34E0 kommen die Sonder- und Grafikzeichen. Die Kleinbuchstaben beginnen bei $6808 (mit dem kleinen a). Leider hat der Drucker kein RAM, mit dem man eine Veränderung des Zeichensatzes ausprobieren könnte. Beim Entwerfen des eigenen Zeichensatzes ist ferner auf folgendes zu achten: Der Drucker führt nach dem Einschalten einen Selbsttest durch. Dabei wird auch das ROM geprüft, indem die Prüfsumme über den Bereich $6400 bis $7FFF ermittelt wird. Listing 2 dient in diesem Fall dazu, die Prüfsumme eines bereits veränderten, im Bereich von $6000 bis $7FFF stehenden ROMs anzupassen. Diese Anpassung ist natürlich nur dann notwendig, wenn eigene Veränderungen vorgenommen wurden.

Die noch verbleibenden Arbeiten sind schnell durchgeführt. Mit einem EPROM-Programmiergerät wird ein 2764-EPROM mit dem Inhalt der Speicherstellen $6000 bis $7000 gebrannt. Das neue Betriebssystem wird dann anstelle des alten in den Drucker eingesteckt (Kerbe auf Kerbe). Ob alles programmgemäß abgelaufen ist, läßt sich am einfachsten mit dem Selbsttest feststellen. Sollten Sie nun unter den vielen Zeichen tatsächlich die deutschen Umlaute finden, dann dürfen Sie sich ruhig ein kleines Päuschen genehmigen, denn Sie haben nun etwas Einzigartiges: Den MPS 802 in deutscher Version.

(Ernst Schöberl/Arnd Wängler/gk)
10 poke56,96:poke55,0:clr
20 print"{clr}{down}{down}{down}mps-802-rom fuer vizawrite-deutsch":print:print
30 print "altes rom vorher in $6000-$7fff ablegen":print:print
80 print"lesen der data-zeilen":print:print
100 t=0
110 t=t+1:read a:ifa=0then240
120 read b: rem anzahl der bytes
130 read p1: rem pruefsumme
140 p2=0:print"block ";t;"  ";
150 fori=atoa-1+b
160 readd:pokei,d:p2=p2+d
170 nexti
180 ifp2<>p1then210
190 print"   ok"
200 goto110
210 print"pruefsumme falsch: ";p2;" statt ";p1:print
220 geta$:ifa$=""then220
230 goto110
240 print:print"fertig!":end
1000 rem **** block 1 ****
1010 data25600,8,609
1011 data0,88,165,165,165,26,0,0
1020 rem **** block 2 ****
1021 data25816,24,1852
1022 data190,80,144,144,80,190,0,0,188,66,66,66,66,188,0,0,188,2,2,2,2,188
1023 data0,0
1030 rem **** block 3 ****
1040 data 25920,8,254
1041 data56,68,130,0,0,0,0,0
1050 rem **** block 4 ****
1060 data26840,40,1897
1061 data4,170,42,170,28,2,0,0,28,162,34,162,28,0,0,0,60,130,2,132,62,0,0
1062 data0,63,64,146,146,146,108,0,0,1,1,1,1,1,1,1,1
1070 rem **** block 5 ****
1080 data26936,8,1024
1081 data128,128,128,128,128,128,128,128
1100 rem **** block 6 ****
1110 data26966,151,8055
1111 data0,255,0,0,0,255,16,16,16,16,0,0,0,0,15,15,15,15,0,0,0,240,16,16,16
1112 data16,16,16,16,31,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,31,16,16,16,16,16,16
1113 data16,240,16,16,16,16,16,16,16,31,16,16,16,16,16,16,16,255,0,0,0,0,255
1114 data0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,192,192
1115 data192,192,192,192,192,224,224,224,224,224,224,224,224,7,7,7,7,7,7,7
1116 data7,30,4,8,16,32,64,0,0,15,15,15,15,0,0,0,0,0,0,0,0,240,240,240,240
1117 data16,16,16,240,0
1130 rem **** block 7 **** ;checksum
1140 data32763,1,107
1141 data107
10000 data0
Listing I. Umrüsten des MPS 802 auf den deutschen Zeichensatz
10 poke56,96:poke55,0:clr
20 print"mps-rom in $6000-$7fff"
30 fori=12*4096toi+26:reada:pokei,a:nexti
40 sys12*4096
60 b=peek(32763):c=peek(253)
70 d=228-c:b=b+d:ifb<0thenb=b+256
75 ifb>255thenb=b-255
80 poke32763,b:print"checksum angepasst!":end
1000 data 169,0,160,128,133,251,132,252,168,162,28,24,198,252,113,251,200,208
1010 data251,202,208,246,105,0,133,253,96
Listing 2. Anpassung der Prüfsummen
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →