Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbatt!ucbvax!watcgl.waterloo.edu!sjrapaport From: sjrapaport@watcgl.waterloo.edu.UUCP Newsgroups: mod.computers.laser-printers Subject: Submission for mod-computers-laser-printers Message-ID: <8702121759.AA16570@watcgl.uucp> Date: Thu, 12-Feb-87 12:59:49 EST Article-I.D.: watcgl.8702121759.AA16570 Posted: Thu Feb 12 12:59:49 1987 Date-Received: Fri, 20-Feb-87 06:45:12 EST Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 111 Approved: laser-lovers@washington.arpa Path: watcgl!sjrapaport From: sjrapaport@watcgl.UUCP (Steve Rapaport) Newsgroups: mod.computers.laser-printers Subject: Re: Debugging PostScripty Message-ID: <586@watcgl.UUCP> Date: 12 Feb 87 17:59:48 GMT References: <8701271443.AA10063@june.cs.washington.edu> Reply-To: sjrapaport@watcgl.UUCP (Steve Rapaport) Organization: U. of Waterloo, Ontario Lines: 101 Andrew Shore posted a downloadble error handler for PostScript in April 1986. I've got a copy and I'm sending it to the moderator for distribution to anyone who's interested. I'm also sending Bernie a copy right now, so he won't have to wait. ------------------------------------------------------------------- From: adobe!shore@su-glacier.arpa (Andrew Shore) Date: 29 Apr 1986 2120-PDT (Tuesday) Subject: revised PostScript downloadable error handler Here is our latest version of the downloadable PostScript error handler (ehandler.ps). When sent to any PostScript printer, it will download itself outside the printer's "server loop" (assuming the server loop password is correct) and redefine the action taken on a PostScript error. This handler prints a sometimes-helpful summary of the error on the thus-far-completed page and then executes the previous handleerror code as well (which in most PostScript printers will echo the error name and offending command over the communications channel). This version works on all existing Adobe PostScript implementations. It really helps when debugging raw PostScript code and new PostScript-generating applications. Enjoy, --Andy %! % lib/ehandler.ps -- Downloaded Error Break-page handler % Copyright (c) 1984, 1985, 1986 Adobe Systems Incorporated. % All Rights Reserved. 0000 % serverloop password /$brkpage where {pop pop(Error Handler in place - not loaded again\n)print flush stop} {dup serverdict begin statusdict begin checkpassword {(Error Handler downloaded.\n)print flush exitserver} {pop(Bad Password on loading error handler!!!\n)print flush stop}ifelse }ifelse /$brkpage 64 dict def $brkpage 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 -10 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 end %$brkpage errordict/handleerror {systemdict begin $error begin $brkpage begin newerror {/newerror false store vmstatus pop pop 0 ne{grestoreall}if initgraphics courier setfont lmargin 720 moveto(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt $error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat}if systemdict/showpage get exec /newerror true store/OLDhandleerror load end end end exec}{end end end} ifelse} dup 0 systemdict put dup 4 $brkpage put bind readonly put ------------------------------ End of Info-Postscript for Laser Lovers Digest **********************************************