iPRN (C) Peter Missel 1994 "G„hn, schon wieder ein Beschleuniger fr die Druckausgabe!" Jawohl, schon wieder einer. Aber einer mit Statusberwachung per Interrupt. Und was heižt das? Nun, ganz einfach: Zus„tzlich zur bei Druckbeschleunigern blichen Beschleunigung des Druckens kann iPRN unterscheiden, ob der Drucker nur besch„ftigt oder in einem Fehlerzustand ist (offline, ausgeschaltet, nicht angeschlossen...). So weiž das System im voraus, ob es m”glich ist, Zeichen an den Drucker zu senden oder nicht. Dadurch entf„llt die l„stige Gedenkminute, wenn man drucken will und der Drucker nicht bereit ist. Die Fehlermeldung erscheint sofort. iPRN ist Shareware. Die Versionen bis einschliežlich 0.99 sind Demoversionen und k”nnen frei verbreitet werden. Einschr„nkungen 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 l„uft 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) Die registrierten Versionen 1.00 und h”her kosten DM 25,-. Registrierung ============= DM 25,- berweisen an: Peter Missel, Stadtsparkasse Augsburg, BLZ 72050000, Kto. 1301522. Als Verwendungszweck "iPRN Vorname Nachname" angeben. Zur eindeutigen Identifizierung zus„tzlich eine Postkarte schicken an: Peter Missel, Greiffstraže 11, 86157 Augsburg. Oder eMail an Peter Missel @ M4 im Mausnetz. (Peter_Missel@m4.maus.de fr Benutzer anderer Netze) Wirkung (Zeichen pro Sekunde) ============================= Rechner ohne mit iPRN ------------------------------------------------ ST, 8 MHz, TOS 2.06 1800 ca. 13000 ST, 16 MHz, TOS 1.04 3200 >16800 Falcon030, TOS 4.04 3500 >16800 TT030 ohne FastRAM, TOS 3.06 5600 ? TT030 mit FastRAM, TOS 3.06 ? ? Installation ============ IPRN.PRG geh”rt in den AUTO-Ordner, und zwar so weit hinten wie m”glich. 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.PRG auch mit MiNT benutzen. Vor MiNT gestartet ist die Beschleunigung wegen des Overheads von MiNT allerdings eher gering; wer Geschwindigkeit vor Kompatibilit„t setzt, kann IPRN.PRG auch nach MiNT starten, dann ist die Geschwindigkeitssteigerung besser. IPRN.CPX ist das Kontrollfeldmodul und geh”rt 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 unm”glich 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 erkl„rt 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. 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 unabh„ngig von der Geschwindigkeit des Rechners. Auch Besitzer ultraschneller Ger„te jenseits des TT k”nnen iPRN benutzen. - Auch bei der Hardcopy entf„llt die l„stige Pause bei abwesendem Drucker. Der Druckvorgang wird auch hier beschleunigt. - Beim Reset des Rechners wird statt eines undefinierten Mllzeichens ein definiertes Mllzeichen gesendet, n„mlich ein Nullbyte. Daž es gesendet wird, ist im TOS so festgenagelt (zumindest bis TOS 1.04) und l„žt sich nicht vermeiden. Unerwnschte Nebenwirkungen: - Programme, die die Druckausgabe direkt auf die Hardware machen (anstatt ber GEMDOS oder BIOS), l”sen damit pro Byte zwei Interrupts aus, was _diese_ Druckvorg„nge 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 k”nnen vor dem Ausdruck mit solchen Programmen die Druckerstatusberwachung ber das Kontrollfeld deaktivieren. - Schliežlich bercksichtigen viele Programme nicht, daž die Zeichenausgabe- funktion des BIOS einen Fehlercode zurckliefert, so daž man den Drucker nicht w„hrend des Drucks offline schalten kann. iPRN ignoriert deswegen den Offline-Zustand innerhalb 3 Sekunden nach dem letzten gesendeten Zeichen (in den registrierten Versionen konfigurierbar). Sp„testens nach dem "grožen" 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 hardwarem„žiger Inkompatibilit„t des Druckerausgangs, etwa bei GEMulator- oder JANUS-Steckkarten fr DOS-PCs. ============================================================================== Fr die Techniker: iPRN h„ngt im BIOS-Trap (mit XBRA-Kennung "iPRN") und f„ngt Bconout( 0, ... ) und Bcostat( 0 ) ab. Zus„tzlich 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 k”nnen mit IPRNCFG.TOS ver„ndert 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 aussagekr„ftigen 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 gew”hnlicher Busy-Zustand auch als "ready" gemeldet wird. ============================================================================== Dank geht an: Thomas Fladerer (mein Dauer-Versuchskaninchen) Die Betatester: Franz Blaha, Thomas Fladerer, Robert Federle, Andreas Kohout, Heinz Ltkebohmert, Michael Nolte. Atari fr die Hardware-Dokumentation, einige kleine Codefetzen zum Thema Interrupthandling und Programmstart, und die Tools zum Erzeugen von Kontrollfeld-Moduln; Arnd Beissner fr die Cookie-Library; 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.