home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mega Top 1
/
os2_top1.zip
/
os2_top1
/
APPS
/
TEKST
/
DVID15G1
/
EMTEX
/
DOC
/
GERMAN
/
MAKEDOT.DOC
< prev
Wrap
Text File
|
1994-09-01
|
40KB
|
1,258 lines
==============================================================================
MAKEDOT.DOC für makedot 1.2d VERSION: 01-Sep-1994
==============================================================================
Inhalt
======
1 Einleitung
2 Aufruf
2.1 Umwandlung einer Textdatei in eine Parameterdatei
2.2 Umwandlung einer Parameterdatei in eine Textdatei
2.3 Konvertierung zwischen verschiedenen DOT-Dateiformaten
2.4 Umwandlung einer Textdatei in eine Binärdatei
2.5 Umwandlung einer Binärdatei in eine Textdatei
3 Aufbau der Textdatei für eine Parameterdatei
3.1 Schlüsselwörter
3.1.1 Schlüsselwörter für alle Parameterdateitypen
3.1.2 Schlüsselwörter für TYPE=DOT
3.1.3 Schlüsselwörter für TYPE=DOT_HORZ
3.1.4 Schlüsselwörter für TYPE=BITMAP
3.2 Codesequenzen
3.3 Beispiele für Codesequenzen
4 Aufbau der Textdatei für eine Binärdatei
5 Hinweise
6 Anhang: Alte Methode für Parameter in Codesequenzen
7 Entstehungsgeschichte
1 Einleitung
============
Das Programm makedot wird zur Erzeugung von Parameterdateien für
dvidot verwendet. Es hat hierfür zwei Funktionen:
- Umwandlung einer Textdatei in eine Parameterdatei (DOT-Datei).
- Umwandlung einer Parameterdatei (DOT-Datei) in eine Textdatei.
Wenn Sie eine Parameterdatei ändern wollen, müssen Sie diese zunächst
in eine Textdatei umwandeln lassen. Diese Textdatei können Sie dann
mit einem Texteditor ändern. Anschließend kann aus dieser Textdatei
eine Parameterdatei erzeugt werden.
makedot kann aber auch zur Erstellung von Binärdateien wie sie z.B.
für die Option +init-files von dvihplj und dvidot benötigt werden ver-
wendet werden.
2 Aufruf
========
2.1 Umwandlung einer Textdatei in eine Parameterdatei
-----------------------------------------------------
Der Aufruf
makedot -c [<Optionen>] <eingabe_datei> [<ausgabe_datei>]
erzeugt aus der Textdatei <eingabe_datei> die DOT-Datei
<ausgabe_datei>. Die Standarderweiterung für die Ausgabedatei ist DOT.
Wenn keine Ausgabedatei angegeben wird, wird der Name der Eingabedatei
(mit .dot) verwendet. Wenn für die Eingabedatei `-' angegeben wird, so
wird von der Standardeingabe (stdin) gelesen.
2.2 Umwandlung einer Parameterdatei in eine Textdatei
-----------------------------------------------------
Der Aufruf
makedot -d [<Optionen>] <eingabe_datei> [<ausgabe_datei>]
erzeugt aus der DOT-Datei <eingabe_datei> die Textdatei
<ausgabe_datei>. Die Standarderweiterung für die Eingabedatei ist DOT.
Wenn keine Ausgabedatei angegeben wird, wird der Name der Eingabedatei
(ohne Erweiterung .dot) verwendet. Wenn für die Ausgabedatei `-' ange-
geben wird, so erfolgt die Ausgabe auf die Standardausgabe (stdout).
2.3 Konvertierung zwischen verschiedenen DOT-Dateiformaten
----------------------------------------------------------
dvidot 1.4n und später kann alte DOT-Dateien nicht mehr verwenden.
Diese müssen mit makedot konvertiert werden. Der Aufruf
makedot -r [<Optionen>] <eingabe_datei> [<ausgabe_datei>]
konvertiert die DOT-Datei <eingabe_datei> in die DOT-Datei
<ausgabe_datei>. Wenn keine Ausgabedatei angegeben ist, wird die
Eingabedatei mit der konvertierten Datei überschrieben.
Wenn `-o' angegeben wird, erzeugt makedot eine Datei, die von älteren
Versionen von makedot und dvidot bearbeitet werden kann -- sofern eine
Umsetzung möglich ist. Um z.B. eine neue DOT-Datei in das alte Format
zu konvertieren, können Sie
makedot -ro <eingabe_date> [<ausgabe_datei>]
verwenden.
Wenn `-q' angegeben wird, gibt makedot nicht seine Titelzeile aus.
2.4 Umwandlung einer Textdatei in eine Binärdatei
-------------------------------------------------
Der Aufruf
makedot -b [<Optionen>] <eingabe_datei> <ausgabe_datei>
wandelt die Textdatei <eingabe_datei> in die Binärdatei
<ausgabe_datei> um. Wenn für die Eingabedatei `-' angegeben wird, so
wird von der Standardeingabe (stdin) gelesen.
Wenn `-q' angegeben wird, gibt makedot nicht seine Titelzeile aus.
2.5 Umwandlung einer Binärdatei in eine Textdatei
-------------------------------------------------
Der Aufruf
makedot -a [<Optionen>] <eingabe_datei> <ausgabe_datei>
wandelt die Binärdatei <eingabe_datei> in die Textdatei
<ausgabe_datei> um. Wenn für die Ausgabedatei `-' angegeben wird, so
erfolgt die Ausgabe auf die Standardausgabe (stdout).
Wenn `-q' angegeben wird, gibt makedot nicht seine Titelzeile aus.
3 Aufbau der Textdatei für eine Parameterdatei
==============================================
Eine Textdatei kann Kommentarzeilen enthalten. Diese beginnen mit
einem `*' oder `%'. Alle darauffolgenden Zeichen dieser Zeilen werden
dann ignoriert. Auch Leerzeilen werden ignoriert.
Alle anderen Zeilen enthalten ein Schlüsselwort nach dem ein
Gleichheitszeichen stehen muß. Nach dem Gleichheitszeichen folgen die
Parameter für dieses Schlüsselwort. (Die Parameter können bei manchen
Schlüsselwörtern auch fehlen.)
3.1 Schlüsselwörter
-------------------
In den folgenden Listen sind alle Schlüsselwörter aufgeführt. Sie
müssen alle hier gezeigten Schlüsselwörter (außer den in eckigen
Klammern eingeschlossenen) benutzen, die Reihenfolge ist beliebig.
Optionale Teile einer Zeile sind in eckige Klammern eingeschlossen,
Alternativen durch senkrechte Striche getrennt und in runde Klammern
eingeschlossen. Für die verschiedenen Sorten von Argumenten werden
diese Abkürzungen benutzt:
<d> Längenangabe (dimension): Zahl und TeX-Einheit (auch px)
<e> <Ausdruck>
<n> Zahl
<s> Codesequenz
<t> Text
Diese Argumenttypen sind weiter unten erklärt. Je nach Einstellung von
TYPE= können verschiedene Schlüsselwörter verwendet werden.
3.1.1 Schlüsselwörter für alle Parameterdateitypen
--------------------------------------------------
Die folgenden Schlüsselwörter können für beide Arten von
Parameterdateien verwendet werden.
[COMMENT=[<t>]]
Kommentar. Der Kommentar wird in der Parameterdatei gespeichert
aber ignoriert.
ENV_NAME=<t>
Name einer Environment-Variablen, aus der dvidot Optionen
entnehmen soll.
FONT_PATH=<t>
Pfad für Zeichensatzdateien. Dies ist die Voreinstellung für
+font-files.
LOG_NAME=<t>
Name der Protokolldatei.
PAGE_HEIGHT=<d>
Seitenhöhe. Voreinstellung für +height.
PAGE_WIDTH=<d>
Seitenbreite. Voreinstellung für +width.
RESOLUTION=<n1> <n2>
Auflösung. <n1> ist die Voreinstellung für +resolution-x, <n2> ist
die Voreinstellung für +resolution-y.
[TYPE=[(DOT | DOT_HORZ | BITMAP)]]
Typ der Parameterdatei. Die Typen DOT und DOT_HORZ erzeugen eine
Parameterdatei für Matrixdrucker. Der Typ BITMAP erzeugt eine
Parameterdatei für die Erzeugung einer Grafikdatei. Bei TYPE= ohne
Argument oder bei Fehlen von TYPE= wird TYPE=DOT angenommen.
[VF_PATH=<t>]
Pfad für VF-Dateien. Dies ist die Voreinstellung für
+virtual-fonts und sollte leergelassen werden.
3.1.2 Schlüsselwörter für TYPE=DOT
----------------------------------
Die folgenden Schlüsselwörter können nur in Parameterdateien verwendet
werden, die TYPE=DOT enthalten.
BLANK_WIDTH=[<n>]
Breite eines Leerzeichens. Leerzeichen werden am linken Rand
benutzt, um den Druckkopf nach rechts zu bewegen. Hierzu wird die
Breite eines Leerzeichens in Grafikpunkten benötigt. Sollen keine
Leerzeichen zum Einrücken benutzt werden, so ist das Argument leer
zu lassen.
COLUMNS=<n>
Maximale Anzahl der Druckspalten im Grafikmodus. Dieser Wert ist
eine obere Grenze für +width.
[DOUBLE_SIDED_LONG=[<s>]]
Mit dieser Codesequenz wird der Drucker so eingestellt, daß er
automatisch zweiseitig druckt, d.h., die erste Ausgabeseite wird
auf die Vorderseite, die zweite auf die Rückseite der ersten
Blattes gedruckt; die dritte auf die Vorderseite des zweiten
Blattes usw. wobei entlang der längeren Kante gebunden wird. Wenn
hier eine Codesequenz angegeben ist, wird die Kommandozeilenoption
+double-sided:long verfügbar.
[DOUBLE_SIDED_SHORT=[<s>]]
Mit dieser Codesequenz wird der Drucker so eingestellt, daß er
automatisch zweiseitig druckt, d.h., die erste Ausgabeseite wird
auf die Vorderseite, die zweite auf die Rückseite der ersten
Blattes gedruckt; die dritte auf die Vorderseite des zweiten
Blattes usw. wobei entlang der kürzeren Kante gebunden wird. Wenn
hier eine Codesequenz angegeben ist, wird die Kommandozeilenoption
+double-sided:short verfügbar.
EXIT=[<s>]
Die Codesequenz, die am Ende des Drucks an den Drucker geschickt
wird.
FF_METHOD=(FF | LF)
Seitenvorschub mit der Codesequenz FORM_FEED (siehe unten) oder
mit vielen Zeilenvorschüben (siehe FORM_LENGTH).
FORM_FEED=[<s>]
Codesequenz zum Erzeugen eines Blattvorschubs. Wird
bei FF_METHOD=FF benötigt. Die Länge des Vorschubs in
Vorschub-Einheiten (Grafikpunkte für VMU=1) ist in der Variablen
`form_feed' verfügbar.
FORM_LENGTH=[<d>]
Blattlänge. Voreinstellung für +form-length. Wird nur bei
FF_METHOD=LF benötigt. Wenn <d> nicht angegeben ist, verwendet
dvidot die eingestellte Seitenhöhe als Blatthöhe.
GRAPH_END=[<s>]
Codesequenz, die unmittelbar nach den Grafikdaten an den Drucker
geschickt wird. Üblicherweise leer.
GRAPH_MODE=[<s>]
Die Codesequenz, die den Grafikmodus einleitet. Auf diese Sequenz
folgen unmittelbar die binären Grafikdaten. Die Breite der Grafik
(Grafikpunkte) ist in der Variablen `pixels' verfügbar.
INIT1=[<s>]
Die Codesequenz, die zu Beginn an den Drucker geschickt wird,
falls +slow:off (Voreinstellung) eingestellt ist.
INIT2=[<s>]
Die Codesequenz, die zu Beginn an den Drucker geschickt wird,
falls +slow:on eingestellt ist.
LINE_FEED=[<s>]
Die Codesequenz zum Erzeugen eines Zeilenvorschubs. Außerdem
wird diese Codesequenz bei FF_METHOD=LF verwendet. Die Größe
des Zeilenvorschubs (Vorschub-Einheiten oder Grafikpunkte für
VMU=1) ist in der Variablen `line_feed' verfügbar. Falls eine
POS_Y-Sequenz definiert ist, wird LINE_FEED nicht verwendet, außer
für den Seitenvorschub falls FF_METHOD=LF eingestellt ist.
MAX_LF=<n>
Dies ist die der größte mit einer Druckersteuersequenz (siehe
LINE_FEED) erzielbare Zeilenvorschub in Vorschub-Einheiten
(Grafikpunkte für VMU=1). Größere Zeilenvorschübe werden von
dvidot aus mehreren kleineren Zeilenvorschüben zusammengesetzt.
MAX_WIDTH=[<n1> [<n2>]]
Wenn die Seitenbreite (in Grafikpunkte umgerechnet) auf einen
dieser Werte eingestellt wird, so wird die Seitenbreite um eins
verringert, damit der Drucker keinen Zeilenvorschub erzeugt, wenn
der rechte Rand erreicht wird. Auf diese Weise wird am rechten
Rand ein Grafikpunkt leergelassen.
METHOD=<n1> <n2>
Druckmethode. Der Wert <n1> gibt an, wieviele Bytes pro
Grafikspalte an den Drucker geschickt werden müssen (1 bis 8). Der
Wert <n2> gibt an, wie oft eine Zeile überdruckt werden soll (mit
kleinstem Zeilenabstand dazwischen). Wenn z.B. der Nadelabstand
1/72 Zoll beträgt und der Drucker halbwegs zuverlässig
1/216-Zoll-Papervorschübe ausführen kann, sollte für <n2> 3 angege-
ben werden. Damit wird in diesem Beispiel eine vertikale Auflösung
von 216 DPI erzielt. Für <n2> können Werte von 1 bis 6 verwendet
werden.
ONE_LINE_FEED=[<n>]
Dieser Wert wird bei INIT1 und INIT2 zum Programmieren des
Zeilenabstandes des Druckers verwendet. Wenn bei LINE_FEED (siehe
unten) der Zeilenabstand umprogrammiert wird, so muß das Argument
bei ONE_LINE_FEED leer bleiben. Der Drucker muß beim Empfang des
Zeichens LF den mit ONE_LINE_FEED eingestellten Zeilenvorschub
erzeugen.
PINS=<n1> <n2>
Bitnummern der Nadeln. <n1> ist das Bit, das für die oberste
Nadel zuständig ist, <n2> ist das Bit, das für die unterste Nadel
zuständig ist (meistens PINS=0 7 oder PINS=7 0). Es können Werte
von 0 bis 7 angegeben werden.
POS_X=[<s>]
Codesequenz zum direkten horizontalen Positionieren des
Druckkopfs. Die horizontale Position in Grafikpunkten ist in der
Variablen `pos_x' verfügbar.
[POS_Y=[<s>]]
Codesequenz zum direkten vertikalen Positionieren des Druckkopfs.
Die vertikale Position in Grafikpunkten ist in der Variablen
`pos_y' verfügbar. Falls eine POS_Y-Sequenz definiert ist, wird
LINE_FEED nicht verwendet, außer für den Seitenvorschub falls
FF_METHOD=LF eingestellt ist.
S_OPTION=(OFF | SLOW | DOUBLE_STRIKE)
Bedeutung der Option +slow. Bei Einstellung von OFF gibt es
+slow überhaupt nicht. Bei SLOW bewirkt +slow:on die Verwendung
von INIT2 statt INIT1. Bei DOUBLE_STRIKE bewirkt +slow:on die
Verwendung von INIT2 statt INIT1 sowie das Drucken mit zwei
Durchläufen pro Zeile. Wenn mit zwei Durchläufen pro Zeile
gedruckt wird, werden beim ersten Durchlauf nur die 1., 3., usw.
Grafikspalte bedruckt, beim zweiten Durchlauf nur die 2., 4., usw.
Grafikspalte. Dies ist für Drucker gedacht, die eine Nadel nicht
zweimal in Folge abfeuern können.
[VMU=<n>]
Vertical Motion Unit. Dies ist die Anzahl der Grafikpunkte pro
Vorschub-Einheit. Falls der Drucker z.B. 360 DPI vertikal drucken
kann, aber das Papier nur in 1/180"-Schritten transportieren
kann, ist VMU=2 einzustellen. Wenn nichts oder 0 für VMU einge-
stellt ist, wird VMU=1 angenommen. Bei VMU=1 entsprechen die
Vorschub-Einheiten den Grafikpunkten.
3.1.3 Schlüsselwörter für TYPE=DOT_HORZ
---------------------------------------
Die folgenden Schlüsselwörter können nur in Parameterdateien verwendet
werden, die TYPE=DOT_HORZ enthalten.
BITS=<n1> <n2>
Bitanordnung innerhalb der Grafikbytes. Bit <n1> ist links, Bit
<n2> ist rechts. Es kann nur `BITS=7 0' oder `BITS=0 7' verwendet
werden.
COLUMNS=<n>
Maximale Anzahl der Druckspalten im Grafikmodus. Dieser Wert ist
eine obere Grenze für +width.
[DOUBLE_SIDED_LONG=[<s>]]
Mit dieser Codesequenz wird der Drucker so eingestellt, daß er
automatisch zweiseitig druckt, d.h., die erste Ausgabeseite wird
auf die Vorderseite, die zweite auf die Rückseite der ersten
Blattes gedruckt; die dritte auf die Vorderseite des zweiten
Blattes usw. wobei entlang der längeren Kante gebunden wird. Wenn
hier eine Codesequenz angegeben ist, wird die Kommandozeilenoption
+double-sided:long verfügbar.
[DOUBLE_SIDED_SHORT=[<s>]]
Mit dieser Codesequenz wird der Drucker so eingestellt, daß er
automatisch zweiseitig druckt, d.h., die erste Ausgabeseite wird
auf die Vorderseite, die zweite auf die Rückseite der ersten
Blattes gedruckt; die dritte auf die Vorderseite des zweiten
Blattes usw. wobei entlang der kürzeren Kante gebunden wird. Wenn
hier eine Codesequenz angegeben ist, wird die Kommandozeilenoption
+double-sided:short verfügbar.
EXIT=[<s>]
Die Codesequenz, die am Ende des Drucks an den Drucker geschickt
wird.
FF_METHOD=(FF | LF)
Seitenvorschub mit der Codesequenz FORM_FEED (siehe unten) oder
mit vielen Zeilenvorschüben (siehe FORM_LENGTH).
FIRST_BYTE=(TOP | BOTTOM) (LEFT | RIGHT)
Hiermit wird eingestellt, welcher Ecke der Grafik das erste Byte
der zu druckenden Grafikdaten entspricht. Mit TOP wird die oberste
Zeile zuerst gedruckt, mit BOTTOM wird die unterste Zeile zuerst
gedruckt. Mit LEFT kommt die linke Spalte jeder Zeile zuerst, mit
RIGHT kommt die rechte Spalte jeder Zeile zuerst. Die Einstellung
FIRST_BYTE=TOP LEFT
kommt am häufigsten vor.
FORM_FEED=[<s>]
Codesequenz zum Erzeugen eines Blattvorschubs. Wird
bei FF_METHOD=FF benötigt. Die Länge des Vorschubs in
Vorschub-Einheiten (Grafikpunkte für VMU=1) ist in der Variablen
`form_feed' verfügbar.
FORM_LENGTH=[<d>]
Blattlänge. Voreinstellung für +form-length. Wird nur bei
FF_METHOD=LF benötigt. Wenn <d> nicht angegeben ist, verwendet
dvidot die eingestellte Seitenhöhe als Blatthöhe.
INIT1=[<s>]
Die Codesequenz, die zu Beginn an den Drucker geschickt wird,
falls +slow:off (Voreinstellung) eingestellt ist.
INIT2=[<s>]
Die Codesequenz, die zu Beginn an den Drucker geschickt wird,
falls +slow:on eingestellt ist.
LINE_FEED=[<s>]
Die Codesequenz zum Erzeugen eines Zeilenvorschubs. Außerdem
wird diese Codesequenz bei FF_METHOD=LF verwendet. Die Größe
des Zeilenvorschubs (Vorschub-Einheiten oder Grafikpunkte für
VMU=1) ist in der Variablen `line_feed' verfügbar. Falls eine
POS_Y-Sequenz definiert ist, wird LINE_FEED nicht verwendet, außer
für den Seitenvorschub falls FF_METHOD=LF eingestellt ist.
MAX_LF=<n>
Dies ist die der größte mit einer Druckersteuersequenz (siehe
LINE_FEED) erzielbare Zeilenvorschub in Vorschub-Einheiten
(Grafikpunkte für VMU=1). Größere Zeilenvorschübe werden von
dvidot aus mehreren kleineren Zeilenvorschüben zusammengesetzt.
MAX_WIDTH=[<n1> [<n2>]]
Wenn die Seitenbreite (in Grafikpunkte umgerechnet) auf einen
dieser Werte eingestellt wird, so wird die Seitenbreite um eins
verringert, damit der Drucker keinen Zeilenvorschub erzeugt, wenn
der rechte Rand erreicht wird. Auf diese Weise wird am rechten
Rand ein Grafikpunkt leergelassen.
ONE_LINE_FEED=[<n>]
Dieser Wert wird bei INIT1 und INIT2 zum Programmieren des
Zeilenabstandes des Druckers verwendet. Wenn bei LINE_FEED (siehe
unten) der Zeilenabstand umprogrammiert wird, so muß das Argument
bei ONE_LINE_FEED leer bleiben. Der Drucker muß beim Empfang des
Zeichens LF den mit ONE_LINE_FEED eingestellten Zeilenvorschub
erzeugen.
POS_X=[<s>]
Codesequenz zum direkten horizontalen Positionieren des
Druckkopfs. Die horizontale Position in Grafikpunkten ist in der
Variablen `pos_x' verfügbar.
[POS_Y=[<s>]]
Codesequenz zum direkten vertikalen Positionieren des Druckkopfs.
Die vertikale Position in Grafikpunkten ist in der Variablen
`pos_y' verfügbar. Falls eine POS_Y-Sequenz definiert ist, wird
LINE_FEED nicht verwendet, außer für den Seitenvorschub falls
FF_METHOD=LF eingestellt ist.
ROW_BEGIN=[<s>]
Die Codesequenz, die eine Grafikzeile einleitet. Auf diese Sequenz
folgen unmittelbar die binären Grafikdaten. Die Breite der Grafik
(Grafikpunkte) ist in der Variablen `pixels' verfügbar.
ROW_END=[<s>]
Die Codesequenz, die unmittelbar nach einer Grafikzeile geschickt
wird. Die horizontale Position darf durch ROW_END verändert wer-
den, jedoch wird angenommen, daß der Cursor durch ROW_END in die
nächste Grafikzeile gestellt wird.
S_OPTION=(OFF | SLOW)
Bedeutung der Option +slow. Bei Einstellung von OFF gibt es +slow
überhaupt nicht. Bei SLOW bewirkt +slow:on die Verwendung von
INIT2 statt INIT1.
[VMU=<n>]
Vertical Motion Unit. Dies ist die Anzahl der Grafikpunkte pro
Vorschub-Einheit. Falls der Drucker z.B. 360 DPI vertikal drucken
kann, aber das Papier nur in 1/180"-Schritten transportieren
kann, ist VMU=2 einzustellen. Wenn nichts oder 0 für VMU einge-
stellt ist, wird VMU=1 angenommen. Bei VMU=1 entsprechen die
Vorschub-Einheiten den Grafikpunkten.
3.1.4 Schlüsselwörter für TYPE=BITMAP
-------------------------------------
Die folgenden Schlüsselwörter können nur in Parameterdateien verwendet
werden, die TYPE=BITMAP enthalten.
ALIGN_WIDTH=<n>
Die Grafikbreite wird auf ein ganzzahlig Vielfaches von <n> Bytes
gerundet. Für <n> können die Werte 1, 2 und 4 verwendet werden.
BITS=<n1> <n2>
Bitanordnung innerhalb der Grafikbytes. Bit <n1> ist links, Bit
<n2> ist rechts. Es kann nur `BITS=7 0' oder `BITS=0 7' verwendet
werden.
CHECKSUM=<n1> <n2> <t> <n3> <e>
Hiermit wird eingestellt, wie der Wert der Variablen `checksum'
für die HEADER-Codesequenz zu berechnen ist. Zunächst wird die
Variable `checksum' auf den Wert <n3> initialisiert. Dann er-
folgt eine Schleife über die HEADER-Codesequenz ab Byte-Posi-
tion <n1> mit <n2> Schleifendurchläufen: Je nach <t> werden
8, 16 oder 32 Bits dem Header entnommen und als Wert für die
Variable `value' verwendet; der Ausdruck <e> wird ausgewertet
und der Variablen `checksum' zugewiesen; es wird um 1, 2 oder
4 Bytes weitergegangen. Der Wert von `checksum' nach <n2>
Schleifendurchläufen ist der Wert, der für `checksum' bei HEADER
eingesetzt wird. Im für diese Berechnung verwendeten HEADER wird
0 für `checksum' und `file_size' eingesetzt. Wenn Sie `file_size'
für die Prüfsumme benötigen, können Sie versuchen, die Prüfsumme
beim Einfügen entsprechend zu modifizieren.
Mögliche Angaben für <t> sind:
BYTE 8 Bits
WORD_LH
16 Bits, niederwertiges Byte zuerst
WORD_HL
16 Bits, höherwertiges Byte zuerst
LONG_LH
32 Bits, niedrigstwertiges Byte zuerst
LONG_HL
32 Bits, höchstwertiges Byte zuerst.
Beispiel:
CHECKSUM=0 16 WORD_LH 0 (checksum^value)
Die Prüfsumme wird durch 16-bitweises Exklusiv-Oder über die
ersten 32 Bytes gebildet.
Wenn keine Prüfsumme benötigt wird, können Sie
CHECKSUM=0 0 BYTE 0 0
verwenden.
COMPRESS=(NO | MSP | PCX)
Kompressionsmethode für die Grafikdaten. Bei COMPRESS=NO
wird nicht komprimiert, die Grafikdaten werden unverändert
in die Grafikdatei geschrieben. Bei COMPRESS=MSP wird das
Kompressionsverfahren wie es im neueren MSP-Dateiformat verwen-
det wird angewandt, bei COMPRESS=PCX wird ein RLE-Verfahren wie in
PCX-Dateien angewandt.
FIRST_BYTE=(TOP | BOTTOM) (LEFT | RIGHT)
Hiermit wird eingestellt, welcher Ecke der Grafik das erste Byte
der Grafikdaten entspricht. Mit TOP kommt die oberste Zeile
zuerst, mit BOTTOM kommt die unterste Zeile zuerst. Mit LEFT kommt
die linke Spalte jeder Zeile zuerst, mit RIGHT kommt die rechte
Spalte jeder Zeile zuerst. Die Einstellung
FIRST_BYTE=TOP LEFT
kommt am häufigsten vor.
HEADER=[<s>]
Der Kopf der Grafikdatei. Diese Codesequenz leitet die Grafikda-
tei ein. Es können die Variablen res_x, res_y, width, height,
checksum und file_size verwendet werden.
ROW_BEGIN=[<s>]
Die Codesequenz, die eine Grafikzeile einleitet. Auf diese Sequenz
folgen unmittelbar die binären Grafikdaten. Die Breite der
Grafik (Grafikpunkte) ist in der Variablen `pixels' verfügbar.
Üblicherweise leer.
ROW_END=[<s>]
Die Codesequenz, die unmittelbar nach einer Grafikzeile geschickt
wird. Üblicherweise leer.
TRAILER=[<s>]
Der Nachspann der Grafikdatei. Diese Codesequenz wird am Ende
der Grafikdatei eingefügt. Es können die Variablen res_x, res_y,
width, height und checksum verwendet werden.
3.2 Codesequenzen
-----------------
Codesequenzen bestehen im allgemeinen aus mehreren Kommandos, die
jeweils durch Leerzeichen getrennt werden. Für jedes einzelne Kommando
gibt es die folgenden Möglichkeiten:
ASCII-Steuercodenamen und andere Codenamen
Diese Kommandos fügen ein Byte ein:
NUL Code 00(hex) 0(dez).
SOH Code 01(hex) 1(dez).
STX Code 02(hex) 2(dez).
ETX Code 03(hex) 3(dez).
EOT Code 04(hex) 4(dez).
ENQ Code 05(hex) 5(dez).
ACK Code 06(hex) 6(dez).
BEL Code 07(hex) 7(dez).
BS Code 08(hex) 8(dez).
TAB Code 09(hex) 9(dez).
HT Code 09(hex) 9(dez).
LF Code 0A(hex) 10(dez).
VT Code 0B(hex) 11(dez).
FF Code 0C(hex) 12(dez).
CR Code 0D(hex) 13(dez).
SO Code 0E(hex) 14(dez).
SI Code 0F(hex) 15(dez).
DLE Code 10(hex) 16(dez).
DC1 Code 11(hex) 17(dez).
DC2 Code 12(hex) 18(dez).
DC3 Code 13(hex) 19(dez).
DC4 Code 14(hex) 20(dez).
NAK Code 15(hex) 21(dez).
SYN Code 16(hex) 22(dez).
ETB Code 17(hex) 23(dez).
CAN Code 18(hex) 24(dez).
EM Code 19(hex) 25(dez).
SUB Code 1A(hex) 26(dez).
ESC Code 1B(hex) 27(dez).
FS Code 1C(hex) 28(dez).
GS Code 1D(hex) 29(dez).
RS Code 1E(hex) 30(dez).
US Code 1F(hex) 31(dez).
DEL Code 7F(hex) 127(dez).
Klartext
Diese Kommandos fügen ein Byte oder mehrere Bytes ein:
'x Einzelzeichen. Ein beliebiges Zeichen nach dem einfachen
Anführungszeichen ' wird direkt übernommen.
"xxx" Mehrere Zeichen. Alle Zeichen zwischen dem doppelten
Anführungszeichen " und dem nächsten " in derselben Zeile
werden direkt übernommen.
Zahlen
Diese Kommandos fügen ein Byte ein:
0### Oktalzahl. # sind die einzelnen Ziffern (0-7).
0x## Hexadezimalzahl. # sind die einzelnen Ziffern (0-9, A-F).
### Dezimalzahl. # sind die einzelnen Ziffern (0-9).
Vorsicht: Bei führender Null wird eine Zahl als Oktalzahl
interpretiert (siehe 0###).
Steuerzeichen
Dieses Kommando fügt ein Byte ein:
^A Steuerzeichen: ^a bis ^z und ^A bis ^Z ergeben Codes 1 bis
26, ^@ ergibt Code 0.
Wiederholung
Dieses Kommando führt eine feste Anzahl von Wiederholungen des
direkt folgenden Kommandos aus.
REP# Das folgende Kommando wird #-mal (1 bis 256) wiederholt.
Bei mehreren aufeinanderfolgenden REP-Kommandos wird nur
das letzte beachtet.
Einfügen eines Parameters in die Codesequenz
Diese Kommandos werten einen Ausdruck aus und fügen das Ergebnis
als Byte, 16-Bit-Wort oder 32-Bit-Wort ein:
DEC# <Ausdruck>
Der Wert wird als Dezimalzahl mit führenden Nullen (# (1-9)
Stellen) eingefügt.
BYTE <Ausdruck>
Der Wert wird als Byte (untere 8 Bits des Ergebnisses)
eingefügt.
WORD_LH <Ausdruck>
Der Wert wird als 16-Bit-Wort (untere 16 Bits des Ergebnisses,
2 Bytes) eingefügt, das niederwertige Byte zuerst, dann das
höherwertige.
WORD_HL <Ausdruck>
Der Wert wird als 16-Bit-Wort (untere 16 Bits des Ergebnisses,
2 Bytes) eingefügt, das höherwertige Byte zuerst, dann das
niederwertige.
LONG_LH <Ausdruck>
Der Wert wird als 32-Bit-Wort (4 Bytes) eingefügt, das
niedrigstwertige Byte zuerst, das höchstwertige zuletzt.
LONG_HL <Ausdruck>
Der Wert wird als 32-Bit-Wort (4 Bytes) eingefügt, das
höchstwertige Byte zuerst, das niedrigstwertige zuletzt.
Der <Ausdruck> wird mit 32-Bit-Arithmetik ausgewertet.
Ein <Ausdruck> ist wie folgt aufgebaut (die Klammern sind
erforderlich!):
<Dezimalzahl>
Dezimalzahl von 0 bis 2147483647
<Hexadezimalzahl>
Hexadezimalzahl von 0x0 bis 0xffffffff
<Variable>
Siehe unten
( <Ausdruck> )
Überflüssige Klammerung
- <Ausdruck>
Vorzeichenumkehrung
~ <Ausdruck>
Bitweise NOT-Verknüpfung (Einerkomplement)
( <Ausdruck> + <Ausdruck> )
Addition
( <Ausdruck> - <Ausdruck> )
Subtraktion
( <Ausdruck> * <Ausdruck> )
Multiplikation
( <Ausdruck> / <Ausdruck> )
Division
( <Ausdruck> % <Ausdruck> )
Rest bei Division
( <Ausdruck> & <Ausdruck> )
Bitweise AND-Verknüpfung (Konjunktion)
( <Ausdruck> | <Ausdruck> )
Bitweise OR-Verknüpfung (Disjunktion)
( <Ausdruck> ^ <Ausdruck> )
Bitweise XOR-Verknüpfung
( <Ausdruck> << <Ausdruck> )
Nach links schieben (1 << 3 ist 8)
( <Ausdruck> >> <Ausdruck> )
Nach rechts schieben (10 >> 1 ist 5)
( <Ausdruck> < <Ausdruck> )
Vergleich: 1 falls kleiner als, sonst 0
( <Ausdruck> = <Ausdruck> )
Vergleich: 1 falls gleich, sonst 0
Nur bei mehrfachem Auftreten DESSELBEN Operators können Klammern
weggelassen werden, es wird dann Linksklammerung verwendet. Dies
gilt nicht für die Operatoren `<<', `>>', `<' und `='. Z.B. kann
(((1+2)+3)+4)
auf diese Weise abgekürzt werden:
(1+2+3+4)
Aber z.B. bei ((3*2)+1) können keine Klammern weggelassen werden.
Für <Variable> können die folgenden Namen eingesetzt werden:
res_x Horizontale Auflösung (DPI, +resolution-x)
res_y Vertikale Auflösung (DPI, +resolution-y)
width Blattbreite (Pixels, +width)
height Blatthöhe (Pixels, +height)
one_lf Der mit ONE_LINE_FEED= eingestellte Wert
blank Der mit BLANK_WIDTH= eingestellte Wert
max_lf Der mit MAX_LF= eingestellte Wert
pixels Die Breite der Grafik
line_feed
Die Größe des Zeilenvorschubs
form_feed
Die Größe des Blattvorschubs
pos_x X-Position (Grafikpunkte) bei POS_X=
checksum
Prüfsumme
value Für Berechnung der Prüfsumme
file_size
Dateilänge (nur bei HEADER=)
vmu Vertical Motion Unit (Wert von VMU=). Falls VMU= nicht
gesetzt oder auf 0 gesetzt ist, wird für vmu der Wert 1
eingesetzt
Fortsetzungszeile
Wenn eine Zeile mit `\' nach einem Leerzeichen endet, wird
die nächste Zeile (welche keine Kommentarzeile sein darf) als
Fortsetzungszeile betrachtet. Auf diese Weise können lange
Codesequenzen besser eingegeben werden. Jedoch muß jeder
<Ausdruck> vollständig in einer Eingabezeile eingegeben werden.
3.3 Beispiele für Codesequenzen
-------------------------------
240-DPI-Grafikmodus des EPSON FX-80:
ESC '* 3 WORD_LH pixels
Hexadezimal sieht das so aus: 1B 2A 03 <n1> <n2>, wobei <n1>+256*<n2>
die Breite der Grafik in Grafikpunkten (Spalten) ist.
Zeilenvorschub bei NEC P6:
FS '3 BYTE line_feed LF
Hexadezimal sieht das so aus: 1C 33 <n1> 0A. Das Papier wird um
<n1>/360 Zoll bewegt.
Horizontale Positionierung bei C.ITOH 8510A:
ESC 'F DEC4 pos_x
Hexadezimal sieht das so aus: 1B 46 <n1> <n2> <n3> <n4>, wobei <n1>
bis <n4> Ziffern (hexadezimal 30 bis 39) sind, die die horizontale Po-
sition angeben.
24-Nadel-Grafikmodus, bei dem die Anzahl der Bytes + 1 angegeben wird:
ESC "[g" WORD_LH ((pixels*3)+1) 5
Wenn z.B. 100 Grafikspalten gedruckt werden, sieht das hexadezimal so
aus:
1B 5B 67 2D 01 05
^^^^^
301 = 3*100+1
Sinnloses Beispiel:
^A "abc" TAB ' 010 10 0x10 " ' " REP2 "ab" 0
Das ist hexadezimal: 01 61 62 63 09 20 08 0A 10 20 27 20 61 62 61 62
00.
Beispiel für Fortsetzungszeilen:
INIT1=CAN DC2 ESC '5 0 ESC 'F ESC 'H ESC 'I 0 ESC 'T ESC 'U 0 \
ESC 'X 1 255 ESC "[@" 4 0 0 0 17 1 ESC '_ 0 ESC '- 0 \
ESC "[\" 4 0 0 0 0x68 0x01 ESC '3 BYTE one_lf CR
4 Aufbau der Textdatei für eine Binärdatei
==========================================
Eine Textdatei kann Kommentarzeilen enthalten. Diese beginnen mit
einem `*' oder `%'. Alle darauffolgenden Zeichen dieser Zeilen werden
dann ignoriert. Auch Leerzeilen werden ignoriert.
Alle anderen Zeilen enthalten Codesequenzen, die die in die Binärdatei
zu schreibenden Daten angeben. Die hier verwendbaren Codesequenzen
sind eine Teilmenge der bei Erzeugung einer Parameterdatei
verwendbaren Codesequenzen.
ASCII-Steuercodenamen und andere Codenamen
Diese Kommandos fügen ein Byte ein:
NUL Code 00(hex) 0(dez).
SOH Code 01(hex) 1(dez).
STX Code 02(hex) 2(dez).
ETX Code 03(hex) 3(dez).
EOT Code 04(hex) 4(dez).
ENQ Code 05(hex) 5(dez).
ACK Code 06(hex) 6(dez).
BEL Code 07(hex) 7(dez).
BS Code 08(hex) 8(dez).
TAB Code 09(hex) 9(dez).
HT Code 09(hex) 9(dez).
LF Code 0A(hex) 10(dez).
VT Code 0B(hex) 11(dez).
FF Code 0C(hex) 12(dez).
CR Code 0D(hex) 13(dez).
SO Code 0E(hex) 14(dez).
SI Code 0F(hex) 15(dez).
DLE Code 10(hex) 16(dez).
DC1 Code 11(hex) 17(dez).
DC2 Code 12(hex) 18(dez).
DC3 Code 13(hex) 19(dez).
DC4 Code 14(hex) 20(dez).
NAK Code 15(hex) 21(dez).
SYN Code 16(hex) 22(dez).
ETB Code 17(hex) 23(dez).
CAN Code 18(hex) 24(dez).
EM Code 19(hex) 25(dez).
SUB Code 1A(hex) 26(dez).
ESC Code 1B(hex) 27(dez).
FS Code 1C(hex) 28(dez).
GS Code 1D(hex) 29(dez).
RS Code 1E(hex) 30(dez).
US Code 1F(hex) 31(dez).
DEL Code 7F(hex) 127(dez).
Klartext
Diese Kommandos fügen ein Byte oder mehrere Bytes ein:
'x Einzelzeichen. Ein beliebiges Zeichen nach dem einfachen
Anführungszeichen ' wird direkt übernommen.
"xxx" Mehrere Zeichen. Alle Zeichen zwischen dem doppelten
Anführungszeichen " und dem nächsten " in derselben Zeile
werden direkt übernommen.
Zahlen
Diese Kommandos fügen ein Byte ein:
0### Oktalzahl. # sind die einzelnen Ziffern (0-7).
0x## Hexadezimalzahl. # sind die einzelnen Ziffern (0-9, A-F).
### Dezimalzahl. # sind die einzelnen Ziffern (0-9).
Vorsicht: Bei führender Null wird eine Zahl als Oktalzahl
interpretiert (siehe 0###).
Steuerzeichen
Dieses Kommando fügt ein Byte ein:
^A Steuerzeichen: ^a bis ^z und ^A bis ^Z ergeben Codes 1 bis
26, ^@ ergibt Code 0.
5 Hinweise
==========
Einige der Einstellungen können auch über Kommandozeilenoptionen von
dvidot verstellt werden -- das ist der Weg der vorzuziehen ist. Pro
Drucker (und Modus) sollte nur eine Parameterdatei verwendet werden.
Über die Parameterdatei werden für die einstellbaren Dinge, z.B. Pfad
für Zeichensätze, lediglich halbwegs sinnvolle Werte vorgegeben, die
eigentliche Einstellung geschieht über die Kommandozeilenoptionen und
die Konfigurationsdateien.
Bitte die mitgelieferten Parameterdateien nicht verändern! (Sie können
diese aber -- unter anderem Namen -- weiterverwerten.)
Wenn Sie eine neue Parameterdatei erstellt und erfolgreich getestet
haben, sollten Sie diese an den Autor (Adresse siehe readme.ger)
schicken, damit auch andere Leute etwas von Ihrer Mühe haben und für
jeden Drucker ein gewisser Standard gewahrt wird.
Wenn Sie Ihren Nadeldrucker nicht mit dvidot und makedot betreiben
können, sollten Sie sich mit dem Autor in Verbindung setzen, so daß
dvidot und makedot entsprechend erweitert werden können.
6 Anhang: Alte Methode für Parameter in Codesequenzen
=====================================================
Zum Verständnis alter DOT-Dateien sind ist hier die alte Methode für
die Einfügung von Parametern in Codesequenzen erklärt. Sie können
jedoch alte DOT-Dateien mit makedot konvertieren lassen, dabei werden
auch die Codesequenzen konvertiert.
Es sind folgende Kommandos möglich (xx siehe unten):
xx+#
Zuvor # zum Parameter addieren
xx-#
Zuvor # vom Parameter subtrahieren
xx*#+#
Zuvor Parameter mit erster Zahl multiplizieren, dann zweite Zahl
addieren
xx*#-#
Zuvor Parameter mit erster Zahl multiplizieren, dann zweite Zahl
subtrahieren
Nur xx ist nicht zulässig, Sie sollten stattdessen xx+0 verwenden. Für
xx gibt es folgende Möglichkeiten:
D1 bis D9
Der Parameter wird als Dezimalzahl (Text) mit führenden Nullen
eingefügt (D1: aufgefüllt auf eine Stelle, D9: aufgefüllt auf neun
Stellen).
L
Der Parameter wird als Binärzahl (ein Byte) eingefügt. Es wird das
niederwertige Byte verwendet.
H
Der Parameter wird als Binärzahl (ein Byte) eingefügt. Es wird das
höherwertige Byte verwendet.
LH
Der Parameter wird als Binärzahl in zwei Bytes zerlegt eingefügt
(niederwertiges Byte zuerst, dann höherwertiges).
HL
Der Parameter wird als Binärzahl in zwei Bytes zerlegt eingefügt
(höherwertiges Byte zuerst, dann niederwertiges).
Der Parameter hängt davon ab, für welchen Zweck die Codesequenz verwen-
det wird:
INIT1 one_line_feed
INIT2 one_line_feed
GRAPH_MODE
pixels
LINE_FEED
line_feed
POS_X pos_x
7 Entstehungsgeschichte
=======================
Version 1.0a (21-Feb-1990):
---------------------------
Erste Version.
Version 1.1a (22-Mär-1990):
---------------------------
- Neues Schlüsselwort: VF_PATH.
- METHOD=n1 n2: Nun n1 und n2 von 1 bis 6.
Version 1.1b (22-Jun-1990):
---------------------------
- xx*#+# und xx*#-#.
Version 1.1c (22-Sep-1990):
---------------------------
- Fehler beseitigt: Die Ausgabe von `makedot -d' bei LH+n und HL+n mit n
ungleich 0 war falsch.
- Fehler beseitigt: Die Ausgabe von `makedot -d' bei BLANK_WIDTH=<leer>
war falsch.
Version 1.1d (18-Nov-1991):
---------------------------
*** DOT-Dateiformat geändert. Alte DOT-Dateien müssen konvertiert werden.
*** Neue Syntax für die Einfügung von Parametern in Codesequenzen.
- Die Beschreibung von LINE_FEED und ONE_LINE_FEED war falsch.
- GRAPH_END wurde ignoriert.
- Reihenfolge der Deklarationen nun beliebig.
- Kommentarzeilen können auch mit `%' eingeleitet werden.
- Fortsetzungszeilen.
- Fehler beseitigt: Oktalzahlen wurden mit -d falsch ausgegeben.
- Fehler beseitigt: Steuerzeichen wurden mit -d falsch ausgegeben.
- REP###.
- Keine feste Längenbegrenzung für Codesequenzen.
- TYPE=BITMAP für Erzeugung von Grafikdateien.
- Kommandozeilenoptionen -r und -o.
- Zweiseitiges Drucken auf hierzu fähigen Druckern.
- METHOD=8 n2.
Version 1.1e (18-Nov-1991):
---------------------------
- Kommandos -a und -b.
Version 1.1f (17-Okt-1993):
---------------------------
- DOUBLE_SIDED durch DOUBLE_SIDED_LONG und DOUBLE_SIDED_SHORT ersetzt.
Version 1.2a (09-Apr-1994):
---------------------------
- Lange Dateinamen werden nun unter OS/2 (HPFS) unterstützt.
- Neues Schlüsselwort: VMU.
- Die Anleitung ist nun auch im OS/2-INF-Format (für VIEW) vorhanden.
Version 1.2b (21-Jun-1994):
---------------------------
- VMU=0 wird nun akzeptiert.
Version 1.2c (04-Aug-1994):
---------------------------
- TYPE=DOT_HORZ für Drucker mit horizontaler Anordnung der Bits.
- Neues Schlüsselwort: POS_Y.
Version 1.2d (01-Sep-1994):
---------------------------
- makedot 1.2c konnte alte DOT-Dateien (d.h. von makedot 1.2b oder älter
erzeugte) nicht mit -d umgewandeln.
-------- Ende von MAKEDOT.DOC -------------