APPLICATIONSPROGRAMMATION ★ Das achte Bit ★

8 Bit Centronics Output (Computer Technik)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Ein Stückchen Draht verhilft dem Schneider CPC 464 zu einer ‘ordentlichen' Druckerschnittstelle

Der Schneider CPC 464 hat sich aufgrund seiner Performance und seines sehr guten Preis/Leistungsverhältnisses einen guten Namen gemacht. Doch wo viel Sonne ist, kann auch einmal etwas Schatten sein. Kritikpunkt ist hier die von den Entwicklern aus Gründen der Hardwareeinsparung etwas zu mager ausgelegte Centronics-Schnittstelle für den Drucker, die nur ein sieben Bit breites Datenwort liefert. Das reicht zwar für die Textausgabe in ASCII, für Grafik-Plots hingegen oder Sonderzeichen ist bei den meisten Druckern die Übertragung eines 8-Bit-Datenwortes ein unbedingtes Muβ. Im folgenden wird eine Hard- und Softwarelösung dieses Problems angeboten.

Zwar kann man sich bei einer Hardcopy auch mit sieben Bits behelfen, indem man nur vier Nadeln (siehe c't 4/85 S. 60) oder sieben Nadeln ansteuert, aber das ist nicht nur langsamer als die Übertragung mit acht Bits, sondern stößt auch auf Schwierigkeiten bei der Parameterübergabe.

Der Epson-Drucker beispielsweise — und seine Kompatiblen — benötigen im Grafik-Mode die hexadezimale Angabe der Zeilenlänge, beim Schneider also den Wert &0280 (entspricht 640 dezimal). Diesen Wert kann der CPC jedoch gar nicht ausgeben, da das Byte &80 ja ein gesetztes achtes Bit verlangt. Auch hier gibt es einen Notbehelf: man ignoriert den letzten Bildpunkt und übergibt als Zeilenlänge &0279.

Keine Hilfskonstruktion vermag hingegen einem Drucker die oftmals vorhandenen Sonderzeichen zu entlocken, hierzu ist normalerweise das achte Bit unumgänglich — doch, woher soll man es nehmen?

Als erstes gilt es, für das grundsätzlich auf ‘low' liegende achte Bit (DB7) einen programmierbaren Portausgang zu finden. Bei näherer Betrachtung der Innenschaltung des CPC 464 fallen zwei Ausgänge am C-Port des I/O-IC 8255 auf, die beide für die Recorderansteuerung genutzt werden. Es handelt sich hierbei um die Leitungen C4 (Pin 13) und C5 (Pin 12) des C-Ports vom 8255. Der Output C4 dient zur Motorsteuerung, und Output C5 wird für die Datenausgabe zum Recorder verwendet. Da Druckerund Kassettenausgaben niemals gleichzeitig erfolgen, kann es bei doppelter Nutzung der genannten Outputs keine gegenseitigen Beeinträchtigungen geben. Der Verfasser hat sich zur Ansteuerung des achten Bits der Centronics-Schnittstelle für den Ausgang C5 entschieden (in der Testphase jedoch C4 benutzt — Recorderrelais als akustische Hilfe —).

Eingreifen ...

Bevor nun die Hardware-Modifikation in Angriff genommen wird, sollte jeder CPC464-Besitzer noch einmal in sich gehen, weil mit dem Eingriff de facto auch die Garantie erlischt.

Folgende Werkzeuge sollten griffbereit liegen: Lötkolben, temperaturgeregelt oder maximal 20 W, Kreuzschlitz-Schraubendreher und ein scharfer 3—4 mm Spiralbohrer oder ein scharfes Messer. Um Schaden zu vermeiden, sollten besser nur erfahrene ‘Löter' ans Werk gehen.

Zuerst müssen alle Stecker an der Rückseite der Tastatur entfernt werden. Zum öffnen des Tastaturgehäuses sind die sechs Kreuzschlitz-Schrauben zu lösen. Das Gehäuseoberteil mit Cassettenrecorder und Tastatur wird nun nach oben entfernt und senkrecht auf ein unmittelbar hinter dem Unterteil liegendes, etwa zwei Zentimeter dickes Buch, gestellt. Auf diese Art und Weise erspart man sich die Steckverbindungen zum Recorder und zur Tastatur zu lösen.

Auf der nun gut zugänglichen Computerplatine findet man direkt vor dem Centronics-Port das 8 Bit D-Latch 74LS273. Unmittelbar vor dem Latch liegt der 40polige PIO-Chip 8255. Als erstes muß nun der 9. Kontaktstreifen — das achte Bit — von links von Masse getrennt werden (Kontaktstreifen 1 ist markiert, Streifen 9 liegt über R108). Nun wird der scharfe Spiralbohrer auf die Massedurchführung, die hier die Masseverbindung zum 9. Kontaktstreifen herstellt, gesetzt und durch Drehen zwischen Daumen und Zeigefinger so lange geschabt, bis die Verbindung gut sichtbar unterbrochen ist. Sollte kein Spiralbohrer zur Hand sein, kann man die Verbindung auch direkt an der Platinendurchführung mit einem kleinen, scharfen Messer durchkratzen. Eine optische Kontrolle, am besten mit einer Lupe, sollte die hundertprozentige Unterbrechung bestätigen. Ein etwa fünf Zentimeter langes Stück isolierter Schaltdraht wird nun an beiden Enden nur kurz abisoliert und sorgfältig verzinnt. Auf dem vorher ebenso vorsichtig verzinnten äußeren Ende des 9. Kontaktstreifens wird der Draht nun angelötet. Das verbleibende freie Ende kann man jetzt an Pin 12 (12. Pin von links) des IC 8255 oder an die darunterliegende Durchkontaktierung anlöten (siehe Foto). Noch eine letzte optische Kontrolle beider Lötstellen, und der Computer kann wieder zugeschraubt werden. Die hardwaremäßigen Voraussetzungen für eine 8-Bit-Datenausgabe an den Centronics-Port sind hiermit gegeben.

... und umbiegen

Bei der Software handelt es sich um eine kurze Maschinenroutine, die als DATA-Feld in den RAM-Bereich geladen wird. An Hand des Assemblerlistings (Programm 1) soll nun die Funktion dieser Routine beschrieben werden. Durch ‘Verbiegen' der sogenannten Indirections bei &BD2B (MC Print Char) wird das zu druckende Zeichen nicht direkt zur bekannten Betriebssystemroutine bei &07F2, sondern zur RAM-Routine umgeleitet. Einsprung ist hier XPRICA. Die erste Subroutine D7LOW stellt sicher, daß das achte Bit low ist. Danach untersucht sie, ob das MSB des zu druckenden Bytes high ist; wenn nicht, wird das Byte normal über die ROM-Routine MCPRICA ausgegeben. Ist das MSB high, wird mit D7HIGH das MSB am Centronics-Port auf high gesetzt und anschließend mit MCPRICA ausgegeben. Zuletzt wird D7 wieder auf low gesetzt.

Normalerweise ist bis hier die Acht-Bit-Ausgabe softwaremäßig erledigt, wenn nicht der Schneider den WIDTH BASIC-Befehl hätte. Mit dem WIDTH-Befehl kann der Programmierer die Zeichen/Zeile auf dem Drucker festlegen. Dieser Befehl ist fest mit der Druckerausgaberoutine des BASIC-Betriebssystems verknüpft und ist leider über Indirections nicht so ohne weiteres außer Betrieb zu setzen. Ist zum Beispiel WIDTH =132, so wird bei Grafikausgaben alle 132 Prints ein Carriage Return (CR:&0D) und Line feed (LF:&0A) gedruckt, was die Grafik doch mehr oder weniger verunziert. Hier hilft ein Trick, die CRLF-Ausgabe zu verhindern.

Das Betriebssystem inkrementiert bei jeder Zeichenausgabe das PRIPOS-Register und gibt ein CRLF aus, sobald PRIPOS den Wert von WIDTH erreicht. Mit der Routine PRIP05 wird das Register konstant auf fünf gesetzt. Durch diese Maßnahme ist der WIDTH-Befehl quasi außer Funktion gesetzt, was im Normalfall auf keine Probleme stößt, da nahezu alle gebräuchlichen Drucker am Zeilenende automatisch CRLF ausgeben.

Programm 2 zeigt das kurze Initialisierungsprogramm in BASIC für einen Epson-kompatiblen Drucker. Es läßt sich leicht mittels ‘MERGE' in bestehende Programme einbinden. Mit RUN 50000 muß es nur einmal initialisiert werden. Alle folgenden Druckeraktionen werden dann wie gewohnt mit PRINT #8 aufgerufen.

RUN 60000 setzt die Indirection &BD2B wieder in den ursprünglichen Zustand zurück.

Die Zeilen 100—130 sind ein Beispiel für eine Grafikausgabe, die zum besseren Verständnis einmal ohne und einmal mit Erweiterung getestet werden sollte. Ohne Software-Erweiterung ist die ‘verunzierende' WIDTH-Funktion (CRLF) deutlich zu erkennen.

Die Routine belegt den oberen RAM-Bereich (Floppy-Betrieb) und kann mit Hilfe des Assemblerlistings leicht verlegt werden.

c't

★ PUBLISHER: Computer Technik (c't)
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR: Jens DAMMANN
★ INFOS:
  • Programm 1 : Die Umbiegung der Drucker-Software auf acht Bit
  • Programm 2 : Initialisierung des Epson-Druckers und seiner Kompatiblen

 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» 8  Bit  Centronics  Output    (Computer  Technik)    (ASM-SOURCE)    GERMAN    LISTINGDATE: 2024-03-08
DL: 18
TYPE: PDF
SiZE: 42Ko
NOTE: Supplied by archive.org ; 1 page/PDFlib v1.6

» 8  Bit  Centronics  Output    (Computer  Technik)    GERMAN    LISTINGDATE: 2024-03-08
DL: 12
TYPE: PDF
SiZE: 31Ko
NOTE: Supplied by archive.org ; 1 page/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Picture Printer
» Applications » Bibliotk Printer
» Applications » Colour Dump for Mono Printers (Amstrad Action)
» Applications » Sprinter pour DMP2000 (CPC Revue)
» Applications » Finger Print
» Applications » Mini-Print-Shop
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 281 millisecondes et consultée 82 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.