|
DataMuseum.dkPresents historical artifacts from the history of: Regnecentalen RC-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Regnecentalen RC-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 20369 (0x4f91) Types: TextFile Notes: UNIX file Names: »PostScript.in«
└─⟦bee8f15db⟧ Bits:30004169/disk2.imd Uniplex II+ V.6 release 1.0 (dansk) └─⟦bee8f15db⟧ UNIX Filesystem └─⟦this⟧ »up/new/usr/UAP/filters/PostScript.in«
%!PS-Adobe-1.0 %%Title: Uniplex Document Interface %%CreationDate: 1 jul 1987 %%Creator: Graham Beint, Paul Mahoney, Colin Maclean - Redwood International %%For: Uniplex Office Automation - Text and Graphics %%EndComments % Dictionaries /WPdict 150 dict def /GPdict 150 dict def % Units /dpi 300 def /pt {} def /in { 72 mul pt } bind def /mm { 25.4 div in } bind def /dots { dpi div in } bind def % Utilities % any array index Put - /Put { 3 -1 roll put } bind def % int string cvcs - /cvcs { dup 0 4 -1 roll put } bind def % Constants /newline (\n) def /space ( ) def /buff 80 string def /cbuf 1 string def /A4 { 210 mm 297 mm } bind def /A5 { 149 mm 210 mm } bind def /US { 8.5 in 11 in } bind def /filofax { 3.75 in 6.75 in } bind def % filofax (R) is a registered trademark /UShalf { 5.5 in 8.5 in } bind def /USlegal { 8.5 in 11 in } bind def /letter { US } bind def /note { UShalf } bind def /legal { USlegal } bind def /wallet { filofax } bind def % Variables /Globals 20 array def /Face { Globals 0 } def % Index of typeface in use /Style { Globals 1 } def % Index of typestyle in use /Size { Globals 2 } def % Index of typesize in use /Char_W { Globals 3 } def % Active space width increment /Line_H { Globals 4 } def % Active line height /Ulin_W { Globals 5 } def % Weight of underlines /Ulin_H { Globals 6 } def % Height of underlines /Ulin_N { Globals 7 } def % Number of underlines /Page_W { Globals 8 } def % Page width /Page_H { Globals 9 } def % Page height /Marg_T { Globals 10 } def % Margin at Top /Marg_L { Globals 11 } def % Margin at Bottom /Graf_N { Globals 12 } def % Graphics pattern number /Shades { Globals 13 } def % Shaded text flag /Landscape { Globals 14 } def % Landscape flag /SAVE { /VMsave save def } def /RESTORE { Globals aload /#copies #copies VMsave restore def astore } def /Filldict 12 dict def Filldict begin /Msave matrix def /Mdots 1 dup matrix scale def /Mbits matrix def /Fbits 32 def /Fvars 5 array def /Farg { Fvars 0 } def /Fx0 { Fvars 1 } def /Fy0 { Fvars 2 } def /Fx1 { Fvars 3 } def /Fy1 { Fvars 4 } def /Fmap [ 0 1 2 3 4 5 6 7 0 9 10 11 12 13 14 9 10 14 ] def /Fpats [ % none { <00> } % solid { <ff> } % horizontal { <000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff> } % +45 { <003f803f007f007f00fe00fe01fc01fc03f803f807f007f00fe00fe01fc01fc03f803f807f007f00fe00fe00fc01fc01f803f803f007f007e00fe00fc01fc01f003f803f007f007f00fe00fe01fc01fc03f803f807f007f00fe00fe01fc01fc03f803f807f007f00fe00fe00fc01fc01f803f803f007f007e00fe00fc01fc01f> } % vertical { <f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000> } % +135 { <7f007f003f803f801fc01fc00fe00fe007f007f003f803f801fc01fc00fe00fe007f007f803f803fc01fc01fe00fe00ff007f007f803f803fc01fc01fe00fe007f007f003f803f801fc01fc00fe00fe007f007f003f803f801fc01fc00fe00fe007f007f803f803fc01fc01fe00fe00ff007f007f803f803fc01fc01fe00fe00> } % +grid { <f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000fffffffffffffffffffffffffffffffff000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000ffffffffffffffffffffffffffffffff> } % xgrid { <ff3fff3f3fff3fff1ffe1ffe0ffc0ffc07f807f807f807f80ffc0ffc1ffe1ffe3fff3fffff3fff3ffe1ffe1ffc0ffc0ff807f807f807f807fc0ffc0ffe1ffe1fff3fff3f3fff3fff1ffe1ffe0ffc0ffc07f807f807f807f80ffc0ffc1ffe1ffe3fff3fffff3fff3ffe1ffe1ffc0ffc0ff807f807f807f807fc0ffc0ffe1ffe1f> } % hollow { <00> } % brick { <fffffffffffffffffffffffffffffffff0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000ffffffffffffffffffffffffffffffff0000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f0000000f000> } % scales { <000f3ff0000f0ff8000f03fc000f00fc001f007e001f003e003e001f007e001f00fc000f03fc000f0ff8000f3ff0000fffc0000fff00000fff00000fffc0000f3ff0000f0ff8000f03fc000f00fc000f007e001f003e001f001f003e001f007e000f00fc000f03fc000f0ff8000f3ff0000fffc0000fff00000fff00000fffc0> } % weave { <fc03e003f801f001f001f801e003fc03c007fe07800fff0f001fff9f003ffffe007ffffc00fffff801fffff003ffffe007ffffc00f9fff801f0fff003e07fe007c03fc00f801f800f800f801fc007c03fe003e07ff001f0fff800f9fffc007ffffe003fffff001fffff800fffffc007ffffe003fff9f001fff0f800ffe07c007> } % chess { <ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00000000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff> } % lozenge { <000180000003c0000007e000000ff000001ff800003ffc00007ffe0000ffff0001ffff8003ffffc007ffffe00ffffff01ffffff83ffffffc7ffffffefffffffe7ffffffe3ffffffc1ffffff80ffffff007ffffe003ffffc001ffff8000ffff00007ffe00003ffc00001ff800000ff0000007e0000003c0000001800000000000> } % frieze { <000000000000000000000000000000000fffffff0fffffff0fffffff0fffffff0f00000f0f00000f0f00000f0f00000f0f0fff0f0f0fff0f0f0fff0f0f0fff0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0fff0f0f0fff0f0f0fff0f0f0fff0f0f00000f0f00000f0f00000f0f00000f0fffffff0fffffff0fffffff0fffffff0f> } ] def end /Fill { Filldict begin Fmap length mod dup 8 eq { pop 0 } if Farg Put Farg get 2 ge { gsave clip Msave currentmatrix gsave 1 setgray fill grestore % Opaque fills Mdots setmatrix Farg get Fpats length ge { 90 rotate } if % Rotated patterns Landscape get { 90 rotate } if pathbbox % Enclosing rectangle 3 index 2 index gt { 4 2 roll } if 2 index 1 index gt { 3 1 roll exch } if Fbits div ceiling cvi Fbits mul Fy1 Put % Ensure integral tiles Fbits div ceiling cvi Fbits mul Fx1 Put Fbits div 0.9 sub cvi Fbits mul Fy0 Put Fbits div 0.9 sub cvi Fbits mul Fx0 Put Fx0 get Fy0 get translate Fbits Fy1 get Fy0 get sub true Mbits Fpats Fmap Farg get get get Fx1 get Fx0 get sub Fbits div ceiling cvi { 5 copy imagemask Fbits 0 translate } repeat 5 { pop } repeat setmatrix grestore } { Farg get 1 eq { fill } if } ifelse end } bind def /Founts [ [ /Symbol /Symbol /Symbol /Symbol ] [ /Courier-BoldOblique /Courier /Courier-Bold /Courier-Oblique ] [ /Times-BoldItalic /Times-Roman /Times-Bold /Times-Italic ] [ /Helvetica-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique ] ] def /SYMBOL 0 def /COURIER 1 def /TIMES 2 def /HELVETICA 3 def /BoldItalic 0 def /Roman 1 def /Bold 2 def /Italic 3 def /ColourArray [ [1 1 1] % white [1 0 0] % red [1 1 0] % yellow [0 1 0] % green [0 1 1] % cyan [0 0 1] % blue [1 0 1] % magenta [0 0 0] % black [1 1 1] % white ] def % Procedures % Founts /Setfount { exch Founts exch get exch get findfont } def % ================ Uniplex WP Support ============================= WPdict begin /Selfount { Face get Style get Setfount Size get scalefont setfont } bind def /Selital { Face get Style get dup Roman eq { pop Italic } { dup Bold eq { pop BoldItalic } if } ifelse Setfount Size get scalefont setfont } bind def /Selspace { Char_W space stringwidth pop put } bind def % Painting /Box { moveto 3 { lineto } repeat closepath } bind def /Quad { 4 copy 5 -2 roll exch } bind def /Shade { setgray currentpoint fill moveto } bind def % Text /Stringshow { Char_W get space stringwidth pop sub 0 32 4 -1 roll widthshow } bind def /Textshow { 0 Shades get lt { currentpoint 2 index 1 Shades get le { % 1 <= Shades 0 setgray 0.4 0 rmoveto 2 Shades get le { % 2 <= Shades Shades get 2 sub setgray } { % 1 <= Shades < 2 Shades get 1 sub setgray currentpoint 2 index 0.3 0 rmoveto Stringshow moveto 1 setgray } ifelse Stringshow } { % 0 < Shades < 1 0 setgray gsave currentpoint newpath moveto Stringshow 2 copy currentpoint Size get dup -4 div dup 6 -1 roll add 5 1 roll 3 -1 roll add 2 1 roll add newpath Quad Box Shades get Shade grestore } ifelse newpath moveto } if 0 setgray Stringshow } bind def /Secpost (\n#postscript:) def /Secends (\n\)\)\n\f) def /Sechigh (\nHIGHT= ) def /Secwide (\nOTHER= ) def /Secnumb (\nDIGIT= ) def /Secsize (\nSIZES= ) def /Seccheq (=) def /Secstar (*) def /Seccomm (,) def /Fpad { 1 index length sub { space print } repeat print } bind def /Fval { cbuf cvcs stringwidth pop % Character width 1 in div 12000 mul % From points to 1/12000 in ceiling cvi buff cvs } bind def /Frow { Secsize 4 { print dup buff cvs 4 Fpad Seccheq print dup Fval 4 Fpad 1 add Seccomm } repeat pop } bind def /FCAP { mark Secstar newline print 40 { dup print } repeat newline print dup print space print Founts Face get get Style get get buff cvs print space print Size get buff cvs print newline print 40 { dup print } repeat pop newline print Secpost print Sechigh print Size get 72 div 48 mul ceiling cvi buff cvs 4 Fpad Secwide print 0 Fval 4 Fpad Secnumb print 48 Fval 4 Fpad 32 4 127 { Frow pop } for 160 4 255 { Frow pop } for Secends print cleartomark } bind def % Interface /SETF { Size Put Style Put Face Put Selfount Selspace } bind def /TE { dup type /stringtype eq { dup length 0 ne { 0 setgray Ulin_N get 0 eq { Textshow } { currentlinewidth exch Ulin_W get setlinewidth currentpoint 3 -1 roll Textshow currentpoint 4 2 roll Ulin_N get dup { 5 copy neg Ulin_H get mul dup 5 -1 roll add 4 1 roll add newpath moveto lineto stroke 1 sub } repeat 3 { pop } repeat moveto setlinewidth } ifelse } { pop } ifelse } if } bind def /Supscale [ 1 0 0 0.75 0 3 ] def /Subscale [ 1 0 0 0.75 0 -1 ] def /SUPS { TE currentfont Supscale makefont setfont } def /SUPE { TE Selfount } bind def /SUBS { TE currentfont Subscale makefont setfont } def /SUBE { TE Selfount } bind def /SHB { exch TE Shades Put } bind def /SHE { 0 SHB } bind def /X { dpi div in } bind def /Y { dpi div in neg } bind def /U { dpi div in exch TE 0 exch rmoveto } bind def /H { dpi div in exch TE Char_W Put } bind def /V { dpi div in exch TE neg Line_H Put } bind def /P { TE currentpoint } bind def /M { TE moveto } bind def /G { TE currentpoint newpath moveto } bind def /E { currentpoint 2 copy 2 { exch 5 -1 roll add } repeat Quad Box } bind def /N { Graf_N Put } bind def /F { Graf_N get Fill } bind def /S { 10 dup Graf_N get sub exch div Shade } bind def /B { 0 Shade } bind def /UOFF { TE Ulin_N 0 put } bind def /ULIN { TE Ulin_N 1 put } bind def /UDBL { TE Ulin_N 2 put } bind def /Newpage { Selfount Landscape get { 90 rotate 0 Page_H get neg translate } if Marg_L get Page_H get US exch pop sub translate % Assume US for graphics 0 US exch pop Marg_T get sub moveto } def /PAGE { SAVE Newpage } def /FF { TE RESTORE showpage } def /R { TE 0 currentpoint exch pop moveto } bind def /L { TE 0 Line_H get rmoveto } bind def /TIME10R { TE TIMES Roman 10 SETF } bind def /TIME10B { TE TIMES Bold 10 SETF } bind def /TIME10I { TE TIMES Italic 10 SETF } bind def /TIME08R { TE TIMES Roman 8 SETF } bind def /HELV14B { TE HELVETICA Bold 14 SETF } bind def /HELV10R { TE HELVETICA Roman 10 SETF } bind def /HELV08R { TE HELVETICA Roman 8 SETF } bind def /COUR12R { TE COURIER Roman 12 SETF } bind def /COUR08R { TE COURIER Roman 8 SETF } bind def /NORMAL { TIME10R } bind def /BOLD { TIME10B } bind def /ITALIC { TIME10I } bind def /SMALL { TIME08R } bind def /LARGE { HELV14B } bind def /PS-NORMAL { HELV10R } bind def /PS-SMALL { HELV08R } bind def /FX-NORMAL { COUR12R } bind def /FX-SMALL { COUR08R } bind def end % Uniplex Graphics Support ========================== GPdict begin /CTM matrix def % local LaserWriter path procedures ================= % x y w h rectpath - /rectpath { CTM currentmatrix 5 1 roll 4 2 roll translate exch 2 copy 0 0 0 0 8 1 roll moveto lineto lineto lineto closepath setmatrix } def % [x1 y1 .... xn yn] polypath - /polypath { /co_ords exch def % save the co_ords array co_ords length 0 gt % check length > 0 { co_ords length 2 mod 0 gt % check length is even { (%%[ Error: odd number of co-ords : polypath ]%%) print } { co_ords length 1 sub -1 0 { co_ords exch get } for % => yn xn .. y1 x1 2 copy exch moveto % move to first co_ord co_ords length 2 idiv % calculate number of points to go { exch lineto } repeat } ifelse } if } def % [x1 y1 .... xn yn] markpath - /markpath { /co_ords exch def % save the co_ords array co_ords length 0 gt % check length > 0 { co_ords length 2 mod 0 gt % check length is even { (%%[ Error: odd number of co-ords : markpath ]%%) print } { co_ords length 1 sub -1 0 { co_ords exch get } for % => yn xn .. y1 x1 2 copy exch moveto % move to first co_ord co_ords length 2 idiv % calculate number of points to go { exch moveto MarkIt } repeat % move to point and place mark } ifelse } if } def % ====================== Short Utility Routines ============================ % - FillPath - /FillPath { CFillPattern Fill } def % - MarkIt - /MarkIt { CMarkSize 0 ne { gsave CLineWidth 2 SetLineWidth % poke current line width currentpoint translate % make mark point the origin 1 setlinecap % round ends shows points! CMarkSize dup scale newpath CMarkStyle % this is the proc to draw mark 1 CMarkSize div dup scale stroke SetLineWidth % restore line width from stack grestore } if } def % ==================== RGIP/Postscript Declarations ======================= /DashArray [] % solid [] % solid [8 4] % dash [1 3] % dot [3 2 1 2] % dash dot [4 4] % dash dash [3 2 1 2 1 2] % dash dot dot [1 2 3 2 3 2] % dot dash dash [1 2] % dot dot 9 array astore def /MarkArray [ { -2 -3 moveto 2 -3 lineto -2 3 lineto 2 3 lineto closepath } % vert bow { 0 0 1 0 360 arc } % point { -3 0 moveto 3 0 lineto 0 -3 moveto 0 3 lineto } % plus { 3 { -3 0 moveto 3 0 lineto 60 rotate } repeat } % star { -3 -3 moveto 3 -3 lineto 3 3 lineto -3 3 lineto closepath } % square { 45 rotate -3 0 moveto 3 0 lineto 0 -3 moveto 0 3 lineto } % multiply { 0 -4 moveto 3 0 lineto 0 4 lineto -3 0 lineto closepath } % diamond { -3 -2 moveto -3 2 lineto 3 -2 lineto 3 2 lineto closepath } % horz bow ] def % /CTextVector 0 def % /CFillPattern 0 def % /CLineWidth 1 def % /CLineStyle 0 def % /CFontFace 1 def % /CFontType 0 def % /CFontSize 1 def % /CMarkStyle {} def % /Background 0 def /Foreground 7 def % /CColour 7 def % /Vport_x 0.5 def % viewport x co-ord % /Vport_y 0.5 def % viewport y co-ord % /Vport_w 7.0 def % viewport width % /Vport_h 7.0 def % viewport height /SWin_minx 0 def % window min x /SWin_maxx 10000 def % window max x /SWin_miny 0 def % window min y /SWin_maxy 10000 def % window max y % ====================== RGIP/Postscript commands ========================== % x y w h EraseArea - /EraseArea { newpath gsave rectpath ColourArray Background get aload pop setrgbcolor fill grestore } def % - EraseViewport - /EraseViewport { newpath gsave clippath ColourArray Background get aload pop setrgbcolor fill grestore } def % (string) TLength /TLength { length CFontSize 300 mul 7 12 div mul mul } bind def % (string) TScale /TScale { dup TLength 1 index stringwidth pop sub exch length div 0 } bind def % x y hjust (string) TextAbs - /TextAbs { 4 2 roll % => hjust (string) x y moveto % => hjust (string) dup TLength 2 div % => hjust (string) width/2 3 -1 roll % => (string) width/2 hjust gsave CTextVector rotate 3 { 2 copy 0 gt {neg 0 rmoveto 1 sub} {pop} ifelse } repeat pop pop dup TScale 3 -1 roll ashow grestore } def % angle TextBaseline - /TextBaseline { cvi 360 mod /CTextVector exch def } def % num SetLineStyle - /SetLineStyle { 9 mod abs /CLineStyle exch def [ DashArray CLineStyle get { CLineWidth 3 mul mul abs } forall ] 0 setdash } def % w SetLineWidth - /SetLineWidth { dup /CLineWidth exch def 3 mul abs setlinewidth } def % face type size SetFontStyle - /SetFontStyle { abs /CFontSize exch def Founts 0 get length mod abs /CFontType exch def Founts length mod abs /CFontFace exch def CFontFace CFontType Setfount CFontSize 300 mul scalefont setfont } def % num SetColour - /SetColour { 9 mod abs dup /CColour exch def ColourArray exch get aload pop setrgbcolor } def % num SetMarkStyle - /SetMarkStyle { MarkArray length mod abs MarkArray exch get /CMarkStyle exch def } def % size SetMarkSize - /SetMarkSize { dup 0 ne { 1 add 150 mul } if 8 div /CMarkSize exch def } def % sx sy ex ey lw lstyle lcolour LINE - /LINE { SetColour SetLineStyle SetLineWidth 4 2 roll newpath moveto lineto currentpoint stroke moveto } def % x y w h lw lstyle lcolour fstyle fcolour BOX - /BOX { 9 -4 roll newpath rectpath SetColour gsave Fill grestore SetColour SetLineStyle dup SetLineWidth 0 gt { stroke } if } def % x y msize mstyle mcolour MARK - /MARK { SetColour SetMarkStyle SetMarkSize moveto MarkIt } def % cx cy rad s_ang sweep lw lstyle lcolour fstyle fcolour SEGMENT - /SEGMENT { 10 5 roll 2 copy pop add newpath 4 index 4 index moveto arc closepath SetColour gsave Fill grestore SetColour SetLineStyle dup SetLineWidth 0 gt { stroke } if } def % cx cy rad s_ang sweep lw lstyle lcolour fstyle fcolour ARC - /ARC { 10 5 roll 2 copy pop add newpath arc SetColour gsave closepath Fill grestore SetColour SetLineStyle dup SetLineWidth 0 gt { stroke } if } def % [x1 y1 ... xn yn] lw lstyle lcolour fstyle fcolour POLY - /POLY { 6 5 roll newpath polypath SetColour gsave closepath Fill grestore SetColour SetLineStyle dup SetLineWidth 0 gt { stroke } if } def % x y hjust rot (string) face type size colour TEXT - /TEXT { SetColour SetFontStyle exch TextBaseline TextAbs } def % x y w h SetViewport - /SetViewport { /Vport_h exch def /Vport_w exch def /Vport_y exch def /Vport_x exch def grestoreall 1 in dup scale % convert to inches scale newpath Vport_x Vport_y Vport_w Vport_h rectpath clip newpath Vport_x Vport_y translate Vport_w SWin_maxx SWin_minx sub div % x scale Vport_h SWin_maxy SWin_miny sub div % y scale scale SWin_minx neg SWin_miny neg translate } def % x_min y_min x_max y_max SetWindow - /SetWindow { /SWin_maxy exch def /SWin_maxx exch def /SWin_miny exch def /SWin_minx exch def Vport_x Vport_y Vport_w Vport_h SetViewport } def % -- Initialise - /Initialise { grestoreall % set default graphics state 0.5 0.5 7.0 7.0 SetViewport 0 0 10000 10000 SetWindow 0 0 1 SetFontStyle 0 TextBaseline 1 SetLineWidth 7 SetColour 0 SetLineStyle } def Initialise end /OPEN { end save GPdict begin } bind def /CLOSE { end restore WPdict begin } bind def % - Open - /Open { OPEN } bind def % -- Close - /Close { CLOSE showpage } bind def /GB { TE gsave OPEN /Open {} def /Initialise {} def /Close {} def } bind def /GE { CLOSE grestore } bind def /DEINIT { clear end } bind def /INIT { erasepage initgraphics mark WPdict begin Face TIMES put Style Roman put Size 10 put Char_W 0 put Line_H -12 put Ulin_W 0.25 put Ulin_H 1 put Ulin_N 0 put Page_W US Page_H Put put Marg_T 0.5 in put Marg_L 0.3 in put Shades 0 put Landscape false put userdict /PAPER known { PAPER Landscape Put Marg_T Put Marg_L Put Landscape get { exch } if Page_H Put Page_W Put } if } def %%EndProlog INIT