% Copyright (C) 1989-1993 Aladdin Enterprises. All rights reserved. % % This file is part of Ghostscript. % % Ghostscript is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY. No author or distributor accepts responsibility % to anyone for the consequences of using it or for whether it serves any % particular purpose or works at all, unless he says so in writing. Refer % to the Ghostscript General Public License for full details. % % Everyone is granted permission to copy, modify and redistribute % Ghostscript, but only under the conditions described in the Ghostscript % General Public License. A copy of this license is supposed to have been % given to you along with Ghostscript so you can know your rights and % responsibilities. It should be in a file named COPYING. Among other % things, the copyright notice and this notice must be preserved on all % copies. % This file provides statusdict, serverdict, and assorted LaserWriter % operators, mostly for the benefit of poorly designed PostScript programs % that 'know' they are running on a LaserWriter. systemdict begin /statusdict 80 dict def /serverdict 4 dict def % Define various paper formats. % Only letter, note, and legal are defined in the Adobe manual. % These procedures are also accessed as data structures during initialization, % so the page dimensions must be the first two elements of the procedure. /letter {612 792 //statusdict begin .setpagesize end} bind def /note {540 720 //statusdict begin .setpagesize end} bind def /legal {612 1008 //statusdict begin .setpagesize end} bind def /a0 {2380 3368 //statusdict begin .setpagesize end} bind def % ISO standard /a1 {1684 2380 //statusdict begin .setpagesize end} bind def % ISO standard /a2 {1190 1684 //statusdict begin .setpagesize end} bind def % ISO standard /a3 {842 1190 //statusdict begin .setpagesize end} bind def % ISO standard /a4 {595 842 //statusdict begin .setpagesize end} bind def % ISO standard /a5 {421 595 //statusdict begin .setpagesize end} bind def % ISO standard /a6 {297 421 //statusdict begin .setpagesize end} bind def % ISO standard /a7 {210 297 //statusdict begin .setpagesize end} bind def % ISO standard /a8 {148 210 //statusdict begin .setpagesize end} bind def % ISO standard /a9 {105 148 //statusdict begin .setpagesize end} bind def % ISO standard /a10 {74 105 //statusdict begin .setpagesize end} bind def % ISO standard /b0 {2836 4008 //statusdict begin .setpagesize end} bind def % ISO standard /b1 {2004 2836 //statusdict begin .setpagesize end} bind def % ISO standard /b2 {1418 2004 //statusdict begin .setpagesize end} bind def % ISO standard /b3 {1002 1418 //statusdict begin .setpagesize end} bind def % ISO standard /b4 {709 1002 //statusdict begin .setpagesize end} bind def % ISO standard /b5 {501 709 //statusdict begin .setpagesize end} bind def % ISO standard /archE {2592 3456 //statusdict begin .setpagesize end} bind def % U.S. CAD std /archD {1728 2592 //statusdict begin .setpagesize end} bind def % U.S. CAD std /archC {1296 1728 //statusdict begin .setpagesize end} bind def % U.S. CAD std /archB {864 1296 //statusdict begin .setpagesize end} bind def % U.S. CAD std /archA {648 864 //statusdict begin .setpagesize end} bind def % U.S. CAD std /flsa {612 936 //statusdict begin .setpagesize end} bind def % U.S. foolscap /flse {612 936 //statusdict begin .setpagesize end} bind def % European foolscap /halfletter {396 612 //statusdict begin .setpagesize end} bind def /11x17 {792 1224 //statusdict begin .setpagesize end} bind def % 11x17 portrait /ledger {1224 792 //statusdict begin .setpagesize end} bind def % 11x17 landscape end statusdict begin % Define the pagetype values for the known page formats. % The values for all but letter and note are arbitrary. /.pagetypenames { /letter /note /legal /a0 /a1 /a2 /a3 /a4 /a5 /a6 /a7 /a8 /a9 /a10 /b0 /b1 /b2 /b3 /b4 /b5 /archE /archD /archC /archB /archA /flsa /flse /halfletter /11x17 /ledger } cvlit readonly def %%%%%% The following items were suggested by a user as useful. % Permanent definitions /ramsize 4194304 def /hardwareiomode 0 def /sethardwareiomode {pop} bind def /softwareiomode 0 def /setsoftwareiomode {pop} bind def /dosysstart false def /setdosysstart {pop} bind def /allowjobreset true def /setallowjobreset {pop} bind def /defaultpaperfamily 0 def /setdefaultpaperfamily {pop} bind def /defaultpapertray 0 def /setdefaultpapertray {pop} bind def /defaulttrayswitch false def /setdefaulttrayswitch {pop} bind def % Tray and format selection /11x17tray {} bind def /a3tray {} bind def /a4tray {} bind def /a5tray {} bind def /a6tray {} bind def /b4tray {} bind def /flsatray {} bind def /flsetray {} bind def /halflettertray {} bind def /legaltray {} bind def /lettertray {} bind def % Per-job parameters /paperfamily 0 def % 0 is US, 1 is European /papertray 1 def /setpapertray {statusdict exch /papertray exch put} bind def /trayswitch false def % paperout feeds from another tray /papersize {/letter true} bind def % , /appletalktype (LaserWriter) def %%%%%% The following items are defined in the PostScript Language %%%%%% Reference Manual, First Edition. /checkpassword {statusdict begin .password eq end} bind def /defaulttimeouts {statusdict begin .timeouts aload pop end} bind def %/dostartpage /eescratch {pop 0} bind def /idlefonts {statusdict begin mark .idlefonts aload pop end} bind def /jobname () def %/jobtimeout /manualfeed false def /manualfeedtimeout 60 def /margins {statusdict begin .topmargin .leftmargin end} bind def /pagecount {4711} bind def /pagestackorder {false} bind def %/pagetype /prefeed false def /printererror {pop pop} bind def /printername {statusdict begin .printername exch copy end} bind def /processcolors /processcolors load def % defined in systemdict /product product def % product is defined in systemdict /revision revision def % revision is defined in systemdict /sccbatch {pop 9600 0} bind def /sccinteractive {pop 9600 0} bind def /setdefaulttimeouts {statusdict begin .timeouts astore pop end} bind def /setdostartpage {statusdict exch /dostartpage exch put} bind def /setduplexmode {pop} bind def /seteescratch {pop pop} bind def /setidlefonts {] statusdict exch /.idlefonts exch put} bind def /setjobtimeout {statusdict exch /jobtimeout exch put} bind def /setmargins {statusdict begin /.leftmargin exch def /.topmargin exch def end} bind def /setpagetype { statusdict begin dup .pagetypenames exch get systemdict exch get exec /pagetype exch def end } bind def /setpassword {exch checkpassword {statusdict exch /.password exch put true} {pop false} ifelse} bind def /setprintername {dup length string copy statusdict exch /printername exch put} bind def /setsccbatch {pop pop pop} bind def /setsccinteractive {pop pop pop} bind def /waittimeout 300 def /.setpagesize { mark /HWSize [ 4 index 4 index matrix defaultmatrix dtransform abs ceiling cvi exch abs ceiling cvi exch ] currentdevice putdeviceprops pop pop pop initmatrix initclip erasepage } bind def /.password 0 def /.timeouts [0 60 30] def true setdostartpage mark setidlefonts 0 setjobtimeout 0 0 setmargins 0 setpagetype product setprintername end % statusdict % The following contents of serverdict are a complete guess, % based on some observed LaserWriter boilerplate. serverdict begin /execjob { } bind def % The Red Book implies that something like the following is % an appropriate definition of exitserver. /exitserver { clear stop } bind def % However, this interacts badly with our standard error handler, % so we override it with the following less appropriate definition. /exitserver { 0 ne { clear cleardictstack } if } bind def /setrealdevice { } bind def end % serverdict