Homecomputer DDR    (Gespiegelt und redaktionell gekürzt als Sicherheitskopie von http://hc-ddr.hucki.net/wiki/doku.php/z9001:drucken)  

Drucken

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.

Druckermodule von Robotron und Drucker mit serieller Schnittstelle

drucker_modul.jpgdrucker_platine.jpg modul_schreibm_aussen.jpgmodul_schreibm.jpg
(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:

  • Druckermodul 690006.8 f. Thermodrucker TD40, andere Leiterplatte
    ROM M506, Systemkommandos '#', 'TD40'
  • Schreibmaschinen-Modul für S6005 690021.1 (bis 3. Quartal 1987)
  • Druckermodul 690025.2 f. K6311/12 (bis 3. Quartal 1987)
    ROM M013 B8, Systemkommandos '#', 'K6311/12'
  • Schreibmaschinen-Modul für S6005 690021.1 und Druckermodul 690025.2 ab 3. Quartal 1987
    ROM BM116, Systemkommandos 'V24A1', 'V24A3', 'V24A3'

Ü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.

Modulunterlagen

  1. Die Dokumentation zum Schreibmaschinenmodul ab 3. Quartal 1987
  2. Die Dokumentation zur Druckergrundkassette R0115
  3. Den mp-Artikel über Gerätetreiber (mikroprozessortechnik 10/87, S.311-315)
  4. bei Interesse: die Dokumentation für Modul 690006.8 (alt) f. K6303
  5. bei Interesse: die Dokumentation für Modul 690025.2 (alt, bis II 87) f. K6311/K6312

Druckertreiber

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):

  • TD40-Treiber des Moduls 690006.8 (M506), (grafikfähig)
  • K6311/12-Treiber des Moduls 690025.2, (nicht grafikfähig)
  • S6005-Treiber des Moduls 690021.1, (nicht grafikfähig)
  • V24Ax-Treiber der neuen Module ab 3. Quartal 1987 (BM116), (nicht grafikfähig)
  • K6311G1.COM, K6313G1.COM (grafikfähig)
  • ein Treiber LPRINTER, vermutlich für einen Drucker SD11xx, Uni Halle, (nicht grafikfähig)

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!

Softwarequellen

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

Was erwartet das Betriebssystem?

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:

  1. Treiberadresse muss in der Adresstabelle für Gerätetreiber eingetragen sein (0EFC9H-0EFE8H)
  2. der Treiber muss eine 8 Byte lange Bezeichnung bereitstellen
  3. der Treiber muss die Systemkommandos für Gerätetreiber umsetzen.

Für einen Druckertreiber reichen folgende Systemkommandos aus:

  1. Initialisieren/Rücksetzen des Gerätes (A=0FFh)
  2. Abfrage Status (A=0)
  3. Ausgabe Zeichen (A=0, Zeichen in C)

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.

Umbau eine Druckermoduls als vollwertiges V24- (RS232) Modul

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!

Anschluss von Druckern mit paralleler Schnittstelle (centronics)

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.

Vollgrafik-Druckertreiber für Anschluss eines Druckers am Userport (Serielle Schnittstelle)

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.

 

Zuletzt geändert: 2012/03/03 15:07
   
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 3.0 Unported