UserDict.ps
Doug Wyatt, May 29, 1987 6:29:06 pm PDT
userdict { exch =print (: ) print dup type = ( ) print == } forall
#copies: integertype
1
$idleTimeDict: dicttype
15 -dict-
$printerdict: dicttype
20 -dict-
execdict: dicttype
6 -dict-
serverdict: dicttype
50 -dict-
cleardictstack: packedarraytype
{ countdictstack 2 sub { end } repeat }
prompt: packedarraytype
{ (PS) print execdepth { (>) print } repeat flush }
quit: packedarraytype
{ -dict- /quitflag true put interrupt }
pstack: packedarraytype
{ count dup 1 add copy { == } repeat pop }
ReadIdleFonts: packedarraytype
{
$idleTimeDict begin
idlefonts counttomark /idleI exch def
idleI 0 gt idleI 5 mod 0 eq and {
/idleArry idleI array def
{
idleI 0 le { exit } if
bmpI ascii94 boundsCheck ascii94 0 eeinfo getinterval put
bmpI eeinfo 5 mul put
bmpI eeinfo 10 div put
bmpI eeinfo 10 div put
bmpI ROMnames boundsCheck ROMnames eeinfo get put
} loop
} if
cleartomark
end
statusdict /setidlefonts { setidlefonts ReadIdleFonts } put
}
UseIdleTime: packedarraytype
{
$idleTimeDict begin
/stopPred exch def
/idleI 999 def
/idleStrI 0 def
/idleStr 0 string def
gsave
{
stopPred { exit } if
idleStrI idleStr length ge
{
idleI idleArry length ge { /idleI 0 def } if
idleI idleArry length lt {
0 idlA FontDirectory exch known {
grestore gsave
FontDirectory 0 idlA get setfont
1 idlA 2 idlA scale 3 idlA rotate
/idleStr 4 idlA def
/idleStrI 0 def
} if
} if
/idleI idleI 5 add def }
{
idleStr idleStrI 1 getinterval stringwidth pop pop
/idleStrI idleStrI 1 add def
}
ifelse
} loop
grestore
end
}
start: packedarraytype
{
disableinterrupt
execdict /execdepth 0 put
ReadIdleFonts
serverdict begin
/saveswitch switchsetting def
setstreams initprinter dostartpage {
userdict save /svlv exch put
printerstatus -1 ne {
statusdict /jobstate (printing test page) put
1 setblink
statusdict /printererror /stop load put
setrealdevice
{
/wtimeout usertime 180000 add def
userdict begin startpage end
{ warmedup usertime wtimeout gt or } UseIdleTime
usertime wtimeout le { showpage printerclose } if
} stopped pop
disableinterrupt
} if
clear cleardictstack svlv restore
} if
cleardictstack
$error /initializing false put
{
-dict- /server get exec
-dict- begin setstreams setnulldevice /execjob load end
exec
} loop
}
executive: packedarraytype
{ -dict- begin clearinterrupt disableinterrupt /execdepth execdepth 1 add def (\nPostScript(tm) Version ) print version print (\nCopyright (c) 1985 Adobe Systems Incorporated.\n) print { /quitflag false def -dict- /newerror false put /prompt load stopped { handleerror (Error during prompt execution\n) print exit } if { mark idleproc clearinterrupt /stmtfile (%statementedit) (r) file def disableinterrupt } stopped { disableinterrupt cleartomark -dict- /newerror get { -dict- /errorname get /undefinedfilename ne { handleerror } if -dict- /newerror false put exit } if } { pop stmtfile end { clearinterrupt cvx exec disableinterrupt } stopped -dict- begin { disableinterrupt handleerror stmtfile closefile } if } ifelse checkquit } loop /quitflag false def /execdepth execdepth 1 sub def end -dict- /doclose false put interrupt }
note: packedarraytype
{ -dict- /printerstatus get exec 126 and 1 add dup -dict- exch known not { pop 9 } if -dict- exch get exec }
b5: packedarraytype
{ 258 2928 11 12 { 82 512 { -dict- begin /jobstate (printing) def 0 setblink margins exch 4 -1 roll add 3 1 roll add 16 div round 2 mul cvi manualfeed { manualfeedtimeout } { 0 } ifelse #copies frametoprinter /jobstate (busy) def 1 setblink end } exec } { -dict- begin /proc exch def /yoffset exch def /xoffset exch def /height exch def /width exch def 300 72 div 0 0 -300 72 div xoffset neg height yoffset add mtx astore width height mul framelimit gt { /height framelimit width idiv def } if width height /proc load framedevice 60 45 { dup mul exch dup mul add 1.0 exch sub } setscreen { } settransfer initgraphics erasepage end } exec }
letter: packedarraytype
{ 300 3236 75 32 { 102 176 { -dict- begin /jobstate (printing) def 0 setblink margins exch 4 -1 roll add 3 1 roll add 16 div round 2 mul cvi manualfeed { manualfeedtimeout } { 0 } ifelse #copies frametoprinter /jobstate (busy) def 1 setblink end } exec } { -dict- begin /proc exch def /yoffset exch def /xoffset exch def /height exch def /width exch def 300 72 div 0 0 -300 72 div xoffset neg height yoffset add mtx astore width height mul framelimit gt { /height framelimit width idiv def } if width height /proc load framedevice 60 45 { dup mul exch dup mul add 1.0 exch sub } setscreen { } settransfer initgraphics erasepage end } exec }
a4small: packedarraytype
{ 280 3255 120 126 { 196 304 { -dict- begin /jobstate (printing) def 0 setblink margins exch 4 -1 roll add 3 1 roll add 16 div round 2 mul cvi manualfeed { manualfeedtimeout } { 0 } ifelse #copies frametoprinter /jobstate (busy) def 1 setblink end } exec } { -dict- begin /proc exch def /yoffset exch def /xoffset exch def /height exch def /width exch def 300 72 div 0 0 -300 72 div xoffset neg height yoffset add mtx astore width height mul framelimit gt { /height framelimit width idiv def } if width height /proc load framedevice 60 45 { dup mul exch dup mul add 1.0 exch sub } setscreen { } settransfer initgraphics erasepage end } exec }
lettersmall: packedarraytype
{ 288 3048 123 126 { 196 224 { -dict- begin /jobstate (printing) def 0 setblink margins exch 4 -1 roll add 3 1 roll add 16 div round 2 mul cvi manualfeed { manualfeedtimeout } { 0 } ifelse #copies frametoprinter /jobstate (busy) def 1 setblink end } exec } { -dict- begin /proc exch def /yoffset exch def /xoffset exch def /height exch def /width exch def 300 72 div 0 0 -300 72 div xoffset neg height yoffset add mtx astore width height mul framelimit gt { /height framelimit width idiv def } if width height /proc load framedevice 60 45 { dup mul exch dup mul add 1.0 exch sub } setscreen { } settransfer initgraphics erasepage end } exec }
legal: packedarraytype
{ 252 3852 267 174 { 244 368 { -dict- begin /jobstate (printing) def 0 setblink margins exch 4 -1 roll add 3 1 roll add 16 div round 2 mul cvi manualfeed { manualfeedtimeout } { 0 } ifelse #copies frametoprinter /jobstate (busy) def 1 setblink end } exec } { -dict- begin /proc exch def /yoffset exch def /xoffset exch def /height exch def /width exch def 300 72 div 0 0 -300 72 div xoffset neg height yoffset add mtx astore width height mul framelimit gt { /height framelimit width idiv def } if width height /proc load framedevice 60 45 { dup mul exch dup mul add 1.0 exch sub } setscreen { } settransfer initgraphics erasepage end } exec }
a4: packedarraytype
{ 292 3325 72 91 { 161 256 { -dict- begin /jobstate (printing) def 0 setblink margins exch 4 -1 roll add 3 1 roll add 16 div round 2 mul cvi manualfeed { manualfeedtimeout } { 0 } ifelse #copies frametoprinter /jobstate (busy) def 1 setblink end } exec } { -dict- begin /proc exch def /yoffset exch def /xoffset exch def /height exch def /width exch def 300 72 div 0 0 -300 72 div xoffset neg height yoffset add mtx astore width height mul framelimit gt { /height framelimit width idiv def } if width height /proc load framedevice 60 45 { dup mul exch dup mul add 1.0 exch sub } setscreen { } settransfer initgraphics erasepage end } exec }