[comp.lang.postscript] Halftone patterns on an Autologic typesetter

ccmarie@uqvax.cc.uq.oz.au (Marie Bultreys) (10/11/90)

I am having problems trying to print halftone patterns (the program is
reproduced below) on an Autologic APS-PS typesetter, at 1016dpi, with default
screen frequency set to 100, and default angle to 45.

The file prints okay on a LaserWriter II NTX (defaults 60 and 45), but just
hangs on the typesetter.  By deleting sections of the program I found that
it will print up to the point:
	gsave
	75 45 {1} setscreen
	5 coarse_fountain
	grestore
It just won't do another coarse_fountain after this.  If I change the 75 to
one of the other numbers (say 100), that works fine too.  Is it running out
of memory, or is there an infinite loop somewhere?

I would appreciate any help.			Marie Bultreys
						Printice Computer Centre
						The University of Queensland
ccmarie@uqvax.cc.uq.edu.au			Brisbane   Australia    4072

===================================== cut here =================================

%!PS by Danny Thomas

/start-time usertime def
/Helvetica findfont 8 scalefont setfont
/black  0.0  def
/white  1.0  def
/1-     {1 sub           }  bind def
/dup21  {1 index  1 index}  bind def
/drop21 {pop pop         }  bind def
/xd     {exch def        }  bind def
/str  {20 string}  def
/wid    20  def    
/gap     3  def    
/total  10  def    
/grid  wid gap add  def
/square  
{
    /s exch def
    newpath
    moveto
    s     0 rlineto  0 s     rlineto
    s neg 0 rlineto  0 s neg rlineto
    closepath
} bind def
/show-gray-label
{
    gsave
    dup21 moveto
    -25 8 rmoveto
    currentgray 100 mul cvi 100 div str cvs
    black setgray show
    grestore
} bind def
/coarse_fountain    
{
    /col xd
    col grid mul 150 add 80
    0 1 total
    {
        total div setgray dup21 wid square
        gsave fill grestore
        gsave black setgray 0.2 setlinewidth stroke grestore
        col 0 eq {show-gray-label} if
        grid add
    } for
    gsave
    translate  0 0  moveto  90 rotate  0 -13 rmoveto
    black setgray
    currentscreen drop21 100 mul cvi 100 div str cvs show
    grestore
} bind def

gsave
currentscreen 3 -1 roll pop 60 3 1 roll setscreen
0 coarse_fountain
grestore
gsave
currentscreen 3 -1 roll pop 75 3 1 roll setscreen
1 coarse_fountain
grestore
gsave
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
2 coarse_fountain
grestore
gsave
currentscreen 3 -1 roll pop 150 3 1 roll setscreen
3 coarse_fountain
grestore
gsave
currentscreen 3 -1 roll pop 157 3 1 roll setscreen
4 coarse_fountain
grestore
gsave
75 45 {1} setscreen
5 coarse_fountain
grestore
gsave
100 45 {1} setscreen
6 coarse_fountain
grestore
gsave
150 45 {1} setscreen
7 coarse_fountain
grestore
gsave
157 45 {1} setscreen
8 coarse_fountain
grestore
gsave
75 45 {1 eq exch 1 eq and {1} {0} ifelse} setscreen
9 coarse_fountain
grestore
gsave
100 45 {1 eq exch 1 eq and {1} {0} ifelse} setscreen
10 coarse_fountain
grestore
gsave
150 45 {1 eq exch 1 eq and {1} {0} ifelse} setscreen
11 coarse_fountain
grestore
gsave
157 45 {1 eq exch 1 eq and {1} {0} ifelse} setscreen
12 coarse_fountain
grestore

usertime start-time sub 1000 div
30 30 moveto
/Helvetica findfont  9 scalefont  setfont
(Time: ) show
20 string cvs show
/statusdict where
{
    statusdict /product known
    {
        280 30 moveto
        statusdict /product get show
    } if
} if
showpage