(c)  Copyright 1989 Commodore-Amiga, Inc.   All rights reserved.
The information contained herein is subject to change without notice, and 
is provided "as is" without warranty of any kind, either expressed or implied.  
The entire risk as to the use of this information is assumed by the user.



                   Troubleshooting PostScript Printers

                           by Bryce Nesbitt



Using a PostScript printer with the Amiga for the first time is a straight
forward affair but there are some difficulties that you may run into.
Some laser printers use a default handshake which won't work with the Amiga.
Several companies have reported customer support headaches caused by mismatched 
handshakes.  This article discusses how to set handshaking and baud rate
configurations on PostScript printers for the best results with the Amiga.  
If you have a PostScript application, you may want to reproduce the information
given here in your user's manual.  The PostScript examples in this article
have been tested on laser printers made by Apple, NEC and A.S.T.

Interface

We recommend that you use the serial (RS-232) interface with your PostScript 
printer.   PostScript is bi-directional - that is, the printer can send error 
messages and other information back to the host.  While the Amiga's parallel 
port is also bi-directional, the parallel port on a typical laser printer will
not be.  So use the serial port if possible.  The required cable is simple.  
Wire the two serial interface connectors as follows:


               Lauren, put artwork here.




Preferences

Some problems occur because the user has set Preferences incorrectly.  The 
Preferences serial port parameters should be set to 8 data bits, 1 stop bit, 
Xon/Xoff handshake, no parity and either 1200 or 9600 baud depending on the 
setup of your printer.  On most printers, the 1200 baud setting is not 
adjustable while the 9600 baud setting is fully programmable.  Set the 
printer and Amiga to 1200 baud if you are having communication difficulties.
There is less to go wrong this way.


Handshake

Another common problem is the inability to print complex documents.  Often,
when a simple document is printed it works fine but when a complex document 
is printed, the printer produces no output.  In most cases, this is due to a 
handshaking problem and can be corrected by matching the handshake between the
Amiga and the printer.

To find out what kind of handshaking your printer uses run the PostScript
program shown below.  Use a text editor like emacs, ed or notepad to type 
in the program:

-------------------------  Lauren this is code ----------------------------

/Helvetica findfont 20 scalefont setfont

40 200 moveto

statusdict begin
25 sccbatch
(The Options number is ) show
10 string cvs show
(.  The baud rate is ) show
10 string cvs show
(.) show
end
showpage

------------------------- End of code ---- ----------------------------

Save the file as "shake" and exit the text editor.  From the CLI, copy the 
shake file to the serial port with a command such as "copy shake ser:".  
This will send the PostScript program to the printer where it will be run.
The printer should print a sheet of paper.  If nothing seems to happen, cycle 
the power on the printer, wait a moment, and try again.  The output should
look like this:


The Options number is 0.  The baud rate is 9600.
                    ^
                   [Lauren, use the artwork here...] 

If your options number is in the range of 0-3, the handshake is properly set
to Xon/Xoff.  If your options number is in the range of 4-7 there is a problem.
The printer is set to DTR handshake (DTR goes low when the printer's buffer is 
full).  This won't work well with the Amiga.
  
The options number is interpreted as follows:

  0 or 4    Ignore parity 
  1 or 5    Check for Odd parity
  2 or 6    Check for Even parity
  3 or 7    No parity

For the Amiga, options should be set to 0.

Some printers have switches or front panel controls for the options and baud
rate.  If you have one of these, look in your manual for the correct settings.
Other printers require a PostScript program like the one given below.  Replace
BAUD and OPTIONS with the numbers you wish to set.  To start with, use 0 for
options and 1200 for the baud rate.

----------------------Lauren, code begins here -------------------
serverdict begin 0000 exitserver
statusdict begin
25 BAUD OPTIONS setsccbatch
end
----------------------Lauren, code ends here ----------------------

Type the program in using your text editor and run it by copying it to the
ser: device as described above.  This will change the internal baud and options
settings.  The settings will stay in effect even if you turn off the power.
You should not change settings more often than necessary, though.  The 
EEPROM device that stores the settings wears out after about 10,000 uses.

After running the program, either send a CTRL-D to the printer or wait 30 
seconds for the changes to take effect.

More Speed

The 9600 baud default of most laser printers is not very fast.  Printers with 
PostScript 38.0 and above can be set to higher baud rates.  See your printer 
manual for the exact list of baud rates supported.  Typical legal values are: 
1200, 9600, 10473, 11520, 12800, 14400, 16457, 19200, 23040, 38400 and 56700.

19,200 baud is the recommended speed for use with the Amiga.  This speed can 
be set with the same PostScript program that sets the Options number.

PostScript Programming

Copying files to ser: is not the best way to run your PostScript programs.
If you want to experiment with PostScript, it is much better to use 
PostScript's interactive mode.  Any terminal emulator or modem program should 
work.  Set the baud rate, parity and stop bit settings to match those of the
printer, then follow these steps.

First, type one CTRL-D to the printer (hold "CTRL" and press "D").  This will 
end any current job the printer is working on.  If the printer is an Apple 
LaserWriter, the flashing activity light should stop.

Next type the word "executive" followed by a return.  If all works well, you 
will be in PostScript's interactive mode.  You should see a copyright message.
To read out the current settings, type in the following.   What you type will 
be shown in courier-boldface, what postscript types back is in courier.

------------------------------Lauren, code starts here-----------------
^D
executive
PostScript(r) Version 47.0
Copyright (c) 1984, '85, '86, '87 Adobe Systems Inc.
Copyright (c) 1981 Linotype     All Rights Reserved.
PS>
PS>statusdict begin
PS>
PS>25 sccbatch
PS>=
0					;<- mode byte
PS>=
9600	 				;<- baud rate
PS>
PS>end
PS>quit
^D
---------------------Lauren, code ends here -------------------------

This sequence prints out the options and baud rate just like the
previous program.  Don't forget the CTRL-D at the end.

Here is a brief description of the code.  The "statusdict begin" tells
PostScript you wish to access functions from the special status dictionary.  
The "25 sccbatch" line first pushes the number 25 on the stack, then executes 
"sccbatch".  The 25 is a parameter to sccbatch indicating you want information
about the 25 pin RS-232 port. The sccbatch operator leaves two numbers on the 
stack.  The topmost will be the serial mode byte, the next will be the baud 
rate.  The "=" command reads the top number from the stack and prints it to 
your terminal.  In this case, the printer was configured for mode 0 and a baud
rate of 9600.

You can multitask your favorite editor with the terminal program.  Prepare the 
PostScript file in the editor.  Then to test your program, send the file to 
the printer with the "send ASCII" option of the terminal program. 

In interactive mode, typing CTRL-T will produce a status report from the 
printer.  CTRL-C will abort any currently executing job.  CTRL-D will end 
the current job.


A Sample Progam

No article about PostScript is complete without a typesetting example. 
Here's mine:

--------------------------Lauren, code begins here------------------------
/showit %stack: (string)
{0 0 moveto show} def
/oshowit %stack: (string)
{true charpath stroke} def

/Helvetica findfont 100 scalefont setfont
150 150 translate

.90 -.10 0 {setgray (Amiga) showit 10 rotate} for

1 setgray (Amiga) showit
0 setgray 0 0 moveto (Amiga!) oshowit

showpage
------------------------Lauren, code ends here-------------------------

[Lauren, insert artwork here]


Remember, to get the best results with PostScript you have to set Preferences 
to the correct values.  You must also make sure the printer uses the right 
kind of handshake and the right baud rate.  We recommend that you connect 
PostScript printers to the Amiga's serial port.  If you need to make a serial 
cable follow the wiring diagram shown above.  By following these steps your 
PostScript print outs will be trouble-free.


References

Adobe Systems, Inc.  PostScript Language Reference Manual.
Addison-Wesley, Reading, Mass., 1985.
Adobe Systems, Inc.  PostScript Language Tutorial and Cookbook.
Addison-Wesley, Reading, Mass., 1985.
