iPRN  (C) Peter Missel 1994, 1995

"Ghn, schon wieder ein Beschleuniger fr die Druckausgabe!"

Jawohl, schon wieder einer. Aber einer mit Statusberwachung per Interrupt.

"Und was heit das?"

Nun, ganz einfach: Zustzlich zur bei Druckbeschleunigern blichen 
Beschleunigung des Druckens kann iPRN unterscheiden, ob der Drucker 
nur beschftigt oder in einem Fehlerzustand ist (offline, ausgeschaltet, 
kein Papier, nicht angeschlossen...). So wei das System im voraus, ob es 
mglich ist, Zeichen an den Drucker zu senden oder nicht.
Dadurch entfllt die lstige Gedenkminute, wenn man drucken will und 
der Drucker nicht bereit ist. Die Fehlermeldung erscheint sofort.


iPRN ist Shareware. Die Versionen bis einschlielich 0.99 sind Demoversionen
und knnen frei verbreitet werden.

Einschrnkungen der Demoversion:
- Die Statusberwachung funktioniert pro Sitzung nur einmal:
  Wenn der Drucker einmal Offline war und wieder Online gesetzt
  wird, deaktiviert sich die Statusberwachung selbst. Dann luft
  alles normal weiter, nur halt wieder mit Gedenkminute bei Druckerfehler.
  Die Beschleunigungswirkung bleibt erhalten.
- Kein Kontrollfeldmodul:
  - Timeouts nicht konfigurierbar
  - Statusberwachung nicht abschaltbar (schaltet sich sowieso von selber ab)
  - keine Deskjet-Weckfunktion


Die registrierten Versionen 1.00 und hher kosten in Deutschland DM 25,-
und US$ 20 im Ausland.


Registrierung
=============
DM 25,- / US$ 20 berweisen an:

Peter Missel, Stadtsparkasse Augsburg, BLZ 72050000, Kto. 1301522.
Als Verwendungszweck "iPRN Vorname Nachname" angeben.

UK: Scheck oder Postal Order ber 13 Pounds Sterling, zahlbar an 
Denesh Bhabuta, senden an:

CyberSTrider,
203 Parr Lane,
Unsworth,
Bury,
Lancashire,
BL9 8JW

Bitte nicht vergessen, Name und Adresse anzugeben.

Denesh kann auch ber E-mail erreicht werden:
dbhabuta@cix.compulink.co.uk
danny@micros.hensa.ac.uk

Zur eindeutigen Identifizierung zustzlich eine Postkarte schicken an:
Peter Missel, Greiffstrae 11, 86157 Augsburg, Deutschland.

Oder eMail an Peter Missel @ LL im Mausnetz.
(Peter_Missel@ll.maus.de fr Benutzer anderer Netze)


Wirkung (Zeichen pro Sekunde)
=============================

Rechner                         ohne    mit iPRN 
-------------------------------------------------
ST, 8 MHz, TOS 2.06             1800    13531
ST, 16 MHz, TOS 1.04            3200    >17200
Falcon030, TOS 4.04             3500    bis 36100 *
Falcon030, TOS 4.04, Bild aus   4500    >39370 *
Falcon030/32 MHz, Bild aus      4835    >39370 *
TT030 ohne FastRAM, TOS 3.06    5600    bis 34100 *
TT030 mit FastRAM, TOS 3.06       ?       ?*

(Die "grer als"-Werte sind aus Benchmarks, bei denen der Rechner schneller
senden konnte, der Drucker aber nicht schnell genug war.)

* Bei 68030-Rechnern schwanken die Mewerte mit der Lage von
  Treiber und Software im CPU-Cache. Im schlechtesten Fall erhlt man
  etwa 20% weniger Durchsatz, "normal" etwa 5% weniger als die angegebenen
  Maximalwerte.


Installation 
============
IPRN.PRG gehrt in den AUTO-Ordner, und zwar so weit hinten wie mglich. 
MiNT-Anwender mssen es hinter MINT.PRG in den AUTO-Ordner stecken. Dann 
kann unter MiNT ein XDD-Treiber fr den Drucker benutzt werden (weil sich 
IPRN.PRG dann nicht installiert), und ohne MiNT startet IPRN.PRG. 

Wer keinen XDD-Treiber hat, kann iPRN auch mit MiNT benutzen. Vor MiNT 
gestartet ist die Beschleunigung wegen des Overheads von MiNT allerdings 
eher gering; wer Geschwindigkeit vor Kompatibilitt setzt, kann IPRN.PRG 
auch nach MiNT starten, dann ist die Geschwindigkeitssteigerung besser.
(Umleitung der Druckausgabe wird dann nicht funktionieren.)

IPRN.CPX ist das Kontrollfeldmodul und gehrt in den Ordner, in dem die
schon vorhandenen Moduln auch schon sind. Normalerweise ist das C:\CPX\.
Es ist allerdings nur in der registrierten Version dabei.


Bedienung
=========
An IPRN.PRG gibt es nichts zu bedienen. Es wird im AUTO-Ordner automatisch
gestartet und installiert sich. Falls die Installation unmglich ist, wird
eine Fehlermeldung ausgegeben: "already installed" oder "Printer port
already in use", wenn das Programm bereits installiert ist bzw. wenn bereits
ein anderes Programm den Interrupt der Druckerschnittstelle belegt hat.

Das Kontrollfeld-Modul dient zur Konfiguration des Programms:
- "Offline Timeout" ist die maximale Zeit in Sekunden, die vor dem Absenden 
  eines Zeichens gewartet wird, bevor der Drucker fr abwesend erklrt und 
  eine Fehlermeldung erzeugt wird.
- "End-of-job delay" ist die Zeit, die nach dem letzten gedruckten Zeichen
  verstreichen mu, bevor die Zustandsberwachung wieder wirksam wird.
- "Printer state watchdog": Zustandsberwachung des Druckers per Interrupt.
  Kann jederzeit an- und ausgeschaltet werden. Ausschalten empfiehlt sich
  vor der Benutzung eines Programms, das selbst die Hardware direkt benutzt.
- Nebenbei kann man durch Druck auf "OK" oder "Save" auch eingeschlafene
  Deskjets wieder zum Leben erwecken.

Das Kontrollfeldmodul ist nur in den registrierten Versionen enthalten;
in den Demoversionen ist "Offline Timeout" auf 30, "End-of-job delay" auf 3
Sekunden fest eingestellt, und der "Printer state watchdog" deaktiviert sich
nach dem ersten Druckerfehler von selbst.


Die erwnschten Nebenwirkungen von iPRN sind:

- Die Erzeugung des STROBE-Signals funktioniert unabhngig von der 
  Geschwindigkeit des Rechners. Auch Besitzer ultraschneller Gerte 
  jenseits des TT knnen iPRN benutzen.

- Auch bei der Hardcopy entfllt die lstige Pause bei abwesendem Drucker. 
  Der Druckvorgang wird auch hier beschleunigt.

- Beim Reset des Rechners wird statt eines undefinierten Mllzeichens 
  ein definiertes Mllzeichen gesendet, nmlich ein Nullbyte. 
  Da es gesendet wird, ist im TOS so festgenagelt (zumindest bis TOS 1.04) 
  und lt sich nicht vermeiden.


Unerwnschte Nebenwirkungen:

- Programme, die die Druckausgabe direkt auf die Hardware machen (anstatt 
  ber GEMDOS oder BIOS), lsen damit pro Byte zwei Interrupts aus, was 
  _diese_ Druckvorgnge langsamer macht als vorher. (Aber zum Glck nicht 
  viel.) Das betrifft allerdings auch nur solche Oldies wie Calamus 1.x 
  oder Signum!Zwei. Besitzer einer registrierten Version von iPRN knnen 
  vor dem Ausdruck mit solchen Programmen die Druckerstatusberwachung 
  ber das Kontrollfeld deaktivieren.

- Schlielich bercksichtigen viele Programme nicht, da die Zeichenausgabe- 
  funktion des BIOS einen Fehlercode zurckliefert, so da man den Drucker 
  nicht whrend des Drucks offline schalten kann. iPRN ignoriert deswegen
  den Offline-Zustand innerhalb 3 Sekunden nach dem letzten gesendeten 
  Zeichen (in den registrierten Versionen konfigurierbar).
  Sptestens nach dem "groen" Timeout (normalerweise 30 Sekunden, 
  in der registrierten Version konfigurierbar) gehen dann trotzdem Zeichen 
  verloren, und der Ausdruck bekommt ein paar Spezialeffekte dazu.
  Das passiert allerdings auch mit der normalen Druckfunktion des TOS 
  und hat mit iPRN nichts zu tun.


Kontraindikationen:

- Nicht anwenden bei hardwaremiger Inkompatibilitt des Druckerausgangs, 
  etwa bei GEMulator- oder JANUS-Steckkarten fr DOS-PCs oder Mag!C Mac.

==============================================================================

Fr die Techniker: iPRN hngt im BIOS-Trap (mit XBRA-Kennung "iPRN") 
und fngt Bconout( 0, ... ) und Bcostat( 0 ) ab. Zustzlich installiert es 
sich in den Vektoren xconout0, xcostat0, prv_lst, prv_lsto und resvector. 
Es aktiviert und benutzt MFP Interrupt I0. Ein Cookie "iPRN" wird eingetragen, 
dessen Wert ein Zeiger auf Konfigurationswerte ist; diese wiederum knnen mit 
dem Kontrollfeldmodul verndert werden. (Nur in den registrierten Versionen, 
in den Demoversionen zeigt der Zeiger auf Mll.)

Bcostat( 0 ) liefert im Unterschied zur Originalfunktion im TOS auch mitten 
im Druckvorgang einen aussagekrftigen  Wert, weil unterschieden wird, ob 
der Drucker wegen eines gerade gesendeten Zeichens busy ist, oder von sich 
aus die BUSY-Leitung gesetzt hat (etwa weil ein Fehler aufgetreten ist oder 
der Drucker offline geschaltet ist). Das Ergebnis ist wie gewohnt -1 fr 
"ready" und 0 fr "not ready", nur da ein gewhnlicher Busy-Zustand auch 
als "ready" gemeldet wird.

==============================================================================

Dank geht an:

Thomas Fladerer (mein mutiges Dauer-Versuchskaninchen)

Die Betatester: Franz Blaha, Thomas Fladerer, Robert Federle, Andreas Kohout,
Heinz Ltkebohmert, Michael Nolte.

Die unfreiwilligen Tester: Werner Deinbck, Michael Ruge, Walter Vieser.

Atari fr die Hardware-Dokumentation, einige kleine Codefetzen zum 
Thema Interrupthandling und Programmstart, und die Tools zum Erzeugen
von Kontrollfeld-Moduln;

Julian F. Reschke frs geduldige Verwalten der XBRA-Liste.

Besonderer Dank an Thomas Fladerer, Andreas Kohout und Michael Kunert, 
die mir ihre Drucker samt Tinte fters mal geborgt haben.


Peter Missel, im Juni 1995