\documentstyle[german,twoside,titlepage,a5]{article}
%macropackage=lplaing

\newcommand{\Af}{Din\ A5\ }
\newcommand{\Av}{Din\ A4\ }
\newcommand{\X}{{\bf \em X-Jet\ }}
\newcommand{\T}{Treiber\ }
\newcommand{\D}{{\sl HP-DeskJet\ }}
\newcommand{\K}{{\sl Kernel\ }}
\newcommand{\bs}{$\backslash$}
\newcommand{\emptypage}{\thispagestyle{empty}
                        \vfill
                        \begin{minipage}{3in}
                        \end{minipage}
                        \vfill
                        \newpage
                       }
\title{ Der Hewlett Packard Deskjet \\ \X \\ Treiber}

\author{J�rg Thomsen}
\date{}

\pagestyle{headings}
\begin{document}

\maketitle
\emptypage

\pagestyle{plain}
\pagenumbering{roman}
\parindent 3ex
\parskip   3ex

A strong and powerful tool to afford the maximum
performance from your HP-DeskJet Printer.
\vfill
{\sf
Handbuch f�r den \X \T Version 0.91.
 
Das Handbuch und das Programm das beschrieben wird unterliegen dem
Copyright \copyright 1990 von J. Thomsen. Es ist erlaubt dieses 
Dokument in jeglicher Form zu vervielf�ltigen. Au�er dem Layout
darf es nicht ver�ndert werden. Keine Kopie dieses Dokuments, in
jeglicher Form, darf verkauft werden. Programm und Handbuch d�rfen
nur frei und ohne Gewinn weitergegeben werden.


Das Programm wurde mit Sorgfalt entwickelt und getestet. Trotzdem
�bernehme ich keinerlei Haftung f�r die Richtigkeit des Programms
oder der �bereinstimmung des Handbuchs mit dem Programm.
Sollten Sie einen Fehler an dem Programm feststellen, so schicken
Sie mir bitte eine Nachricht.
}
\vfill
\begin{center}
J�rg Thomsen\\
Oberer Landweg 52c\\
2050 Hamburg 80
\end{center}
\vfill
\newpage

\tableofcontents

\newpage
\pagestyle{headings}
\pagenumbering{arabic}

\section{Einleitung}

Der \X entstand aus der Tatsache, da� das Ausdrucken von Din A5 
Dokumenten mit einem normalen \T schier unm�glich war. Die Idee war,
einen \T zu schreiben der es erm�glichte 2 Din A5 Seiten auf eine
Din A4 Seite zu drucken. Dies war nicht sehr schwierig, wenn man mal
davon absah, da� die Seite dann gedreht werden mu�te. F�ngt man mit
so etwas einmal an, so kommen einem, oder schlimmer, anderen Leuten,
schnell weiter Ideen was man noch so alles machen k�nnte. Innerhalb von
wenigen Tagen besa� ich vier verschiedene \D - \T, die sich alle ein klein
wenig von einander unterschieden. So gab es einen f�r Din A4 Normal,
einen f�r Din A4 quer und allein 3 f�r Din A5. Da ich Redundanzen 
hasse, versuchte ich alles in einen Treiber zu integrieren. Das Ergebnis
liegt gerade vor Ihnen und beherscht 5 verschiedene Ausdruck-Modi.

\section{\X - 'Der' Druckertreiber}

\subsection{Die verschiedenen Modi}
Der \X kennt f�nf verschiedene Druckmodi die �ber den {\sl -yc} Parameter
angesprochen werden. 
\begin{center}
  \begin{tabular}[]{|l|l|}\hline
    -yc value     &  Modi\\ \hline
    A4            &   Normaler A4 Hochkant Ausdruck\\
    A4Q           &   Din A4 Querdruck\\
    A5            &   Zwei A5 Seiten werden auf eine A4 Seite gedruckt\\
    A530          &   Wie A5 aber spezielle Reihenfolge\\
    A512          &   Wie A5 aber spezielle Reihenfolge\\ \hline
  \end{tabular}
\end{center}

\newpage
\subsubsection{A4  -  Modus}
 In diesem Modus ist nichts zu beachten. Alle anderen Optionen des Treibers
k�nnen normal genutzt werden. Eine Seite wird in bis zu 15 Teile zerlegt.

\subsubsection{A4Q  -  Modus}
Der Ausdruck erfolgt hier im sog. Landscape-Modus, also quer. Dies
funktioniert auch mit einem Normalen \D. Es ist also kein HP-\D +
n�tig. Auch bei dieser Option k�nnen alle anderen Optionen des
Treibers normal genutzt werden.

Bei dieser Option  wird mindestens ein Megabyte freies RAM ben�tigt.
Sie ist daher nur auf Rechnern mit mindestens zwei Megabyte RAM verf�gbar.
Um die gesamte Seite nutzen zu k�nnen, mu� ein Style �hnlich dem
{\sl A4.STY} benutzt werden in dem die Layoutgr��en festgelegt werden.

\newpage

\subsubsection{A5  -  Modus}
Hier werden zwei aufeinander folgende \Af Seiten nebeneinander auf
eine \Av Seite gedruckt. Der Treiber nutzt dabei seine eigene 
Seitennummerierung. Die Seiten werden fortlaufend in ihrer Erscheinungsfolge
durchnummeriert. Nach jeder zweiten Seite wird ein Formfeed ausgef�hrt.
Daher sollte man die Optionen zum R�ckw�rtsdruck bzw. `Jede 2 Seite'
mit Vorsicht benutzen. In diesem Modus werden mindestens 512 Kbyte
freies RAM ben�tigt. Sie ist daher auch auf einem Rechner mit {\sl nur} 
einem Megabyte zu benutzen. 

\subsubsection{A530  -  Modus}
Der merkw�rdige Name dieser Option leitet sich aus der Seitenfolge ab
in der der Ausdruck erfolgt. Auch hier gilt, da� zwei \Af Seiten 
nebeneinander auf eine \Av Seite gepackt werden. Nur wird hier die
Reihenfolge ver�ndert. 

Angenommen wir haben ein 10 Seitiges Dokument mit
den Seiten : $$ i, ii, iii, 1, 2, 3, 4, 5, 6, 7. $$ Dann w�rde folgendes Druckbild
entstehen:  $$ [1|i] \quad [5|2] \quad  [\  |6]. $$ Wobei $ [1|i] $ besagen soll, auf diesem
Blatt befindet sich links die Originalseite 1 und rechts die Originalseite
i. Das sieht auf den ersten Blick sehr merkw�rdig aus, ist aber, wie man 
gleich sehen wird, ungemein n�tzlich. W�rde man jetzt auf die R�ckseite
der Seite $[1|i]$ die Seiten $[ii|iii]$ drucken, so br�uchte man das Blatt
nur noch knicken oder schneiden, und man h�tte ein doppelseitig 
bedrucktes \Af - Dokument. 

Diese Idee war nun so toll, da� ich sie gleich
mit eingebaut habe. Sie ist im n�chsten Punkt beschrieben. Doch wir m�ssen
hier noch ein paar Sachen erw�hnen die nun mal erw�hnenswert sind. So mu�
durch diese merkw�rdige Reihenfolge immer eine \Af Seite Zwischengespeichert
werden, damit sie nach der �ber�bern�chsten Seite gedruckt werden kann.
Zum Zwischenspeichern braucht man aber bekanntlich Speicher. Man rechnet und
kommt auf ca. 512 Kbbyte die ben�tigt werden. Zusammen mit
der aktuellen Seite, die ja auch noch im Speicher gehalten werden mu�,
kommt man nun aber schon auf 1 Megabyte. 

Ich sehe die 1040er und
520er User schon erschauern, aber damit diese Option nun
auch auf diesen {\sl kleinen} Ataris mit nur 1 Megabyte l�uft, 
wird bei fehlendem Speicher eine Zwischendatei angelegt. Diese Datei
wird ziemlich genau 480000 Bytes gro�. Sie wird an der Stelle abgelegt
wo auch der Treiber liegt und tr�gt den sch�nen Namen {\sl PAGE.DMP}.
Ist auch kein Plattenplatz mehr vorhanden, so bricht der Treiber seine
Arbeit ab und man sollte wieder zu {\sl 1st Word Plus} greifen.

{\bf F�r diese Option gilt, H�nde weg von den Optionen die die
Seitenfolge steuern!}

\subsubsection{A512  -  Modus}
Hier ist er nun, der {\sl Missing Link}. Hat man m�hselig alle Bl�tter
wieder umgeschichtet, so werden nun die R�ckseiten in der richtigen
Reihenfolge bedruckt. Das sch�ne, es wird nichts zwischengespeichert, so
da� man auch mit 1 Megabyte auskommt. 

{\bf Aber auch f�r diese Option gilt, H�nde weg von den Optionen die die
Seitenfolge steuern!}

\newpage
\section{Die wichtigsten Gr��en der einzelnen Modi}

\begin{description}
  \item[Memory] Speicheranforderung in Bytes.
  \item[V-Size] H�he der bedruckbaren Fl�che in Pixeln.
  \item[H-Size] Breite der bedruckbaren Fl�che in Pixeln.
  \item[topoffset] H�he des oberen nicht bedruckbaren Randes in Pixeln.
  \item[leftoffset] Breite des linken nicht bedruckbaren Randes in Pixeln.
\end{description}

Der Treiber arbeitet mit einer Aufl�sung von 300 Punkten pro Zoll.

\begin{center}
  \begin{tabular}{|l|l|l|l|l|l|} \hline
    Modus    &  Memory  & V-Size & H-Size & topoffset & leftoffset \\ \hline 
    A4       &  -       & 3360   & 2400   & 23 & 38 \\
    A4Q      &  960000  & 2400   & 3360   & 38 & 23 \\
    A5       &  480000  & 2400   & 1600   & 38 & 23 \\
    A530     &  960000  & 2400   & 1600   & 38 & 23 \\
    A512     &  480000  & 2400   & 1600   & 38 & 23 \\ \hline
  \end{tabular}
\end{center}

\newpage
\section{Hints and Pitfalls}
  Das Hauptproblem bei der \Af - Ausgabe besteht in der Notwendigkeit, da�
{\tt \bs pagenumbering\ } Befehle nur auf einer geraden Seitennummer
vorkommen
d�rfen, was nach Murphy nat�rlich nie hinkommt. Innerhalb dieses Dokumentes
wird nach {\tt \bs maketitel} eine Leerseite mit dem Befehl {\tt \bs
emptypage} generiert. W�rde das nicht gemacht, w�ren die Header der 
nachfolgenden
Seiten verkehrt herum. Da ich in \TeX\  und \LaTeX\ nicht so fit wie
in {\sl \bf C} bin, ist mir au�er diesem einfachen Command nichts
eingefallen. 

Es w�re sch�n,  wenn jemand einen Befehl bauen k�nnte, der
selbst merkt ob er auf einer geraden oder ungeraden Seite steht und je nach
dem eine Leerseite einf�gt. Am besten w�re nat�rlich gleich ein neuer
{\tt \bs pagenumbering\ } Befehl der auch noch pr�ft ob �berhaupt
{\tt twoside\ } gew�hlt ist.
Im �brigen habe ich den Eindruck, da� die ganzen
Schwierigkeiten mit der `jede zweite Seite' - Option alle aus der Tatsache
resultieren, da� der \K bei Bedarf keine Leerseiten einf�gt.

Mit den Testdokumenten {\sl TESTA5.TEX\ } und {\sl TESTA4.TEX\ } ist es
m�glich den nicht bedruckbaren Rand ganz genau festzulegen. Es fehlen
eigentlich nur noch ein paar sch�ne Styles f�r die Formate.....

Mein mitgegebenes {\sl A5.STY} ist mehr so was zum Probieren und wurde
bar jeglicher layouterischer F�higkeiten gemacht.\\
{\tiny \sf Was f�r ein Satz.} 

\newpage
\section{Was der \X Treiber alles nicht kann}
Beim Querdruck, also bei allen A5 Optionen und 
bei \Av - quer, wird der rechte freie Rand vom \K nicht richtig berechnet.
Das f�hrt zwar zu keinem falschen Ausdruck, aber
dazu, da� alle leeren Spalten mit Nullbytes gedruckt werden. Der
Device-Teil w�rde zwar (so hoffe ich) richtig auf ordentliche 
{\sl right\_margin} Werte reagieren, doch bisher liefert der {\sl Kernel\ }
au�er bei {\sl left\_margin} nur 0 Werte. 

Die ganze Sache mit dem Seiten merken etc. ist h�chst unfein, und wird
Stefan Lindner wahrscheinlich zum Weinen bringen. Aber zu diesem Zeitpunkt
ist es die einzige M�glichkeit, da vom Device kein Einflu� auf die 
Seitenreihenfolge die der Kernel liefert genommen werden kann. Und ich meine,
der Erfolg gibt uns Recht, etc.  Ich habe den Treiber so sauber wie
m�glich geschrieben, und mich an alles gehalten {\sl (bis auf die Sache
mit dem CWEB)} was in den Richtlinien so zu finden war, soda� ich
annehme Stefan wird den Treiber wohl �bernehmen.  

Mein Dank gilt vor allem
meiner Frau die mich Morgens immer pennen lie�. Dann noch so einigen 
Leuten wie z.B. M.Dabis und R.Ebeling die immer noch auf den Counter und 
die NYX-Lib warten, aber trotzdem immer noch mit mir reden. Den 
Papierproduzenten und der Pelikan - AG f�r ihre gute 4001 Tinte, sowie
unbekannter Weise an Michael Mies f�r seine, wenn auch fehlerhaften, 
Routinen f�r die Schnittstelle und nat�rlich Stefan Lindner ob seines
Engagements f�r's \TeX\  und alles Drumrum. Ich hoffe,
er ist jetzt nicht mehr so maulig mit den Norddeutschen....

  
\end{document}



