summaryrefslogtreecommitdiff
path: root/dviware/psprint/vms/lw_header.ps
diff options
context:
space:
mode:
Diffstat (limited to 'dviware/psprint/vms/lw_header.ps')
-rw-r--r--dviware/psprint/vms/lw_header.ps138
1 files changed, 138 insertions, 0 deletions
diff --git a/dviware/psprint/vms/lw_header.ps b/dviware/psprint/vms/lw_header.ps
new file mode 100644
index 0000000000..66da648430
--- /dev/null
+++ b/dviware/psprint/vms/lw_header.ps
@@ -0,0 +1,138 @@
+% LW_PRINT.COM uses this file to build an appropriate header file for each job.
+% It defines @bannerpage and redefines the PostScript error handler.
+
+statusdict begin /waittimeout 300 def end % wait 5 minutes
+
+/@oldpagecount statusdict begin pagecount end def
+
+/@bannerpage % called at end of job or upon error
+{ initgraphics
+ 36 0 translate % move origin to the right
+ /vpos 800 def % initial vertical pos
+ 0 vpos moveto % start near top left corner
+ /newline
+ { /vpos vpos 20 sub def % decrease vertical pos by 20pt
+ 0 vpos moveto % move to start of new line
+ } def
+ /Courier findfont % Courier typewriter font
+ 12 scalefont setfont % at 12pt
+ (*********************** PSPRINT 3.1 **********************) show newline
+ @USER show newline
+ @ACCOUNT show newline
+ @JOB show newline
+ @NODE show newline
+ @FILE show newline
+ @FORMAT show newline
+ @QUEUED show newline
+ (PAGES : ) show
+ statusdict begin
+ pagecount % current pagecount
+ end
+ @oldpagecount % pagecount saved at start of job
+ sub ( ) cvs
+ show newline % show pages printed
+ @NOTE show newline
+% @status % uncomment to get status info
+ /#copies 1 def % only 1 copy of banner page
+ systemdict /showpage get exec
+} def
+
+% Uncomment the following (and above call) to get status info on banner page:
+%
+% /@oldusertime usertime def % save current usertime
+% /@status % show cache and VM status values
+% { newline
+% (CACHE STATUS) show newline
+% cachestatus % bsize bmax msize mmax csize cmax blimit
+% (blimit = ) show ( ) cvs show newline
+% (cmax = ) show ( ) cvs show newline
+% (csize = ) show ( ) cvs show newline
+% (mmax = ) show ( ) cvs show newline
+% (msize = ) show ( ) cvs show newline
+% (bmax = ) show ( ) cvs show newline
+% (bsize = ) show ( ) cvs show newline
+% newline
+% (VM STATUS) show newline
+% vmstatus % savelevel vmused vmmax
+% (vm max = ) show ( ) cvs show newline
+% (vm used = ) show ( ) cvs show newline
+% (save level = ) show ( ) cvs show newline
+% newline
+% (JOB TIME (secs) = ) show usertime @oldusertime sub 1000 div
+% ( ) cvs show
+% } def
+
+% Redefine the error handler in errordict to show a suitable error message.
+
+/@errpage 64 dict def
+@errpage begin
+/prnt
+{ dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def
+ currentpoint/toy exch def/tox exch def 1 setgray newpath
+ tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto
+ closepath fill tox toy moveto 0 setgray show
+} bind def
+/nl {currentpoint exch pop lmargin exch moveto 0 -11 rmoveto} def
+/== {/cp 0 def typeprint nl} def
+/typeprint
+{ dup type dup currentdict exch known
+ {exec}{unknowntype}ifelse
+} readonly def
+/lmargin 72 def
+/rmargin 72 def
+/tprint
+{ dup length cp add rmargin gt{nl/cp 0 def}if
+ dup length cp add/cp exch def prnt
+} readonly def
+/cvsprint {=string cvs tprint( )tprint} readonly def
+/unknowntype {exch pop cvlit(??)tprint cvsprint} readonly def
+/integertype {cvsprint} readonly def
+/realtype {cvsprint} readonly def
+/booleantype {cvsprint} readonly def
+/operatortype {(//)tprint cvsprint} readonly def
+/marktype {pop(-mark- )tprint} readonly def
+/dicttype {pop(-dictionary- )tprint} readonly def
+/nulltype {pop(-null- )tprint} readonly def
+/filetype {pop(-filestream- )tprint} readonly def
+/savetype {pop(-savelevel- )tprint} readonly def
+/fonttype {pop(-fontid- )tprint} readonly def
+/nametype {dup xcheck not{(/)tprint}if cvsprint} readonly def
+/stringtype
+{ dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse
+} readonly def
+/arraytype
+{ dup rcheck{dup xcheck
+ {({)tprint{typeprint}forall(})tprint}
+ {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint}ifelse
+} readonly def
+/packedarraytype
+{ dup rcheck{dup xcheck
+ {({)tprint{typeprint}forall(})tprint}
+ {([)tprint{typeprint}forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse
+} readonly def
+/courier /Courier findfont 10 scalefont def
+/@oldhandleerror errordict /handleerror get def % save current error handler
+end
+% of @errpage
+
+errordict /handleerror % redefine error handler
+{ systemdict begin $error begin @errpage begin
+ newerror
+ { /newerror false store
+ vmstatus pop pop 0 ne { grestoreall } if
+ initgraphics courier setfont
+ lmargin 500 moveto
+ (POSTSCRIPT ERROR: ) prnt errorname prnt nl
+ (OFFENDING COMMAND: ) prnt /command load prnt nl
+ $error /ostack known
+ { (OPERAND STACK:) prnt nl
+ $error /ostack get aload length {==} repeat
+ } if
+ /#copies 1 store % print only one error page
+ systemdict /showpage get exec
+ userdict begin @bannerpage end % print banner page
+ /newerror true store
+ /@oldhandleerror load end end end exec }
+ { end end end }
+ ifelse
+} dup 0 systemdict put dup 4 @errpage put bind readonly put