


            PARALLEL IO PORT DRIVER FOR APOLLO DN3000-DN4000
                       Version 1.0 - 19 May 1993 



This package contains:

  piodrv : a GPIO driver for standard PC parallel IO boards on Apollo
    DN3000-DN4000 workstations with an ISA bus.

  cdjprint : a simple printer utility using the above driver for an
    HP 550C color deskjet printer. Printing time for a full A4 page
    of color graphics is about 7 minutes using the parallel interface,
    which is 3.5 times faster than with the serial interface at 9600 baud.


REQUIRED HARDWARE

    You need a standard PC parallel port board or a PC serial/parallel
  expansion board (I think that about any board will do. Mine is from
  an abandoned XT and has a parallel and a serial port).
  Just make sure that the jumper settings on the PIO card and the base
  address specified in the device descriptor file match (I use "LP1",
  base address 378hex on my DN3000).


SOFTWARE INSTALLATION

  Files in this package:
     README           : the file you are reading now
     Makefile         : builds this stuff (edit as required)
     piodrv.make_ddf  : command script to build the DDF file (will need
                        some editing)
     pbu.h            : GPIO defs used by piodrv (use Apollo's pbu.h if
                        you have it)
     piodrv.h         : definitions for user-callable driver routines
     piodrv.c         : source for some driver routines
     piodrv_call.c    : call-side routines of the GPIO driver
     cdjprint.c       : source for the HP550C color deskjet driver program
  
  Files you have to build:
     piodrv.ddf       : device descriptor file
     piodrv_call_lib  : call-side GPIO library
     piodrv.o         : driver library to link with
     cdjprint         : the printer driver program


    You have to edit the Makefile and the piodrv.make_ddf script to
  change the pathnames for the ddf file and the driver library.
    Then "make" should do the rest (the driver has been compiled under
  SR10.3.5/BSD and SR10.4.0.6/BSD).
    To install the software you will have to copy the ddf, the library
  and the executable manually, unless you adapt the Makefile. Also you
  may need to login as root to do this.
  Some "little details" to watch out for:
    o the piodrv.make_ddf must be run on the machine in which the PIO
      board is installed.
    o the piodrv.make_ddf script must have execute permission.
    o the driver library piodrv_call_lib must have execute permission.
    o the cdjprint program is linked only with the driver acquire/release
      functions, the other driver routines are loaded automatically
      when the device is acquired. You will get warning messages for
      undefined globals, but if their names have the "piodrv_" prefix
      do not worry about them.


KNOW PROBLEMS AND LIMITATIONS

  o This driver was written in a hurry to speed up my color deskjet
    printer. The driver uses simple polling and no interrupts. I never
    encountered any problem with this driver. The printer is mainly used
    to print full-page color graphics and LaTeX documents.

  o When the Apollo is booted the PIO board is not initialized
    automatically, so that when you power on the deskjet printer it will
    not perform its selftest and it just waits with the busy light on.
    The PIO port (and the printer) can be initialized with the command
    "cdjprint -init", otherwise the port (and the printer) get initialized
    when the first file is printed. It may be necessary to adapt the time
    the driver waits for the printer to perform its selftest (in routine
    piodrv_init()).
     

DOCUMENTATION

    The source files contain some documentation on the PIO registers and
  its operation. There are a number of PC/AT-books that describe device
  access at the IO-register level in case you need to know more. The
  documentation I used to write this driver:

  o "Alles over PC Hardware", by Hans-Peter Messmer, published by
    Addisson-Wesley, a translation in Dutch of the original book in
    German: "PC-Hardwarebuch").

  o "Writing device drivers with GPIO calls", from Apollo, for SR10.2.

    There is no documentation on cdjprint apart from its built-in
  help text (which is):

      cdjprint - HP550C deskjet printer driver
      usage: cdjprint [-options...] [filename]
        options:
          -init     (just init PIO board and printer)
          -cvt_nl   (convert nl in cr-lf, default= no cvt_nl)
        If filename is not specified, standard input is read.


WARRANTY - SUPPORT - DISCLAIMERS - AUTHORSHIP - COPYRIGHT - ETC 

  This software package was developped (on a DN3000 at home) by:

     Jef Rijmenants

     Email:     jef_rijmenants@edc.mentorg.com
     Address:   European Development Center NV (Mentor Graphics)
                Abdijstraat  34
                B-3001  Leuven
                Belgium

  This software is provided "as is" without express or implied warranty.
  You are free to use it and modify it, as long as you do not forget to
  mention its origin or try to make money out of it. The author can not
  be held responsible for any damage or loss caused by the use of this
  package.


  PS: Limited support can be given to persons who are living in Europe
      and who are selling DN3000/DN4000 spare parts at "give-away-prices". 
      Addresses of companies or persons in Europe that sell second-hand
      Apollo DN3000/DN4000 hardware are always welcome.

