home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1996 March / buyer-0396.iso / mgxfma.z / IMPSI9.FLT / PSIRC / SYSTEM < prev   
Text File  |  1995-08-31  |  17KB  |  378 lines

  1. %**********************************************************************/
  2. %*                                                                    */
  3. %*  Copyright (C) 1993-1995                                           */
  4. %*  by Liberty Systems, Redlands, CA.  All rights reserved.           */
  5. %*                                                                    */
  6. %*  This program is the exclusive property of Liberty Systems and is  */
  7. %*  issued in strict confidence under a prearranged license agreement */
  8. %*  and is not to be disclosed in any manner to persons outside the   */
  9. %*  licensed organization and shall not be reproduced or disseminated */
  10. %*  in whole or part to anyone outside the licensed organization      */
  11. %*  without the prior written approval of Liberty Systems unless      */
  12. %*  otherwise provided for by such license agreement.                 */
  13. %*                                                                    */
  14. %*  This program may be used and copied only in accordance with the   */
  15. %*  terms of said license agreement and with the inclusion of the     */
  16. %*  above copyright notice.  No title to and ownership of the         */
  17. %*  software is hereby transfered.  The information in this software  */
  18. %*  is subject to change without notice and should not be construed   */
  19. %*  as a commitment by Liberty Systems.                               */
  20. %*                                                                    */
  21. %**********************************************************************/
  22.  
  23. false limitaccess
  24. /@bd { bind def } bind def
  25.  
  26. %
  27. %  Initialize the error handling
  28. %
  29.  
  30. /$error <<
  31.    /newerror false
  32.    /recordstacks true
  33.    /binary false
  34. >> def
  35.  
  36. /@err_name 20 string def
  37. /@ostack 10 array def
  38. /@estack 250 array def
  39. /@dstack 20 array def
  40. /@err_file (%stderr) (w) file def
  41.  
  42. /@std_ehandler {
  43.    currentfile resetfile
  44.    false setglobal
  45.    $error begin
  46.    /newerror true def
  47.    /errorname exch def
  48.    /command exch def
  49.    @ostack length count lt {@ostack length}{count}ifelse
  50.      @ostack exch 0 exch getinterval astore /ostack exch def
  51.      ostack aload pop
  52.    @estack execstack /estack exch def
  53.    @dstack dictstack /dstack exch def
  54.    end stop } @bd
  55.  
  56. /errordict <<
  57.    /handleerror {
  58.       signalerror
  59.       @err_file (Error Type:     ) writestring
  60.       @err_file $error /errorname get @err_name cvs writestring
  61.       @err_file (\nCurrent Object: ) writestring
  62.       $error /command get =
  63. %     @err_file (Operand Stack: ) writestring
  64. %     $error /ostack get ==
  65. %     @err_file (Execution Stack: ) writestring
  66. %     $error /estack get ==
  67. %     @err_file (Dictionary Stack: ) writestring
  68. %     $error /dstack get ==
  69.       $error /newerror false put }
  70.    /configurationerror { /configurationerror @std_ehandler }
  71.    /dictfull { /dictfull @std_ehandler }
  72.    /dictstackoverflow { /dictstackoverflow @std_ehandler }
  73.    /dictstackunderflow { /dictstackunderflow @std_ehandler }
  74.    /execstackoverflow { /execstackoverflow @std_ehandler }
  75.    /interrupt { /interrupt @std_ehandler }
  76.    /invalidaccess { /invalidaccess @std_ehandler }
  77.    /invalidcontext { /invalidcontext @std_ehandler }
  78.    /invalidexit { /invalidcontext @std_ehandler }
  79.    /invalidfileaccess { /invalidfileaccess @std_ehandler }
  80.    /invalidfont { /invalidfont @std_ehandler }
  81.    /invalidid { /invalidid @std_ehandler }
  82.    /invalidrestore { /invalidrestore @std_ehandler }
  83.    /ioerror { /ioerror @std_ehandler }
  84.    /limitcheck { /limitcheck @std_ehandler }
  85.    /nocurrentpoint { /nocurrentpoint @std_ehandler }
  86.    /rangecheck { /rangecheck @std_ehandler }
  87.    /stackoverflow { /stackoverflow @std_ehandler }
  88.    /stackunderflow { /stackunderflow @std_ehandler }
  89.    /syntaxerror { /syntaxerror @std_ehandler }
  90.    /timeout { /timeout @std_ehandler }
  91.    /typecheck { /typecheck @std_ehandler }
  92.    /undefined { /undefined @std_ehandler }
  93.    /undefinedfilename { /undefinedfilename @std_ehandler }
  94.    /undefinedresource { /undefinedresource @std_ehandler }
  95.    /undefinedresult { /undefinedresult @std_ehandler }
  96.    /unmatchedmark { /unmatchedmark @std_ehandler }
  97.    /unregistered { /unregistered @std_ehandler }
  98.    /VMerror { /VMerror @std_ehandler }
  99.    /sysmem { /sysmem @std_ehandler } >> def
  100.  
  101. %
  102. %  Initialize encodings
  103. %
  104.  
  105. /StandardEncoding [/.notdef 31{dup}repeat/space/exclam 
  106.    /quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft 
  107.    /parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three
  108.    /four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater
  109.    /question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z
  110.    /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b 
  111.    /c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright 
  112.    /asciitilde/.notdef 33{dup}repeat/exclamdown/cent/sterling/fraction/yen
  113.    /florin/section/currency/quotesingle/quotedblleft/guillemotleft
  114.    /guilsinglleft/guilsinglright/fi/fl/.notdef/endash/dagger/daggerdbl
  115.    /periodcentered/.notdef/paragraph/bullet/quotesinglbase/quotedblbase
  116.    /quotedblright/guillemotright/ellipsis/perthousand/.notdef/questiondown
  117.    /.notdef/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis
  118.    /.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/emdash/.notdef
  119.    15{dup}repeat/AE/.notdef/ordfeminine/.notdef/.notdef/.notdef/.notdef
  120.    /Lslash/Oslash/OE/ordmasculine/.notdef 4{dup}repeat/ae/.notdef/.notdef
  121.    /.notdef/dotlessi/.notdef/.notdef/lslash/oslash/oe/germandbls/.notdef
  122.    /.notdef/.notdef/.notdef] def
  123. /ISOLatin1Encoding [ StandardEncoding 0 128 getinterval aload pop
  124.    83 -1 roll pop /minus 83 1 roll
  125.    /.notdef 15{dup}repeat/dotlessi/grave/acute/circumflex/tilde/macron
  126.    /breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
  127.    /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
  128.    /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen
  129.    /registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu
  130.    /paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright
  131.    /onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex
  132.    /Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis
  133.    /Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex
  134.    /Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis
  135.    /Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring
  136.    /ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute
  137.    /icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde
  138.    /odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute
  139.    /thorn/ydieresis] def
  140. /SymbolEncoding [ StandardEncoding 0 32 getinterval aload pop
  141.    /space/exclam/universal/numbersign/existential/percent/ampersand/suchthat
  142.    /parenleft/parenright/asteriskmath/plus/comma/minus/period/slash/zero/one
  143.    /two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal
  144.    /greater/question/congruent/Alpha/Beta/Chi/Delta/Epsilon/Phi/Gamma/Eta
  145.    /Iota/theta1/Kappa/Lambda/Mu/Nu/Omicron/Pi/Theta/Rho/Sigma/Tau/Upsilon
  146.    /sigma1/Omega/Xi/Psi/Zeta/bracketleft/therefore/bracketright
  147.    /perpendicular/underscore/radicalex/alpha/beta/chi/delta/epsilon/phi/gamma
  148.    /eta/iota/phi1/kappa/lambda/mu/nu/omicron/pi/theta/rho/sigma/tau/upsilon
  149.    /omega1/omega/xi/psi/zeta/braceleft/bar/braceright/similar/.notdef
  150.    33{dup}repeat/Upsilon1/minute/lessequal/fraction/infinity/florin/club
  151.    /diamond/heart/spade/arrowboth/arrowleft/arrowup/arrowright/arrowdown
  152.    /degree/plusminus/second/greaterequal/multiply/proportional/partialdiff
  153.    /bullet/divide/notequal/equivalence/approxequal/ellipsis/arrowvertex
  154.    /arrowhorizex/carriagereturn/aleph/Ifraktur/Rfraktur/weierstrass
  155.    /circlemultiply/circleplus/emptyset/intersection/union/propersuperset
  156.    /reflexsuperset/notsubset/propersubset/reflexsubset/element/notelement
  157.    /angle/gradient/registerserif/copyrightserif/trademarkserif/product
  158.    /radical/dotmath/logicalnot/logicaland/logicalor/arrowdblboth
  159.    /arrowdblleft/arrowdblup/arrowdblright/arrowdbldown/lozenge/angleleft
  160.    /registersans/copyrightsans/trademarksans/summation/parenlefttp
  161.    /parenleftex/parenleftbt/bracketlefttp/bracketleftex/bracketleftbt
  162.    /bracelefttp/braceleftmid/braceleftbt/braceex/.notdef/angleright/integral
  163.    /integraltp/integralex/integralbt/parenrighttp/parenrightex/parenrightbt
  164.    /bracketrighttp/bracketrightex/bracketrightbt/bracerighttp/bracerightmid
  165.    /bracerightbt/.notdef] def
  166.  
  167. %
  168. %  Initialize the resources
  169. %
  170.  
  171. /@defres { dup type InstanceType ne { errordict /typecheck get exec } if
  172.    Instances 3 1 roll dup 4 1 roll put } @bd
  173. /@udefres { Instances exch undef } @bd
  174. /@fndres { Instances exch get } @bd
  175. /@resstt { Instances exch known dup { 0 -1 3 -1 roll } if } @bd
  176. /@resfor { Instances {pop 3 index wild {2 index exec} {pop} ifelse}
  177.       forall pop pop pop } @bd
  178. /@generic { /DefineResource {@defres} /UndefineResource {@udefres}
  179.        /FindResource {@fndres} /ResourceStatus {@resstt}
  180.        /ResourceForAll {@resfor} /ResourceFileName {@resnam}
  181.        /Catagory } @bd
  182. /@fnt_defres { dup /FID 1 put readonly @defres } @bd
  183. /@fnt_fndres { dup Instances exch known {@fndres}
  184.    {dup fontcheck {dup fontload @fndres}
  185.    {/Courier eq {errordict /invalidfont get exec}if /Courier
  186.     @fnt_fndres}ifelse} ifelse } @bd
  187. /@fnt_setup { /DefineResource {@fnt_defres} /UndefineResource {@udefres}
  188.        /FindResource {@fnt_fndres} /ResourceStatus {@resstt}
  189.        /ResourceForAll {@resfor} /ResourceFileName {@resnam}
  190.        /Catagory } @bd
  191.  
  192. /FontDirectory <<>> def
  193. true setglobal
  194.  
  195. /@catagory <<
  196.    /Font << @fnt_setup /Font /InstanceType /dicttype /Instances FontDirectory >>
  197.    /Encoding << @generic /Encoding /InstanceType /arraytype /Instances
  198.       << /StandardEncoding StandardEncoding /ISOLatin1Encoding
  199.      ISOLatin1Encoding >> >>
  200.    /Form << @generic /Form /InstanceType /dicttype /Instances << >> >>
  201.    /Pattern << @generic /Pattern /InstanceType /dicttype /Instances << >> >>
  202.    /ProcSet << @generic /ProcSet /InstanceType /dicttype /Instances << >> >>
  203.    /ColorSpace << @generic /ColorSpace /InstanceType /arraytype /Instances
  204.       << >> >>
  205.    /Halftone << @generic /Halftone /InstanceType /dicttype /Instances << >> >>
  206.    /ColorRendering << @generic /ColorRendering /InstanceType /dicttype
  207.       /Instances << >> >>
  208.  
  209.    /Filter << @generic /Filter /InstanceType /nametype /Instances
  210.       << /ASCIIHexEncode dup /ASCIIHexDecode dup /ASCII85Encode dup
  211.      /ASCII85Decode dup /LZWEncode dup /LZWDecode dup
  212.      /RunLengthEncode dup /RunLengthDecode dup /CCITTFaxEncode dup
  213.      /CCITTFaxDecode dup /DCTEncode dup /DCTDecode dup
  214.      /NullEncode dup /SubFileDecode dup >> >>
  215.    /ColorSpaceFamily << @generic /ColorSpaceFamily /InstanceType /nametype
  216.       /Instances << /DeviceGray dup /DeviceRGB dup /DeviceCMYK dup
  217.      /CIEBasedABC dup /CIEBasedA dup /Pattern dup /Indexed dup
  218.      /Separation dup >> >>
  219.    /Emulator << @generic /Emulator /InstanceType /nametype /Instances << >> >>
  220.    /IODevice << @generic /IODevice /InstanceType /nametype /Instances << >> >>
  221.    /ColorRenderingType << @generic /ColorRenderingType /InstanceType
  222.       /integertype /Instances << >> >>
  223.    /FMapType << @generic /FMapType /InstanceType /integertype /Instances
  224.       << >> >>
  225.    /FontType << @generic /FontType /InstanceType /integertype /Instances
  226.       << 0 dup 1 dup 3 dup >> >>
  227.    /FormType << @generic /FormType /InstanceType /integertype /Instances
  228.       << >> >>
  229.    /HalftoneType << @generic /HalftoneType /InstanceType /integertype
  230.       /Instances << >> >>
  231.    /ImageType << @generic /ImageType /InstanceType /integertype /Instances
  232.       << >> >>
  233.    /PatternType << @generic /PatternType /InstanceType /integertype /Instances
  234.       << >> >>
  235.  
  236.    /Catagory << @generic /Catagory /InstanceType /dicttype >>
  237.    /Generic << @generic /Generic >>
  238. >> def
  239.  
  240. @catagory /Catagory get /Instances @catagory put
  241.  
  242. false setglobal
  243.  
  244. %
  245. %  Initialize the resource tokens
  246. %
  247.  
  248. /@resbegin { @catagory exch get begin } @bd
  249. /defineresource { @resbegin DefineResource end } @bd
  250. /undefineresource { @resbegin UndefineResource end } @bd
  251. /findresource { @resbegin FindResource end } @bd
  252. /resourcestatus { @resbegin ResourceStatus end } @bd
  253. /resourceforall { @resbegin ResourceForAll end } @bd
  254.  
  255. %
  256. %  Define font related tokens
  257. %
  258.  
  259. /@mtx1 matrix def
  260. /@mtx2 matrix def
  261. /@fakefont { <<
  262.    /FontName 5 -1 roll /FontMatrix 6 -1 roll /UniqueID 7 -1 roll
  263.    /UniqID 1 index
  264.    /FontInfo <<
  265.       /version () /Notice () /FullName () /Weight () /ItalicAngle 0
  266.       /isFixedPitch false /UnderlinePosition 0 /UnderlineThickness 20 >>
  267.    /Encoding StandardEncoding /PaintType 0
  268.    /FontType 1 /Device true /FontBBox {0 0 1000 1000} /Metrics <<>>
  269.    /StrokeWidth 0 /Private <<>> /CharStrings <</space {}>> /FID 1 >>
  270.    dup /FontName get exch definefont pop } @bd
  271. /@val_font { type /dicttype eq not
  272.    { errordict /typecheck get exec } if } @bd
  273.  
  274. /scalefont { 1 index @val_font exch 1 dict copy dup dup /FontMatrix get
  275.    @mtx1 copy 4 -1 roll dup @mtx2 scale matrix concatmatrix
  276.    /FontMatrix exch put } @bd
  277. /makefont { 1 index @val_font exch 1 dict copy dup dup /FontMatrix get
  278.    @mtx1 copy 4 -1 roll matrix concatmatrix /FontMatrix exch put } @bd
  279. /findfont { /Font findresource } @bd
  280. /definefont { /Font defineresource } @bd
  281.  
  282. %
  283. %  Initialize some tokens
  284. %
  285.  
  286. /@savglob false def
  287. /@cachelimit 0 def
  288.  
  289. /prompt { (PS> ) print flush } @bd
  290. /handleerror { errordict /handleerror get exec } @bd
  291. /execuserobject { userdict /UserObjects get exch get exec } @bd
  292. /undefineuserobject { userdict /UserObjects get exch null put } @bd
  293. /defineuserobject { 1 index 0 lt { errordict /rangecheck get exec } if
  294.    systemdict /@savglob currentglobal put false setglobal
  295.    userdict /UserObjects 2 copy known not
  296.       { 2 copy 5 index 99 add 100 idiv 100 mul array put } if
  297.    get dup length 3 index exch ge
  298.       { 2 index 99 add 100 idiv 100 mul array exch 1 index copy pop
  299.     dup userdict /UserObjects 3 -1 roll put } if
  300.    3 1 roll put
  301.    systemdict /@savglob get setglobal } @bd
  302. /findencoding { /Encoding findresource } @bd
  303. /version (54.0) def
  304. /languagelevel 1 def
  305. /product (Liberty Systems - PSI) def
  306. /revision 200 def
  307. /start { product print (    Revision: ) print revision 100 div
  308.       @err_name cvs print (\n) print
  309.    (Copyright (C) 1993-1995 Liberty Systems, Redlands, CA.\n) print
  310.    (All rights reserved.\n) print } @bd
  311. /setgray { /DeviceGray setcolorspace setcolor } @bd
  312. /setrgbcolor { /DeviceRGB setcolorspace setcolor } @bd
  313. /setcmykcolor { /DeviceCMYK setcolorspace setcolor } @bd
  314. /showpage { copypage erasepage } @bd
  315. /currentscreen { currentcolorscreen 12 3 roll 9 { pop } repeat } @bd
  316. /setscreen { 3 { 3 copy } repeat setcolorscreen
  317.    currentscreen 3 1 roll pop pop
  318.    -.5 -.5 2 index exec pop
  319.     .5 -.5 2 index exec pop
  320.    -.5  .5 2 index exec pop
  321.     .5  .5 2 index exec pop pop } @bd
  322. 0 0 {pop} setscreen
  323. /strokepath {} @bd
  324. /echo {pop} @bd
  325. /initgraphics { initmatrix newpath initclip 1 setlinewidth 0 setlinecap
  326.    0 setlinejoin [] 0 setdash 0 setgray 10 setmiterlimit } @bd
  327. /setcachelimit { dup type /integertype eq { /@cachelimit exch def }
  328.    { errordict /typecheck get exec } ifelse } @bd
  329. /cachestatus { 0 0 0 0 0 0 @cachelimit } @bd
  330. /setcachedevice { 4{pop}repeat setcharwidth } @bd
  331. /execform { gsave dup /Matrix get concat
  332.    dup /BBox get aload pop exch 3 index sub exch 2 index sub
  333.    rectclip dup /PaintProc get exec grestore } @bd
  334. /selectfont { dup type /arraytype eq
  335.    {exch findfont exch makefont setfont}
  336.    {exch findfont exch scalefont setfont} ifelse } @bd
  337. /ucache {} @bd
  338. /setshared {setglobal} @bd
  339. /currentshared {currentglobal} @bd
  340. /rectstroke {
  341.   dup type /arraytype eq
  342.   {gsave newpath 5 -2 roll moveto 2 index 0 rlineto 0 3 -1 roll rlineto
  343.    exch neg 0 rlineto closepath concat stroke grestore}
  344.   {gsave newpath 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto
  345.    neg 0 rlineto closepath stroke grestore} ifelse } @bd
  346. /rectfill {
  347.   dup type /arraytype eq
  348.   {gsave newpath 5 -2 roll moveto 2 index 0 rlineto 0 3 -1 roll rlineto
  349.    exch neg 0 rlineto closepath concat fill grestore}
  350.   {gsave newpath 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto
  351.    neg 0 rlineto closepath fill grestore} ifelse } @bd
  352.  
  353. /letter { statusdict begin 0 setpagetype end } def
  354. /note { statusdict begin 1 setpagetype end } def
  355. /legal {} def
  356. /a4 {} def
  357.  
  358. %
  359. %  Create the 'statusdict' dictionary
  360. %
  361.  
  362. /statusdict
  363.   << /product (Liberty Systems - PSI)
  364.      /processcolors 3
  365.      /setpageparams {4{pop}repeat}
  366.      /setjobtimeout {pop}
  367.      /lettertray {}
  368.      /setduplexmode {pop}
  369.      /settumble {pop}
  370.      /setpagetype {statusdict exch /pagetype exch put} >> def
  371.  
  372. %
  373. %  Initialize the user dictionary
  374. %
  375.  
  376. /userdict 200 dict def userdict begin
  377. true limitaccess
  378.