🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.postscript
Article #8744

Re: Question

#8744
From: Woodrow Baker
Date: Sun, 07 Jan 1990 14:20
84 lines
4178 bytes
In article <27293@sequent.UUCP>, calvin@sequent.UUCP (Calvin Goodrich) writes:
> 
> What I need to know is if there is any way to get postscript to print out error
> messages. It'd be nice to know what went wrong instead of having a printer that
> just sits there. (btw: I'm using an Apple Laserwriter on a Unix system)
> 
Certainly.  There are several ways.  First, get a copy of the erhandlr.  It is
in the green book, as well as available from the ps-fileserver out at Adobe.
Secondly, if you are using a paralell connection, all messages back to the
host go outthe 9 pin port at 9600 baud.
Thirdly, you can use a serrial communications package that works bi-directionaly
PS issues it's error messages out to whatever it has for stdout.  Typicaly it
is the serial port that you are connected to.  If you can send and recieve both
over your serial port link, you already have access to the messages.
I personaly use the centronics paralell port exclusively, and just download
the erhandlr code to the printer.  It spits out a page that automaticaly dumps
the stack whenever it gets an error

I'll try to stick it here:

%!
% lib/ehandler.ps -- Downloaded Error Break-page handler
% Copyright (c) 1984 Adobe Systems, Inc. All Rights Reserved.
% assumes serverloop password is the default one
/$brkpage where
{pop(Error Handler in place - not loaded again\n)print flush stop}
{serverdict begin statusdict begin 0 checkpassword
 {(Error Handler downloaded.\n)print flush 0 exitserver}
 {(Bad Password on loading error handler!!!\n)print flush}ifelse
 end%statusdict
}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 exec}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
/integertype{cvsprint}readonly def
/realtype{cvsprint}readonly def
/booleantype{cvsprint}readonly def
/operatortype{(--)tprint =string cvs tprint(--)tprint}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
/courier/Courier findfont 10 scalefont def
end %$brkpage
errordict/handleerror
 {systemdict begin $error begin $brkpage begin newerror
   {/newerror false store grestoreall initgraphics courier setfont
    lmargin 720 moveto(ERROR: )prnt errorname prnt
    nl(OFFENDING COMMAND: )prnt/command load prnt
    nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat
    systemdict/showpage get exec(%%[ Error: )print
    errorname =print(; OffendingCommand: )print/command 
    load =print( ]%%)= flush
   }if end end end}dup 0 systemdict put dup 4 $brkpage put bind readonly put

Try that.  It is one of the poorest examples of Postscript coding STYLE
that I know of, but the program works, and is relativly fast to download.
e

Cheers
Woody
Technical Details
Message-ID: <17589@rpp386.cactus.org>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!cs.utexas.edu!natinst!rpp386!woody
References: <27293@sequent.UUCP>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!cs.utexas.edu!natinst!rpp386!woody
From: woody@rpp386.cactus.org (Woodrow Baker)
Newsgroups: comp.lang.postscript
Subject: Re: Question
Summary: error messages.
Message-ID: <17589@rpp386.cactus.org>
Date: 7 Jan 90 14:20:51 GMT
References: <27293@sequent.UUCP>
Organization: River Parishes Programming, Plano, TX
Lines: 84