\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 fr 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 drfen
nur frei und ohne Gewinn weitergegeben werden.


Das Programm wurde mit Sorgfalt entwickelt und getestet. Trotzdem
bernehme ich keinerlei Haftung fr 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 fr Din A4 Normal,
einen fr Din A4 quer und allein 3 fr 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 fnf 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 verfgbar.
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 ausgefhrt.
Daher sollte man die Optionen zum Rckw„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 merkwrdige 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 wrde 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 merkwrdig aus, ist aber, wie man 
gleich sehen wird, ungemein ntzlich. Wrde man jetzt auf die Rckseite
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 mssen
hier noch ein paar Sachen erw„hnen die nun mal erw„hnenswert sind. So muž
durch diese merkwrdige Reihenfolge immer eine \Af Seite Zwischengespeichert
werden, damit sie nach der berbern„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 Fr 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 mhselig alle Bl„tter
wieder umgeschichtet, so werden nun die Rckseiten in der richtigen
Reihenfolge bedruckt. Das sch”ne, es wird nichts zwischengespeichert, so
daž man auch mit 1 Megabyte auskommt. 

{\bf Aber auch fr 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
drfen, was nach Murphy natrlich nie hinkommt. Innerhalb dieses Dokumentes
wird nach {\tt \bs maketitel} eine Leerseite mit dem Befehl {\tt \bs
emptypage} generiert. Wrde 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 einfgt. Am besten w„re natrlich gleich ein neuer
{\tt \bs pagenumbering\ } Befehl der auch noch prft 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 einfgt.

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 fr die Formate.....

Mein mitgegebenes {\sl A5.STY} ist mehr so was zum Probieren und wurde
bar jeglicher layouterischer F„higkeiten gemacht.\\
{\tiny \sf Was fr 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 fhrt zwar zu keinem falschen Ausdruck, aber
dazu, daž alle leeren Spalten mit Nullbytes gedruckt werden. Der
Device-Teil wrde 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 fr ihre gute 4001 Tinte, sowie
unbekannter Weise an Michael Mies fr seine, wenn auch fehlerhaften, 
Routinen fr die Schnittstelle und natrlich Stefan Lindner ob seines
Engagements fr's \TeX\  und alles Drumrum. Ich hoffe,
er ist jetzt nicht mehr so maulig mit den Norddeutschen....

  
\end{document}



