Auf eine Anfrage hin und weil es mir selbst nicht alles so 100% offensichtlich war, gibt es hier nun Informationen zum Anschluss eines Druckers an den Z9001.
(v.l.n.r: Modul 690006.8, Modul 690021.1, K6304)
Tip: Die komischen Rillen auf dem Gehäuse (erstes Bild) stammen von den Weichmachern im Kabel. Deshalb sollten die Original-Kabel ersetzt werden oder in der Sammlung immer in eine extra Plastetüte gesteckt werden.
Von Robotron gibt es 3 Druckermodule, die eigentlich alle 3 identisch aufgebaut sind und sich nur in der Software und in der Steckerbelegung unterscheiden. Hier ist eine reiche Vielfalt vorhanden: Es gibt alte Module mit alter Leiterplatte wie obiges Drucker-Modul 690006.8, gefolgt vom Schreibmaschinen-Modul für S6005 690021.1 und dem Drucker-Modul 690025.2 (f. K6311/12). Die beiden letzten Module erschienen ab 3. Quartal 1987 mit neuer Software (BM116, Software V24Ax), ausgeliefert ab Modulnummer 710970.
Alle Druckermodule von Robotron sind gleich aufgebaut und arbeiten mit einer SIO und einer CTC. Der anzuschliessende Drucker muss also über eine V24 (RS 232) serielle Schnittstelle verfügen. Drucker mit Parallel-Schnittstelle wie CENTRONICS können nicht mit diesen Modulen angeschlossen werden; ein Selbstbau eines Adapters ist aber recht einfach (s.u.).
Alle Module sind mit einem PROM/EPROM ausgerüstet (Adressbereich 0B800h-0BFFFh). Allerdings steht bei Aktivierung des ROMs gleich der ganze Adressbereich von 8000-0BFFFh nicht mehr für RAM etc. zur Verfügung. Es ist deshalb ratsam, den ROM abzuschalten und stattdessen die Software von Kassette zu laden. Je nach Modulart (Schreibmaschinenmodul, Druckermodul alt oder neu) gibt es verschiedene EPROM-Inhalte. Die Hardware ist in jedem Falle gleich.
Übersicht über die einzelnen Modultypen nebst ROM:
Übersicht der Modultypen und Drucker (Quelle MP 4/1987, S. 126):
Modul | Technische Hauptparameter | anschließbare Drucker bzw. Schreibmaschinen |
---|---|---|
Druckermodul 690006.8 |
Übertragungsrate: 1200 Baud,1 Startbit, 7 Datenbit,1
Paritätsbit (gerade) 1 Stopbit; Diodenstecker |
Thermodrucker |
Druckermodul 690025.2 |
Übertragungsrate: 9600 Baud, 1 Startbit, 8 Datenbit,
kein Paritätsbit, 1 Stopbit, Buchsenleiste 222-26, TGL 29331/04 |
Nadeldrucker: K6311 (1), 12(1), 13(3), 14(3), 16(1) Thermodrucker K6304(3), Seriendrucker 1152, 1157, Schreibmaschine: S6005,10(3), 6006(3), 6010(2), 6120(3), 6130(3), S3004 bis S3016 |
Schreibmaschinenmodul 690021.1 | Übertragungsrate: 9600 Baud, 1 Startbit, 8 Datenbit,
kein Paritätsbit, 1 Stopbit, Steckerleiste Cannon DB-255 |
Nadeldrucker: K6311(1), 12, 13, 14(1), 16(1) Thermodrucker K 6304 Seriendrucker SD 1152(3), 1157(3) Schreibmaschine: S6005.10(1), 6006(3), 6010(3), 6120(2), 6130, S3004 bis S3016 |
(1) mit entsprechendem Steckverbinder
(2) mit Änderung dar
Steckverbinderbelegung
(3) mit Austausch des Steckverbinders
Das erste gebaute Druckermodul 690006.8 ist für den 40-Zeichen-Thermostreifendrucker K6303 (TD40) gedacht. Von diesen Druckern gelangten allerdings kaum Geräte in den Markt, heute sind nur noch ganz wenige Geräte bekannt. Dieses Modul hat auch eine andere Leiterplatte als die beiden Nachfolgemodule. Im Modul steckt der EPROM M506 mit einem Treiber für den TD40. Dieser Treiber enthält einen (diagonal gespiegelten) 6×8-Pixel-Zeichensatz für die Zeichen 32-255 und ist damit vollgrafikfähig! Leider ist dieser Treiber nur für den K6303 direkt nutzbar. Um andere grafikfähige Drucker zu betreiben, sind die neuen Druckertreiber der Kassette R0115 zu nutzen.
Im Druckermodul 690021.1 steckt im ROM M012 bis 3. Quartal 1987 der Druckertreiber S6005 (nicht vollgrafikfähig). Im Druckermodul 690025.2 steckt im ROM M013 bis 3. Quartal 1987 der Druckertreiber K6311/12 (nicht vollgrafikfähig).
Ab 3. Quartal 1987 enthalten Druckermodul 690025.2 und Schreibmaschinen-Modul für S6005 690021.1 dem PROM BM112 == BM116 mit V24A1..3-Treibern. Außerdem wird die Treiberkassette R0115 mitgeliefert.
Von Robotron gibt es folgende Treiber als Kassettenversion:
Treiber | Drucker | Hinweis |
---|---|---|
V24A1.COM | Schreibmaschinen, allgemein alle „dummen“ Drucker mit seriellem Anschluss | restriktives Druckprogramm, organisiert Seitenlayout selbst, interpretiert Steuerzeichen selbst, Grafikzeichen werden als '*' gedruckt. |
V24A2.COM | wie V24A1, aber Codes > 80H werden an Drucker weitergegeben | |
V24A3.COM | einfachste Druckroutine, alle Zeichen werden an Drucker durchgereicht, der Quelltext steht für Eigenentwicklungen zur Verfügung. | |
IFSSA1.COM | Drucker mit IFSS-Interface | Modul muss auf IFSS umgerüstet werden; sonst genau wie V24A1 |
K6311G1.COM | K6311, K6312 | vollgrafikfähiger Druckertreiber; Drucker mit Befehlssatz ISO-G: Einzelpunktmodus: „ESC K …“ und Halbzeilenvorschub: „ESC [ 1 e“ |
K6313G1.COM | K6313, K6314, K6327, K6328, LX 86, FX 1000) | vollgrafikfähiger Druckertreiber; Drucker mit EPSON-Befehlssatz: Einzelpunktmodus: „ESC K …“ und Halbzeilenvorschub: „ESC J …“ |
Besonders der Treiber K6313G1 ist für fast alle Nadeldrucker gut nutzbar.
Ich habe sämtliche mir vorliegenden Druckertreiber disassembliert und aufbereitet (Paket):
Es ist interessant zu sehen, wie sich die Druckertreiber weiterentwickelt haben. Der erste Druckertreiber für den TD40 übernahm die komplette Seiten- und Zeilenaufbereitung selbst. Diesen Code haben alle nachfolgenden Treiber geerbt, obwohl (damals moderne) übliche 9-Nadel-Drucker das alles selbst übernehmen können. Die meisten der obigen Treiber können keine Steuercodes an den Drucker durchreichen; und die Grafikfähigkeit beschränkt sich auf das Ausdrucken einer Bildschirmkopie mit den Pseudografikzeichen im 6×8-Zeichensatz (also nicht ganz original wie der Z9001).
Allen Treibern gemein ist die spartanische Unterstützung von Steuercodes. Es werden nur die Steuerzeichen 08h, 09h, 0Ah, 0Dh wie auf Bildschirm ausgewertet, die Systemfunktionen 0Eh (CTRL/N, Bildschirmkopie) und 10h (CTRL/P, Hardcopy-Modus) sowie 0Ch (!!) und 17h als Zeilenschaltung (CR+LF).
Der S6005-Treiber druckt einige Zeichen, die auf der Schreibmaschine S6005 nicht vorhanden sind, als Alternativ-Zeichen oder als Kombination aus zwei Zeichen. (Das betrifft [,],{,},>,<,~,`,\,|,^,0).
Beim alphanumerischen Druck werden Grafikzeichen generell als „*“ gedruckt.Die Verwendung von Systemressourcen und die Anbindung an das OS ist ebenfalls je nach Treiber leicht verschieden. Gemeinsam ist die Nutzung von max. 182 Byte am Speicherende für die Seitenformat-Einstellungen und den Zeilenpuffer (EOR wird entsprechend herabgesetzt). Die älteren Treiber halten sich noch nicht einmal an die Vorschriften für System-Treiber (s. OS-Handbuch Z9001), und implementieren nur die Treiberfunktion 0 (Statusabfrage). Alle anderen Funktionen werden nicht ausgewertet, es wird immer davon ausgegangen, dass nur noch die Zeichenausgabe genutzt wird!
Robotron hat den Quelltext zu V24A3 veröffentlicht, so dass man die SIO-Ansteuerung und Geräteeinbindung nicht neu erfinden muss. Ich habe mir die Mühe gemacht und alle Treiber disassembliert und aufbereitet. Alle mir bekannten Druckertreiber, Sourcen etc. finden sich in diesem Paket.
u.a.
td40 (690006.8).rom = m506-td40.bin | ROM 506 des Druckermoduls 690006.8 |
k6311_12 (690025.2).rom = M013.rom | ROM M013 des Druckermoduls 690025.2 (alt) |
S6005 (650021.2).rom = M012.ROM | ROM M012 des Druckermoduls 690021.1 (alt) |
BM116.rom | ROM BM116 des Druckermoduls 690025.2 (neu) |
lprinter.rom | ROM vermutlich für SD11xx, von Uni Halle |
BM116.asm | BM116.rom mit V24A1,V24A2,V24A3, basierend auf original-Quellcode von robotron |
k6311_12.asm | Druckermodul 690025.2 f. K6311/12 (bis 3. Quartal 1987), ROM M013 B8 |
S6005.asm | Druckermodul 690021.1 f. S6005 (bis 3. Quartal 1987), ROM M012 |
K6311G1.asm | Druckergrundkassette R0115, Programm K6311g1_com.tap |
K6313G1.asm | Druckergrundkassette R0115, Programm K6313g1_com.tap |
lprinter.asm | vermutlich für SD11xx, von Uni Halle |
td40.asm | Druckermodul 690006.8 f. Thermodrucker TD40 |
V24A3Q.asm | Teiber fuer V24-Drucker (V24A3, Quelle) orig. Robotron |
zsatz_td40.inc | der 6×8-Pixel Zeichensatz für td40.asm, K6311G1.asm, K6313G1.asm |
Das OS des Z9001 ist basierend auf CP/M entwickelt worden und hat dessen Treiberkonzept übernommen. So gibt es 4 logische Geräte, die von den Anwendungsprogrammen genutzt werden können: CONST, READER, PUNCH, LIST. Diesen logischen Geräten werden nun physische Gerätetreiber zugeordnet. Das erfolgt mittels Kommando ASGN. Üblicherweise wird CONST der Tastatur und dem Bildschirm zugeordnet und LIST dem Drucker.
Damit ein physischer Gerätetreiber so zugeordnet werden kann, muss er einige Eigenschaften erfüllen:
Für einen Druckertreiber reichen folgende Systemkommandos aus:
Das Ganze ist in der Betriebssystembeschreibung ausführlicher erklärt. Ebenfalls gibt es in mp 10/87 S. 311 ff. Erläuterungen zum Gerätetreiber-Handling des Z9001.
Hinweis: Die Robotron-Treiber umgehen den Mechanismus von ASGN und tragen sich selbst in die internen Gerätetreiberlisten ein; ein Robotron-Druckertreiber wird also ganz normal im OS geladen; NICHT mit ASGN.
Noch ein Tipp: Das Druckermodul sollte man so umbauen, dass es als vollwertiges V24-Modul genutzt werden kann (s.a. Beschreibung 192K-Modul): Für eine vollständige V24-Schnittstelle sind lediglich alle vorhandenen Anschlüsse auch zu nutzen. Selbst im angebauten Kabel sind noch Adern frei!
Hinweis: Es ist besser, statt RTS das Signal DTR zu nutzen. Dazu muss auf der Leiterplatte der Leiterzug zur PIO Pin17 getrennt werden und stattdessen mit Pin 16 verbunden werden!
Für Drucker mit Parallelschnittstelle bietet sich das E/A-Modul an oder es wird der User-Port des Z9001 genutzt. Die Hardware für eine solche Erweiterung hält sich in minimalen Grenzen. Einen umfangreichen Beitrag dazu gab in der mikroprozessortechnik (Dr. Frank Schwarzenberg, „Standard-Interfaces über den User-Port des KC85/1“, mp 10/87, S.311-315)
Hier ist meine Lösung: An einem normalen Centronics-Kabel wird der Sub-D-Stecker abgebaut und ein 3×5-DDR-Steckverbinder angeschlossen. Für das Ready-Signal ist ein D121 zusätzlich im Relaisgehäuse platziert. Dazu gehört mein Vollgrafikdruckertreiber LX86NR. Beim Einlesen im OS des Computers stellt sich der Treiber automatisch ans logische RAM-Ende und initialisiert seinen Z9001-Modus. Soll im BASIC gedruckt werden, so ist unbedingt das 'memory end' unter den Beginn von LX86NR zu stellen. Es gibt 3 Modi: Z9001-Modus, Vollgraphik-Modus (Es werden alle Grafikzeichen und ein Hardcopy korrekt gedruckt!), Intern-Modus.
Aufbauend auf mp 10/87 S. 311 ff. gibt es einen vollgrafikfähigen Druckertreiber V24G für Drucker mit EPSON-Befehlssatz undt V24-Schnittstelle. Im Gegensatz zu den Treibern von robotron wird hier (wie auch in meinem Treiber) der originale Z9001-8×8-Pixel-Zeichensatz genutzt.