From: gpw10@phoenixcd.amdahl.com (Gary Ward)
Newsgroups: comp.unix.bsd
Subject: Re: How to get parallel printer to work ?
Keywords: parallel printer 386bsd lpt1
Date: 1 Oct 92 18:08:12 GMT
Organization: Amdahl Corporation, Sunnyvale CA

Since this has been coming up a lot, I thought I would post this
rather than replying by E-mail.  Perhaps this information should be
added to the FAQ?  (There is no reference to it in the latest version
I have.)

The lpt (parallel port) driver is not configured into the kernel by
default.  This must be added and the kernel rebuilt before the device
will be accessable.  In addition, the original driver appears to have
problems.  Some people have reported being able to get it to work, I
was unable to.  An alternate driver was posted to comp.unix.bsd a
while back.  That driver, and the associated articles are included
below.  This driver has been working very well for me.


I also have a HP DeskJet 500.  This printer expects <CR><LF> at the
end of each line.  I provided a simple output filter to add the needed
<CR> characters and it would then print text fine.  Unfortunately
doing this screws up graphics printing.  I therefore invented another
logical printer which does not filter and dump all my graphics to it.
The better solution would be to implement a filter which recognizes
the graphics escape sequences and suppresses insertion of <CR>s while
in graphics mode, but I haven't gotten around to writing it yet.
Following are my /etc/printcap file and the source for the output
filter.  Note that my printcap file also suppresses burst pages (sh
option).  For a single user system, they were a waste of paper.  If
you have multiple users, you may want this enabled.

Note that the printcap file and filter programs are specific to my
printer.  If you have a different printer, they may not work, or may
even screw you up.  The lpt driver should not be printer specific.

----------------------------------------------------------------------
#       @(#)printcap    5.3 (Berkeley) 6/30/90

lp|local line printer:\
       
:lp=/dev/lp:sd=/var/spool/lpd:lf=/var/log/lpd-errs:sh:of=/usr/local/bin/
/lpr_filter:

lpnf|local line printer NO FILTER:\
        :lp=/dev/lp:sd=/var/spool/lpd:lf=/var/log/lpd-errs:sh:
----------------------------------------------------------------------
#include <stdio.h>

#define CR    13

main()
{
  int c;

  while ( (c = getchar()) != EOF ) {
    switch ( c ) {
    case '\n':
      putchar(CR);
      /* fall through */

    default:
      putchar(c);
    }
  }

  return(0);
}
----------------------------------------------------------------------

From: wolf@dentaro.GUN.de (Wolfgang Stanglmeier)
Newsgroups: comp.unix.bsd
Subject: replacement for lpt.c without interrupts
Date: 6 Sep 92 14:37:03 GMT
Organization: Colognists, Germany

I hacked the 386bsd LPT-driver to work without interrupts.
The busy loop timeout value adapts automatically to
the printer and system speed.

It should be a full replacement for the standard driver.

This driver keeps my printer busy without slowing down the system.
[I remember the 90% system time when printing hppcl graphic files
 with the ix/386 lpt-driver WITH interrupts]

The driver supports up to 4 printers.
The minor number is interpreted as follows:

	D D P E - - # #

DD:	Debug,	00: no
		01: statistical data when closing device
		10: statistical data for every write call
		11: lots of silly data

P:	Prime on open.

E:	Errormessage.
		Logs "no paper", "offline", "printer error" conditions
		to the console.

##:	Device,	0: lpt0
		1: lpt1
		2: lpt2		(on display adapter)

This driver uses the ideas of Piercarlo Grandis polling printer driver.

----------------------------------------------------------------------

From: ajv@xhost92.csd.mot.com
Newsgroups: comp.unix.bsd
Subject: Re: replacement for lpt.c without interrupts
Date: 9 Sep 92 06:00:18 GMT

wolf@dentaro.GUN.de (Wolfgang Stanglmeier) writes:

>I hacked the 386bsd LPT-driver to work without interrupts.
>The busy loop timeout value adapts automatically to
>the printer and system speed.

<excellent driver follows...>

I was working on something very much along the same lines.  However,
Mr. Stanglmeier hit the nail right on the head first.  I have rolled
in some of my other work on handling syscall restarts, and in the
process applied my BSD-kernel style of indentation.  What follows is
substantially the same driver, with my own minor improvements.

Kudos, Mr. Stanglmeier!  My printer thanks you. :-)

					Andy Valencia
					ajv@csd.mot.com (for now)
					jtk@netcom.com (if it bounces)

-----------------------------------------------------------------------

begin 644 lpt.c.Z
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
0+Z8CL"Z9&G8J^FWA!O H !*\
 
end

-- 
+------------------------+---------------------------+
| Gary Ward              |  Amdahl Corporation       |
| gpw10@cd.amdahl.com    |  1250 East Arques Avenue  |
| Phone : (408)746-8865  |  P.O. Box 3470 M/S 142    |
|                        |  Sunnyvale, CA 94088-3470 | 
+------------------------+---------------------------+