GIF89a; EcchiShell v1.0
//proc/self/root/usr/share/ghostscript/, /appletalktype (LaserWriter) def %%%%%% The following items are defined in the PostScript Language %%%%%% Reference Manual, First Edition, and subsequent 'compatibility' %%%%%% documentation from Adobe. /checkpassword {statusdict begin .password eq end} bind def /defaulttimeouts {statusdict begin .timeouts aload pop end} bind def /diskonline { //false (%disk*%) { pop not exit } 8192 string /IODevice resourceforall } bind def /diskstatus {10240 2097152 } bind odef % - diskstatus (in 1024 byte pages) %/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 0 def /prefeed //false def /printererror {pop pop} bind def /printername {statusdict /.printername get exch copy} 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 {mark /Duplex 3 -1 roll currentdevice putdeviceprops} 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 % The following compatibility operators are only documented by Adobe in a % supplement to the Red Book. % % - pagemargin % - pageparams % setpage - % setpagemargin - % setpageparams - % % width and height are in default units (and if orientation is odd, are % exchanged!). offset is the x margin, also in default units. % Unfortunately, because orientation is relative to the device paper feed, % it does not have a consistent meaning in terms of image orientation. % We follow the convention that ORIENT1 determines the orientation value % that means portait: false means 0, true means 1. /pagemargin { 0 } bind def /pageparams { currentdevice 1 dict dup /.MediaSize dup put .getdeviceparams exch pop exch pop aload pop 0 ORIENT1 { 1 } { 0 } ifelse } bind def /setpage { ORIENT1 { 1 } { 0 } ifelse ne {exch} if statusdict /.setpagesize get exec } bind def /setpagemargin {pop} bind def % can't do better without setpagedevice /setpageparams { exch pop ORIENT1 { 1 } { 0 } ifelse ne {exch} if statusdict /.setpagesize get exec } bind def /setpagetype { statusdict begin % The Adobe documentation only defines setpagetype % (a Level 1 operator) as accepting the values 0 and 1, % so we do too. dup type /integertype ne { /setpage /typecheck signalerror } { dup 0 ne 1 index 1 ne or { /setpage /rangecheck signalerror } { {/letter /note} 1 index get //systemdict /userdict get exch get cvx exec } ifelse /pagetype exch def } ifelse 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 % setresolution is not documented by Adobe, but some applications % use it anyway, without testing whether or not it is present. % % setresolution - % % sets the resolution of the device. /setresolution { mark /HWResolution [ 4 -1 roll dup ] currentdevice putdeviceprops pop initmatrix erasepage } bind def /setsccbatch {pop pop pop} bind def /setsccinteractive {pop pop pop} bind def /settumble {pop} bind def /waittimeout 300 def %%%%%% End of documented items. /.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 product setprintername end % statusdict %%%%%% The following documented compatibility "operators" are in systemdict, %%%%%% not in statusdict. systemdict begin .currentglobal //true .setglobal /devformat //true def /devforall { % devforall - exch { 1 index currentdevparams /Type .knownget { /FileSystem eq } { //false } ifelse { exec } { pop pop } ifelse } /exec load 3 packedarray cvx exch (*) 3 1 roll /IODevice resourceforall } odef /devstatus { % <(%disk*%)> devstatus % % //true % devstatus //false dup length 5 ge { dup 0 5 getinterval (%disk) eq { dup /IODevice resourcestatus { pop pop dup currentdevparams dup /Searchable get exch dup /Writeable get exch dup /HasNames get exch dup /Mounted get exch dup /Removable get exch dup /SearchOrder get exch dup /Free get exch /LogicalSize get 9 -1 roll pop //true } { pop //false } ifelse } { pop //false } ifelse } { pop //false } ifelse } odef .setglobal end % systemdict % 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