Hardcopy für 9-Nadler: Streifenlose Bräune/Schwärze

Der ST unterstützt von Natur aus 9 Nadel-Drucker. Die Anwender können zufrieden sein. ‘Alternate+Help’ gedrückt und schon erscheint der Bildschirminhalt auf dem Drucker. Doch nach näherem Hinsehen erkennt man, daß die Qualität nicht so ist, wie gewünscht.

Die Hardcopyfunktion, über ‘Alternate+Help’ erreichbar, hat die Angewohnheit, die 640 horizontalen Punkte des Bildschirms über 960 Druckpunkte auszudrucken.

Ein Punkt des Bildschirms entspricht also manchmal einem, manchmal zwei Druckpunkten auf dem Papier, was zu deutlich sichtbaren Schönheitsfehlern führt. Dem kann man Abhilfe schaffen, indem man den Grafikmodus, sprich die Punktdichte pro Inch, so ändert, daß auf 640 Bildpunkte tatsächlich 640 Dots auf das Papier kommen. Das hat nun aber den Nachteil, daß zum Beispiel eine gerade Linie recht deutlich als eine Aneinanderreihung von Punkten und nicht, wie es sein sollte, als gleichmäßiger Strich sichtbar wird. Außerdem ist solch eine Hardcopy recht blaß. Das kann durch zweimaliges Ausdrucken zwar ausgeglichen werden, strapaziert aber Geduld, Druckkopf und Ohr.

Nicht zuletzt sind Hardcopies in DIN A4-Breite oft zu groß, um sie beispielsweise in Texte einzubinden.

Das vorliegende Programm versucht nun, diese Nachteile weitgehend auszugleichen. Zur Funktion und Arbeitsweise:

Das Bild, welches im gängigen Screen-format (32000 Bytes) abgespeichert sein muß, kann in zwei verschiedenen Größen gedruckt werden:

Modus 1 mit ca. 68*47 mm
Modus 2 mit ca. 135*96 mm

Um eine Verkleinerung des Bildes zu erreichen, wird wohlgemerkt nicht etwa jedes zweite Bit übersprungen o.ä., sondern die Punktdichte in beiden Richtungen vergrößert. Es kommen so nach wie vor 640*400 Bildpunkte aufs Blatt, es geht also keine “Information” verloren.

Ein Punkt auf dem Bildschirm entspricht einem Dot auf dem Papier. Durch die hohe Punktdichte erreicht man außerdem “echte” Linien und eine hohe Kontrastwirkung.

Modus 1

Benutzt wird hier die vierfache Dichte horizontal (240 Punkte/Inch) und ein Punktabstand von 1/216 Inch vertikal (216 Punkte/Inch). Da der physikalische Abstand der Nadeln mit 1/72 Inch dreimal so groß ist, kann nur jede dritte Bitreihe des Bildschirms auf die acht Nadeln “gelegt” werden, danach rückt das Papier um 1/216 Inch nach oben und der Vorgang wiederholt sich noch zweimal. Jetzt sind also 3*8=24 Bitreihen ausgedruckt. Dann geht’s von vorne los, bis der Bildschirm abgegrast ist.

Modus 2

Nun wird der Punktabstand verdoppelt: 120 Punkte/Inch horizontal und 108 Punkte/Inch vertikal. Jetzt können pro Durchlauf nur noch vier Nadeln belegt werden, da der Punktabstand von 1/108 Inch (vertikal) nur noch mit jeder zweiten Nadel zur Deckung kommt. Dies wird ebenfalls zweimal wiederholt, danach kommen die anderen vier Nadeln an die Reihe, um eine gleichmäßige Belastung zu erreichen. Mit Ausnahme von ein paar zusätzlichen Schleifen ist dieser Teil fast identisch mit dem von Modus 1. Schaut man mal genauer hin beim Drucken, erkennt man die Arbeitsweise recht leicht.

Das Programm ist in GFA-Basic geschrieben und mit einem Star NL10 betrieben worden, dessen Steuercodes identisch mit denen der Epson-9-Nadler sind.

' ======================================
' == Hardcopies in Miniaturausführung ==
' == für Epson-kompatible Drucker     ==
' == von Michael Kraus, Schweinfurt   ==
' ======================================

On Error Gosub Fehler !Fehlerabfang 
Alert 3,"Miniatur-Hardcopy-Programm für| Epson-Drucker (und Kompatible)|
		Modus 1:	68	* 47 mm| Modus 2: 135 * 96 mm",0,"Modus 1|Modus 2",M%

Fileselect "\*.*", "", N$ !File waehlen
If N$=""
	End
Endif
Bload N$,Xbios(2)	!File auf Bildschirm
If M%=1 
	Gosub C1 
Else
	Gosub C2 
Endif 
Run

Procedure C1	!Modus 1
	Lprint Chr$(27);"3";Chr$(1);	!Abstand 1/216 inch
	For I%=0 To 399 Step 24 
		For J%=0 To 2 
			S1%=I%+J%
			S2%=S1%+3
			S3%=S2%+3
			S4%=S3%+3
			S5%=S4%+3
			S6%=S5%+3
			S7%=S6%+3
			S8%=S7%+3
			Lprint Chr$(27);"*";Chr$(3);Chr$(128);Chr$(2);
							!640 Bytes zu uebergeben
			For K%=0 To 639
				Bm%=128*Point(K%,Sl%)+64*Point(K%,S2%)+32 *Point(K%,S3%)+16*Point(K%,S4%) 
				Bm%=Bm%+8*Point(K%,S5%)+4*Point(K%,S6%)+2 *Point(K%,S7%)+Point(K%, S8%)
				Lprint Chr$(Bm%);	!Die Bytes drucken
			Next K%
			Lprint	!1/216 inch weiter
		Next J%
		Lprint Chr$(27);"J";Chr$(20)	!Weiter fuer naechsten Durchgang
	Next I%
Return
Procedure C2 !Modus 2
	Lprint Chr$(27);"3”;Chr$(2); !Abstand 2/216 inch 
	For H%=0 To 399 Step 24 
		For I%=0 To 1 
			B1%=2^(7-I%)
			B2%=2^(5-I%)
			B3%=2^(3-I%)
			B4%=2^(1-I%)
			For J%=0 To 2 
				S1%=H%+I%*12+J%
				S2%=S1%+3
				S3%=S2%+3
				S4%=S3%+3
				Lprint Chr$(27);"*";Chr$(l);Chr$(128);Chr$(2); ! 640 Bytes zu uebergeben
				For K%=0 To 639
					Bm%=B1%*Point(K%,S1%)+B2%*Point(K%, S2%)+B3%*Point(K%,S3%)+B4%*Point(K%,S4%) 
					Lprint Chr$(Bm%); !Die Bytes drucken 
				Next K%
				Lprint	!2/216 inch weiter
			Next J%
			Lprint Chr$(27);"J";Chr$(14) !Weiter zum Nadelwechsel
		Next I%
		Lprint Chr$(27);"J";Chr$(3)	!Weiter fuer naechsten Durchgang
	Next H%
Return
Procedure Fehler	!Neustart bei Fehler
	Run
Return

Listing der Minihardcopy


Michael Kraus
Aus: ST-Computer 12 / 1988, Seite 88

Links

Copyright-Bestimmungen: siehe Über diese Seite