  Document  : CDD.DOC
  DOC-INFO  : Calamus - Druckertreiber - Deskriptor - Definition
  Author/(c): A. Wagner
  Up to v#  : 2.08 of DTD Definition Rules (same as CDTG v#)
  Last CHNG : 11-9-93
  State     : Public
  


                           Aufbau des .CDD - Files
                           =======================

  Das .CDD (Druckertreiberdeskriptor) - File dient zur Anpassung eines Druk-
  kers an Calamus. Es enthlt Daten ber die Auflsung, die Anzahl der be -
  druckbaren Seitenformate, die min. Rnder, die Papierzufhrungen, die
  Steuercodes usw.. Es ist wie das Calamus - Setupfile aufgebaut; jeder Be -
  fehl beginnt mit einem Doppelkreuz ('#'), jeder Kommentar mit einem '|'.
  Dieser erstreckt sich automatisch bis zum Zeilenende.

  Aufbau der Codezeilen :
  =======================

  Codezeilen folgen den CDD-Befehlen PRINIT, PREXIT, NEWLINE, PLANESET,
  CURHOR, CURVER, WIDTH, HEIGHT, COPIES, REVERSE, SETFEED sowie GRAPHMODE
  und setzen sich aus den an den Drucker zu bermittelnden Bytes
  zusammen. Dabei knnen dezimale und hexadezimale Zahlen sowie Strings be-
  nutzt werden. Alle Bytes sind durch ein Komma zu trennen, lediglich die
  Zeichenfolgen knnen hintereinander stehen. Dezimale Zahlen beginnen di -
  rekt, hexadezimalen Zahlen ist ein '$' vorangestellt, Zeichen und Zeichen-
  ketten sind in einfache Anfhrungszeichen eingeschlossen ('). Das Byte
  Escape (27, $1b) kann auch durch CTRL-E ausgedrckt werden. Beispiele fr
  Codesequenzen knnen den mitgelieferten CDD-Files entnommen werden.

  Befehle:
  ========

  #PRNAME           Nach diesem Befehl steht der Druckername. Er darf bis zu
                    31 Zeichen lang sein.
  
  #EDITION          gibt die Anzahl der Editionen des CDD-Files an. Bei jedem
                    neuen Abspeichern wird EDITION um eins erhht.

  #TYPE             Dieser Befehl gibt den Prototyp an, mit dem der Drucker
                    betrieben werden soll. Hier steht der Name des Prototyps,
                    wie er im Konverter selektiert worden ist.

  #AUTHOR           Die diesem Befehl folgende Zeichenkette wird in das
                    'Autor :'-Feld des Konverters eingetragen.

  #TITLE            reprsentiert die oberste Zeile der Kommentar-Seite des
                    Konverters.

  #REM              Dieser Befehl darf bis zu fnf mal vorhanden sein und
                    reprsentiert die fnf Bemerkungszeilen in der Kommentar-
                    Seite. Normalerweise stehen hier Informationen ber Kom-
                    patibilitt, Abweichungen von Standardcodedefinitionen oder
                    zustzliche Informationen ber den benutzten Prototypen.

  #TIMEOUT          Dieser Befehl gibt die Zeit in Sekunden an, die der
                    Druckertreiber wartet, bis Calamus "Der Drucker meldet
                    sich nicht" ausgibt (max. 99 Sekunden). Die Zeit gilt
                    fr die Ausgabe EINES Bytes. Wird innerhalb der angegebenen
                    Zeit das Byte vom Drucker abgenommen, gilt fr das nchste
                    Byte derselbe Timeout.

  #MEASUREMENT      Dieses Kommando kann beliebig oft stehen und schaltet
                    zwischen verschiedenen Mastben um. Folgt ein 'cm',
                    so werden alle bis zum nchsten MEASUREMENT-Kommando
                    folgenden Seitenmae als Zentimeter mit max. 2 Nach-
                    kommastellen interpretiert; folgt dagegen 'x/n inch'
                    (n beliebig), so werden alle folgenden Mae als Inch-
                    bruchteile aufgefat.
                    Der erste MEASUREMENT-Befehl im CDD-File bestimmt zu-
                    dem die Maangabe im Generator nach dem Einladen.

  #PAGE             Gibt die verfgbaren Seitenformate an. Mglich sind :
                    A3,A4,A5,B5,LETTER,LEGAL,DOUBLE,HALF,OWN
                    Bei OWN mssen noch der Name des Formates (10 Buchst.)
                    sowie Seitenbreite und -hhe im aktuellen MEASUREMENT an-
                    gegeben werden.
                    Max. 11 Seitenformate sind zugelassen.
                    Danach knnen optional die Rnder des Formates einge -
                    geben werden. Am besten lt man beim Programmieren
                    eines Druckertreibers diese Parameter weg und druckt mit
                    Calamus eine komplette Seite mit dem Druckertreiber aus.
                    Die Seite wird ganz mit einem Grauraster gefllt. Danach
                    mit man die entstandenen Rnder, trgt sie mit diesem
                    Befehl in das .CDD-File nachtrglich ein und lt den
                    Druckertreiber nochmals vom CDT-Generator bersetzen.
                    Auch die Rnder (links, rechts, oben, unten) sind im
                    aktuellen MEASUREMENT anzugeben.

  #FEED             FEED legt die Papierzufhrungen fest. Nach FEED steht
                    der Name der Papierzufhrung (max. 25 Zeichen), danach
                    ein '=' und der Modus. Ist dieser = 0, so handelt es
                    sich um eine autom. Papierzufhrung, ist er = 1, so ist
                    es eine manuelle Zufhrung, bei 2 handelt es sich im einen
                    Zeitvorschub.

  Generelles zu den Druckcodes:
  Abweichungen von den Definitionen im Sinn der einzelnen Codes sind aufgrund
  der sehr verschiedenen Druckerfamilien mglich, auch fr Spezialfunktionen
  und abweichende Funktionsweise der Drucker. Siehe hierzu die TXT-Files im
  Almanach sowie die Kommentierung einzelner Codes und die REMs der CDDs.

  #PRINIT           Die Codes, die vor Druck einer Seite gedruckt werden.
                    Beim PRINIT - Code sind im Gegensatz zu allen anderen
                    Codes Makros zugelassen, die es erlauben, den Zeilen -
                    vorschub, die Anzahl der Kopien und die (optionale) Um -
                    schaltung auf Reversdruck einzufgen. Gewhnlich wird
                    der Drucker mit dem PRINIT - Code in einen definierten
                    Ausgangszustand gebracht (Initialisierungscode) und ggf.
                    auf unidirektionalen Druck umgeschaltet etc.. An belie -
                    biger Stelle im Code knnen dann bis zu drei Makros auf -
                    tauchen, an deren Stelle bei der Ausgabe an den Drucker
                    dann der #COPIES - Code, der #REVERSE - Code und der
                    #SETFEED - Code eingesetzt werden. Fr den #COPIES - Code
                    ist in den #PRINIT - Code ein 'C' einzutragen,
                    fr den #REVERS-Code ein 'R' sowie fr den
                    #SETFEED - Code ein 'F'. Den Copycode kann man durch den
                    Befehl #COPYMODE OFF abschalten, wobei der Treiber dann
                    keine Kopien ausgeben kann, den Reverscode schaltet man
                    durch bloes Vorhandensein aus und ein. Wird im Calamus-
                    Druckformular der Negativdruck NICHT eingeschaltet, so
                    wird auch der korrespondierende #REVERSE-Code nicht aus-
                    gegeben (R wird unterschlagen).

  #NEWLINE          Die Codes, die vor jeder Zeile an den Drucker gesendet
                    werden. Es handelt sich um eine Escapesequenz, d.h. um
                    um ein Escapebyte (27), gefolgt von den Codes fr die
                    Initialisierung fr Graphik. Die Codes, die den ge -
                    whlten Graphikmodus einschalten, werden hier einge -
                    tragen. In dieser Sequenz mssen 'n1' und 'n2'
                    angegeben werden, damit der Treiber wei, an welcher
                    Stelle er die Menge der zu bertragenden Daten einsetzen
                    mu. Die Zahlen werden durch Komma getrennt, Hexa -
                    dezimale Zahlen werden durch ein vorangestelltes '$'
                    gekennzeichnet. Gewhnlich kann die Sequenz einfach aus
                    dem Druckerhandbuch abgetippt werden, sie steht dort
                    folgendem Namen :
                    240*216 und 240*180 dpi   : Quadruple - density graphic
                    180*180 dpi, 24 LOW       : Triple - density graphic
                    360*360 dpi, 24 HIGH      : Sechsfache Dichte, 24 Nadeln
                    360*360 dpi, 48           : Sechsfache Dichte, 48 Nadeln
                    Siehe auch CDDs.

  #PREXIT           Die Codes, die nach dem Druck einer Seite gedruckt wer -
                    den. Gewhnlich sind dies eine Escapesequenz, die auf
                    den normalen Zeilenvorschub zurckschaltet (normaler -
                    weise 1/6 Zoll) und ein FORM FEED (12), der das bedruckte
                    Blatt ausgibt.

  #COPIES           Kann der Drucker (z. B. Laser) selbstttig Kopien er-
                    zeugen, steht hier die Escapesequenz, die dies ermg-
                    licht. Diese Sequenz wird in den PRINIT-Code an der
                    Position eingesetzt, an der sich ein C befindet.
                    Die Anzahl der Kopien wird mit "n1" gekennzeichnet, da
                    der Druckertreiber hier spter die gewnschte Anzahl
                    der Kopien selbst einsetzt. Ob hier die Anzahl der Kopien
                    oder der Exemplare an sich eingefgt wird, bestimmt
                    #COPYMODE.

  #REVERSE          Ist der Drucker in der Lage, im Graphikmodus revers
                    (wei auf schwarz) zu drucken, so wird hier der Code
                    dafr angegeben. Im Gegensatz zum Copycode wird diese
                    Sequenz nur an den Drucker gesendet, wenn Reversdruck
                    eingeschaltet werden soll; demzufolge enthlt dieser
                    Code keine Variablen. Die Position des Revers-Kommandos
                    in der PRINIT-Sequenz wird in dieser mit einem R
                    gekennzeichnet.

  #PLANESET         wird verwendet, um bei Farbdruckern, bei denen eine Plane
                    nach der anderen ausgegeben wird, zwischen den Planes um-
                    zuschalten. In den Parameter n1 wird dann beim Druck
                    zwischen Rot -, Grn - und Blauplane im RGB oder zwichen
                    Gelb, Magenta, Cyan (und Schwarz) im (Drei- oder)
                    Vierfarbdruck umgeschaltet. Die Belegung von n1 zu den Farb-
                    ebenen ist in den CDDs dokumentiert.

  #CURHOR           findet gewhnlich bei Laserdruckern Anwendung, um den
                    Grafikcursor RELATIV nach rechts horizontal zu verschie -
                    ben. Im Code steht dabei meist ein '+' vor dem Parameter.
  #CURVER           wie #CURHOR, nur wird der Grafikcursor RELATIV nach unten
                    verschoben.
                    
  #WIDTH            und #HEIGHT dienen dazu, bei einem seitenorientierten
  #HEIGHT           (Farb -) Drucker die Breite und Hhe der auszugebenden
                    (Teil -) Seite anzugeben. n1 steht fr die jeweilige
                    Gre in horizontaler bzw. vertikaler Richtung.

  #SETFEED          teilt dem Matrixdrucker mit, wie gro die folgenden Zei -
                    envorschbe sein sollen. Bei einem NEC P6 z.B. stellt
                    man n1/360 Zeilenvorschub ein, wobei n1 wiederum vom
                    Treiber whrend des Ausdrucks festgelegt wird. Im All -
                    gemeinen ist der Nenner des Zeilenvorschubs identisch
                    mit der vertikalen Auflsung in dpi, also z.B.:
                    240*216 dpi               : n1/216 Zoll
                    240*180 und 180*180       : n1/180 Zoll
                    360*360, 24 und 48 Nadeln : n1/360 Zoll

  #GRAPHMODE        schaltet seitenorientierte Drucker in den Graphikmodus.
                    In der Reihenfolge der Codes wird zunchst PRINIT mit
                    den optional enthaltenen COPIES- und REVERS-Codes aus -
                    gegeben, dann WIDTH und HEIGHT vor bzw. nach GRAPHMODE.

  #EOL              Mit diesem Kommando kann man den Zeilenendecode fest -
                    legen. Als Parameter dienen alternativ 'CR', 'CRLF',
                    'CRCR' und 'LF' (CR = Carriage Return, LF = Line Feed).

  #RESOLUTION       Bei Treibern, die mehr als eine Auflsung untersttzen,
                    ist es mglich, da mehrere Auflsungen ausgeschaltet
                    werden knnen; die Auflsungen, die eingeschaltet werden
                    sollen, stehen hinter RESOLUTION. Fr jede Auflsung
                    wird ein Befehl gebraucht.

  Das .CDD - File wird vom Programm "CDTG.PRG" in den lauffhigen .CDT -
  Druckertreiber fr Calamus bersetzt.

