   This document explores the range of possible work to be done in the area
of the Printer Manager.

   The impetus from this is from various directions:

         The Jordan project will be producing a system with 24-bit colour
      graphics: the printing system should be able to handle this;

         Similar remarks about new SCSI facilities in Jordan;

         The RISC O S 3.10 Printer Manager has a lot of problems which are
      reported by customers to Technical Support;

         There are various design problems which are causing I S V's and
      ourselves problems.

   The work is divided here according to the area of software to be changed.

The Printer Manager
=== ======= =======

SCSI support
---- -------
   The SCSI software interface to be provided in Jordan allows for a printer
to be hung off the SCSI bus. It is proposed that 'SCSI Printer' be added to
the connnections window of Printers, alongside the analogous entries
'Serial' and 'Parallel.' It is not decided yet whether the drive number (the
interface allows more than one SCSI printer to be available concurrently)
should be be an entry in the dialogue box (as, for example, the printer
server name is specified when printing to Econet).

   This work would be about a day. The request comes from Neil Critchell and
the Jordan project (drawing 0197,262/FS).

   In the light of the suspension of this piece of Jordan, this work will be
suspended.

User interface improvements in printing to file
---- --------- ------------ -- -------- -- ----
   It is requested that facilities be provided for printing many files to
one output file. At present, when 'Print to file' is selected, each file
overwrites the output file as it is printed. I suggest the best way of
achieving the goal is to add an 'append to file' tick box to the connections
window under 'To file.'

   It is also requested that a 'clear file' action be added. I suggest this
is probably unnecesary, as the file is cleared whenever a file is printed
and the 'append to file' option is not in force. [2 days]

   It is suggested that a 'spool via temporary file' option be added to the
configuration window. The effect of this would be beneficial to hard disc
users. When an application that does not use text printing wants to print,
at the moment the Printer Manager causes the output to be directed to a
printer, and then requests the application to print. This can take a long
time, during which the desktop is not available. The proposal is to allow an
option in Printers to cause it to request the application to print to a
scratch file, and then to send the scratch file to the printer itself, which
it can do in the background. Since printing to a file is very likely to be a
lot faster than printing to a real printer, desktop availability would be
improved.

   The work in using the message protocol differently and handling the queue
differently is intricate, but the proposal has significant merit. [3 days]

   It is requested to add 'Cancel' buttons on the connections and
configuration windows, and on the 'paper size' boxes, and to remove the
close boxes on the above. [1/2 day]

   It is requested that 'Connections ...' and 'Configuration ...' be added
to the root menus. This would be easy, and a useful shortcut in the user
interface. [1/2 day]

   It is requested that dragging a printer description file onto a printer
icon should define the printer type and show the icon on the icon bar. If we
did this, there would be no way of printing these files. This seems wrong to
me.

   It is also suggested that a double-click on a printer description file
should start !Printers (if necessary), define the printer type, and show the
icon on the icon bar. This makes more sense, and would be easy to do. [1/2
day]

   There is a request to analyse the network usage of Printers to try and
arrange that it loads in smaller lumps, and to find out where exactly the
space and loading time goes. I suspect there is nothing to be done about
this short of deleting a lot of back-end definition files (which are all
read whenever Printers starts up). [1 day to check]

   If (as seems likely) it turns out that there's a large overhead in
reading the Resources files for the back-ends, that operation can be skipped
if it turns out that no printers of that class are loaded. This would be of
benefit to both slow network and floppy disc users.

   The 'Printer control' window should use vertically aligned icons, rather
than trying to make text that lines by hand.

Software interface problems
-------- --------- --------
   At the moment an application which wants to print a file has to engage in
a new protocol designed for RISC O S 3. Under RISC O S 2, the old way must
be used. There is no supported way of distinguishing between the two: this
should be fixed, by making the RISC O S 'Print file' message a word longer
than the RISC O S 2 one. This problem has been reported by Iota. [1/2 day]

   An application which wishes to print files of its own format using the
text printing facilities of the Printer Manager is not supported at the
moment. EasyWord2 (in particular) has to do this: it has an internal format
which it maps to the 1st Word+ format on printing. Unfortunately, this
requires it to requeue the file, which looks very strange. We should supply
an interface to allow a text file to be printed immediately. [1 day to
design]

Bugs
----
   Many bugs have been reported from the field, including:

         Printing Printout files on class dp causes address exception. It
      would be very important to fix this if we were to provide the 'Spool
      via temporary file' option referred to above. [1/2 day]

         On a single floppy system, Printers must be available in the drive
      whenever it is used at present. This is very inconvenient, as it is
      too big for this to be practical. It is also unintentaional, and
      should be remedied. [1/2 day]

         Printer drivers are slower than 2.00 ones for text printing. This
      should be investigated and remedied if practical. [1 day to
      investigate]

         Message PrintFile from !Printers in response to a DataLoad message
      does not include the Scrap file name. [1/2 day]

         If you load 2 copies of the same printer definition, delete one of
      them, and edit the other you get "Abort on data transfer". [1/2 day]
                                                    
         Setting margins in !Printers doesn't work. [1/2 day]

PrintEdit
=========
   The user interface to setting of paper offsets is far from obvious. [I've
not worked on PrintEdit before. It's a large BASIC programme. This would
probably take about a day to fix.]

Printer definition files
======= ========== =====
   Customer Services has a list of problems in the printer definition
files. Updating the files should be easy, but checking the changes might
require a lot of time and resource in acquiring the relevant printer.

   The problems are, for example:

         Many of the defaults provided are wrong.

         Max colour resolution on LC200 is 120x72, used to be more on RO2
      drivers.

         Margins for LaserJet are wrong.

         No Panasonic printer definitions or directory.

Printer driver modules
======= ====== =======
   Again, these are problems encountered by customers and reported to us.
They are in areas of code I don't know, so I haven't attempted to estimate
times for them.

         Applications which used to print OK on 2.00 PDrivers now print grey
      instead of white. (Seems to only happen on DM printers, we haven't managed
      to reproduce it yet.)

         Staggered printing problem. The top half of a line of text does not
      always match the bottom half!

         Dots on left hand side of printout, does not happen with PrinterDM.

         Font_Paint corrupts flags when printing to printer. (PDriverDM)

         Problems with justified text and TABs.  (PDriverDM)

         Font_Paint with R7 = substring length doesn't work. (PDriverDM, PS)

         PDriver_SelectJob corrupts R7. (PDriverDM, PS)

LaserJet
========
   Reported by customers, in areas of code in which I have no expertise:

         Problems with printing to LaserJet IV printers.

         Extra form feed printed on Qume CrystalPrint II.

         Tagged image format sometimes has incorrect length.

General O S incompatibilities
======= = = =================
   Reported by customers, in areas of code in which I have no expertise:

         Control is not returned to the user when all the data is buffered, but
      rather only when the buffer is emptied to the printer. The spoils the point
      of having big printer buffers.

         Using ADVAL -4 ('Return bytes free in buffer') to detect printer on 
      line no longer works - different printer buffer size?
 
PostScript
-----------
   Reported by customers. Steve Hunt has been thinking about some of these
problems for a while, and should be consulted before any work is done.

         Problems with typesetters.

         Problems with font encodings for symbol fonts.

Colour Printing
---------------
   We are already paying Tony to do the first two parts. Jonathan Roach has
agreed to coordinate the work that Tony is doing, and to aim for printer
drivers supporting the first two points to be delivered to us ASAP. This
will be independent of any other work that he requires Tony to do.

         Colour calibration code does not work.

         Insufficient dithering resolution.

         24 colour printing.
