APPLICATIONSPAO/PRESSE ★ Hardcopy-Programm für Schneider CPC ★

Hardcopy-Programm (Computer Technik)Applications Pao/presse
★ 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 ★ 

Schwarz auf weiß

Mil dem Schneider CPC 464 ist es ohne weiteres möglich, hochauflösende Grafiken zu erstellen. Aber was nützt die schönste Grafik, wenn man sie nicht schwarz auf weiß der Nachwelt erhalten kann. Allerdings vertritt der Hersteller diesbezüglich wohl einen anderen Standpunkt: Dem Rechner fehlt eine entsprechende Kopier-Routine. Außerdem gilt es, den von fast allen Druckern doppelt ausgeführten Zeilenvorschub auszuschalten.

Die Lösung des zuletzt genannten Problems besteht aus der Unterbrechung der Leitung, die zum Pin 14 der Schnittstelle führt (c't 3/85). Um die Grafiken auszudrucken, braucht der Schneider allerdings ein kleines Programm.

Probleme

Die Zeichenübertragung zwischen Computer und Drucker bereitet weitere Probleme: Der Schneider sendet nur sieben Bit zum Drucker. Dadurch fehlt im Ausdruck die oberste Pixelreihe bei jeder Schreibstelle. Nimmt man in Kauf, daß die Übertragung des Bildes etwas länger dauert, kann man das Byte in zwei Halb-Bytes zerlegen und diese vier Bit zum Drucker senden, wodurch man eine vollständige Hardcopy erhält.

Eine weitere Schwierigkeit bereitet das komplexe Bildschirm-Mapping des Schneider. In jeder Speicherstelle des Bildschirmspeichers ‘steht' nicht nur der Bildpunkt (Pixel), sondern auch die Information über dessen Farbe. Somit liefert das
Hardcopy-Programm nur befriedigende Ergebnisse, wenn der Rechner im Mode 2 betrieben wird. Außerdem ändert der CRT-Controller im Schneider das Mapping (Speicherplan), sobald das Schirmbild 'scrollt', also nach oben oder unten bewegt wird.

Interna

Das dem Drucker übermittelte Byte wird ‘vertikal' ausgegeben. Im Bildspeicher des Computers liegt es jedoch ‘horizontal'. Somit muß zuerst von allen acht Byte der ersten Schreibstelle das erste Bit ausgelesen und zu einem Byte zusammengefaßt werden. Es folgt das zweite Bit und so weiter, bis die erste Schreibstelle ausgelesen ist (Bild 1).

Bild 1. Aufbereitung der ‘Bildschirm-Bytes' >>

Das Hardcopy-Programm besteht aus zwei Teilen. Der erste Teil ist in BASIC geschrieben und lädt bei Bedarf (Zeile 60060) das Maschinenprogramm aus den DATA-Zeilen.

Die eigentliche Lade-Routine ist durch die Zeilen 60300 bis 60410 realisiert. Eine weitere Aufgabe des BASIC-Pro-gramms ist die Übermittlung der Daten zum Drucker.

Dazu wird zuerst (Zeile 60040) der Zeilenabstand des Druckers so eingestellt, daß die Halb-Bytes (je vier Bit) bündig aneinandergedruckt werden, ln den Zeilen 60070 und 60080 kann man die erste und die letzte Zeile der Kopie festlegen.

Das Programm gibt jetzt den Bildschirminhalt Zeile für Zeile an den Drucker aus. Dazu errechnet es die erste Adresse der Zeile. Anschließend übergibt das Programm die Adresse der Bildschirmschreibstelle dem Maschinenprogramm (Zeile 60120 und 60130). Die Maschinenroutine legt im Speicher ab Adresse A06Ah alle 640 Bytes einer Zeile (8 Pixel = 8 Bit x 80 Schreibstellen) aufbereitet ab. Diese Werte werden nun durch zwei Schleifen, eine für die oberen vier Bit und eine für die unteren vier Bit, an den Drucker ausgegeben.

Durch die Befehle in den Zeilen 60110 und 60200 wird der Drucker in den Bitmuster-Modus geschaltet. Diese Anweisung ist ebenso wie der Befehl in Zeile 60040 vom verwendeten Druckertyp abhängig.
Die Anweisungen im vorliegenden Programm gelten für einen Epson RX 80 F/T. Verwendet man den Schneider Drucker NLQ, sind die Zeilen 60110 und 60200 folgendermaßen zu ändern:

PRINT #8,CHR$(27); "Y";
CHR$(639 MOD 256);
CHR$(INT(639/256));

Zusätzlich sind noch die folgenden zwei Zeilen einzufügen:

60185 PRINT #8,CHR$(13);
60245 PRINT #8,CHR$(13);

Der zweite Teil des Programms, die Maschinenroutine, hat die Aufgabe, die Bildschirmspeicherstelle auszulesen, aufzubereiten und im Ergebnisspeicher (ab A06Ah) abzulegen.

In Z80

Das Maschinenprogramm besteht aus zwei Unterprogrammen und einem ‘Steuerteil'. Beim Start der Routine und dem Setzen der Register beginnen zwei ineinander verschachtelte Schleifen. Die innere Schleife wird achtmal durchlaufen (für jedes Byte der Schreibstelle einmal), während die äußere Schleife 80mal die innere aufruft (für jede Schreibstelle pro Zeile = 640 Bytes). Die innere Schleife (Nr. 12—19) ruft zuerst das Unterprogramm I auf. Hier wird immer das achte Bit von allen acht Byte einer Schreibstelle ausgelesen und im Ergebnisspeicher abgelegt. Das anschließend aufgerufene Unterprogramm 2 ‘rückt' alle acht Bytes einer Schreibstelle auf dem Bildschirm (im Bildspeicher) um eine Stelle nach links. Nun kann das Unterprogramm 1 wieder die achte Stelle des Bytes auslesen, liest aber tatsächlich das nächstniedrigere Bit. Nach achtmaligem Linksschieben hat das ‘Bildschirm'-Byte wieder seinen ursprünglichen Wert. Dieser Vorgang läuft so schnell ab, daß auf dem Bildschirm davon nur ein leichtes Flimmern zu bemerken ist.


Bild 2. Ausdruck einer Grafik mit dem Hardcopy-Programm

Praxis

Man sollte das Hardcopy-Programm direkt im Anschluß an eine Grafikausgabe mit einem unbedingten oder bedingten Sprung (GOTO oder INKEY$) starten. Diese Maßnahme ist nötig, damit die Darstellung nicht durch eine Textausgabe zerstört oder der Bildschirminhalt gescrollt wird. Das Resultat einer mit diesem Programm erstellten Hardcopy zeigt Bild 2.

Rudolf Schuth , C'T

★ PUBLISHER: Computer Technik (c't)
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR: Rudolf SCHUTH
 



★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Hardcopy-Programm    (Computer  Technik)    (ASM-SOURCE)    GERMAN    LISTINGDATE: 2024-03-07
DL: 169
TYPE: PDF
SiZE: 57Ko
NOTE: Supplied by archive.org ; 1 page/PDFlib v1.6

» Hardcopy-Programm    (Computer  Technik)    GERMAN    LISTINGDATE: 2024-03-07
DL: 162
TYPE: PDF
SiZE: 44Ko
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 » Anti-Erreurs (CPC Infos)
» Applications » Terramaster
» Applications » Transfert d'Images
» Applications » Anti-Erreurs (CPC Revue)
» Applications » Cryptage
» Applications » Interrupts Demonstration (Personal Computing Today)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» 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.732-desktop/c
Page créée en 758 millisecondes et consultée 576 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.