home *** CD-ROM | disk | FTP | other *** search
- !Printer Spooler
- ----------------
- (c) Justin Fletcher, 1994
- Introduction
- ------------
- The !Spooler application is intended to make life that little bit easier
- for the few people who haven't got access to expensive printers, but want to
- print out a lot of work, and need to use the computer at the same time.
-
- When an application prints a file, it sends it, quite predictably, to the
- printer. However, you can change the location of the printer by changing the
- 'Printer Destination' to something other than where the printer is located.
- For example, my Citizen printer is connected to the parallel port and this
- is where all the printer data is send. But there is an option to print the
- file to the serial port (mostly used for PostScript printers), a network
- driver, or to a file.
-
- Dumping a printout into a file may seem pretty silly at first, but this is
- probably the most important feature of the !Printers application. By setting
- the output to a file, all the 'easy' work of calculating the codes to send to
- the printer (ie. rendering the image) can be done quickly and sent to a file.
- The reason the computer is held up when the printing, is that the printer is
- much slower at printing than the computer is at processing. The benefit in
- doing this is that the time taken to print is greatly reduced and therefore
- control of the computer returns much quicker. And as control returns quickly,
- you can get on with whatever work you were doing.
-
- But this is only half of the solution, because, although the 'printing' of
- the file took perhaps 30 second instead of 30 minutes, there is no actual
- hardcopy yet. What you can do now is to drag this newly created file onto the
- !Printers icon and it will be printed, in the background (ie. you can work at
- the same time as it is printing). And if you want 5 copies of the same file,
- the all you need to do is drag it onto the icon 5 times. That's easy, yes ?
-
- No! Well actually it is, but you try explaining it to my dad, along with
- what to do to drag-and-drop text in !Style, Replicate data in !PipeDream, and
- all the other non-exotic things. And actually, if you want two copies of one
- file and these are printing and then you wish to print another document then
- you must change the name of the destination file on !Printers, and drag this
- onto the icon (not hard, but takes some remembering).
-
- So, getting down to the actual use of the !Spooler application, what it
- does is to control the output of these printout files and prints them in the
- background with no problems with changing names.
-
- Setting up your system
- ----------------------
- Currently, the application is set up for an Epson FX-85 printer, which
- covers so many dot matrix printers that it should apply to many users. The
- only things which need to be done to ensure that the !Spooler application
- will start up correctly are :-
- a) A system variable ( Printer$Destination ) must be set up to point to the
- location to which any print out files will temporarily stored. These are
- transitionary files which will only exist whilst the file is actually
- being processed, after which the file is moved to the correct location
- on the disc.
- It should be set in the Boot-up sequence for preference and could
- perhaps be :
- *Set Printer$Destination <WimpScrap$Dir>.TempPrint
-
- b) The printer driver must have been loaded previously. (Note: Not _seen_
- previously, _loaded_ previously).
- The printer must be loaded to set things like the actual codes which
- must be send to the file and its destination.
- Once loaded and set to output to the file <Printer$Destination>, the
- application may be quit.
-
- Having done these two things, the only other thing that may need setting up
- is the Area$Name variable. On my system the whole family can use the computer
- (not simultaneously, at different times), and therefore each logs on and has
- his/her own area of the hard-disc to work in. This means that if one user
- leaves something in the printer queue and then shuts down, then the next user
- may not wish to print out the queued work, only his/her own. Hence the use of
- an area name. The Area$Name variable should be less than 8 characters long,
- not contain and fullstops, and be recognisable. It doesn't actually affect
- the program, only how you use it. If Area$Name is unset then the default name
- 'Nobody' is used.
-
- A further thing which may speed up the printing process is to configure a
- 16k printer buffer (By *Configure PrinterBufferSize 16k or 32 depending on
- page size) which will cut down the amount of times !Spooler has to read the
- harddisc. The minimum PrinterBufferSize can go is 1k and thereafter is in 16k
- (or 32k if you have 4Mb) blocks (ie. 1k, 16k, 32k, etc).
-
- Note: Points a) and b) must be done each time !Spooler is to be used.
- Setting Area$Name can be done at any time, and configuring buffer size
- only needs to be set once.
-
-
- Using !Spooler
- --------------
- Simple : 1) Set up as above.
- 2) Load the !Spooler program.
- 3) Print a file.
-
- When the file is printed, a box will appear to tell you that a 'file has
- been printed' and it needs to be given a name. The name is not a filename,
- and is only there so that you remember what files you have printed. The
- length is restricted to 11 characters and all may be used, except fullstop.
- The actual name may have little relation to the files name or its contents,
- and is entirely up to you. Leaving this blank will give the job the name
- Untitledx, where x is an unused number.
- The number of copies is selectable, but can be changed later.
- By selecting the 'Immediate' option, the file will be printed immediately
- after the current copy of the current job is completed.
- Cancel will discard the printed file and delete its entry. Ok places the
- file in the queue.
-
- Note: If you wish to have, say 5 copies of an Impression page, then tell
- Impression to print a single copy and then tell the Spooler that you
- want 5 copies. This speeds up the process and saves disc space.
-
- The Queue Window
- ----------------
- The queue window is accessed by selecting Queue.. from the iconbar menu and
- contains information about which file is printing, which are waiting, how
- many copies are required and who printed them.
- The Job name is the name of the job as entered into the initial 'file has
- been printed' box.
- Copies is a indication of how far through the job the printing is. The
- format is pp/tt, where pp is the total number of copies printed so far, and
- tt is the total number of copies required (pp is not the number of the copy
- currently printing). This should be read as pp copies out of tt have been
- printed.
- By whom just tells you the name of the user who printed the file (Area$Name
- when the file was printed).
-
- By selecting an item on the queue with SELECT, and pressing MENU, options
- appear to show the control which may be exerted over the file.
- Remove will remove the item from the queue, asking you first if you are
- sure.
- Priority will send the item to the front of the queue for printing as soon
- as the current copy of the current job is completed.
- Copies allows you to change the maximum number of copies to be printed. If
- you enter a number which is too low or too high then the copies will not
- change.
-
- The queue window will be brought to the front of the stack whenever its
- entries change, so if you don't want this to happen then close it.
-
- The Printer Info Window
- -----------------------
- This show information on the current printer quality and connection. The
- quality cannot be changed from this box, but can be altered by reloading the
- !Printers application and changing the settings. If this is done then the
- window must be reopened to update the contents.
- By clicking on the menu icon to the right of the connection, the Parallel
- and Serial printer ports may be selected as the printer destination.
- The serial output I cannot test, but I assume that if you have sent up the
- !Printers application correctly then it set up all the baud/xon/stop
- bits/parity options.
-
- Note: Opening this window will force the printer to empty its buffer, so if
- you open it whilst printing, then it is likely that the computer will
- lock up until the printer finishes printing.
-
-
- Pause Next
- ----------
- This option on the iconbar menu will pause the printer after the next copy
- has finished printing. This is useful if you have to shut down but don't want
- to start a document from the start, so just waits until the current copy is
- finished, then pause, after which you can quit the application.
-
-
- Abort ->
- --------
- There are three abort options :
- Current copy - Abort current copy, form feed, and pause. This is useful
- if the paper jams and you need another copy. This just
- pretends that the last copy had never printed, and will
- try to print it again when unpaused.
- Current job - Abort current job, form feed and start next. This is
- useful if the job you have printed contains 18 spelling
- mistakes and you don't want 5 copies printed for no
- apparent reason. This forgets all copies which still have
- to be printed and moves on to the next job.
- All - Abort all copies and form feed. This is useful if you have
- printed out a load of rubbish by accident and don't want
- to go through removing each individually.
-
-
- Manual Pause
- ------------
- Clicking on the !Spooler icon will pause or unpause the printing, depending
- on the current state. Remember that if a 16k or more buffer is configured,
- then the printer may continue printing until this is empty and so this is not
- a instant pause.
-
-
- Quitting !Spooler
- -----------------
- When quitting, a window may appear to tell you that there are jobs still
- printing and that they will be left unfinished.
- Cancel will stop the quit and continue as if nothing happened.
- Quit will quit immediately, abandoning all then unfinished copies.
- Pause after next will pause the printing as soon as a copy is completed at
- which time the application may be quit safely.
-
- If the application is quit and there are still items in the queue, then
- they will remain in the queue and still be there when the application is
- restarted.
-
- If, however, the application quits and there is an job still being printed,
- say if the computer crashes, then, when restarted, !Spooler will give you an
- indication of what happened.
- It is possible to :
- Abandon the copy - That copy is not printed again, ie it is given up on.
- Delay printin - That copy will be printed again, but not yet. !Spooler
- will be paused.
- Restart copy - This will restart the copy immediately.
-
- All options will restart copys from the beginning.
- It is suggested that if the computer crashes whilst a job is being printed,
- that the printer is turned off for a few seconds and then turned on, to clear
- its internal buffer (bit images use repeat sequences which may be in an
- unfinished state)
-
-
- The Info Window
- ---------------
- This is the only other window not covered and it simply gives information
- on the current version number of the application and who wrote it.
-
-
- !Help Responsiveness
- --------------------
- !Spooler will respond to !Help and return information on many of its
- options including the menus. Use it to find out about the options in
- practice.
-
-
- RISC OS Compatability
- ---------------------
- Currently this application will only work reliably with RISC OS 3.1 as this
- is where it was written. As the output from Pre-RO3 printer drivers was of a
- lower quality, and as it would be better if all users upgraded, I have not
- included compatability with RO2.
- Any one wishing to take on the task can get support from me in any way I
- can help. Knowing the circuitous nature of my code they are likely to need
- help! However, the only things that really need changing are, I think, the
- !Help menu information needs removing, there need be no selectiveness for
- messages, and most importantly, there is no such thing as
- Devices#Bufferx:$.Parallel.
-
-
- File Storage
- ------------
- Don't try this on a floppy based machine. I can't guarentee anything
- working. I can say that it is likely to be just a lot more hard work.
- Files are stored in <WimpScrap$Dir>.Spooler as Spoolerx, where x is the
- number of the file, as stored internally.
- <WimpScrap$Dir>.Spooler.Spooler is a text file which contains all the queue
- information.
- <WimpScrap$Dir>.Spooler.SpoolerP is a text file giving the internal number
- of the file which is currently printing, so that after a crash, the file can
- be found ready to be reprinted.
-
- The <WimpScrap$Dir>.Spooler.Spooler text file has a format as follows.
- One entry of the queue per line. Each entry consists of a line of form :
- ff.nnnnnnnn.cp/tc.uuuuuuuu
- ff = internal file number
- nnnnnnnn = job name
- cp = copies printed
- tc = total copies to be printed
- uuuuuuuu = user who printed the file
-
- Very important note: Do NOT delete any Spoolerx files as this may cause
- !Spooler to become confused. If you wish to manually
- alter the Spooler file, do so whilst the application is
- not loaded to avoid confusion and insanity.
- Another note: Files are not kept open over Wimp_Poll's as should really be
- the standard way of working. This means that you can safely
- type *Close at the command prompt and not get silly messages
- such as Illegal Handle or File Not Found.
-
-
-
- Copyright
- ---------
- This software is © Justin Fletcher. The written permission of the author is
- required if any part of this software is to be sold other than at cost by a
- recognised shareware library. Bulletin board operators and shareware
- libraries are advised to contact me to ensure that the latest version is
- being distributed.
-
-
- Contact
- -------
- Any comments, queries, donations or bug reports can be sent to Justin
- Fletcher at :
-
- E-Mail : Gerph@essex.ac.uk
- URL : http://users.essex.ac.uk/users/gerph
- IRC : On #Acorn as Gerph
- Finger : finger jrflet@postman.essex.ac.uk
- Tel : (01842) 813979
-
- Snail Mail :
- Justin Fletcher
- “Galadriel”
- 17b Cromwell Road,
- Weeting,
- Brandon,
- Suffolk.
- IP27 0QT
-
-
- History
- =======
- v1.00 : Base application written
- v2.00 : Rewrote using WimpLib and Messages
- v2.40 : 08 Mar 1994
- Started writing history notes
- v2.41 : 05 Apr 1995
- Added snazzy decrementing sized icon for iconbar!
- Printed... option
-