home *** CD-ROM | disk | FTP | other *** search
/ Phoenix CD 2.0 / Phoenix_CD.cdr / 02a / psmagic1.zip / PSLOAD.INI < prev    next >
Text File  |  1989-12-21  |  23KB  |  792 lines

  1. %
  2. % PSLOAD.INI - startup script for PS interpreter
  3. %
  4. %
  5. % This postscript program is run with the systemdict and userdict
  6. % sitting on the dictionary stack.
  7. %
  8. % Errors are not yet working - so beware !
  9. %
  10. % ...
  11. (%%[ Initializing... ]%%\n) print flush
  12. 1 dup eq setpacking
  13.  
  14. % get rid of statusdict first.
  15. 2 index begin /statusdict exch def end
  16.  
  17. % Initialize Systemdict first
  18. 2 1 roll
  19.  
  20. dup dup /systemdict 2 1 roll put
  21. begin
  22.     /userdict 1 index    def
  23.     /errordict 30 dict    def
  24.     /$error 9 dict    def
  25.     /true 1 dup eq    def
  26.     /false 1 0 eq    def
  27.     /handleerror { //errordict /handleerror get exec } bind    def
  28.     /prompt
  29.     {
  30.     execdict /execdepth get { (P) print } repeat
  31.     (S>) print flush
  32.     } bind        def
  33.     /=string 128 string    def
  34.     /=print { dup type /stringtype ne { //=string cvs } if print } def
  35.     /= { //=print exec (\n) print } def
  36.     /stack { count 1 sub  0 1  3 2 roll { index = } for } bind def
  37.     /version ($X:pi_init.ps,v11.2$) (,v) search pop pop pop 0 1 index length 1 sub getinterval def
  38.     /_vdate ($Date: 89/02/07 15:36:27 $) 7 1 index length 9 sub getinterval def
  39.     (\004)cvn { grestoreall initgraphics } bind def
  40.     (\032)cvn {} def
  41. end
  42.  
  43. begin
  44.     /#copies 1 def
  45.  
  46.     /execdict 11 dict def
  47.     execdict begin
  48.     /doquit false def
  49.     /execdepth -1 def
  50.     /execlimit 20 def
  51.     /execsaves 0 def
  52.     /trace false def
  53.     /eofseen false def
  54.     /stdin (%stdin)(r)file def
  55.     /exitserver false def
  56.     /abortjob   false def
  57.     /enableabort true def
  58.     end
  59.  
  60.     /letter    { (\377LT) _setpapertype } bind def
  61.  
  62.     /lettersmall { (\377lt)_setpapertype } bind def
  63.  
  64.     /legal    { (\377LG) _setpapertype } bind def
  65.  
  66.     /note    { (\377NT) _setpapertype } bind def
  67.  
  68.     /a4        { (\377A4) _setpapertype } bind def
  69.  
  70.     /a4small    { (\377a4) _setpapertype } bind def
  71.  
  72.     /b5        { (\377B5) _setpapertype } bind def
  73.  
  74.     /ledger    { (\377LD) _setpapertype } bind def
  75.  
  76.     /b4        { (\377B4) _setpapertype } bind def
  77.  
  78.     /a3        { (\377A3) _setpapertype } bind def
  79.  
  80.     /executivepaper   { (\377EX) _setpapertype } bind def
  81.  
  82.     /start_cleanup
  83.     {
  84.     _disableinterrupts
  85.     clear
  86.     false _endjob
  87.     countdictstack 2 sub { end } repeat
  88.     { //execdict /execsaves get dup type /savetype ne { exit } if restore } loop
  89.     } bind def
  90.  
  91.     /start
  92.     {
  93.     (%%[ PostScript(tm) - Copyright (C), Terra Systems ]%%\n) print
  94.         (%%[ Version: ) print version print (; Version date: ) print _vdate print ( ]%%\n) print flush
  95.  
  96.     % close this file
  97.     currentfile closefile
  98.  
  99.            { //userdict /server get stopped //start_cleanup exec } bind loop
  100.  
  101.     (%%[ PostScript(tm) Terminating ]%%\n) print flush
  102.     //systemdict /quit get exec
  103.     } bind def
  104.  
  105.     % interpreter loop - preamble, called with server loop
  106.     /server_common
  107.     {
  108.     //execdict begin
  109.         execdepth 1 add
  110.         dup execlimit ge { pop end //errordict /execstackoverflow get exec stop } if
  111.         /execdepth exch def
  112.         loop % on argument
  113.         /doquit false def
  114.         /execdepth execdepth 1 sub def
  115.     end
  116.     } def
  117.  
  118.     % interactive interpreter loop
  119.     /executive
  120.     {
  121.     (%%[ Starting Executive ]%%\n) print flush
  122.     {
  123.         _disableinterrupts
  124.         {
  125.         % begin execdict
  126.         prompt
  127.         (%statementedit) (r) _enableinterrupts file _disableinterrupts
  128.         dup /stmtfile exch def
  129.         end
  130.         0 _clearinterrupts _enableinterrupts
  131.         cvx exec
  132.         }
  133.         stopped _disableinterrupts
  134.         {
  135.         { currentdict //execdict ne { exit } if end } loop
  136.         handleerror
  137.         } if
  138.  
  139.         //execdict begin
  140.         /stmtfile where { pop stmtfile status { stmtfile closefile } if } if
  141.         stdin bytesavailable -1 eq doquit or
  142.         {
  143.             exitserver { stop } { exit } ifelse
  144.         }
  145.         if
  146.     }
  147.     server_common
  148.     (%%[ Exiting Executive ]%%\n) print flush
  149.     } bind def
  150.  
  151.     % interpreter loop
  152.     /server
  153.     {
  154.     (%%[ Starting Server ]%\n) print flush
  155.     _disableinterrupts
  156.     {
  157.         _beginjob
  158.         /execsaves save def
  159.         /exitserver false def
  160.         /abortjob false def
  161.         _clearexitserver
  162.         stdin
  163.         end
  164.         //statusdict begin
  165.         //=string _getjobname dup length 0 gt
  166.         {
  167.             dup length string copy
  168.         }
  169.         {
  170.             pop null
  171.         }
  172.         ifelse
  173.         /jobname exch def
  174.         end
  175.         { 0 _clearinterrupts _enableinterrupts cvx exec _disableinterrupts } stopped
  176.         _disableinterrupts
  177.         //execdict begin
  178.             exitserver not and
  179.             {
  180.                 /abortjob //$error /newerror get def
  181.                 handleerror
  182.                 (%%[ Flushing until EOF seen ]%%\n) print flush
  183.                 stdin _flushfile
  184.                 (%%[ EOF ]%%\n) print flush
  185.             } if
  186.         clear
  187.         countdictstack 2 sub { end } repeat
  188.         //execdict begin
  189.         % put this on stack because of restore
  190.         exitserver
  191.         doquit
  192.         abortjob
  193.         execsaves restore
  194.         /abortjob exch def
  195.         _resetstdin
  196.         % use doquit here
  197.         {
  198.             % if not exitserver, quit
  199.             not { exit } if
  200.             stdin end
  201.             (%%[ exitserver: permanent state may be changed ]%%\n) print flush
  202.             { 0 _clearinterrupts _enableinterrupts cvx exec _disableinterrupts } stopped
  203.             _disableinterrupts
  204.             //execdict begin
  205.             {
  206.                 /abortjob //$error /newerror get def
  207.                 handleerror
  208.                 (%%[ Flushing until EOF seen ]%%\n) print flush
  209.                 stdin _flushfile
  210.                 (%%[ EOF ]%%\n) print flush
  211.             } if
  212.             clear
  213.             countdictstack 2 sub { end } repeat
  214.             _resetstdin
  215.             //execdict begin
  216.         }
  217.         {
  218.             pop %  "exitserver" field
  219.         }
  220.         ifelse
  221.         flush
  222.         abortjob enableabort and not _endjob
  223.     }
  224.     server_common
  225.     (%%[ Exiting Server ]%%\n) print flush
  226.     _enableinterrupts
  227.     } bind def
  228.  
  229.     % userdict version of quit
  230.     /quit
  231.     {
  232.     //execdict /doquit true put
  233.     stop
  234.     } bind def
  235.  
  236. end
  237.  
  238. $error begin
  239.     /newerror false def
  240.     /errorname /--none-- def
  241.     /command /--none-- def
  242.     /ostack [] def
  243.     /estack [] def
  244.     /dstack [] def
  245.     /vmerror 1 string def
  246.     vmerror 0 0 put
  247. end
  248.  
  249. errordict begin
  250.  
  251.     % save the state when an error occurs.  called as "cause errname doerror -"
  252.     /doerror
  253.     {
  254.     //$error begin
  255.         vmerror 0 get 1 gt
  256.         {
  257.         vmerror 0 0 put
  258.         (Doerror: recursive vmerror\n) print flush
  259.         stop
  260.         }
  261.         if
  262.  
  263.         newerror
  264.         {
  265.         (Doerror: Error within an error\n) print
  266.         (olderror: ) print errorname //=string cvs print (\n) print
  267.         (newerror: ) print //=string cvs print (\n) print
  268.         flush end
  269.         stop
  270.         } if
  271.  
  272.         /newerror true def
  273.         /errorname exch def
  274.         /command exch def
  275.         _opstack /ostack exch def
  276.         /estack countexecstack array execstack def
  277.         /dstack countdictstack array dictstack
  278.                0 countdictstack 1 sub getinterval def
  279.     end
  280.     } bind def
  281.     /stackunderflow     { /stackunderflow //errordict /doerror get exec stop }        bind def
  282.     /unregistered       { /unregistered //errordict /doerror get exec stop }        bind def
  283.     /dictstackunderflow { /dictstackunderflow //errordict /doerror get exec stop }    bind def
  284.     /typecheck          { /typecheck //errordict /doerror get exec stop }            bind def
  285.     /undefinedresult    { /undefinedresult //errordict /doerror get exec stop }        bind def
  286.     /invalidexit        { /invalidexit //errordict /doerror get exec stop }        bind def
  287.     /dictfull           { /dictfull //errordict /doerror get exec stop }            bind def
  288.     /nocurrentpoint     { /nocurrentpoint //errordict /doerror get exec stop }        bind def
  289.     /limitcheck         { /limitcheck //errordict /doerror get exec stop } bind def
  290.     /invalidaccess      { /invalidaccess //errordict /doerror get exec stop }        bind def
  291.     /invalidfileaccess  { /invalidfileaccess //errordict /doerror get exec stop }        bind def
  292.     /ioerror            { /ioerror //errordict /doerror get exec stop }            bind def
  293.     /invalidfont        { /invalidfont //errordict /doerror get exec stop }        bind def
  294.     /invalidrestore     { /invalidrestore //errordict /doerror get exec stop }        bind def
  295.     /rangecheck         { /rangecheck //errordict /doerror get exec stop }        bind def
  296.     /execstackoverflow  { /execstackoverflow //errordict /doerror get exec stop }        bind def
  297.     /dictstackoverflow  { end end end end /dictstackoverflow //errordict /doerror get exec stop }        bind def
  298.     /unmatchedmark      { /unmatchedmark //errordict /doerror get exec stop }        bind def
  299.     /syntaxerror        { /syntaxerror //errordict /doerror get exec stop }        bind def
  300.     /undefined          { /undefined //errordict /doerror get exec stop }            bind def
  301.     /undefinedfilename  { /undefinedfilename //errordict /doerror get exec stop }        bind def
  302.     /VMerror            { //$error /vmerror get dup 0 get 1 add 0 exch put
  303.               /vmerror //errordict /doerror get exec stop } bind def
  304.     /timeout            { /timeout //errordict /doerror get exec stop }            bind def
  305.     /interrupt          { /interrupt //errordict /doerror get exec stop }            bind def
  306.     /PasswordIncorrect  /unregistered load def
  307.     /papermismatch
  308.     {
  309.         (%%[ Paper mismatch, requested paper type ) print
  310.         //systemdict /framedevice get eq
  311.         { pop exch 8 mul =print ( X ) print =print pop ( pixels) print }
  312.         { (") print print (") print }
  313.         ifelse
  314.         (, ignored ]%%) = flush
  315.     } bind def
  316.  
  317.     /stackoverflow
  318.     {
  319.     _opstack
  320.     //errordict begin
  321.         /stackoverflow dup doerror
  322.         //$error /ostack 3 -1 roll put
  323.     end
  324.     stop
  325.     } bind def
  326.  
  327.     /handleerror
  328.     {
  329.     //$error begin
  330.         vmerror 0 0 put
  331.         newerror
  332.         {
  333.         %currentfile closefile
  334.         (%%[ Error: ) print
  335.         errorname //=string cvs print
  336.         (; OffendingCommand: ) print
  337.         /command load //=string cvs print
  338.         ( ]%%\n) print
  339.         flush
  340.         } if
  341.         /newerror false def
  342.     end
  343.     } bind def
  344. end
  345.  
  346. statusdict begin
  347.     /product =string _getproductname dup length string copy def
  348.     /jobname null def 
  349.     /manualfeed false def
  350.     /debugmode 0 def
  351.     /jobstate (busy) def
  352.     /jobsource (stdin) def
  353.     /frametoprinter {} def
  354.     /revision 1 def
  355.  
  356.     % status procedure, called on ^T
  357.     /statusproc
  358.     {
  359.     (%%[ status: compiling; source comm ]%%\n) print flush
  360.     } bind def
  361.  
  362.     /printererror
  363.     {
  364.     (%%[ PrinterError:) print
  365.     statusdict /_enginestatus get exec
  366.     dup 2 and 2 eq { ( no_paper) print } if
  367.     dup 4 and 4 eq { ( paper_jam) print } if
  368.     dup 16#1000 and 16#1000 eq { ( awaiting_manual_feed) print } if
  369.     dup 16#eff1 and 0 ne { ( misc_engine_problems) print } if
  370.     0 eq { ( engine ready) print } if
  371.     ( ]%%\n) print flush
  372.     }bind def
  373.  
  374.     % stub out these two.
  375.     /setidlefonts { cleartomark } def
  376.     /idlefonts { mark } def
  377.  
  378.     % set up compatibility for PS-40 ledger tray.
  379.     %/ledgertray { (\377LD) _setpapertype 7920 0 translate 90 rotate } bind def
  380. end
  381.  
  382. /serverdict 3 dict def
  383. serverdict begin
  384.  
  385.     /exitserver statusdict /exitserver get def
  386.     /setrealdevice null def
  387.     /execjob null def
  388.  
  389. end
  390.  
  391.  
  392. %
  393. % Definition of == and pstack operators
  394. %
  395.  
  396. % create dictionary
  397. 19 dict begin
  398.  
  399.     % store its name in itself
  400.     /==dict currentdict def
  401.  
  402.     % string for outputting things
  403.     /==string 128 string def
  404.  
  405.     % recursion level, max
  406.     /rlv 0 def
  407.     /rmx 10 def
  408.  
  409.     % top level
  410.     /ptype
  411.     {
  412.     /rlv rlv 1 add def
  413.     rlv rmx eq { errordict /execstackoverflow get exec } if
  414.     dup type exec
  415.     /rlv rlv 1 sub def
  416.     } def
  417.  
  418.     % types that you unparse using cvs
  419.     /integertype { //==string cvs print } def
  420.     /booleantype /integertype load def
  421.     /realtype /integertype load def
  422.  
  423.     % simple composite types, use CVS mostly
  424.     /stringtype { (\() print print (\)) print } def
  425.     /nametype   { dup xcheck not { (/) print } if //==string cvs print } def
  426.     /operatortype { (--) dup print exch //==string cvs print print } def
  427.  
  428.     % recursive type
  429.     /arraytype
  430.     {
  431.     dup rcheck
  432.     {
  433.         dup xcheck
  434.         { (}) ({) }
  435.         { (]) ([) }
  436.         ifelse
  437.         print
  438.         exch { ptype ( ) print } forall
  439.         print
  440.     }
  441.     { (-) print type =string cvs 0 1 index length 4 sub getinterval print (-) print }
  442.     ifelse
  443.     }
  444.     def
  445.  
  446.     /packedarraytype /arraytype load def
  447.  
  448.     % types that you can't unparse
  449.     /fonttype   { pop (-fontid-)     print } def
  450.     /dicttype   { pop (-dictionary-) print } def
  451.     /nulltype   { pop (-null-)       print } def
  452.     /marktype   { pop (-mark-)       print } def
  453.     /savetype   { pop (-savelevel-)  print } def
  454.     /filetype   { pop (-filestream-) print } def
  455.  
  456.     % store top-level routine in systemdict
  457.     systemdict begin
  458.     /==print { //==dict begin ptype end } def
  459.     /== { //==dict begin ptype end (\n) print } def
  460.     end
  461.     userdict begin
  462.     /pstack { count 1 sub  0 1  3 2 roll { index == } for }    def
  463.     end
  464. end
  465.  
  466. %
  467. % Initialize graphics state
  468. %
  469. {} settransfer
  470. 72 0 dtransform dup mul exch dup mul add sqrt 5 div 45  { dup mul exch dup mul add 1 exch sub } bind setscreen
  471.  
  472. %
  473. % Initialize font stuff
  474. %
  475.  
  476. % put FontDirectory and StandardEncoding in systemdict
  477. systemdict /FontDirectory 250 dict readonly put
  478.  
  479. systemdict /StandardEncoding
  480. [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  481. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  482. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  483. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  484. /space /exclam /quotedbl /numbersign /dollar /percent /ampersand 
  485. /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period
  486. /slash /zero /one /two /three /four /five /six /seven /eight /nine 
  487. /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F 
  488. /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft 
  489. /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d
  490. /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z 
  491. /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef 
  492. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 
  493. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 
  494. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 
  495. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 
  496. /exclamdown /cent /sterling /fraction /yen /florin /section /currency 
  497. /quotesingle /quotedblleft /guillemotleft /guilsinglleft /guilsinglright 
  498. /fi /fl /.notdef /endash /dagger /daggerdbl /periodcentered /.notdef 
  499. /paragraph /bullet /quotesinglbase /quotedblbase /quotedblright 
  500. /guillemotright /ellipsis /perthousand /.notdef /questiondown /.notdef 
  501. /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis 
  502. /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /emdash 
  503. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 
  504. /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef 
  505. /AE /.notdef /ordfeminine /.notdef /.notdef /.notdef /.notdef /Lslash 
  506. /Oslash /OE /ordmasculine /.notdef /.notdef /.notdef /.notdef /.notdef 
  507. /ae /.notdef /.notdef /.notdef /dotlessi /.notdef /.notdef /lslash 
  508. /oslash /oe /germandbls /.notdef /.notdef /.notdef /.notdef ]
  509. put
  510.  
  511. %
  512. % Initialize the CharStrings dictionary
  513. %
  514. systemdict /_CharStrings 229 dict put
  515. _CharStrings
  516.     dup /space   61231 put
  517.     dup /exclam      33 put
  518.     dup /quotedbl      34 put
  519.     dup /numbersign      35 put
  520.     dup /dollar     164 put
  521.     dup /percent      37 put
  522.     dup /ampersand      38 put
  523.     dup /quoteright     185 put
  524.     dup /parenleft      40 put
  525.     dup /parenright      41 put
  526.     dup /asterisk      42 put
  527.     dup /plus      43 put
  528.     dup /comma      44 put
  529.     dup /hyphen    8510 put
  530.     dup /period      46 put
  531.     dup /slash      47 put
  532.     dup /zero      48 put
  533.     dup /one      49 put
  534.     dup /two      50 put
  535.     dup /three      51 put
  536.     dup /four      52 put
  537.     dup /five      53 put
  538.     dup /six      54 put
  539.     dup /seven      55 put
  540.     dup /eight      56 put
  541.     dup /nine      57 put
  542.     dup /colon      58 put
  543.     dup /semicolon      59 put
  544.     dup /less      60 put
  545.     dup /equal      61 put
  546.     dup /greater      62 put
  547.     dup /question      63 put
  548.     dup /at      64 put
  549.     dup /A      65 put
  550.     dup /B      66 put
  551.     dup /C      67 put
  552.     dup /D      68 put
  553.     dup /E      69 put
  554.     dup /F      70 put
  555.     dup /G      71 put
  556.     dup /H      72 put
  557.     dup /I      73 put
  558.     dup /J      74 put
  559.     dup /K      75 put
  560.     dup /L      76 put
  561.     dup /M      77 put
  562.     dup /N      78 put
  563.     dup /O      79 put
  564.     dup /P      80 put
  565.     dup /Q      81 put
  566.     dup /R      82 put
  567.     dup /S      83 put
  568.     dup /T      84 put
  569.     dup /U      85 put
  570.     dup /V      86 put
  571.     dup /W      87 put
  572.     dup /X      88 put
  573.     dup /Y      89 put
  574.     dup /Z      90 put
  575.     dup /bracketleft      91 put
  576.     dup /backslash      92 put
  577.     dup /bracketright      93 put
  578.     dup /asciicircum     195 put
  579.     dup /underscore      95 put
  580.     dup /quoteleft     169 put
  581.     dup /a      97 put
  582.     dup /b      98 put
  583.     dup /c      99 put
  584.     dup /d     100 put
  585.     dup /e     101 put
  586.     dup /f     102 put
  587.     dup /g     103 put
  588.     dup /h     104 put
  589.     dup /i     105 put
  590.     dup /j     106 put
  591.     dup /k     107 put
  592.     dup /l     108 put
  593.     dup /m     109 put
  594.     dup /n     110 put
  595.     dup /o     111 put
  596.     dup /p     112 put
  597.     dup /q     113 put
  598.     dup /r     114 put
  599.     dup /s     115 put
  600.     dup /t     116 put
  601.     dup /u     117 put
  602.     dup /v     118 put
  603.     dup /w     119 put
  604.     dup /x     120 put
  605.     dup /y     121 put
  606.     dup /z     122 put
  607.     dup /braceleft     123 put
  608.     dup /bar     124 put
  609.     dup /braceright     125 put
  610.     dup /asciitilde   61053 put
  611.     dup /exclamdown     161 put
  612.     dup /cent     162 put
  613.     dup /sterling     163 put
  614.     dup /fraction     128 put
  615.     dup /yen     165 put
  616.     dup /florin   61346 put
  617.     dup /section     167 put
  618.     dup /currency      36 put
  619.     dup /quotesingle      39 put
  620.     dup /quotedblleft     170 put
  621.     dup /guillemotleft     171 put
  622.     dup /guilsinglleft   61226 put
  623.     dup /guilsinglright   61227 put
  624.     dup /fi   61476 put
  625.     dup /fl   61477 put
  626.     dup /endash   61220 put
  627.     dup /dagger   61232 put
  628.     dup /daggerdbl   61233 put
  629.     dup /periodcentered    8494 put
  630.     dup /paragraph     182 put
  631.     dup /bullet    8631 put    
  632.     dup /quotesinglbase    9138 put
  633.     dup /quotedblbase   61224 put
  634.     dup /quotedblright     186 put
  635.     dup /guillemotright     187 put
  636.     dup /ellipsis   65074 put
  637.     dup /perthousand   61249 put
  638.     dup /questiondown     191 put
  639.     dup /grave     131 put
  640.     dup /acute     133 put
  641.     dup /circumflex     130 put
  642.     dup /tilde     132 put
  643.     dup /macron     134 put
  644.     dup /breve     135 put
  645.     dup /dotaccent     136 put
  646.     dup /dieresis     137 put
  647.     dup /ring     138 put
  648.     dup /cedilla     139 put
  649.     dup /hungarumlaut     205 put
  650.     dup /ogonek     206 put
  651.     dup /caron     140 put
  652.     dup /emdash   61221 put
  653.     dup /AE     225 put
  654.     dup /ordfeminine     227 put
  655.     dup /Lslash     232 put
  656.     dup /Oslash     233 put
  657.     dup /OE     234 put
  658.     dup /ordmasculine     235 put
  659.     dup /ae     241 put
  660.     dup /dotlessi     245 put
  661.     dup /lslash     248 put
  662.     dup /oslash     249 put
  663.     dup /oe     250 put
  664.     dup /germandbls     251 put
  665.     dup /Aacute   61730 put    
  666.     dup /Acircumflex   61731 put    
  667.     dup /Adieresis   61735 put    
  668.     dup /Agrave   61729 put    
  669.     dup /Aring   61736 put    
  670.     dup /Atilde   61732 put    
  671.     dup /Ccedilla   61741 put    
  672.     dup /Eacute   61745 put    
  673.     dup /Ecircumflex   61746 put    
  674.     dup /Edieresis   61749 put    
  675.     dup /Egrave   61744 put    
  676.     dup /Iacute   61759 put    
  677.     dup /Icircumflex   61760 put    
  678.     dup /Idieresis   61764 put    
  679.     dup /Igrave   61758 put    
  680.     dup /Ntilde   61772 put    
  681.     dup /Oacute   61776 put    
  682.     dup /Ocircumflex   61777 put    
  683.     dup /Odieresis   61780 put    
  684.     dup /Ograve   61775 put    
  685.     dup /Otilde   61778 put    
  686.     dup /Scaron   61788 put    
  687.     dup /Uacute   61792 put    
  688.     dup /Ucircumflex   61793 put    
  689.     dup /Udieresis   61797 put    
  690.     dup /Ugrave   61791 put    
  691.     dup /Ydieresis   61805 put    
  692.     dup /Zcaron   61808 put    
  693.     dup /aacute   61858 put    
  694.     dup /acircumflex   61859 put    
  695.     dup /adieresis   61863 put    
  696.     dup /agrave   61857 put    
  697.     dup /aring   61864 put    
  698.     dup /atilde   61860 put    
  699.     dup /ccedilla   61869 put    
  700.     dup /eacute   61873 put    
  701.     dup /ecircumflex   61874 put    
  702.     dup /edieresis   61877 put    
  703.     dup /egrave   61872 put    
  704.     dup /iacute   61887 put    
  705.     dup /icircumflex   61888 put    
  706.     dup /idieresis   61892 put    
  707.     dup /igrave   61886 put    
  708.     dup /ntilde   61900 put    
  709.     dup /oacute   61904 put    
  710.     dup /ocircumflex   61905 put    
  711.     dup /odieresis   61908 put    
  712.     dup /ograve   61903 put    
  713.     dup /otilde   61906 put    
  714.     dup /scaron   61916 put    
  715.     dup /uacute   61920 put    
  716.     dup /ucircumflex   61921 put    
  717.     dup /udieresis   61925 put    
  718.     dup /ugrave   61919 put    
  719.     dup /ydieresis   61933 put    
  720.     dup /zcaron   61936 put    
  721.     dup /minus      45 put    
  722.     dup /copyright   211 put
  723.     dup /registered   210 put
  724.     dup /trademark   212 put
  725.     dup /logicalnot   61290 put
  726.     dup /Thorn   236 put
  727.     dup /thorn   252 put
  728.     dup /Eth     226 put
  729.     dup /eth     243 put
  730.     dup /Yacute  61803 put
  731.     dup /yacute  61931 put
  732.     dup /divide  184 put
  733.     dup /plusminus   177 put
  734.     dup /multiply    180 put
  735.     dup /brokenbar   61291 put
  736.     dup /degree      176 put
  737.     dup /onesuperior 64779 put
  738.     dup /twosuperior 64780 put
  739.     dup /threesuperior   64781 put
  740.     dup /onequarter      188 put
  741.     dup /onehalf         189 put
  742.     dup /threequarters   190 put
  743.     dup /mu          181 put
  744. readonly
  745.  
  746. systemdict /findfont {
  747.     //FontDirectory 1 index known not
  748.     {
  749.     (%%[WARNING: Font ") print
  750.     =print
  751.     (" not found, substituting Courier.]%%\n) print flush
  752.     /Courier 
  753.     } if
  754.     //FontDirectory exch get
  755. } bind put
  756.  
  757. %
  758. % Install all the fonts
  759. %
  760. _installfonts
  761.  
  762. false setpacking
  763.  
  764. %
  765. % Execute startup file
  766. %
  767. (startup.ps) /run load stopped
  768.     {
  769.     $error begin
  770.         newerror
  771.         errorname /undefinedfilename ne
  772.         and
  773.         {
  774.         (%%[Error in startup.ps]%%\n) print
  775.         handleerror
  776.         }
  777.         {
  778.         $error /newerror false put
  779.         }
  780.         ifelse
  781.     end
  782.     }
  783.     if
  784.  
  785. clear
  786. countdictstack 2 sub { end } repeat
  787.  
  788. %
  789. % Start running!
  790. %
  791. start
  792.