More files!

This commit is contained in:
rsc 2004-05-15 23:45:13 +00:00
parent 36a9115fcb
commit 13f7391e4a
213 changed files with 54952 additions and 0 deletions

3
postscript/README Normal file
View file

@ -0,0 +1,3 @@
wget -O- http://pdos.lcs.mit.edu/~rsc/software/plan9/postscript.tar.gz|
gunzip|
tar xf -

19
postscript/font/NOTICE Normal file
View file

@ -0,0 +1,19 @@
This directory contains Bigelow & Holmes Lucida (R) fonts,
as licensed by Y&Y Inc. Copyright 1993 Bigelow & Holmes Inc.
P.O. Box 1432, Santa Monica, CA 90406, USA.
Y&Y LUCIDA FONT SOFTWARE LICENSE AGREEMENT
NOTICE TO USER:
No right is granted to create derivative works of or
to redistribute (other than with the Plan 9 Operating System)
the screen imprinter fonts identified in subdirectory
/lib/font/bit/lucida and printer fonts (Lucida Sans Unicode, Lucida
Sans Italic, Lucida Sans Demibold, Lucida Typewriter, Lucida Sans
Typewriter83), identified in subdirectory /sys/lib/postscript/font.
These directories contain material copyrights by B&H Inc. and Y&Y Inc.
Lucida is a registered trademark of Bigelow & Holmes Incorporated.
PostScript is a registered trademark of Adobe Systems Incorporated.

152
postscript/font/fontmap Normal file
View file

@ -0,0 +1,152 @@
LucidaSans LucidaSans
LucidaSans-Demi LucidaSans-Demi
LucidaSans-DemiItalic LucidaSans-DemiItalic
LucidaSans-Italic LucidaSans-Italic
LucidaSans-Typewriter83 LucidaSans-Typewriter83
LucidaSansUnicode00 lsunr00.pfa
LucidaSansUnicode01 lsunr01.pfa
LucidaSansUnicode02 lsunr02.pfa
LucidaSansUnicode03 lsunr03.pfa
LucidaSansUnicode04 lsunr04.pfa
LucidaSansUnicode05 lsunr05.pfa
LucidaSansUnicode20 lsunr20.pfa
LucidaSansUnicode21 lsunr21.pfa
LucidaSansUnicode22 lsunr22.pfa
LucidaSansUnicode24 lsunr24.pfa
LucidaSansUnicode25 lsunr25.pfa
LucidaTypewriter LucidaTypewriter
% alias for troff
LucidaCW LucidaTypewriter
% Postscript versions of TeX fonts
CMB10 cm/cmb10.pfa
CMBSY10 cm/cmbsy10.pfa
CMBX10 cm/cmbx10.pfa
CMBX12 cm/cmbx12.pfa
CMBX5 cm/cmbx5.pfa
CMBX6 cm/cmbx6.pfa
CMBX7 cm/cmbx7.pfa
CMBX8 cm/cmbx8.pfa
CMBX9 cm/cmbx9.pfa
CMBXSL10 cm/cmbxsl10.pfa
CMBXTI10 cm/cmbxti10.pfa
CMCSC10 cm/cmcsc10.pfa
CMDUNH10 cm/cmdunh10.pfa
CMEX10 cm/cmex10.pfa
CMFF10 cm/cmff10.pfa
CMFI10 cm/cmfi10.pfa
CMFIB8 cm/cmfib8.pfa
CMINCH cm/cminch.pfa
CMITT10 cm/cmitt10.pfa
CMMI10 cm/cmmi10.pfa
CMMI12 cm/cmmi12.pfa
CMMI5 cm/cmmi5.pfa
CMMI6 cm/cmmi6.pfa
CMMI7 cm/cmmi7.pfa
CMMI8 cm/cmmi8.pfa
CMMI9 cm/cmmi9.pfa
CMMIB10 cm/cmmib10.pfa
CMR10 cm/cmr10.pfa
CMR12 cm/cmr12.pfa
CMR17 cm/cmr17.pfa
CMR5 cm/cmr5.pfa
CMR6 cm/cmr6.pfa
CMR7 cm/cmr7.pfa
CMR8 cm/cmr8.pfa
CMR9 cm/cmr9.pfa
CMSL10 cm/cmsl10.pfa
CMSL12 cm/cmsl12.pfa
CMSL8 cm/cmsl8.pfa
CMSL9 cm/cmsl9.pfa
CMSLTT10 cm/cmsltt10.pfa
CMSS10 cm/cmss10.pfa
CMSS12 cm/cmss12.pfa
CMSS17 cm/cmss17.pfa
CMSS8 cm/cmss8.pfa
CMSS9 cm/cmss9.pfa
CMSSBX10 cm/cmssbx10.pfa
CMSSDC10 cm/cmssdc10.pfa
CMSSI10 cm/cmssi10.pfa
CMSSI12 cm/cmssi12.pfa
CMSSI17 cm/cmssi17.pfa
CMSSI8 cm/cmssi8.pfa
CMSSI9 cm/cmssi9.pfa
CMSSQ8 cm/cmssq8.pfa
CMSSQI8 cm/cmssqi8.pfa
CMSY10 cm/cmsy10.pfa
CMSY5 cm/cmsy5.pfa
CMSY6 cm/cmsy6.pfa
CMSY7 cm/cmsy7.pfa
CMSY8 cm/cmsy8.pfa
CMSY9 cm/cmsy9.pfa
CMTCSC10 cm/cmtcsc10.pfa
CMTEX10 cm/cmtex10.pfa
CMTEX8 cm/cmtex8.pfa
CMTEX9 cm/cmtex9.pfa
CMTI10 cm/cmti10.pfa
CMTI12 cm/cmti12.pfa
CMTI7 cm/cmti7.pfa
CMTI8 cm/cmti8.pfa
CMTI9 cm/cmti9.pfa
CMTT10 cm/cmtt10.pfa
CMTT12 cm/cmtt12.pfa
CMTT8 cm/cmtt8.pfa
CMTT9 cm/cmtt9.pfa
CMU10 cm/cmu10.pfa
CMVTT10 cm/cmvtt10.pfa
LASY10 cm/lasy10.pfa
LASY5 cm/lasy5.pfa
LASY6 cm/lasy6.pfa
LASY7 cm/lasy7.pfa
LASY8 cm/lasy8.pfa
LASY9 cm/lasy9.pfa
LASYB10 cm/lasyb10.pfa
LCIRCLE1 cm/lcircle1.pfa
LCIRCLEW cm/lcirclew.pfa
LCMSS8 cm/lcmss8.pfa
LCMSSB8 cm/lcmssb8.pfa
LCMSSI8 cm/lcmssi8.pfa
LINE10 cm/line10.pfa
LINEW10 cm/linew10.pfa
LOGO10 cm/logo10.pfa
LOGO8 cm/logo8.pfa
LOGO9 cm/logo9.pfa
LOGOBF10 cm/logobf10.pfa
LOGOSL10 cm/logosl10.pfa
% AMS fonts for TeX
CMBSY5 ams/cmbsy5.pfa
CMBSY7 ams/cmbsy7.pfa
CMMIB5 ams/cmmib5.pfa
CMMIB7 ams/cmmib7.pfa
EUEX10 ams/euex10.pfa
EUFB10 ams/eufb10.pfa
EUFB5 ams/eufb5.pfa
EUFB7 ams/eufb7.pfa
EUFM10 ams/eufm10.pfa
EUFM5 ams/eufm5.pfa
EUFM7 ams/eufm7.pfa
EURB10 ams/eurb10.pfa
EURB5 ams/eurb5.pfa
EURB7 ams/eurb7.pfa
EURM10 ams/eurm10.pfa
EURM5 ams/eurm5.pfa
EURM7 ams/eurm7.pfa
EUSB10 ams/eusb10.pfa
EUSB5 ams/eusb5.pfa
EUSB7 ams/eusb7.pfa
EUSM10 ams/eusm10.pfa
EUSM5 ams/eusm5.pfa
EUSM7 ams/eusm7.pfa
MSAM10 ams/msam10.pfa
MSAM5 ams/msam5.pfa
MSAM7 ams/msam7.pfa
MSBM10 ams/msbm10.pfa
MSBM5 ams/msbm5.pfa
MSBM7 ams/msbm7.pfa
WNCYB10 ams/wncyb10.pfa
WNCYI10 ams/wncyi10.pfa
WNCYR10 ams/wncyr10.pfa
WNCYSC10 ams/wncysc10.pfa
WNCYSS10 ams/wncyss10.pfa

45
postscript/font/lino Normal file
View file

@ -0,0 +1,45 @@
%
% Resident font list for Linotronics Typesetter
%
AvantGarde-Book
AvantGarde-BookOblique
AvantGarde-Demi
AvantGarde-DemiOblique
Bookman-Demi
Bookman-DemiItalic
Bookman-Light
Bookman-LightItalic
Courier
Courier-Bold
Courier-BoldOblique
Courier-Oblique
Helvetica
Helvetica-Bold
Helvetica-BoldOblique
Helvetica-Oblique
Helvetica-Narrow
Helvetica-Narrow-Oblique
Helvetica-Narrow-Bold
Helvetica-Narrow-BoldOblique
NewCenturySchlbk-Roman
NewCenturySchlbk-Italic
NewCenturySchlbk-Bold
NewCenturySchlbk-BoldItalic
Palatino-Roman
Palatino-Italic
Palatino-Bold
Palatino-BoldItalic
Symbol
Times-Bold
Times-BoldItalic
Times-Italic
Times-Roman
Universal-MathOne
Universal-MathTwo
Universal-MathThree
Universal-MathFour
Universal-MathFive
Universal-MathSix
ZapfDingbats
ZapfChancery-MediumItalic

39
postscript/font/lw+ Normal file
View file

@ -0,0 +1,39 @@
%
% Resident font list for LaserWriter plus and QMS-PS 800+
%
AvantGarde-Book
AvantGarde-BookOblique
AvantGarde-Demi
AvantGarde-DemiOblique
Bookman-Demi
Bookman-DemiItalic
Bookman-Light
Bookman-LightItalic
Courier
Courier-Bold
Courier-BoldOblique
Courier-Oblique
Helvetica
Helvetica-Bold
Helvetica-BoldOblique
Helvetica-Oblique
Helvetica-Narrow
Helvetica-Narrow-Oblique
Helvetica-Narrow-Bold
Helvetica-Narrow-BoldOblique
NewCenturySchlbk-Roman
NewCenturySchlbk-Italic
NewCenturySchlbk-Bold
NewCenturySchlbk-BoldItalic
Palatino-Roman
Palatino-Italic
Palatino-Bold
Palatino-BoldItalic
Symbol
Times-Bold
Times-BoldItalic
Times-Italic
Times-Roman
ZapfDingbats
ZapfChancery-MediumItalic

View file

@ -0,0 +1,343 @@
%
% Encoding vector, operator and procedure redefinitions for Plan 9 UTF
% encoding. Prologues are expected to take steps to ensure operator
% redefinitions given here are actually used. Current implementation
% assumes UTF byte streams that represent ASCII or Latin1 text.
%
/UTFLatin1Encoding [
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/space
/exclam
/quotedbl
/numbersign
/dollar
/percent
/ampersand
/quoteright
/parenleft
/parenright
/asterisk
/plus
/comma
/minus
/period
/slash
/zero
/one
/two
/three
/four
/five
/six
/seven
/eight
/nine
/colon
/semicolon
/less
/equal
/greater
/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
/bracketleft
/backslash
/bracketright
/asciicircum
/underscore
/quoteleft
/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
/braceleft
/bar
/braceright
/asciitilde
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/dotlessi
/grave
/acute
/circumflex
/tilde
/macron
/breve
/dotaccent
/dieresis
/.notdef
/ring
/cedilla
/.notdef
/hungarumlaut
/ogonek
/caron
/space
/exclamdown
/cent
/sterling
/currency
/yen
/brokenbar
/section
/dieresis
/copyright
/ordfeminine
/guillemotleft
/logicalnot
/hyphen
/registered
/macron
/degree
/plusminus
/twosuperior
/threesuperior
/acute
/mu
/paragraph
/periodcentered
/cedilla
/onesuperior
/ordmasculine
/guillemotright
/onequarter
/onehalf
/threequarters
/questiondown
/Agrave
/Aacute
/Acircumflex
/Atilde
/Adieresis
/Aring
/AE
/Ccedilla
/Egrave
/Eacute
/Ecircumflex
/Edieresis
/Igrave
/Iacute
/Icircumflex
/Idieresis
/Eth
/Ntilde
/Ograve
/Oacute
/Ocircumflex
/Otilde
/Odieresis
/multiply
/Oslash
/Ugrave
/Uacute
/Ucircumflex
/Udieresis
/Yacute
/Thorn
/germandbls
/agrave
/aacute
/acircumflex
/atilde
/adieresis
/aring
/ae
/ccedilla
/egrave
/eacute
/ecircumflex
/edieresis
/igrave
/iacute
/icircumflex
/idieresis
/eth
/ntilde
/ograve
/oacute
/ocircumflex
/otilde
/odieresis
/divide
/oslash
/ugrave
/uacute
/ucircumflex
/udieresis
/yacute
/thorn
/ydieresis
] def
/NewFontDirectory FontDirectory maxlength dict def
%
% Apparently no guarantee findfont is defined in systemdict so the obvious
%
% systemdict /findfont get exec
%
% can generate an error. So far the only exception is a VT600 (version 48.0).
%
userdict /@RealFindfont known not {
userdict begin
/@RealFindfont systemdict begin /findfont load end def
end
} if
/findfont {
dup NewFontDirectory exch known not {
dup
%dup systemdict /findfont get exec % not always in systemdict
dup userdict /@RealFindfont get exec
dup /Encoding get StandardEncoding eq {
dup length 1 add dict begin
{1 index /FID ne {def}{pop pop} ifelse} forall
/Encoding UTFLatin1Encoding def
/Metrics 1 dict def
Metrics /.notdef 0 put
currentdict
end
/DummyFontName exch definefont
} if
NewFontDirectory 3 1 roll put
} if
NewFontDirectory exch get
} bind def
%
% UTF string decoding for ASCII and Latin1 only:
%
% C2 XX => 00 XX
% C3 XX => XX+40 00
%
% Two passes through each string with search is undoubtedly faster than
% PostScript that examines each byte.
%
/UTFstring {
dup {
(\302) search {
pop
0 0 put
}{pop exit} ifelse
} loop
dup {
(\303) search {
pop
1 index 0 get 16#40 add 0 exch put
dup length 0 gt {dup 0 0 put} if
}{pop exit} ifelse
} loop
} bind def
/ashow {mark 4 1 roll UTFstring //ashow cvx exec cleartomark} bind def
/awidthshow {mark 7 1 roll UTFstring //awidthshow cvx exec cleartomark} bind def
/show {mark exch UTFstring //show cvx exec cleartomark} bind def
/stringwidth {UTFstring //stringwidth cvx exec} bind def
/widthshow {mark 5 1 roll UTFstring //widthshow cvx exec cleartomark} bind def
%
% kshow is harder - stack can't change because of the procedure.
%
/kshow dup load type /operatortype eq
{{UTFstring kshow} bind}
{{UTFstring //kshow cvx exec} bind}
ifelse def

View file

@ -0,0 +1,299 @@
%
% Encoding vector and redefinition of findfont for the ISO Latin1 standard.
% The 18 characters missing from ROM based fonts on older printers are noted
% below.
%
/ISOLatin1Encoding [
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/space
/exclam
/quotedbl
/numbersign
/dollar
/percent
/ampersand
/quoteright
/parenleft
/parenright
/asterisk
/plus
/comma
/minus
/period
/slash
/zero
/one
/two
/three
/four
/five
/six
/seven
/eight
/nine
/colon
/semicolon
/less
/equal
/greater
/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
/bracketleft
/backslash
/bracketright
/asciicircum
/underscore
/quoteleft
/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
/braceleft
/bar
/braceright
/asciitilde
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/dotlessi
/grave
/acute
/circumflex
/tilde
/macron
/breve
/dotaccent
/dieresis
/.notdef
/ring
/cedilla
/.notdef
/hungarumlaut
/ogonek
/caron
/space
/exclamdown
/cent
/sterling
/currency
/yen
/brokenbar % missing
/section
/dieresis
/copyright
/ordfeminine
/guillemotleft
/logicalnot
/hyphen
/registered
/macron
/degree % missing
/plusminus % missing
/twosuperior % missing
/threesuperior % missing
/acute
/mu % missing
/paragraph
/periodcentered
/cedilla
/onesuperior % missing
/ordmasculine
/guillemotright
/onequarter % missing
/onehalf % missing
/threequarters % missing
/questiondown
/Agrave
/Aacute
/Acircumflex
/Atilde
/Adieresis
/Aring
/AE
/Ccedilla
/Egrave
/Eacute
/Ecircumflex
/Edieresis
/Igrave
/Iacute
/Icircumflex
/Idieresis
/Eth % missing
/Ntilde
/Ograve
/Oacute
/Ocircumflex
/Otilde
/Odieresis
/multiply % missing
/Oslash
/Ugrave
/Uacute
/Ucircumflex
/Udieresis
/Yacute % missing
/Thorn % missing
/germandbls
/agrave
/aacute
/acircumflex
/atilde
/adieresis
/aring
/ae
/ccedilla
/egrave
/eacute
/ecircumflex
/edieresis
/igrave
/iacute
/icircumflex
/idieresis
/eth % missing
/ntilde
/ograve
/oacute
/ocircumflex
/otilde
/odieresis
/divide % missing
/oslash
/ugrave
/uacute
/ucircumflex
/udieresis
/yacute % missing
/thorn % missing
/ydieresis
] def
/NewFontDirectory FontDirectory maxlength dict def
%
% Apparently no guarantee findfont is defined in systemdict so the obvious
%
% systemdict /findfont get exec
%
% can generate an error. So far the only exception is a VT600 (version 48.0).
%
userdict /@RealFindfont known not {
userdict begin
/@RealFindfont systemdict begin /findfont load end def
end
} if
/findfont {
dup NewFontDirectory exch known not {
dup
%dup systemdict /findfont get exec % not always in systemdict
dup userdict /@RealFindfont get exec
dup /Encoding get StandardEncoding eq {
dup length dict begin
{1 index /FID ne {def}{pop pop} ifelse} forall
/Encoding ISOLatin1Encoding def
currentdict
end
/DummyFontName exch definefont
} if
NewFontDirectory 3 1 roll put
} if
NewFontDirectory exch get
} bind def

View file

@ -0,0 +1,11 @@
%
% A version of roundpage.ps that assumes a symmetric clipping path. Thanks
% to Matthijs Melchior for the suggestion.
%
/roundpagebbox {
pagebbox dup 0 get pagebbox 2 get add 2 exch put
pagebbox dup 1 get pagebbox 3 get add 3 exch put
pagebbox 0 0 put
pagebbox 1 0 put
} bind def

View file

@ -0,0 +1,332 @@
%
% Encoding vector, operator and procedure redefinitions for Plan 9 UTF
% encoding. Prologues are expected to take steps to ensure operator
% redefinitions given here are actually used. Current implementation
% assumes UTF byte streams that represent ASCII or Latin1 text.
%
/UTFLatin1Encoding [
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/space
/exclam
/quotedbl
/numbersign
/dollar
/percent
/ampersand
/quoteright
/parenleft
/parenright
/asterisk
/plus
/comma
/minus
/period
/slash
/zero
/one
/two
/three
/four
/five
/six
/seven
/eight
/nine
/colon
/semicolon
/less
/equal
/greater
/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
/bracketleft
/backslash
/bracketright
/asciicircum
/underscore
/quoteleft
/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
/braceleft
/bar
/braceright
/asciitilde
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/.notdef
/dotlessi
/grave
/acute
/circumflex
/tilde
/macron
/breve
/dotaccent
/dieresis
/.notdef
/ring
/cedilla
/.notdef
/hungarumlaut
/ogonek
/caron
/.notdef % was space
/exclamdown
/cent
/sterling
/currency
/yen
/brokenbar
/section
/dieresis
/copyright
/ordfeminine
/guillemotleft
/logicalnot
/hyphen
/registered
/macron
/degree
/plusminus
/twosuperior
/threesuperior
/acute
/mu
/paragraph
/periodcentered
/cedilla
/onesuperior
/ordmasculine
/guillemotright
/onequarter
/onehalf
/threequarters
/questiondown
/Agrave
/Aacute
/Acircumflex
/Atilde
/Adieresis
/Aring
/AE
/Ccedilla
/Egrave
/Eacute
/Ecircumflex
/Edieresis
/Igrave
/Iacute
/Icircumflex
/Idieresis
/Eth
/Ntilde
/Ograve
/Oacute
/Ocircumflex
/Otilde
/Odieresis
/multiply
/Oslash
/Ugrave
/Uacute
/Ucircumflex
/Udieresis
/Yacute
/Thorn
/germandbls
/agrave
/aacute
/acircumflex
/atilde
/adieresis
/aring
/ae
/ccedilla
/egrave
/eacute
/ecircumflex
/edieresis
/igrave
/iacute
/icircumflex
/idieresis
/eth
/ntilde
/ograve
/oacute
/ocircumflex
/otilde
/odieresis
/divide
/oslash
/ugrave
/uacute
/ucircumflex
/udieresis
/yacute
/thorn
/ydieresis
] def
/NewFontDirectory FontDirectory maxlength dict def
%
% Apparently no guarantee findfont is defined in systemdict so the obvious
%
% systemdict /findfont get exec
%
% can generate an error. So far the only exception is a VT600 (version 48.0).
%
userdict /@RealFindfont known not {
userdict begin
/@RealFindfont systemdict begin /findfont load end def
end
} if
/findfont {
dup NewFontDirectory exch known not {
dup
%dup systemdict /findfont get exec % not always in systemdict
dup userdict /@RealFindfont get exec
dup /Encoding get StandardEncoding eq {
dup length 1 add dict begin
{1 index /FID ne {def}{pop pop} ifelse} forall
/Encoding UTFLatin1Encoding def
/Metrics 1 dict def
Metrics /.notdef 0 put
currentdict
end
/DummyFontName exch definefont
} if
NewFontDirectory 3 1 roll put
} if
NewFontDirectory exch get
} bind def
%
% Assume A0, except for A0A0 which is replaced by 20A0, can be ignored.
% Works with ASCII or Latin1 because A0 has been re-encoded as a zero
% width non-printing character.
%
/UTFstring {
dup {
(\240\240) search {
pop
0 16#20 put
}{pop exit} ifelse
} loop
} bind def
/ashow {mark 4 1 roll UTFstring //ashow cvx exec cleartomark} bind def
/awidthshow {mark 7 1 roll UTFstring //awidthshow cvx exec cleartomark} bind def
/show {mark exch UTFstring //show cvx exec cleartomark} bind def
/stringwidth {UTFstring //stringwidth cvx exec} bind def
/widthshow {mark 5 1 roll UTFstring //widthshow cvx exec cleartomark} bind def
%
% kshow is harder - stack can't change because of the procedure.
%
/kshow dup load type /operatortype eq
{{UTFstring kshow} bind}
{{UTFstring //kshow cvx exec} bind}
ifelse def

127
postscript/prologues/aps.ps Normal file
View file

@ -0,0 +1,127 @@
%
% Tune things up so Linotronic output looks more like the APS-5. Pull this file
% into dpost output using the -C option. To get the best looking output run dpost
% with the -e2 option and use special font files that look like the APS tables but
% have character codes (ie. the fourth column in the width tables) appropriate for
% PostScript fonts. Widths in these tables must be for APS fonts!
%
% Start with fat versions of the stroked Courier and Courier-Oblique fonts - from
% Johnathan Shopiro.
%
/newdict /Courier findfont length dict def
/Courier findfont {
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
newdict /StrokeWidth 65 put
/Courier newdict definefont pop
/newdict /Courier-Oblique findfont length dict def
/Courier-Oblique findfont {
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
newdict /StrokeWidth 65 put
/Courier-Oblique newdict definefont pop
%
% Scaled down versions of the Helvetica font family.
%
/newdict /Helvetica findfont length dict def
/Helvetica findfont {
1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
/Helvetica newdict definefont pop
/newdict /Helvetica-Oblique findfont length dict def
/Helvetica-Oblique findfont {
1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
/Helvetica-Oblique newdict definefont pop
/newdict /Helvetica-Bold findfont length dict def
/Helvetica-Bold findfont {
1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
/Helvetica-Bold newdict definefont pop
/newdict /Helvetica-BoldOblique findfont length dict def
/Helvetica-BoldOblique findfont {
1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
/Helvetica-BoldOblique newdict definefont pop
%
% Scaled up versions of the Times font family.
%
/newdict /Times-Roman findfont length dict def
/Times-Roman findfont {
1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
/Times-Roman newdict definefont pop
/newdict /Times-Italic findfont length dict def
/Times-Italic findfont {
1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
/Times-Italic newdict definefont pop
/newdict /Times-Bold findfont length dict def
/Times-Bold findfont {
1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
/Times-Bold newdict definefont pop
/newdict /Times-BoldItalic findfont length dict def
/Times-BoldItalic findfont {
1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
/Times-BoldItalic newdict definefont pop

View file

@ -0,0 +1,40 @@
%
% Simple program to print a banner page
%
/banner {
/saveobj save def
erasepage initgraphics
/#copies 1 def
/inch {72 mul} bind def
/pagebbox [clippath pathbbox newpath] def
/font /Helvetica def
/size 20 def
/height pagebbox 3 get def
/width pagebbox 2 get .09 mul def
.92 setgray
pagebbox 0 get pagebbox 1 get moveto
width 0 rlineto 0 height rlineto width neg 0 rlineto closepath eofill
pagebbox 2 get pagebbox 1 get moveto
width neg 0 rlineto 0 height rlineto width 0 rlineto closepath eofill
0 setgray
font findfont size scalefont setfont
/linesp size size .15 mul add neg def
/tab (Destination) stringwidth pop 1.5 mul def
/nextline {0 0 moveto show tab 0 moveto show 0 linesp translate} def
pagebbox 0 get 1.5 width mul add pagebbox 3 get 2.0 width mul sub translate
(Bin) nextline
(Name) nextline
(Owner) nextline
(File) nextline
(Account) nextline
(Destination) nextline
(Spooldate) nextline
showpage
saveobj restore
} bind def

View file

@ -0,0 +1,156 @@
%
% Stuff used to draw or set text along a baseline specified by parametric equations
% for x and y.
%
/left -1 def
/center 0 def
/right 1 def
/baselinedict 50 dict def
/newbaseline {
baselinedict begin
/g' exch bind def
/f' exch bind def
/g exch bind def
/f exch bind def
counttomark 2 eq {/hoffset exch def} if
/res exch def
/t 0 def
/s 0 def
/voffset false def
cleartomark
end
} bind def
/drawfunnytext {
baselinedict begin
/t exch def
/mode exch def
/str exch def
mode left eq {
/leftstring emptystring def
/rightstring str def
} if
mode right eq {
/leftstring str reversestring def
/rightstring emptystring def
} if
mode center eq {
str splitstring
/rightstring exch def
/leftstring exch reversestring def
} if
gsave currentpoint translate leftstring left t baselineshow grestore
gsave currentpoint translate rightstring right t baselineshow grestore
/t 0 def
/s 0 def
/voffset false def
cleartomark
end
} bind def
/setfunnytext {
baselinedict begin
/vpos exch def
/hpos exch def
/str exch def
voffset vpos ne {
/voffset vpos def
/t 0 def
/s hoffset def
} if
gsave
hoffset voffset translate
0 0 moveto
/ds hpos s sub def
/dt ds t f' dup mul t g' dup mul add sqrt res mul div def
/s s ds add def
/t t dt add def
str right t baselineshow
grestore
end
} bind def
baselinedict begin
/f {} bind def
/g {pop 0} bind def
/f' {pop 1} bind def
/g' {pop 0} bind def
/s 0 def
/t 0 def
/res 72 def
/onecharstring ( ) def
/emptystring () def
/baselineshow {
/t exch def
/mode exch def
/str exch def
gsave
t f res mul t g res mul translate
0 0 moveto
t g' t f' atan rotate
{
mode right eq {pop} if
grestore gsave
onecharstring 0 3 -1 roll put onecharstring stringwidth pop
/ds exch mode mul def
/dt ds t f' dup mul t g' dup mul add sqrt res mul div def
/t t dt add def
/s s ds add def
t f res mul t g res mul translate
0 0 moveto
t g' t f' atan rotate
mode left eq {pop} if
} str kshow
grestore
} bind def
/reversestring {
/str1 exch def
/str2 str1 length string def
/i 0 def
/n str1 length 1 sub def
{
str1 n get str2 exch i exch put
/i i 1 add def
/n n 1 sub def
n 0 lt {exit} if
} loop
str2
} bind def
/splitstring {
/str1 exch def
/len str1 stringwidth pop def
/s 0 def
/n 0 def
str1 length {
str1 n get onecharstring exch 0 exch put
/s onecharstring stringwidth pop s add def
s len 2 div ge {exit} if
/n n 1 add def
} repeat
str1 0 n 1 add getinterval
str1 n str1 length n sub getinterval
} bind def
end

View file

@ -0,0 +1,65 @@
%
% Color and reverse video support for dpost. A call made to setcolor with two
% arguments implies reverse video printing.
%
/rgb {setrgbcolor} bind def
/hsb {sethsbcolor} bind def
/colordict 50 dict dup begin
/red { 1 0 0 } def
/green { 0 1 0 } def
/blue { 0 0 1 } def
/cyan { 0 1 1 } def
/magenta { 1 0 1 } def
/yellow { 1 1 0 } def
/white { 1 1 1 } def
/black { 0 0 0 } def
end def
/setcolor {
counttomark 1 eq {
dup colordict exch known not {pop /black} if
colordict exch get exec setrgbcolor
} if
counttomark 2 eq {
/backcolor exch def
/textcolor exch def
colordict backcolor known not colordict textcolor known not or {
/backcolor colordict /black get def
/textcolor colordict /white get def
} if
/backcolor colordict backcolor get def
/textcolor colordict textcolor get def
/dY1 0 def
/dY2 0 def
textcolor exec setrgbcolor
} if
} bind def
/drawrvbox {
/x2 exch def
/x1 exch def
currentpoint dup
/y1 exch def
/y2 exch def pop
dY1 0 eq dY2 0 eq and {
currentfont /FontBBox get aload pop
currentfont /FontMatrix get dtransform /dY2 exch def pop
currentfont /FontMatrix get dtransform /dY1 exch def pop
} if
/y1 y1 dY1 add def
/y2 y2 dY2 add def
backcolor exec setrgbcolor
newpath
x1 y1 moveto
x2 y1 lineto
x2 y2 lineto
x1 y2 lineto
closepath fill
textcolor exec setrgbcolor
} bind def

View file

@ -0,0 +1,131 @@
%
% Center pages, based on pageheight and pagewidth, and redefine showpage
% to put cropmarks at each corner. Device dependent code to expand the
% paper size goes in procedure expandpagesize. Currently only supports
% a Linotronic 200P typesetter using 12 inch wide paper. You'll have to
% add code to expandpagesize to support different typesetters or even a
% 200P that's running differently.
%
/CropmarkDict 40 dict dup begin
/expandpage true def
/magnification 1 def
/pageheight 11.0 def
/pagewidth 8.5 def
/scaletofit false def
/scaling 1 def
/marklength .3 def % inches
/markstart .125 def % inches
/markend .04 def % inches
/marklinewidth .25 def % points
/inch {72 mul} def
/min {2 copy gt {exch} if pop} def
/max {2 copy lt {exch} if pop} def
/setup {
/markspace markstart marklength add markend add inch marklinewidth add def
/totalheight pageheight inch markspace 2 mul add def
/totalwidth pagewidth inch markspace 2 mul add def
pagedimensions
checkpagesize
/scaling getscaling def
xcenter ycenter translate
scaling scaling scale
pagewidth inch 2 div neg pageheight inch 2 div neg translate
clippage
} def
/pagedimensions {
clippath pathbbox newpath
4 -1 roll exch 4 1 roll 4 copy
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
} def
/checkpagesize {
height totalheight lt width totalwidth lt or expandpage and {
expandpagesize
pagedimensions
} if
} def
/expandpagesize { % device dependent code
/Product statusdict begin /product where {pop product}{()} ifelse end def
Product (Linotype) eq { % Linotronic 200P and other models?
statusdict /setpageparams known {
/maxwidth 12.0 inch def % 12 inch wide paper?
totalheight maxwidth le {
totalheight
totalwidth
maxwidth totalheight sub 2 div
0
}{
totalwidth maxwidth min
totalheight
maxwidth totalwidth maxwidth min sub 2 div
1
} ifelse
statusdict /setpageparams get exec
} if
} if
} def
/getscaling {
scaletofit
{height totalheight div width totalwidth div min 1 min}
{1}
ifelse
} def
/clippage {
newpath
0 0 moveto
pagewidth inch 0 rlineto
0 pageheight inch rlineto
pagewidth neg inch 0 rlineto
closepath clip
newpath
} def
/cropmark {
gsave
translate
rotate
marklinewidth dup translate
0 0 transform round exch round exch itransform translate
markstart inch 0 moveto marklength inch 0 rlineto stroke
0 markstart inch moveto 0 marklength inch rlineto stroke
grestore
} bind def
/@PreviousShowpage /showpage load def
end def
%
% Cropmarks - in the default coordinate system.
%
/showpage {
gsave
CropmarkDict begin
initgraphics
marklinewidth setlinewidth
xcenter ycenter translate
scaling scaling scale
0 pagewidth inch 2 div pageheight inch 2 div cropmark
90 pagewidth inch neg 2 div pageheight inch 2 div cropmark
180 pagewidth inch neg 2 div pageheight inch 2 div neg cropmark
270 pagewidth inch 2 div pageheight inch 2 div neg cropmark
@PreviousShowpage
end
grestore
} bind def

View file

@ -0,0 +1,197 @@
%
% Version 3.3.2 prologue for troff files.
%
/#copies 1 store
/aspectratio 1 def
/formsperpage 1 def
/landscape false def
/linewidth .3 def
/magnification 1 def
/margin 0 def
/orientation 0 def
/resolution 720 def
/rotation 1 def
/xoffset 0 def
/yoffset 0 def
/roundpage true def
/useclippath true def
/pagebbox [0 0 612 792] def
/R /Times-Roman def
/I /Times-Italic def
/B /Times-Bold def
/BI /Times-BoldItalic def
/H /Helvetica def
/HI /Helvetica-Oblique def
/HB /Helvetica-Bold def
/HX /Helvetica-BoldOblique def
/CW /Courier def
/CO /Courier def
/CI /Courier-Oblique def
/CB /Courier-Bold def
/CX /Courier-BoldOblique def
/PA /Palatino-Roman def
/PI /Palatino-Italic def
/PB /Palatino-Bold def
/PX /Palatino-BoldItalic def
/Hr /Helvetica-Narrow def
/Hi /Helvetica-Narrow-Oblique def
/Hb /Helvetica-Narrow-Bold def
/Hx /Helvetica-Narrow-BoldOblique def
/KR /Bookman-Light def
/KI /Bookman-LightItalic def
/KB /Bookman-Demi def
/KX /Bookman-DemiItalic def
/AR /AvantGarde-Book def
/AI /AvantGarde-BookOblique def
/AB /AvantGarde-Demi def
/AX /AvantGarde-DemiOblique def
/NR /NewCenturySchlbk-Roman def
/NI /NewCenturySchlbk-Italic def
/NB /NewCenturySchlbk-Bold def
/NX /NewCenturySchlbk-BoldItalic def
/ZD /ZapfDingbats def
/ZI /ZapfChancery-MediumItalic def
/S /S def
/S1 /S1 def
/GR /Symbol def
/inch {72 mul} bind def
/min {2 copy gt {exch} if pop} bind def
/setup {
counttomark 2 idiv {def} repeat pop
landscape {/orientation 90 orientation add def} if
/scaling 72 resolution div def
linewidth setlinewidth
1 setlinecap
pagedimensions
xcenter ycenter translate
orientation rotation mul rotate
width 2 div neg height 2 div translate
xoffset inch yoffset inch neg translate
margin 2 div dup neg translate
magnification dup aspectratio mul scale
scaling scaling scale
addmetrics
0 0 moveto
} def
/pagedimensions {
useclippath userdict /gotpagebbox known not and {
/pagebbox [clippath pathbbox newpath] def
roundpage currentdict /roundpagebbox known and {roundpagebbox} if
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
userdict /gotpagebbox true put
} def
/addmetrics {
/Symbol /S null Sdefs cf
/Times-Roman /S1 StandardEncoding dup length array copy S1defs cf
} def
/pagesetup {
/page exch def
currentdict /pagedict known currentdict page known and {
page load pagedict exch get cvx exec
} if
} def
/decodingdefs [
{counttomark 2 idiv {y moveto show} repeat}
{neg /y exch def counttomark 2 idiv {y moveto show} repeat}
{neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat}
{neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat}
{counttomark 2 idiv {y moveto show} repeat}
{neg setfunnytext}
] def
/setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def
/w {neg moveto show} bind def
/m {neg dup /y exch def moveto} bind def
/done {/lastpage where {pop lastpage} if} def
/f {
dup /font exch def findfont exch
dup /ptsize exch def scaling div dup /size exch def scalefont setfont
linewidth ptsize mul scaling 10 mul div setlinewidth
/spacewidth ( ) stringwidth pop def
} bind def
/changefont {
/fontheight exch def
/fontslant exch def
currentfont [
1 0
fontheight ptsize div fontslant sin mul fontslant cos div
fontheight ptsize div
0 0
] makefont setfont
} bind def
/sf {f} bind def
/cf {
dup length 2 idiv
/entries exch def
/chtab exch def
/newencoding exch def
/newfont exch def
findfont dup length 1 add dict
/newdict exch def
{1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall
newencoding type /arraytype eq {newdict /Encoding newencoding put} if
newdict /Metrics entries dict put
newdict /Metrics get
begin
chtab aload pop
1 1 entries {pop def} for
newfont newdict definefont pop
end
} bind def
%
% A few arrays used to adjust reference points and character widths in some
% of the printer resident fonts. If square roots are too high try changing
% the lines describing /radical and /radicalex to,
%
% /radical [0 -75 550 0]
% /radicalex [-50 -75 500 0]
%
% Move braceleftbt a bit - default PostScript character is off a bit.
%
/Sdefs [
/bracketlefttp [201 500]
/bracketleftbt [201 500]
/bracketrighttp [-81 380]
/bracketrightbt [-83 380]
/braceleftbt [203 490]
/bracketrightex [220 -125 500 0]
/radical [0 0 550 0]
/radicalex [-50 0 500 0]
/parenleftex [-20 -170 0 0]
/integral [100 -50 500 0]
/infinity [10 -75 730 0]
] def
/S1defs [
/underscore [0 80 500 0]
/endash [7 90 650 0]
] def

View file

@ -0,0 +1,76 @@
%
% Version 3.3.2 drawing procedures for dpost. Automatically pulled in when
% needed.
%
/inpath false def
/savematrix matrix def
/Dl {
inpath
{neg lineto pop pop}
{newpath neg moveto neg lineto stroke}
ifelse
} bind def
/De {
/y1 exch 2 div def
/x1 exch 2 div def
/savematrix savematrix currentmatrix def
neg exch x1 add exch translate
x1 y1 scale
0 0 1 0 360
inpath
{1 0 moveto arc savematrix setmatrix}
{newpath arc savematrix setmatrix stroke}
ifelse
} bind def
/Da {
/dy2 exch def
/dx2 exch def
/dy1 exch def
/dx1 exch def
dy1 add neg exch dx1 add exch
dx1 dx1 mul dy1 dy1 mul add sqrt
dy1 dx1 neg atan
dy2 neg dx2 atan
inpath
{arc}
{newpath arc stroke}
ifelse
} bind def
/DA {
/dy2 exch def
/dx2 exch def
/dy1 exch def
/dx1 exch def
dy1 add neg exch dx1 add exch
dx1 dx1 mul dy1 dy1 mul add sqrt
dy1 dx1 neg atan
dy2 neg dx2 atan
inpath
{arcn}
{newpath arcn stroke}
ifelse
} bind def
/Ds {
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 5 x1 mul add 6 div
y0 5 y1 mul add -6 div
x2 5 x1 mul add 6 div
y2 5 y1 mul add -6 div
x1 x2 add 2 div
y1 y2 add -2 div
inpath
{curveto}
{newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke}
ifelse
} bind def

View file

@ -0,0 +1,4 @@
%!PS-Adobe-3.0
statusdict /setduplexmode known {
statusdict begin true setduplexmode end
} if

View file

@ -0,0 +1,26 @@
%
% Fat versions of the stroked Courier and Courier-Oblique - from Johnathan Shopiro.
% Can be selectively pulled in using the -C option that's available with all the
% PostScript translators or permanently added to any of the prologues. Helps on
% Linotronic typesetters, where Courier and Courier-Oblique are too light!
%
/newdict /Courier findfont length 1 add dict def
/Courier findfont {
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
newdict /StrokeWidth 60 put
/Courier newdict definefont pop
/newdict /Courier-Oblique findfont length 1 add dict def
/Courier-Oblique findfont {
1 index /FID ne
{newdict 3 1 roll put}
{pop pop}
ifelse
} forall
newdict /StrokeWidth 60 put
/Courier-Oblique newdict definefont pop

View file

@ -0,0 +1,213 @@
%
% Procedures that let you print any number of pages on each sheet of paper. It's
% far from perfect and won't handle everything (eg. it's not recursive), but should
% be good enough for now. Assumes the default page coordinate system has been set
% up before setupforms is called. lastpage makes certain the last page is printed,
% and should be called immediately after the %%Trailer comment.
%
% Three lines of code needed for page image clipping have been commented out for
% now. It works, but can really slow things down on some versions of PostScript.
% Uncomment them if you want to clip pages.
%
/setupforms {
/formsperpage exch def
/currentform 0 def
/slop 5 def
/min {2 copy gt {exch} if pop} def
%
% Save the current environment so the real showpage can be restored when we're all
% done. Occasionally helps when a banner page is included with the job.
%
/saveobj save def
%
% Number of rows and columns we'll need - may exchange them later.
%
/columns formsperpage sqrt ceiling cvi def
/rows formsperpage columns div ceiling cvi def
%
% Slop leaves a little room around the edge so page images can be outlined and have
% the borders show up. Distance is in default coordinates, so we need to figure out
% how it maps into user coordinates.
%
6 array defaultmatrix
6 array currentmatrix
6 array invertmatrix
6 array concatmatrix
/tempmatrix exch def
0 slop tempmatrix dtransform dup mul exch dup mul add sqrt
/slop exch def
%
% Determine how big the image area is, using the clipping path bounding box minus
% a little and leave the coordinates of the lower left corner of the clipping path
% on the stack. Also temporarily set the size of each page (ie. formheight and
% formwidth) from the clipping path - just in case old software uses this stuff.
% Only works for coordinate systems that have been rotated by a multiple of 90
% degrees.
%
newpath clippath pathbbox
2 index sub dup /formheight exch def slop 2 mul sub /pageheight exch def
2 index sub dup /formwidth exch def slop 2 mul sub /pagewidth exch def
%
% New translators all store the size of each page in default coordinates in the
% pagebbox array and it can be different than the size determined by the clipping
% path. If we can find pagebbox use it to set the real dimensions of each page.
% Leaves the coordinates of the lower left corner on the stack, (either from
% pagebbox or clippath) so four numbers are there when we're done.
%
userdict /gotpagebbox known userdict /pagebbox known and {
newpath
pagebbox 0 get pagebbox 1 get tempmatrix transform moveto
pagebbox 0 get pagebbox 3 get tempmatrix transform lineto
pagebbox 2 get pagebbox 3 get tempmatrix transform lineto
pagebbox 2 get pagebbox 1 get tempmatrix transform lineto
closepath pathbbox
2 index sub /formheight exch def
2 index sub /formwidth exch def
} {2 copy} ifelse
%
% Top two numbers are the displacement from the job's origin to the lower left
% corner of each page image when we finish setting up the new coordinate system.
%
/ycorner exch def
/xcorner exch def
%
% The two numbers left on the stack are the coordinates of the lower left corner
% of the clipping path. Go there and then up a bit so page images can be outlined.
%
translate
slop slop translate
%
% If the page is wider than high we may be able to do better if we exchange rows
% and columns. Won't make a difference in the current orientation or if rows and
% columns are the same.
%
pagewidth pageheight gt {
rows columns /rows exch def /columns exch def
} if
%
% Find the orientation and scaling that makes things as large as possible. More
% than what's really needed. First calculation essentially finds the minimum of
% 1/rows and 1/columns.
%
pagewidth formwidth columns mul div pageheight formheight rows mul div min
pageheight formwidth columns mul div pagewidth formheight rows mul div min
2 copy lt {
rotation 1 eq {
landscape {
0 pageheight translate
-90 rotate
}{
pagewidth 0 translate
90 rotate
} ifelse
}{
landscape {
pagewidth 0 translate
90 rotate
}{
0 pageheight translate
-90 rotate
} ifelse
} ifelse
pagewidth pageheight /pagewidth exch def /pageheight exch def
exch
} if
%
% Second number from the top is the best choice. Scale so everything will fit on
% the current page, go back to the original origin, and then get ready for the
% first page - which goes in the upper left corner.
%
pop dup dup scale
xcorner neg ycorner neg translate
0 rows 1 sub formheight mul translate
%
% Try to center everything on the page - scaling we used is on top of the stack.
%
dup pagewidth exch div formwidth columns mul sub 2 div
exch pageheight exch div formheight rows mul sub 2 div translate
%
% Redefine showpage.
%
/!PreForms~showpage~ /showpage load def % save current showpage
/showpage {
saveobj restore
% initclip
formsperpage 1 gt {
gsave .1 setlinewidth outlineform stroke grestore
} if
formwidth 0 translate
/currentform currentform 1 add def
currentform columns mod 0 eq {
columns formwidth mul neg formheight neg translate
} if
currentform formsperpage mod 0 eq {
gsave !PreForms~showpage~ grestore
currentform columns mod formwidth mul neg
formsperpage columns idiv formheight mul translate
/currentform 0 def
} if
% outlineform clip newpath
/saveobj save def
} bind def
/outlineform {
newpath
xcorner ycorner moveto
formwidth 0 rlineto
0 formheight rlineto
formwidth neg 0 rlineto
closepath
} bind def
/lastpage {
formsperpage 1 gt {
currentform 0 ne {
/saveobj save def
0 1 formsperpage currentform sub formsperpage mod {
pop showpage
} for
saveobj restore
} if
saveobj restore
saveobj restore
} if
} def
%
% Clip the first page image and save the environment we just set up, including
% the redefined showpage.
%
% outlineform clip
newpath
/saveobj save def
} def

View file

@ -0,0 +1,522 @@
%
% Dump a PostScript object, occasionally in a form that can be sent back
% through the interpreter. Similiar to Adobe's == procedure, but output
% is usually easier to read. No binding so operators like rcheck and exec
% can be conviently redefined.
%
/GrabitDict 100 dict dup begin
/recursive true def
/scratchstring 200 string def
/slowdown 100 def
/column 0 def
/lastcolumn 80 def
/level 0 def
/multiline 100 array def
/nextname 0 def
/arraylength 0 def
/lengthonly false def
/GrabitSetup {
counttomark {OmitNames exch true put} repeat pop
0 0 moveto % for hardcopy output
} def
/OmitNames 30 dict def % ignore these names
/OtherDicts 200 dict def % unrecognized dictionaries
%
% All strings returned to the host go through Print. First pass through an
% array has lengthonly set to true.
%
/Print {
dup type /stringtype ne {scratchstring cvs} if
lengthonly {
length arraylength add /arraylength exch def
}{
dup length column add /column exch def
print flush
slowdown {1 pop} repeat
} ifelse
} def
/Indent {level {( ) Print} repeat} def
/Newline {(\n) Print lengthonly not {/column 0 def} if} def
/NextLevel {/level level 1 add def multiline level 0 put} def
/LastLevel {/level level 1 sub def} def
%
% Make a unique name for each unrecognized dictionary and remember the name
% and dictionary in OtherDicts.
%
/Register {
dup type /dicttype eq {
/nextname nextname 1 add def
dup (UnknownDict ) dup
(UnknownDict) length nextname ( ) cvs putinterval
0 (UnknownDict) length nextname ( ) cvs length add getinterval cvn
exch OtherDicts 3 1 roll put
} if
} def
%
% Replace array or dictionary values by known names. Lookups are in the
% standard PostScript dictionaries and in OtherDicts. If found replace
% the value by the name and make it executable so nametype omits the
% leading /.
%
/Replace {
false
1 index type /dicttype eq {pop true} if
1 index type /arraytype eq 2 index xcheck not and {pop true} if
{
false
[userdict systemdict statusdict serverdict OtherDicts] {
{
3 index eq
{exch pop exch pop cvx true exit}
{pop}
ifelse
} forall
dup {exit} if
} forall
pop
} if
} def
%
% Simple type handlers. In some cases (e.g. savetype) what's returned can't
% be sent back through the interpreter.
%
/booleantype {{(true )}{(false )} ifelse Print} def
/marktype {pop (mark ) Print} def
/nulltype {pop (null ) Print} def
/integertype {Print ( ) Print} def
/realtype {Print ( ) Print} def
/filetype {pop (-file- ) Print} def
/fonttype {pop (-fontID- ) Print} def
/savetype {pop (-saveobj- ) Print} def
%
% Special formatting for operators is enabled if the flag in multiline
% (for the current level) is set to 1. In that case each operator, after
% being printed, is looked up in OperatorDict. If found the value is used
% as an index into the OperatorProcs array and the object at that index
% is retrieved and executed. Currently only used to choose the operators
% that end a line.
%
/operatortype {
dup Print ( ) Print
multiline level get 1 eq {
scratchstring cvs cvn dup OperatorDict exch known {
OperatorDict exch get
OperatorProcs exch get exec
}{
pop
column lastcolumn gt {Newline Indent} if
} ifelse
}{pop} ifelse
} def
%
% Executable names are passed to operatortype. Non-executable names get a
% leading /.
%
/nametype {
dup xcheck {
operatortype
}{
(/) Print Print ( ) Print
} ifelse
} def
%
% Arrays are processed in two passes. The first computes the length of the
% string returned to the host without any special formatting. If it extends
% past the last column special formatting is enabled by setting a flag in
% array multiline. Arrays are processed in a for loop so the last element
% easily recognized. At that point special fortmatting is disabled.
%
/packedarraytype {arraytype} def
/arraytype {
NextLevel
lengthonly not {
/lengthonly true def
/arraylength 0 def
dup dup type exec
arraylength 20 gt arraylength column add lastcolumn gt and {
multiline level 1 put
} if
/lengthonly false def
} if
dup rcheck not {
(-array- ) Print pop
}{
dup xcheck {({)}{([)} ifelse Print
multiline level get 0 ne {Newline Indent}{( ) Print} ifelse
0 1 2 index length 1 sub {
2 copy exch length 1 sub eq multiline level get 1 eq and {
multiline level 2 put
} if
2 copy get exch pop
dup type /dicttype eq {
Replace
dup type /dicttype eq {
dup Register Replace
recursive {
2 copy cvlit
/def load 3 1 roll
count 3 roll
} if
exch pop
} if
} if
dup type exec
dup xcheck not multiline level get 1 eq and {
0 index type /arraytype eq
1 index type /packedarray eq or
1 index type /stringtype eq or {Newline Indent} if
} if
} for
multiline level get 0 ne {Newline LastLevel Indent NextLevel} if
xcheck {(} )}{(] )} ifelse Print
} ifelse
LastLevel
} def
%
% Dictionary handler. Try to replace the value by a name before processing
% the dictionary.
%
/dicttype {
dup
rcheck not {
(-dictionary- ) Print pop
}{
dup maxlength Print ( dict dup begin) Print Newline
NextLevel
{
1 index OmitNames exch known {
pop pop
}{
Indent
Replace % arrays and dicts by known names
Register % new dictionaries in OtherDicts
exch
cvlit dup type exec % key first - force a /
dup type exec % then the value
(def) Print Newline
} ifelse
} forall
LastLevel
Indent
(end ) Print
} ifelse
} def
%
% Strings containing characters not in AsciiDict are returned in hex. All
% others are ASCII strings and use AsciiDict for character mapping.
%
/onecharstring ( ) def
/twocharstring ( ) def
/stringtype {
dup
rcheck not {
(-string- ) Print
}{
/hexit false def
dup {
onecharstring 0 3 -1 roll put
AsciiDict onecharstring cvn known not {
/hexit true def exit
} if
} forall
hexit {(<)}{(\()} ifelse Print
0 1 2 index length 1 sub {
2 copy 1 getinterval exch pop
hexit {
0 get /n exch def
n -4 bitshift 16#F and 16 twocharstring cvrs pop
n 16#F and twocharstring 1 1 getinterval 16 exch cvrs pop
twocharstring
}{cvn AsciiDict exch get} ifelse
Print
column lastcolumn gt {
hexit not {(\\) Print} if
Newline
} if
} for
hexit {(> )}{(\) )} ifelse Print
} ifelse
pop
} def
%
% ASCII characters and replacement strings. Ensures the returned string will
% reproduce the original when passed through the scanner. Strings containing
% characters not in this list should be returned as hex strings.
%
/AsciiDict 128 dict dup begin
(\n) cvn (\\n) def
(\r) cvn (\\r) def
(\t) cvn (\\t) def
(\b) cvn (\\b) def
(\f) cvn (\\f) def
( ) cvn ( ) def
(!) cvn (!) def
(") cvn (") def
(#) cvn (#) def
($) cvn ($) def
(%) cvn (\\%) def
(&) cvn (&) def
(') cvn (') def
(\() cvn (\\\() def
(\)) cvn (\\\)) def
(*) cvn (*) def
(+) cvn (+) def
(,) cvn (,) def
(-) cvn (-) def
(.) cvn (.) def
(/) cvn (/) def
(0) cvn (0) def
(1) cvn (1) def
(2) cvn (2) def
(3) cvn (3) def
(4) cvn (4) def
(5) cvn (5) def
(6) cvn (6) def
(7) cvn (7) def
(8) cvn (8) def
(9) cvn (9) def
(:) cvn (:) def
(;) cvn (;) def
(<) cvn (<) def
(=) cvn (=) def
(>) cvn (>) def
(?) cvn (?) def
(@) cvn (@) def
(A) cvn (A) def
(B) cvn (B) def
(C) cvn (C) def
(D) cvn (D) def
(E) cvn (E) def
(F) cvn (F) def
(G) cvn (G) def
(H) cvn (H) def
(I) cvn (I) def
(J) cvn (J) def
(K) cvn (K) def
(L) cvn (L) def
(M) cvn (M) def
(N) cvn (N) def
(O) cvn (O) def
(P) cvn (P) def
(Q) cvn (Q) def
(R) cvn (R) def
(S) cvn (S) def
(T) cvn (T) def
(U) cvn (U) def
(V) cvn (V) def
(W) cvn (W) def
(X) cvn (X) def
(Y) cvn (Y) def
(Z) cvn (Z) def
([) cvn ([) def
(\\) cvn (\\\\) def
(]) cvn (]) def
(^) cvn (^) def
(_) cvn (_) def
(`) cvn (`) def
(a) cvn (a) def
(b) cvn (b) def
(c) cvn (c) def
(d) cvn (d) def
(e) cvn (e) def
(f) cvn (f) def
(g) cvn (g) def
(h) cvn (h) def
(i) cvn (i) def
(j) cvn (j) def
(k) cvn (k) def
(l) cvn (l) def
(m) cvn (m) def
(n) cvn (n) def
(o) cvn (o) def
(p) cvn (p) def
(q) cvn (q) def
(r) cvn (r) def
(s) cvn (s) def
(t) cvn (t) def
(u) cvn (u) def
(v) cvn (v) def
(w) cvn (w) def
(x) cvn (x) def
(y) cvn (y) def
(z) cvn (z) def
({) cvn ({) def
(|) cvn (|) def
(}) cvn (}) def
(~) cvn (~) def
end def
%
% OperatorDict can help format procedure listings. The value assigned to each
% name is used as an index into the OperatorProcs array. The procedure at that
% index is fetched and executed after the named operator is printed. What's in
% OperatorDict is a matter of taste rather than correctness. The default list
% represents our choice of which of Adobe's operators should end a line.
%
/OperatorProcs [{} {Newline Indent}] def
/OperatorDict 250 dict def
OperatorDict /arc 1 put
OperatorDict /arcn 1 put
OperatorDict /ashow 1 put
OperatorDict /awidthshow 1 put
OperatorDict /banddevice 1 put
OperatorDict /begin 1 put
OperatorDict /charpath 1 put
OperatorDict /clear 1 put
OperatorDict /cleardictstack 1 put
OperatorDict /cleartomark 1 put
OperatorDict /clip 1 put
OperatorDict /clippath 1 put
OperatorDict /closefile 1 put
OperatorDict /closepath 1 put
OperatorDict /concat 1 put
OperatorDict /copypage 1 put
OperatorDict /curveto 1 put
OperatorDict /def 1 put
OperatorDict /end 1 put
OperatorDict /eoclip 1 put
OperatorDict /eofill 1 put
OperatorDict /erasepage 1 put
OperatorDict /exec 1 put
OperatorDict /exit 1 put
OperatorDict /fill 1 put
OperatorDict /flattenpath 1 put
OperatorDict /flush 1 put
OperatorDict /flushfile 1 put
OperatorDict /for 1 put
OperatorDict /forall 1 put
OperatorDict /framedevice 1 put
OperatorDict /grestore 1 put
OperatorDict /grestoreall 1 put
OperatorDict /gsave 1 put
OperatorDict /handleerror 1 put
OperatorDict /if 1 put
OperatorDict /ifelse 1 put
OperatorDict /image 1 put
OperatorDict /imagemask 1 put
OperatorDict /initclip 1 put
OperatorDict /initgraphics 1 put
OperatorDict /initmatrix 1 put
OperatorDict /kshow 1 put
OperatorDict /lineto 1 put
OperatorDict /loop 1 put
OperatorDict /moveto 1 put
OperatorDict /newpath 1 put
OperatorDict /nulldevice 1 put
OperatorDict /pathforall 1 put
OperatorDict /print 1 put
OperatorDict /prompt 1 put
OperatorDict /put 1 put
OperatorDict /putinterval 1 put
OperatorDict /quit 1 put
OperatorDict /rcurveto 1 put
OperatorDict /renderbands 1 put
OperatorDict /repeat 1 put
OperatorDict /resetfile 1 put
OperatorDict /restore 1 put
OperatorDict /reversepath 1 put
OperatorDict /rlineto 1 put
OperatorDict /rmoveto 1 put
OperatorDict /rotate 1 put
OperatorDict /run 1 put
OperatorDict /scale 1 put
OperatorDict /setcachedevice 1 put
OperatorDict /setcachelimit 1 put
OperatorDict /setcacheparams 1 put
OperatorDict /setcharwidth 1 put
OperatorDict /setdash 1 put
OperatorDict /setdefaulttimeouts 1 put
OperatorDict /setdostartpage 1 put
OperatorDict /seteescratch 1 put
OperatorDict /setflat 1 put
OperatorDict /setfont 1 put
OperatorDict /setgray 1 put
OperatorDict /sethsbcolor 1 put
OperatorDict /setidlefonts 1 put
OperatorDict /setjobtimeout 1 put
OperatorDict /setlinecap 1 put
OperatorDict /setlinejoin 1 put
OperatorDict /setlinewidth 1 put
OperatorDict /setmargins 1 put
OperatorDict /setmatrix 1 put
OperatorDict /setmiterlimit 1 put
OperatorDict /setpacking 1 put
OperatorDict /setpagetype 1 put
OperatorDict /setprintname 1 put
OperatorDict /setrgbcolor 1 put
OperatorDict /setsccbatch 1 put
OperatorDict /setsccinteractive 1 put
OperatorDict /setscreen 1 put
OperatorDict /settransfer 1 put
OperatorDict /show 1 put
OperatorDict /showpage 1 put
OperatorDict /start 1 put
OperatorDict /stop 1 put
OperatorDict /store 1 put
OperatorDict /stroke 1 put
OperatorDict /strokepath 1 put
OperatorDict /translate 1 put
OperatorDict /widthshow 1 put
OperatorDict /write 1 put
OperatorDict /writehexstring 1 put
OperatorDict /writestring 1 put
end def
%
% Put an object on the stack and call Grabit. Output continues until stack
% is empty. For example,
%
% /letter load Grabit
%
% prints a listing of the letter procedure.
%
/Grabit {
/saveobj save def
GrabitDict begin
{
count 0 eq {exit} if
count {dup type exec} repeat
(\n) print flush
} loop
end
currentpoint % for hardcopy output
saveobj restore
moveto
} def

View file

@ -0,0 +1,196 @@
%
% Redefiniton of the PostScript file output operators so results go to paper.
% Complicated and slow, but the implementation doesn't place many demands on
% included PostScript. About all that's required is gentle treatment of the
% graphics state between write calls.
%
/#copies 1 store
/aspectratio 1 def
/font /Courier def
/formsperpage 1 def
/landscape false def
/magnification 1 def
/orientation 0 def
/pointsize 10 def
/rotation 1 def
/xoffset .1 def
/yoffset .1 def
/roundpage true def
/useclippath true def
/pagebbox [0 0 612 792] def
/inch {72 mul} def
/min {2 copy gt {exch} if pop} def
/HardcopySetup {
landscape {/orientation 90 orientation add def} if
font findfont 1 1.1 div scalefont setfont
pagedimensions
xcenter ycenter translate
orientation rotation mul rotate
width 2 div neg height 2 div translate
xoffset inch yoffset inch neg translate
pointsize 1.1 mul dup scale
magnification dup aspectratio mul scale
height width div 1 min dup scale
0 -1 translate
0 0 moveto
} def
/pagedimensions {
useclippath {
/pagebbox [clippath pathbbox newpath] def
roundpage currentdict /roundpagebbox known and {roundpagebbox} if
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
} def
%
% Unbind the operators in an executable array or packedarray. Leaves the
% unbound array or the original object on the stack.
%
/Unbind {
0 index xcheck
1 index type /arraytype eq
2 index type /packedarraytype eq or and {
dup length array copy cvx
dup 0 exch {
dup type /operatortype eq {
( ) cvs cvn cvx
} if
dup type /dicttype eq {
dup maxlength dict exch {
Unbind
3 copy put pop pop
} forall
} if
0 index xcheck
1 index type /arraytype eq
2 index type /packedarraytype eq or and {
Unbind
} if
3 copy put pop
1 add
} forall
pop
} if
} def
%
% New write operator - don't bind the definition! Expands tabs and backspaces,
% wraps long lines, and starts a new page whenever necessary. The code that
% handles newlines assumes lines are separated by one vertical unit.
%
/write {
true exch
%%case '\b':
dup 8#10 eq {
( ) stringwidth pop neg 0 rmoveto
currentpoint pop 0 lt {
currentpoint exch pop 0 exch moveto
} if
exch pop false exch
} if
%%case '\t':
dup 8#11 eq {
currentpoint pop ( ) stringwidth pop div round cvi
8 mod 8 exch sub {
2 index 8#40 write
} repeat
exch pop false exch
} if
%%case '\n':
dup 8#12 eq {
currentpoint 0 exch 1 sub moveto pop
gsave clippath pathbbox pop pop exch pop grestore
currentpoint exch pop 1 sub ge {
2 index 8#14 write
} if
exch pop false exch
} if
%%case '\f':
dup 8#14 eq {
gsave showpage grestore
0 0 moveto
exch pop false exch
} if
%%case '\r':
dup 8#15 eq {
currentpoint 0 exch moveto pop
exch pop false exch
} if
%%case EOF:
dup -1 eq {
currentpoint 0 ne exch 0 ne or {
2 index 8#14 write
} if
exch pop false exch
} if
%%default:
exch {
dup
gsave clippath pathbbox pop 3 1 roll pop pop grestore
( ) stringwidth pop currentpoint pop add le {
2 index 8#12 write
} if
( ) dup 0 4 -1 roll put show
} if
pop % the character
pop % and file object
} def
%
% All the other file output operators call our redefined write operator.
%
/print {
(%stdout) (w) file exch {1 index exch write} forall
pop
} def
/writestring {
{1 index exch write} forall
pop
} def
/writehexstring {
(0123456789ABCDEF) 3 1 roll {
dup
3 index exch -4 bitshift 16#F and get 2 index exch write
2 index exch 16#F and get 1 index exch write
} forall
pop pop
} def
%
% Unbind and redefine the remaining file output procedures.
%
/= dup load Unbind def
/== dup load Unbind def
/stack dup load Unbind def
/pstack dup load Unbind def

View file

@ -0,0 +1,5 @@
%!PS-Adobe-3.0
serverdict begin 0 exitserver
statusdict begin
1 setdefaultpapertray
end

View file

@ -0,0 +1,67 @@
%!PS-Adobe
% lib/ehandler.ps -- Downloaded Error Break-page handler
% Copyright (c) 1984, 1985, 1986 Adobe Systems Incorporated.
% All Rights Reserved.
0000 % serverloop password
/$brkpage where
{pop pop(Error Handler in place - not loaded again\n)print flush stop}
{dup serverdict begin statusdict begin checkpassword
{(Error Handler downloaded.\n)print flush exitserver}
{pop(Bad Password on loading error handler!!!\n)print flush stop}ifelse
}ifelse
/$brkpage 64 dict def $brkpage begin
/prnt
{dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def
currentpoint/toy exch def/tox exch def 1 setgray newpath
tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto
closepath fill tox toy moveto 0 setgray show}bind def
/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def
/=={/cp 0 def typeprint nl}def
/typeprint{dup type dup currentdict exch known
{exec}{unknowntype}ifelse}readonly def
/lmargin 72 def/rmargin 72 def
/tprint{dup length cp add rmargin gt{nl/cp 0 def}if
dup length cp add/cp exch def prnt}readonly def
/cvsprint{=string cvs tprint( )tprint}readonly def
/unknowntype{exch pop cvlit(??)tprint cvsprint}readonly def
/integertype{cvsprint}readonly def
/realtype{cvsprint}readonly def
/booleantype{cvsprint}readonly def
/operatortype{(//)tprint cvsprint}readonly def
/marktype{pop(-mark- )tprint}readonly def
/dicttype{pop(-dictionary- )tprint}readonly def
/nulltype{pop(-null- )tprint}readonly def
/filetype{pop(-filestream- )tprint}readonly def
/savetype{pop(-savelevel- )tprint}readonly def
/fonttype{pop(-fontid- )tprint}readonly def
/nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def
/stringtype
{dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse
}readonly def
/arraytype
{dup rcheck{dup xcheck
{({)tprint{typeprint}forall(})tprint}
{([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint}ifelse
}readonly def
/packedarraytype
{dup rcheck{dup xcheck
{({)tprint{typeprint}forall(})tprint}
{([)tprint{typeprint}forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse
}readonly def
/courier/Courier findfont 10 scalefont def
/OLDhandleerror errordict /handleerror get def
end %$brkpage
errordict/handleerror
{<< /PageSize [612 792] /ImagingBBox null >> setpagedevice
systemdict begin $error begin $brkpage begin newerror
{/newerror false store
vmstatus pop pop 0 ne{grestoreall}if initgraphics courier setfont
lmargin 720 moveto(ERROR: )prnt errorname prnt
nl(OFFENDING COMMAND: )prnt/command load prnt
$error/ostack
known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat}if
systemdict/showpage get exec
/newerror true store/OLDhandleerror load end end end exec}{end end end}
ifelse}
dup 0 systemdict put dup 4 $brkpage put bind readonly put

View file

@ -0,0 +1,41 @@
%!
0000000000 % the exitserver password
version (23.0) ne
{(Patch not installed -- wrong printer type or version) = stop} if
statusdict /Patch1Installed known
{(Patch already installed -- not installed again) = stop} if
serverdict begin exitserver
statusdict /Patch1Installed true put
currentfile eexec
ce1b9f428ac69e75cc47a554265ae625851e0154ac649ad44c1c34e4c60a0493
a80212a3bd61248f8859cb1252a7320775a6d4ec524bcbf5771aceb8f61ea2fb
48fcb3df8da0f105be40f697239ef0976f92c1d41e915a7389200a3e896cd955
d197ff27f22a617c85bce7ed59ef1a6062d01d0fdee5b4e7d298997638497cc6
a2d56a0eacc195795949f515bbbda9cfe899e43ad257da93f3144797b00dbb81
8a41b4fa56a0295c25e693864084cbb5d63834f1d94a46816d4a2cbe005cc57c
38491a6a34cfbdef303ed8731dbbe84dc6f8e1e790f3d89360d063639c8411fd
89ad7c53d1b9732bd0942bc36257208d24792ea7c66790b6104c3a2b794a1460
c476ffdb5552f428f457b47319cccb0c9980036402eaca80c0b5e0ccb5f579df
09cc6f382b536aa64da7152356c377a5b708a378e855a7ec3eccd848d5508dbf
5c7bd28c2899e9cfd7f4ff3d7ddc08006cce42b2d8c59ef64af8ec74a2f9d23f
e8d4d03ba1e2686138fffc2af9c662c994ec8065a32144ba9ac5002623b39012
521eb49cd829c3506af2895bf275367eb4d31908b14f3b1e0abfaca2f98eb9d8
8d84ac8271ef44def53d8207ce9653d598fe8046120f223bfca0b5c74a54f70b
eb5a0bc09d8e79742048b875864a3b489eb91c09b701f506e994271a6640f78a
d131f1eef3c96e546f7273fb3533799a6470be2ed3b8f2e211bf9f9f209edbd2
36c19d4b0b3f28ab16c39faa17070699543c212c76081961c949ebd32ada3c93
ccdc56c2c940a2061bc11794a0159cc37255aa8c8e7e08d78f204161f1eccb7d
ad3313b737e921b7df1fe794e9a7fc2226702ee555ceb8e803a20ebeaa440a40
9e1f1a72412586e3071292b10e938e7f386b8e6516758633bab57223e071b1de
8c4b73cafababc0af7bc902e8763a2817861591d7ee98f85bc28ad0ea4d13660
d3256aa293df1959b7b57b13edee653cfdda2fafe0698898dc5e371ca4c5b72b
b92750d0eea5e74955712b06958663f424a46cf75a797590f0d2a36842fe07e3
db459215dab6e461a4c3fbb40ee2499af3fe4b13790de87e11afde6aadd12e77
d84d8076146d797269c9188d8fb725898aee284e62c472e0e7b585ef3fed434c
000b0bb70ad6806e840cfe872ec3f28782dd08b70d29c2da2187e2dc0f13dfc0
89f75344e3dad78a1c9b909fc72bdd92421afdc8b80850ff0d43605edfd9be56
d81cb17250ce7208354548f6ccc62366e8196d4adeb2d24fd5ce47bb6295fa72
c361197cafacbd51efd36dfa59c6f8e6cab8915a8043d609eb64726de86080d2
4118cc69e01eab0f4ef1f364c815f306d5f43420cf7c9316e5ee69c7183dd8d2
805a9dfe6abb33c46d3a212d5c6b6fd68418eef971

View file

@ -0,0 +1,142 @@
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 1 -1 199 258
%%Creator: MetaPost
%%CreationDate: 1994.06.28:1046
/pjw1 {
37 211 moveto
37 206 lineto
41 206 lineto
43 212 lineto
44 212 46 212 46 210 curveto
41 198 35 186 35 174 curveto
50 174 66 175 81 173 curveto
81 171 lineto
61 171 lineto
61 170 lineto
86 170 lineto
88 168 89 166 90 164 curveto
101 164 111 169 122 172 curveto
139 172 lineto
125 194 115 219 93 233 curveto
87 234 80 236 74 235 curveto
64 229 54 224 46 217 curveto
45 217 44 217 44 218 curveto
61 242 lineto
67 248 72 258 82 258 curveto
94 257 107 256 119 254 curveto
134 247 147 239 161 231 curveto
180 231 lineto
180 226 174 228 171 226 curveto
178 220 185 214 192 207 curveto
189 207 187 207 187 205 curveto
190 205 193 204 196 203 curveto
198 193 202 181 193 181 curveto
193 177 198 175 198 171 curveto
196 171 194 171 194 169 curveto
195 165 196 161 198 157 curveto
194 147 193 135 184 130 curveto
180 130 lineto
169 107 lineto
171 103 176 104 180 104 curveto
180 93 176 81 166 76 curveto
162 76 157 77 155 80 curveto
153 80 152 80 151 80 curveto
151 71 lineto
155 71 lineto
155 68 153 65 152 63 curveto
145 62 lineto
141 47 144 31 144 15 curveto
141 0 lineto
124 0 107 -1 90 1 curveto
72 36 lineto
86 48 105 49 122 54 curveto
122 54 lineto
110 61 97 65 84 69 curveto
81 71 78 73 78 76 curveto
86 77 93 77 101 77 curveto
106 79 113 79 113 84 curveto
95 86 77 87 59 89 curveto
59 92 61 95 64 95 curveto
69 88 80 92 89 92 curveto
95 92 104 90 104 96 curveto
93 97 lineto
87 103 82 109 77 115 curveto
89 116 101 117 113 118 curveto
99 154 lineto
90 154 87 144 82 138 curveto
77 132 73 124 66 120 curveto
63 120 59 119 59 122 curveto
62 123 66 123 66 126 curveto
58 126 50 127 42 128 curveto
34 137 lineto
34 140 34 144 31 144 curveto
30 135 31 125 31 116 curveto
25 116 22 122 19 127 curveto
16 131 15 136 12 139 curveto
5 139 15 127 9 127 curveto
3 133 3 142 1 150 curveto
1 158 6 166 9 173 curveto
18 186 25 199 35 211 curveto
closepath
} bind def
/pjw2 {
27 112 moveto
40 75 lineto
40 74 38 73 37 73 curveto
25 87 lineto
17 112 lineto
closepath
43 154 moveto
43 167 lineto
41 167 38 167 39 169 curveto
57 171 lineto
74 167 lineto
74 166 73 165 72 165 curveto
64 164 56 162 49 158 curveto
48 154 45 149 49 149 curveto
51 151 53 152 55 154 curveto
87 153 lineto
87 144 80 136 74 129 curveto
64 128 53 126 43 129 curveto
37 135 lineto
37 138 36 141 36 145 curveto
40 145 lineto
41 148 42 151 43 154 curveto closepath
108 145 moveto
119 145 130 143 141 140 curveto
146 134 155 129 149 126 curveto
138 124 126 123 116 129 curveto
113 134 108 139 108 145 curveto
closepath
114 96 moveto
116 103 118 110 121 117 curveto
128 117 134 112 139 107 curveto
139 101 137 96 132 93 curveto
closepath
134 162 moveto
115 162 lineto
115 162 115 163 115 164 curveto
134 164 lineto
closepath
117 73 moveto
115 78 121 81 125 85 curveto
129 85 lineto
130 83 131 81 131 79 curveto
128 74 lineto
124 74 121 73 117 73 curveto closepath
141 119 moveto
134 119 126 117 126 123 curveto
131 123 136 122 141 121 curveto
closepath
} bind def
/pw {
%% pop
gsave
pointsize .0022 mul dup scale
currentpoint translate
pjw1 pjw2 eofill
grestore
6 0 rmoveto
} bind def

View file

@ -0,0 +1,124 @@
%
% Version 3.3.2 prologue for DMD bitmap files.
%
/#copies 1 store
/aspectratio 1 def
/formsperpage 1 def
/landscape false def
/magnification 1 def
/margin 0 def
/orientation 0 def
/rotation 1 def
/screenres 100 def
/xoffset 0 def
/yoffset 0 def
/useclippath true def
/pagebbox [0 0 612 792] def
/inch {72 mul} bind def
/min {2 copy gt {exch} if pop} bind def
/setup {
counttomark 2 idiv {def} repeat pop
landscape {/orientation 90 orientation add def} if
pagedimensions
xcenter ycenter translate
orientation rotation mul rotate
xoffset inch yoffset inch translate
magnification dup aspectratio mul scale
/height height margin sub def
/width width margin sub def
} def
/pagedimensions {
useclippath {
/pagebbox [clippath pathbbox newpath] def
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
userdict /gotpagebbox true put
} def
/pagesetup {/page exch def} bind def
/bitmap {
/scanlines exch def
/scanlength exch def
/flip exch def
/v8format exch def
/bytelength scanlength 8 idiv def
/picstr bytelength string def
/lpicstr bytelength string def
/bytelength bytelength 1 sub def
gsave
% First the overall scaling.
height scanlines div width scanlength div min
72 screenres div min
dup scale
% Followed by the one for the unit square.
scanlength neg 2 div scanlines neg 2 div translate
scanlength scanlines scale
v8format {getv8bitmap} {getbitmap} ifelse
grestore
} bind def
/getbitmap {
scanlength scanlines flip [scanlength 0 0 scanlines neg 0 scanlines] {
0 {
currentfile token pop dup
0 eq {pop pop exit} if
/charcount exch def
picstr 1 index charcount getinterval
/repl exch def
currentfile repl readhexstring pop pop
charcount add
currentfile token pop {
picstr 1 index repl putinterval
charcount add
} repeat
} loop
picstr
} imagemask
} bind def
/getv8bitmap {
scanlength scanlines flip not [scanlength 0 0 scanlines neg 0 scanlines] {
0 {
currentfile token pop dup
0 eq {pop pop exit} if
/charcount exch def
picstr 1 index charcount getinterval
/repl exch def
currentfile repl readhexstring pop pop
charcount add
currentfile token pop {
picstr 1 index repl putinterval
charcount add
} repeat
} loop
0 0 picstr {
exch lpicstr exch get xor
lpicstr exch 2 index exch put
1 add dup
} forall
pop pop lpicstr
} imagemask
} bind def
/done {/lastpage where {pop lastpage} if} def

View file

@ -0,0 +1,104 @@
%
% Version 3.3.2 prologue for GIF pixmap files.
%
/#copies 1 store
/aspectratio 1 def
/formsperpage 1 def
/landscape false def
/magnification 1 def
/margin 0 def
/orientation 0 def
/rotation 1 def
/xoffset 0 def
/yoffset 0 def
/useclippath true def
/pagebbox [0 0 612 792] def
/inch {72 mul} bind def
/min {2 copy gt {exch} if pop} bind def
/setup {
counttomark 2 idiv {def} repeat pop
landscape {/orientation 90 orientation add def} if
pagedimensions
xcenter ycenter translate
orientation rotation mul rotate
xoffset inch yoffset inch translate
magnification dup aspectratio mul scale
/height height margin sub def
/width width margin sub def
} def
/pagedimensions {
useclippath {
/pagebbox [clippath pathbbox newpath] def
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
userdict /gotpagebbox true put
} def
/pagesetup {/page exch def} bind def
/done {/lastpage where {pop lastpage} if} def
/alignment false def
/gifscreen { % scrwidth scrheight $
2 copy
alignment {
100 dup dtransform exch 100 exch div abs exch 100 exch div abs
2 copy scale
/height exch height exch div def
/width exch width exch div def
} if
height exch div exch width exch div
2 copy lt { pop } { exch pop } ifelse
alignment { cvi } if
dup scale
neg 2 div exch neg 2 div exch translate
} def
/gifimage { % gray imagewidth imageheight xorigin yorigin $
translate
2 copy scale
/imageheight exch def
/imagewidth exch def
/gray exch def
imagewidth imageheight 8 [imagewidth 0 0 imageheight neg 0 imageheight]
gray {
{ currentfile codestr readhexstring pop } image
} {
/colorimage where {
pop
/picstr imagewidth 3 mul string def
{ currentfile codestr readhexstring pop pop
0 1 imagewidth 1 sub {
picstr exch dup 3 mul exch colortbl exch codestr exch get
3 mul 3 getinterval putinterval
} for picstr
} false 3 colorimage
} {
{ currentfile codestr readhexstring pop pop
0 1 imagewidth 1 sub {
codestr exch dup graytbl exch codestr exch get get put
} for codestr
} image
} ifelse
} ifelse
} def

View file

@ -0,0 +1,86 @@
%
% Version 3.3 prologue for plan9 bitmap files.
%
/#copies 1 store
/aspectratio 1 def
/formsperpage 1 def
/landscape false def
/magnification 1 def
/margin 0 def
/orientation 0 def
/rotation 1 def
/screenres 100 def
/xoffset 0 def
/yoffset 0 def
/useclippath true def
/pagebbox [0 0 612 792] def
/inch {72 mul} bind def
/min {2 copy gt {exch} if pop} bind def
/setup {
counttomark 2 idiv {def} repeat pop
landscape {/orientation 90 orientation add def} if
pagedimensions
xcenter ycenter translate
orientation rotation mul rotate
xoffset inch yoffset inch translate
magnification dup aspectratio mul scale
/height height margin sub def
/width width margin sub def
} def
/pagedimensions {
useclippath {
/pagebbox [clippath pathbbox newpath] def
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
userdict /gotpagebbox true put
} def
/pagesetup {/page exch def} bind def
/bitmap {
/scanlines exch def
/scanlength exch def
/bitspersample exch def
%% /v8format exch def
/bytelength scanlength bitspersample mult 7 add 8 idiv def
/picstr bytelength string def
/lpicstr bytelength string def
%% /bytelength bytelength 1 sub def
gsave
% First the overall scaling.
height scanlines div width scanlength div min
72 screenres div min
dup scale
% Followed by the one for the unit square.
scanlength neg 2 div scanlines neg 2 div translate
scanlength scanlines scale
getp9bitmap
grestore
} bind def
/getp9bitmap {
scanlength scanlines bitspersample [scanlength 0 0 scanlines neg 0 scanlines] {
currentfile picstr readhexstring pop} image
} bind def
/done {/lastpage where {pop lastpage} if} def

View file

@ -0,0 +1,75 @@
%
% Version 3.3.2 prologue for text files.
%
/#copies 1 store
/aspectratio 1 def
/font /Courier def
/formsperpage 1 def
/landscape false def
/magnification 1 def
/margin 10 def
/orientation 0 def
/pointsize 10 def
/rotation 1 def
/xoffset .25 def
/yoffset .25 def
/roundpage true def
/useclippath true def
/pagebbox [0 0 612 792] def
/inch {72 mul} bind def
/min {2 copy gt {exch} if pop} bind def
/show {show} bind def % so later references don't bind
/stringwidth {stringwidth} bind def
/setup {
counttomark 2 idiv {def} repeat pop
landscape {/orientation 90 orientation add def} if
font findfont pointsize scalefont setfont
/charwidth (M) stringwidth pop def
/linespace pointsize pointsize .10 mul add neg def
pagedimensions
xcenter ycenter translate
orientation rotation mul rotate
width 2 div neg height 2 div translate
xoffset inch yoffset inch neg translate
margin 2 div dup neg translate
magnification dup aspectratio mul scale
height width div 1 min dup scale
0 linespace translate
} def
/pagedimensions {
useclippath userdict /gotpagebbox known not and {
/pagebbox [clippath pathbbox newpath] def
roundpage currentdict /roundpagebbox known and {roundpagebbox} if
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
userdict /gotpagebbox true put
} def
/pagesetup {/page exch def 0 0 moveto 0} bind def
/L {
counttomark 2 idiv {charwidth mul currentpoint exch pop moveto show} repeat
linespace add dup 0 exch moveto
} bind def
/l {show linespace add dup 0 exch moveto} bind def
/LL {
counttomark 2 idiv {charwidth mul currentpoint exch pop moveto show} repeat
} bind def
/done {/lastpage where {pop lastpage} if} def

View file

@ -0,0 +1,106 @@
%
% Version 3.3.2 prologue for tektronix 4014 files.
%
/#copies 1 store
/aspectratio 1 def
/fixlinewidth true def
/font /Courier def
/formsperpage 1 def
/landscape true def
/linewidth 0 def
/magnification 1 def
/margin 10 def
/orientation 0 def
/rotation 1 def
/screenheight 3120 def
/screenwidth 4150 def
/spotsize 1 def
/xoffset 0 def
/yoffset 0 def
/useclippath true def
/pagebbox [0 0 612 792] def
/inch {72 mul} bind def
/min {2 copy gt {exch} if pop} bind def
/kshow {kshow} bind def % so later references don't bind
/setup {
counttomark 2 idiv {def} repeat pop
landscape {/orientation 90 orientation add def} if
pagedimensions
/scaling
height margin sub screenheight div
width margin sub screenwidth div
min def
xcenter ycenter translate
orientation rotation mul rotate
xoffset inch yoffset inch translate
magnification dup aspectratio mul scale
scaling scaling scale
screenwidth 2 div neg screenheight 2 div neg translate
tietodevicespace
linewidth scaling div setlinewidth
1 setlinecap
newpath
} def
/pagedimensions {
useclippath {
/pagebbox [clippath pathbbox newpath] def
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
userdict /gotpagebbox true put
} def
/pagesetup {/page exch def} bind def
/tietodevicespace {
fixlinewidth linewidth 0 gt and linewidth 1 lt and {
/moveto {
2 copy /Y exch def /X exch def
transform round exch round exch itransform
moveto
} bind def
/lineto {
2 copy /Y exch def /X exch def
transform round exch round exch itransform
lineto
} bind def
/rlineto {Y add exch X add exch lineto} bind def
/v V 0 get bind def
} if
} def
/V [{moveto counttomark 2 idiv {rlineto} repeat stroke}] def
/v V 0 get bind def
/p {newpath spotsize 0 360 arc fill} bind def
/l {{scaling div} forall counttomark array astore 0 setdash} bind def
/w {linewidth 0 eq {.3} {linewidth} ifelse mul linewidth add scaling div setlinewidth} bind def
/i {3 mul 4 sub -100 div mul .5 add /spotsize exch def} bind def
/f {/charwidth exch def font findfont charwidth .6 div scalefont setfont} bind def
/t {
3 1 roll moveto
currentpoint {
pop pop
exch charwidth add exch
moveto currentpoint
} 4 -1 roll kshow
pop pop
} bind def
/done {/lastpage where {pop lastpage} if} def

View file

@ -0,0 +1,321 @@
%
% Formatted font dump. Assumes all fonts include valid FontBBox arrays.
%
/#copies 1 store
/aspectratio 1 def
/landscape false def
/magnification 1 def
/margin 10 def
/orientation 0 def
/rotation 1 def
/xoffset 0 def
/yoffset 0 def
/axescount 0 def
/charwidth false def
/graynotdef 0.85 def
/hireslinewidth 0.2 def
/longnames false def
/maxsize 6.0 def
/minsize 4.5 def
/numbercell true def
/radix 16 def
/labelfont /Helvetica def
/labelspace 36 def
/zerocell 0 def
/roundpage true def
/useclippath true def
/pagebbox [0 0 612 792] def
/inch {72 mul} def
/min {2 copy gt {exch} if pop} def
/max {2 copy lt {exch} if pop} def
/LLx {0 get} bind def
/LLy {1 get} bind def
/URx {2 get} bind def
/URy {3 get} bind def
/BBoxHeight {dup URy exch LLy sub} bind def
/BBoxWidth {dup URx exch LLx sub} bind def
/setup {
/graylevels [1 0 0] def
/scratchstring 512 string def
/Product statusdict begin /product where {pop product}{(Unknown)} ifelse end def
/Resolution 0 72 dtransform dup mul exch dup mul add sqrt cvi def
/Version /version where {pop version}{(???)} ifelse def
landscape {/orientation 90 orientation add def} if
pagedimensions
xcenter ycenter translate
orientation rotation mul rotate
width 2 div neg height 2 div translate
xoffset inch yoffset inch neg translate
margin dup neg translate
0 labelspace .75 mul neg translate
magnification dup aspectratio mul scale
0 0 transform round exch round exch itransform translate
currentdict /linewidth known not {
/linewidth Resolution 400 le {0}{hireslinewidth} ifelse def
} if
} def
/pagedimensions {
useclippath {
/pagebbox [clippath pathbbox newpath] def
roundpage currentdict /roundpagebbox known and {roundpagebbox} if
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
} def
/CharSetup {
/chcode exch def
/chname Encoding chcode get def
/chstring ( ) dup 0 chcode put def
/chknown true def
graylevels 0 1 put % initial cell fill
graylevels 1 0 put % cell text
graylevels 2 0 put % cell border
FontDict /CharStrings known {
FontDict /CharStrings get chname known not {
/chknown false def
graylevels 0 0 put
graylevels 1 1 put
} if
} if
chname /.notdef eq {
/chknown false def
graylevels 0 graynotdef put
graylevels 1 graynotdef put
} if
/chwid chknown
{FontDict 1 scalefont setfont chstring stringwidth pop}
{0}
ifelse def
} bind def
/CellSetup {
/gridwidth width margin 2 mul sub def
/gridheight height labelspace sub margin 2 mul sub def
/cellwidth gridwidth radix div def
/cellheight gridheight Entries radix div ceiling div def
cellwidth cellheight dtransform truncate exch truncate exch idtransform
/cellheight exch def
/cellwidth exch def
labelfont findfont 1 scalefont setfont
/LabelBBox currentfont /FontBBox get TransformBBox def
LabelBBox 2 0 Encoding {
scratchstring cvs stringwidth pop
2 copy lt {exch} if
pop
} forall put
/CellLabelSize
cellheight .20 mul cellwidth .90 mul LabelBBox BestFit
minsize max
maxsize min
def
zerocell CellOrigin cellheight add neg exch neg exch translate
} bind def
/FontSetup {
FontName findfont 1 scalefont setfont
/BBox currentfont /FontBBox get TransformBBox def
/PointSize cellheight .5 mul cellwidth .8 mul BBox BestFit def
BBox {PointSize mul} forall BBox astore pop
/xorigin cellwidth BBox BBoxWidth sub 2 div BBox LLx sub def
/yorigin cellheight BBox BBoxHeight sub 2 div BBox LLy sub def
} bind def
/BestFit {
/bbox exch def
bbox BBoxWidth div exch
bbox BBoxHeight div min
} bind def
/TransformBBox { % font bbox to user space
aload pop
currentfont /FontMatrix get dtransform 4 2 roll
currentfont /FontMatrix get dtransform 4 2 roll
4 array astore % should build user space bbox if all zeros
} bind def
/CellOrigin {
dup
exch radix mod cellwidth mul
exch radix idiv 1 add neg cellheight mul
} bind def
/CellOutline {
newpath
CellOrigin moveto
cellwidth 0 rlineto
0 cellheight rlineto
cellwidth neg 0 rlineto
closepath
} bind def
/LabelCell {
gsave
chcode CellOrigin translate
linewidth .5 mul setlinewidth
labelfont findfont CellLabelSize scalefont setfont
numbercell {
cellwidth .025 mul cellheight .05 mul moveto
chcode radix scratchstring cvrs show
} if
charwidth chknown and {
/wid chwid 0.0005 add scratchstring cvs 0 5 getinterval def
cellwidth wid stringwidth pop 1.10 mul sub cellheight .05 mul moveto
wid show
} if
longnames chknown not or {
cellwidth .025 mul
cellheight LabelBBox URy CellLabelSize mul sub .05 sub moveto
Encoding chcode get scratchstring cvs show
} if
axescount 1 ge chknown and { % gsave/grestore if not last
newpath
xorigin yorigin translate
BBox LLx 0 moveto % baseline
BBox URx 0 lineto stroke
axescount 2 ge { % vertical through current origin
0 BBox LLy moveto
0 BBox URy lineto stroke
} if
axescount 3 ge { % vertical through next origin
chwid PointSize mul BBox LLy
dtransform round exch round exch idtransform moveto
0 BBox BBoxHeight rlineto stroke
%chwid PointSize mul BBox URy lineto stroke
} if
} if
grestore
} bind def
/PlaceChar {
FontName findfont PointSize scalefont setfont
chcode CellOrigin moveto
xorigin yorigin rmoveto
( ) dup 0 chcode put show
} bind def
/LabelPage {
labelfont findfont labelspace .75 mul .75 mul 18 min scalefont setfont
0 labelspace .75 mul .25 mul moveto
FontName scratchstring cvs show
labelfont findfont labelspace .25 mul .75 mul 9 min scalefont setfont
0 gridheight neg moveto
0 labelspace .25 mul .75 mul neg rmoveto
Product show ( Version ) show Version show
( \() show Resolution scratchstring cvs show (dpi\)) show
gridwidth gridheight neg moveto
0 labelspace .25 mul .75 mul neg rmoveto
(size=, ) stringwidth pop neg 0 rmoveto
PointSize cvi scratchstring cvs stringwidth pop neg 0 rmoveto
(gray=, ) stringwidth pop neg 0 rmoveto
graynotdef scratchstring cvs stringwidth pop neg 0 rmoveto
(linewidth=) stringwidth pop neg 0 rmoveto
linewidth scratchstring cvs stringwidth pop neg 0 rmoveto
(size=) show PointSize cvi scratchstring cvs show (, ) show
(gray=) show graynotdef scratchstring cvs show (, ) show
(linewidth=) show linewidth scratchstring cvs show
} bind def
%
% Formatted dump of the encoded characters in a single font.
%
/PrintFont {
/saveobj save def
/FontName exch def
/FontDict FontName findfont def
/Encoding FontDict /Encoding get def
/Entries Encoding length def
CellSetup
FontSetup
LabelPage
zerocell 1 Entries 1 sub {
CharSetup
graylevels 0 get setgray
chcode CellOutline fill
graylevels 1 get setgray
LabelCell
PlaceChar
graylevels 2 get setgray
linewidth setlinewidth
chcode CellOutline stroke
} for
showpage
saveobj restore
} bind def
%
% Dump of all ROM and disk fonts - in alphabetical order.
%
/AllFonts {
/AllFontNames FontDirectory maxlength array def
AllFontNames 0 0 put
FontDirectory {pop AllFontNames Insert} forall
/filenameforall where {
pop
(fonts/*)
{(fonts/) search pop pop pop AllFontNames Insert}
200 string
filenameforall
} if
1 1 AllFontNames 0 get {
AllFontNames exch get cvn PrintFont
} for
} bind def
/Insert { % name in a sorted list
/List exch def
/Name exch 128 string cvs def
/Slot 1 def
List 0 get {
Name List Slot get le {exit} if
/Slot Slot 1 add def
} repeat
List 0 get -1 Slot {
dup List exch get
List 3 1 roll exch 1 add exch put
} for
List Slot Name put
List 0 List 0 get 1 add put
} bind def

View file

@ -0,0 +1,16 @@
%
% Keywords begin with an @ in the first column. The value follows on the next
% line and includes everything up to next keyword line, except for comments
% which are lines that begin with % in the first column.
%
@manualfeed
statusdict begin
/manualfeedtimeout 300 def
/manualfeed true def
end
@ledgertray
statusdict begin
ledgertray
end

View file

@ -0,0 +1,30 @@
%
% Tries to round clipping path dimensions, as stored in array pagebbox, so they
% match one of the known sizes in the papersizes array. Lower left coordinates
% are always set to 0.
%
/roundpagebbox {
7 dict begin
/papersizes [8.5 inch 11 inch 14 inch 17 inch] def
/mappapersize {
/val exch def
/slop .5 inch def
/diff slop def
/j 0 def
0 1 papersizes length 1 sub {
/i exch def
papersizes i get val sub abs
dup diff le {/diff exch def /j i def} {pop} ifelse
} for
diff slop lt {papersizes j get} {val} ifelse
} def
pagebbox 0 0 put
pagebbox 1 0 put
pagebbox dup 2 get mappapersize 2 exch put
pagebbox dup 3 get mappapersize 3 exch put
end
} bind def

View file

@ -0,0 +1,30 @@
%!PS-Adobe-3.0
%% This file changes the IP Address on the Xante Accel-a-Writer
%%Setting the IP Address will restart the printer!!
%%Set The IP Address
%(%IP%) <</IPAddress (135.104.7.83)>> setdevparams
%(%IP%) <</NetworkMask (255.255.255.224)>> setdevparams
%(%IP%) <</BroadcastAddress (135.104.7.95)>> setdevparams
%(%IP%) <</GatewayAddress (0.0.0.0/135.104.7.65)>> setdevparams
%serverdict begin 0 exitserver
%systemdict /quit get exec
%% Print out the IP address
%%To print out the current IP Address, comment out the
%%above commands under Set The IP Address with a percent
%%sign. Uncomment the lines below by removing the leading % sign.
/Courier findfont 24 scalefont setfont
(%IP%) currentdevparams
72 72 moveto
/IPAddress get show
72 144 moveto
/NetworkMask get show
72 216 moveto
/BroadcastAddress get show
72 288 moveto
/GatewayAddress get show
showpage

View file

@ -0,0 +1,52 @@
%
% Shading support - primarily for ASCII file translators.
%
/grays [0.98 0.9 0.75 0.6] def
/setshade {
/level exch def
level 0 le {
/textgray 0 def
/backgray 1 def
}{
/backgray level grays length gt
{/textgray 1 def 0}
{/textgray 0 def grays level 1 sub get}
ifelse def
} ifelse
textgray setgray
/dY1 0 def
/dY2 0 def
} bind def
/drawrvbox {
/x2 exch charwidth mul def
/x1 exch charwidth mul def
x1 x2 lt {
dup % expects y on top
/y1 exch linespace mul def
/y2 y1 def
dY1 0 eq dY2 0 eq and {
currentfont /FontBBox get aload pop
160 sub
currentfont /FontMatrix get dtransform /dY2 exch def pop
100 add
currentfont /FontMatrix get dtransform /dY1 exch def pop
} if
/y1 y1 dY1 add def
/y2 y2 dY2 add def
backgray setgray
newpath
x1 y1 moveto
x2 y1 lineto
x2 y2 lineto
x1 y2 lineto
closepath fill
} if
textgray setgray
} bind def

View file

@ -0,0 +1,28 @@
%
% Unbind the operators in an executable array or packedarray. Leaves the
% unbound array or the original object on the stack.
%
/unbind {
0 index xcheck
1 index type /arraytype eq
2 index type /packedarraytype eq or and {
dup length array copy cvx
dup 0 exch {
dup type /operatortype eq {
( ) cvs cvn cvx
} if
0 index xcheck
1 index type /arraytype eq
2 index type /packedarraytype eq or and {
unbind
} if
3 copy put pop
1 add
} forall
pop
} if
} def

1
postscript/troff/AB Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff AvantGarde-Demi

2
postscript/troff/AI Normal file
View file

@ -0,0 +1,2 @@
0x0000 0x00ff AvantGarde-BookOblique

1
postscript/troff/AR Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff AvantGarde-DemiOblique

11
postscript/troff/B Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Times-Bold
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

11
postscript/troff/BI Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Times-BoldItalic
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

11
postscript/troff/C Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Courier
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

1
postscript/troff/CB Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Courier-Bold

1
postscript/troff/CI Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Courier-Italic

11
postscript/troff/CW Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Courier
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

1
postscript/troff/CX Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Courier-BoldItalic

11
postscript/troff/H Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Helvetica
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

11
postscript/troff/HB Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Helvetica-Bold
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

11
postscript/troff/HI Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Helvetica-Oblique
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

1
postscript/troff/HL Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Helvetica-Light

1
postscript/troff/HX Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Helvetica-Narrow-BoldOblique

11
postscript/troff/I Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Times-Italic
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

1
postscript/troff/Jp Normal file
View file

@ -0,0 +1 @@
0x0000 0x0001 Times-Roman

1
postscript/troff/KB Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Bookman-Demi

1
postscript/troff/KI Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Bookman-LightItalic

1
postscript/troff/KR Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Bookman-Light

1
postscript/troff/KX Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Bookman-DemiItalic

View file

@ -0,0 +1 @@
0x0000 0x00ff LucidaTypewriter

View file

@ -0,0 +1,13 @@
0x0000 0x00ff LucidaSansUnicode00
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25
0x0027 0x0027 0x19 LucidaSansUnicode20 # map apostrophe to right quote
0x0060 0x0060 0x18 LucidaSansUnicode20 # map grave to left quote

View file

@ -0,0 +1,11 @@
0x0000 0x00ff LucidaSans-Demi
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

View file

@ -0,0 +1 @@
0x0000 0x00ff LucidaSans-Typewriter

View file

@ -0,0 +1 @@
0x0000 0x00ff LucidaSans-Typewriter83

View file

@ -0,0 +1,11 @@
0x0000 0x00ff LucidaSans-Italic
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

1
postscript/troff/NB Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff NewCenturySchlbk-Bold

1
postscript/troff/NI Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff NewCenturySchlbk-Italic

1
postscript/troff/NR Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff NewCenturySchlbk-Roman

1
postscript/troff/NX Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff NewCenturySchlbk-BoldItalic

11
postscript/troff/PA Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Palatino-Roman
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

1
postscript/troff/PB Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Palatino-Bold

1
postscript/troff/PI Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Palatino-Italic

1
postscript/troff/PX Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Palatino-BoldItalic

11
postscript/troff/R Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Times-Roman
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

11
postscript/troff/R.nomath Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff Times-Roman
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

11
postscript/troff/S Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff S
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

11
postscript/troff/S1 Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff S1
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

1
postscript/troff/Syntax Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Syntax-Roman

1
postscript/troff/SyntaxB Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Syntax-Bold

1
postscript/troff/SyntaxI Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff Syntax-Italic

1
postscript/troff/ZD Normal file
View file

@ -0,0 +1 @@
0x0000 0x00ff ZapfDingbats

11
postscript/troff/ZI Normal file
View file

@ -0,0 +1,11 @@
0x0000 0x00ff ZapfChancery-MediumItalic
0x0100 0x01ff LucidaSansUnicode01
0x0200 0x02ff LucidaSansUnicode02
0x0300 0x03ff LucidaSansUnicode03
0x0400 0x04ff LucidaSansUnicode04
0x0500 0x05ff LucidaSansUnicode05
0x2000 0x20ff LucidaSansUnicode20
0x2100 0x21ff LucidaSansUnicode21
0x2200 0x22ff LucidaSansUnicode22
0x2400 0x24ff LucidaSansUnicode24
0x2500 0x25ff LucidaSansUnicode25

5
tmac/complet.1127 Normal file
View file

@ -0,0 +1,5 @@
Executive Director 112
Directors 112
Department Heads 1127
A. N. Netravali

3
tmac/cover.1127 Normal file
View file

@ -0,0 +1,3 @@
Arun Netravali
Department Heads 1121, 1127
D. Dinella

2829
tmac/mmn Normal file

File diff suppressed because it is too large Load diff

2792
tmac/mmt Normal file

File diff suppressed because it is too large Load diff

4
tmac/name.sed Normal file
View file

@ -0,0 +1,4 @@
s/\([A-Z]\)\./\1/g
s/\([A-Z]\)[a-z]*/\1/g
s/ //g
s/^/.ds T1 /

5
tmac/sendcover Normal file
View file

@ -0,0 +1,5 @@
#!/bin/rc
T=/tmp/cs$pid
cstrans $T $1
rc $T
rm $T

61
tmac/strings.mm Normal file
View file

@ -0,0 +1,61 @@
'\" Copyright (c) 1997 Lucent
'\" All Rights Reserved
'\"
'\"#ident "@(#)macros:strings.mm 3.1"
'\" UNIX Memorandum Macros, DWB 3.1, April 1990
'\" Company-specifics: Lucent Bell Laboratories
'''\" '''\"tab begins comments.
'''\" No comments should appear on the same line as the string definition.
'''\"
'''\" The following string is used by the macro MT.
'''\" ]S defined as logo character
.ds ]S \s36\(LH\s0
'''\" }Z defined as Company Name
.ds }Z Lucent Bell Laboratories
'''\"
'''\" Strings for proprietary markings at bottom of page.
'''\" Free Strings: ]Q ]R ]H ]L ]V ]W ]X ]k ]l
'''\"
'''\" Register ;V = user-specified year for copyright date
.nr ;V \n(yr
'''\" LUCENT PROPRIETARY MARKINGS
'''\" The following strings are used by the macro PM:
'''\"
'''\" Marking Type: PROPRIETARY
'''\" Invocation: .PM 1 or .PM P
'''\" Strings: ]M ]O
.ds ]M \f2LUCENT \- PROPRIETARY\fP
.ds ]O \f1Use pursuant to Company Instructions.\fP
'''\"
'''\" Marking Type: RESTRICTED
'''\" Invocation: .PM 2 or .PM RS
'''\" Strings: ]A ]F ]G
.ds ]A \f2LUCENT \- PROPRIETARY (RESTRICTED)\fP
.ds ]F \f1Solely for authorized persons having a need to know
.ds ]G pursuant to Company Instructions.\fP
'''\"
'''\" Marking Type: REGISTERED
'''\" Invocation: .PM 3 or .PM RG
'''\" Strings: ]I ]J ]K
.ds ]I \f2LUCENT \- PROPRIETARY (REGISTERED)\fP
.ds ]J \f1Solely for authorized persons having a need to know
.ds ]K and subject to cover sheet instructions.\fP
'''\"
'''\" Marking Type: SEE COVER PAGE
'''\" Invocation: .PM 4 or .PM CP
'''\" Strings: ]U
.ds ]U \f1SEE PROPRIETARY NOTICE ON COVER PAGE\fP
'''\"
'''\" Marking Type: COPYRIGHT
'''\" Invocation: .PM 5 or .PM CR
'''\" Strings: ]i ]j
.ds ]i \f1Copyright \(co 20\\n(;V Lucent\fP
.ds ]j \f1All Rights Reserved.\fP
'''\"
'''\" Marking Type: UNPUBLISHED WORK
'''\" Invocation: .PM 6 or .PM UW
'''\" Strings: ]M ]m ]o ]p ]i ]q ]j
.ds ]m \f1THIS DOCUMENT CONTAINS PROPRIETARY INFORMATION OF
.ds ]o LUCENT AND IS NOT TO BE DISCLOSED OR USED EXCEPT IN
.ds ]p ACCORDANCE WITH APPLICABLE AGREEMENTS.\fP
.ds ]q \f1Unpublished & Not for Publication\fP

524
tmac/tmac.an Normal file
View file

@ -0,0 +1,524 @@
.fp 1 R LucidaSans
.fp 2 I LucidaSansI
.fp 3 B LucidaSansB
.fp 5 L LucidaCW
.if n .uf 4
.if n .bd 3
.if n .rm bd
'''\" PWB Manual Entry Macros - 1.36 of 11/11/80
'''\" Nroff/Troff Version @(#)1.36
'''\" Option -rs1 short (9") pages
'''\" Option -rp# set no. of first page, put no. of pgs. on stderr
'''\" Option -rd1 give modified date instead of printed date
... temporary fixes for neat manual printing...
.deth
.tmwrong version of man entry macros - use -man6
.ab
..
.ifn .ds Tm \uTM\d
.ift .ds Tm \v'-0.5m'\s-4TM\s+4\v'0.5m'
.de}E
.}f
.in\\n()Ru+\\n(INu
.ll\\n(LLu
.lt\\n(LLu
.pl\\n()Lu
..
.deDT
.ift .ta 3.6m 7.2m 10.8m 14.4m 18m 21.6m 25.2m 28.8m 32.4m 36m 39.6m 43.2m 46.8m
.ifn .ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n
..
.de HY
.hy14
..
.de}f
.ift .vs \\n()Vp
.ps\\n()S
.ft1
..
.de}H
.ev1
.}C
.}E
.ie\\n()s 'sp |2v
.el'sp |3v
.".ps\\n()S-1
.tl \\*(]H\\*(]L\\*(]H
.ft1
.ps\\n()S
.ie\\n()s 'sp 1.5v
.el'sp 3v
.ev
.ns
.if \\n(CL .2C
..
.de}F
.ev1
.}E
.if\\n()s 'sp |\\n(.pu-1v-1p
.if\\n()t 'sp |\\n(.pu-3v
.ifn 'sp |\\n(.pu-4v
.ifn .tl Page %\\*(]D\\*(]W
.ift .tl %
.ev
'bp
..
.ifn .ig
.de}C
.if "\\*(.T"aps"\{\
. po0i
. lt7.5i
. if\\n()s .tl \l0.25i\l0.25i\h1i\l0.25i
. if\\n()t .tl \l0.25i\l0.25i
. lt
. po\}
..
.de}M
.}N
.wh-.5p }C
.ll\\n(LLu
.}P
..
.de}K
.}N
.pl1
.ll\\n(LLu
..
.de}P
.nr )P \\n%+1-\\np
.if \\nq .tm \\n(.F \\n()P \\np
.bp
.if \\nq .nr p \\n%
..
.deTH
.PD
.nrIN \\n()Mu
.ift .ds ]H \\$1\^(\^\\$2\^)
.ifn .ds ]H \\$1(\\$2)
.if\\n()s .ds ]D
.if\\n()t .ds ]D Plan 9
.ifn .ds ]D Plan 9
.ds]L
.if!\\$3 .ds ]L (\^\\$3\^)
.if!\\$4 .ds ]D \\$4
.wh0 }H
.wh-\\n(:mu }F
.em}M
.if\\n(nl .}P
.nr)I \\n()Mu
.nr)R 0
.}E
.DT
.ifn \{.na
.nh\}
.ift \{.bd S 3 3
.HY \}
\Xhtml <B>
\Xhtml [<A HREF="/sys/man/index.html">manual index</A>]
\Xhtml [<A HREF="/sys/man/\\$2/INDEX.html">section index</A>]
\Xhtml </B>
..
.deSH
.PD
.}X 0 "\\$1"
.nr)E 2
\&\Xhtml <H4>\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6\Xhtml </H4>
..
.deSS
.PD
.}X 3n "" ""
.nr)E 2
\Xhtml <H4>\&\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6\Xhtml </H4>
..
.de}X
.}E
.ti\\$1
.sp\\n(PDu
.ne1.1v
.nr)R 0
.fi
'''ss12
'''if\\$2SYNOPSIS .ss 18
.it1 }N
.if!\\$3 .SM
.ft 3
..
.de}2
.nr)E 0
.}E
.nr)I \\n()Mu
.ns
.ft1
..
.deSM
.nh
.ps\\n()S-1
.if!\\$1 \&\\$1
.if!\\$2 \&\\$2
.if!\\$3 \&\\$3
.if!\\$4 \&\\$4
.if!\\$5 \&\\$5
.if!\\$6 \&\\$6
.if!\\$1 .ps \\n()S
.if\\$1 .it 1 }N
.HY
..
.deI
.nh
.ft2
.it1 }N
.if!\\$1 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6
.HY
..
.deB
.nh
.it1 }N
.ie!\\$1 \%\&\f5\\$1 \\$2 \\$3 \\$4 \\$5 \\$6
.el .ft5
.HY
..
.deL
.nh
.it1 }N
.ift \{.ie!\\$1 \%\&\f5\\$1 \\$2 \\$3 \\$4 \\$5 \\$6
.el .ft5 \}
.ifn \{.ft5
.if!\\$1 \{.ie\\$2 `\\$1'
.el .ie\\$3 `\\$1 \\$2'
.el .ie\\$4 `\\$1 \\$2 \\$3'
.el .ie\\$5 `\\$1 \\$2 \\$3 \\$4'
.el .ie\\$6 `\\$1 \\$2 \\$3 \\$4 \\$5'
.el `\\$1 \\$2 \\$3 \\$4 \\$5 \\$6'\}\}
.HY
..
.deRI
.nh
.}S 1 2 \& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deIR
.nh
.}S 2 1 \& "\Xhtml manref start \\$1 \\$2\\$1" "\\$2\Xhtml manref end \\$1 \\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deIB
.nh
.ift .}S 2 5 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.ifn .}S 2 1 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deRB
.nh
.ift .}S 1 5 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.ifn .}S 1 1 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deBR
.nh
.ift .}S 5 1 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.ifn .}S 1 1 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deBI
.nh
.ift .}S 5 2 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.ifn .}S 1 2 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.de LR
.nh
.ift \%\&\f5\\$1\f1\\$2
.ifn \%`\\$1'\\$2
.HY
..
.de RL
.nh
.ift \%\&\f1\\$1\\f5\\$2\\f1\\$3
.ifn \%\\$1`\\$2'\\$3
.HY
..
.de}S
.ds]F
.if\\$12 .if !\\$5 .ds ]F \^
.if\\$22 .if !\\$5 .ds ]F \^
.ie!\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
.el\\$3
.}f
..
.deEX
.ift .ft5
.nf
..
.deEE
.ft1
.fi
..
.de}p
.sp\\n(PDu
.ne1.1v
.}E
.nr)I \\n()Mu
.ns
..
.dePP \"indirect PP so we can attach html - see tmac.anhtml
.}p
..
.deP
.PP
..
.deLP
.PP
..
.dePD
.ift .nr PD .4v
.ifn .nr PD 1v
.if!\\$1 .nr PD \\$1v
..
.deHP
.sp\\n(PDu
.ne1.1v
.if!\\$1 .nr )I \\$1n
.ll\\n(LLu
.in\\n()Ru+\\n(INu+\\n()Iu
.ti\\n()Ru+\\n(INu
.}f
..
.deIP
.ie!\\$1 \{.TP "\\$2"
\&\\$1\}
.el\{.sp\\n(PDu
.ne1.1v
.if!\\$2 .nr )I \\$2n
.}f
.ll\\n(LLu
.in\\n()Ru+\\n(INu+\\n()Iu
.lg\}
..
.deTP
.if!\\$1 \{.nr )I \\$1n
.if\\$10 .nr )I \\n()M\}
.sp\\n(PDu
.ne1.1v
.in\\n()Ru
.lg0
.ns
.it1 }N
.nr)E 1
.di]B
..
.deTF
.IP "" "\w'\f5\\$1\ \ \fP'u"
.PD0
..
.de}1
.ds]X \&\\*(]B\\
.rm]B
.nr)E 0
.if!\\$1 .nr )I \\$1n
.}f
.ll\\n(LLu
.in\\n()Ru+\\n(INu+\\n()Iu
.ti\\n(INu
.ie!\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X
.br\}
.el\\*(]X\h|\\n()Iu+\\n()Ru\c
.}f
.lg
..
.de}N
.if\\n()E .br
.if\\n()E1 .di
.if\\n()E0 .}f
.if\\n()E1 .}1
.if\\n()E2 .}2
..
.deRS
.nr]\\n+()p \\n()I
.nr)\\n()p \\n()R
.ie!\\$1 .nr )R +\\$1n
.el.nr )R +\\n()I
.nr)I \\n()Mu
.}E
..
.deRE
.if!\\$1 \{.ie \\$10 .nr )p 1 1
.el.nr )p \\$1 1 \}
.ds]i \\*(]I\\n()p
.ds]r \\*(]R\\n()p
.nr)I \\*(]i
.nr)R \\*(]r
.if\\n()p .nr )p -1
.}E
..
'''\" .2C begin 2-column display, by diversion
'''\" CC=amount of text that will fit on page
'''\" CL=1 multicolumn in effect, else 0
'''\" CI saved indent
'''\" CB contains diverted text
.de 2C
.ne 2
.nf
.nr CC \\n(.t/1v*2v
.nr CI \\n(IN
.nr IN 0
.di CB
.nr CL 1
.}E
.dt \\n(CCu C1
..
'''\" .1C return to 1-column
.de 1C
.nr CL 0
.C1
.fi
..
'''\" end of diversion, at end of page or return to 1-column
'''\" CC=pos of nominal column end
.de C1
.dt
\!.C3
.di
.if \\n(dn \{.nr CC \\n(dnu/2u+\\n(nlu
.wh \\n(CCu C2
.mk
.nf
.nr IN \\n(CIu
.}E
.CB \}
..
'''\" end of first column retrieved from diversion
'''\" CC=pos of actual column end
.de C2
.wh \\n(CCu
.mk CC
.po +(\\n(LLu/2u)u
.rt
.if \\n(dn>1v .ns
..
'''\" end of second column
.de C3
.br
.po -(\\n(LLu/2u)u
.if \\n(CC>\\n(nl .sp |\\n(CCu
.ne 2
..
.dePM
.if\\$1 .nr !K 0
.if\w\\$1 \{\
.ie\\$1P .nr !K 1
.el.ie \\$1BP .nr !K 3
.el.ie \\$1BR .nr !K 4
.el.nr !K 2 \}
.if\\n(!K .wh -(\\n(:mu+5v) )G
..
.de)G
.if\\n(!K 'sp 2v
.ie\\n(!K=1 \{\
.iet .bd1 3
.el.bd1 0
.tlPRIVATE
.bd1
.tlThis information should not be disclosed to unauthorized persons.
.tlIt is meant solely for use by authorized Bell System employees. \}
.el.ie \\n(!K=3 \{\
.iet .bd1 3
.el.bd1 0
.tlBELL LABORATORIES PROPRIETARY
.bd1
.tlNot for use or disclosure outside Bell Laboratories except by
.tlwritten approval of the director of the distributing organization. \}
.el.ie \\n(!K=4 \{\
.iet .bd1 3
.el.bd1 0
.tlBELL LABORATORIES RESTRICTED
.bd1
.tlThe information herein is meant solely for use by authorized
.tlBell Laboratories employees and is not to be disclosed to others. \}
.el.if \\n(!K=2 \{\
.iet .bd1 3
.el.bd1 0
.tlNOTICE
.bd1
.tlNot for use or disclosure outside the
.tlBell System except under written agreement. \}
..
.nr)s 0
.ift .if \ns .nr )s 1
.nr)t 0
.ift .if !\ns .nr )t 1
.if\n()s \{.nr )L 9i
.nrLL 4.75i
.nr)O .75i
.nr)S 8
.nr)V 9 \}
.if\n()t \{.nr )L 11i
.nrLL 6.5i
.nr)O 1i
.nr)S 9
.nr)V 11 \}
.ift \{.ds R ®
.dsS \s\n()S
..\}
.ifn \{.nr )L 11i
.nrLL 6.5i
.nr)O .463i
.if '\*(.T'think' \{.nrLL 80n
.nr)O 0\}
.if '\*(.T'thinksmall' \{.nrLL 142n
.vs 9p
.nr)O 0\}
.dsR (Reg.)
.dsS
..\}
.if\nT .nr LL 80n
.if\nV>1 \{
.nrLL 82n
.nr)L 84v
.rmul \}
.nr)p 0 1
.ds]I \\\\n(]
.ds]R \\\\n()
.if\nd0 .nr m \n(mo-1
.if\nm0 .ds ]m January
.if\nm1 .ds ]m February
.if\nm2 .ds ]m March
.if\nm3 .ds ]m April
.if\nm4 .ds ]m May
.if\nm5 .ds ]m June
.if\nm6 .ds ]m July
.if\nm7 .ds ]m August
.if\nm8 .ds ]m September
.if\nm9 .ds ]m October
.if\nm10 .ds ]m November
.if\nm11 .ds ]m December
.ifn \{.nr m \nm+1
.nr yD (\n(yr%100
.af yD 01
.ie\nd .ds ]W (last mod. \nm/\nd/\ny)
.el.ds ]W (printed \n(mo/\n(dy/\n(yD)
..\}
.if\n()s .ds ]W
.if\n()t \{.ie \nd .ds ]W \*(]m \nd, 20\ny
.el.ds ]W \*(]m \n(dy, 20\n(yr
..\}
.pl\n()Lu
.ll\n(LLu
.lt\n(LLu
.po\n()Ou
.ift .tr \``\''
.}f
.if\n()s .nr :m 3.5v
.if\n()t .nr :m 6v
.ifn .nr :m 7v
.ift .nr )M 3.6m
.ifn .nr )M 5n
.em}K
.nr q \np
.if!\np .nr p 1
.pn \np

14
tmac/tmac.anhtml Normal file
View file

@ -0,0 +1,14 @@
.so #9/sys/lib/tmac/tmac.an
.de }H
..
.de }F
..
.hy 0
.de HY
.hy 0
..
.nr LL 20i
.dePP
\Xhtml <P>
.}p
..

509
tmac/tmac.antimes Normal file
View file

@ -0,0 +1,509 @@
'''\" PWB Manual Entry Macros - 1.36 of 11/11/80
'''\" Nroff/Troff Version @(#)1.36
'''\" Option -rs1 short (9") pages
'''\" Option -rp# set no. of first page, put no. of pgs. on stderr
'''\" Option -rd1 give modified date instead of printed date
... temporary fixes for neat manual printing...
.deth
.tmwrong version of man entry macros - use -man6
.ab
..
.ifn .ds Tm \uTM\d
.ift .ds Tm \v'-0.5m'\s-4TM\s+4\v'0.5m'
.de}E
.}f
.in\\n()Ru+\\n(INu
.ll\\n(LLu
.lt\\n(LLu
.pl\\n()Lu
..
.deDT
.ift .ta 3.6m 7.2m 10.8m 14.4m 18m 21.6m 25.2m 28.8m 32.4m 36m 39.6m 43.2m 46.8m
.ifn .ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n
..
.de HY
.hy14
..
.de}f
.ift .vs \\n()Vp
.ps\\n()S
.ft1
..
.de}H
.ev1
.}C
.}E
.ie\\n()s 'sp |2v
.el'sp |3v
.".ps\\n()S-1
.tl \\*(]H\\*(]L\\*(]H
.ft1
.ps\\n()S
.ie\\n()s 'sp 1.5v
.el'sp 3v
.ev
.ns
.if \\n(CL .2C
..
.de}F
.ev1
.}E
.if\\n()s 'sp |\\n(.pu-1v-1p
.if\\n()t 'sp |\\n(.pu-3v
.ifn 'sp |\\n(.pu-4v
.ifn .tl Page %\\*(]D\\*(]W
.ift .tl %
.ev
'bp
..
.ifn .ig
.de}C
.if "\\*(.T"aps"\{\
. po0i
. lt7.5i
. if\\n()s .tl \l0.25i\l0.25i\h1i\l0.25i
. if\\n()t .tl \l0.25i\l0.25i
. lt
. po\}
..
.de}M
.}N
.wh-.5p }C
.ll\\n(LLu
.}P
..
.de}K
.}N
.pl1
.ll\\n(LLu
..
.de}P
.nr )P \\n%+1-\\np
.if \\nq .tm \\n(.F \\n()P \\np
.bp
.if \\nq .nr p \\n%
..
.deTH
.PD
.nrIN \\n()Mu
.ift .ds ]H \\$1\^(\^\\$2\^)
.ifn .ds ]H \\$1(\\$2)
.if\\n()s .ds ]D
.if\\n()t .ds ]D Plan 9
.ifn .ds ]D Plan 9
.ds]L
.if!\\$3 .ds ]L (\^\\$3\^)
.if!\\$4 .ds ]D \\$4
.wh0 }H
.wh-\\n(:mu }F
.em}M
.if\\n(nl .}P
.nr)I \\n()Mu
.nr)R 0
.}E
.DT
.ifn \{.na
.nh\}
.ift \{.bd S 3 3
.HY \}
..
.deSH
.PD
.}X 0 "\\$1" smaller
.nr)E 2
\&\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6
..
.deSS
.PD
.}X 3n "" ""
.nr)E 2
\&\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6
..
.de}X
.}E
.ti\\$1
.sp\\n(PDu
.ne1.1v
.nr)R 0
.fi
'''ss12
'''if\\$2SYNOPSIS .ss 18
.it1 }N
.if!\\$3 .SM
.ft 3
..
.de}2
.nr)E 0
.}E
.nr)I \\n()Mu
.ns
.ft1
..
.deSM
.nh
.ps\\n()S-1
.if!\\$1 \&\\$1
.if!\\$2 \&\\$2
.if!\\$3 \&\\$3
.if!\\$4 \&\\$4
.if!\\$5 \&\\$5
.if!\\$6 \&\\$6
.if!\\$1 .ps \\n()S
.if\\$1 .it 1 }N
.HY
..
.deI
.nh
.ft2
.it1 }N
.if!\\$1 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6
.HY
..
.deB
.nh
.it1 }N
.ie!\\$1 \%\&\f5\\$1 \\$2 \\$3 \\$4 \\$5 \\$6
.el .ft5
.HY
..
.deL
.nh
.it1 }N
.ift \{.ie!\\$1 \%\&\f5\\$1 \\$2 \\$3 \\$4 \\$5 \\$6
.el .ft5 \}
.ifn \{.ft5
.if!\\$1 \{.ie\\$2 `\\$1'
.el .ie\\$3 `\\$1 \\$2'
.el .ie\\$4 `\\$1 \\$2 \\$3'
.el .ie\\$5 `\\$1 \\$2 \\$3 \\$4'
.el .ie\\$6 `\\$1 \\$2 \\$3 \\$4 \\$5'
.el `\\$1 \\$2 \\$3 \\$4 \\$5 \\$6'\}\}
.HY
..
.deRI
.nh
.}S 1 2 \& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deIR
.nh
.}S 2 1 \& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deIB
.nh
.ift .}S 2 5 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.ifn .}S 2 1 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deRB
.nh
.ift .}S 1 5 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.ifn .}S 1 1 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deBR
.nh
.ift .}S 5 1 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.ifn .}S 1 1 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.deBI
.nh
.ift .}S 5 2 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.ifn .}S 1 2 \%\& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
.HY
.}f
..
.de LR
.nh
.ift \%\&\f5\\$1\f1\\$2
.ifn \%`\\$1'\\$2
.HY
..
.de RL
.nh
.ift \%\&\f1\\$1\\f5\\$2\\f1\\$3
.ifn \%\\$1`\\$2'\\$3
.HY
..
.de}S
.ds]F
.if\\$12 .if !\\$5 .ds ]F \^
.if\\$22 .if !\\$5 .ds ]F \^
.ie!\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
.el\\$3
.}f
..
.deEX
.ift .ft5
.nf
..
.deEE
.ft1
.fi
..
.dePP
.sp\\n(PDu
.ne1.1v
.}E
.nr)I \\n()Mu
.ns
..
.deP
.PP
..
.deLP
.PP
..
.dePD
.ift .nr PD .4v
.ifn .nr PD 1v
.if!\\$1 .nr PD \\$1v
..
.deHP
.sp\\n(PDu
.ne1.1v
.if!\\$1 .nr )I \\$1n
.ll\\n(LLu
.in\\n()Ru+\\n(INu+\\n()Iu
.ti\\n()Ru+\\n(INu
.}f
..
.deIP
.ie!\\$1 \{.TP "\\$2"
\&\\$1\}
.el\{.sp\\n(PDu
.ne1.1v
.if!\\$2 .nr )I \\$2n
.}f
.ll\\n(LLu
.in\\n()Ru+\\n(INu+\\n()Iu
.lg\}
..
.deTP
.if!\\$1 \{.nr )I \\$1n
.if\\$10 .nr )I \\n()M\}
.sp\\n(PDu
.ne1.1v
.in\\n()Ru
.lg0
.ns
.it1 }N
.nr)E 1
.di]B
..
.deTF
.IP "" "\w'\f5\\$1\ \ \fP'u"
.PD0
..
.de}1
.ds]X \&\\*(]B\\
.rm]B
.nr)E 0
.if!\\$1 .nr )I \\$1n
.}f
.ll\\n(LLu
.in\\n()Ru+\\n(INu+\\n()Iu
.ti\\n(INu
.ie!\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X
.br\}
.el\\*(]X\h|\\n()Iu+\\n()Ru\c
.}f
.lg
..
.de}N
.if\\n()E .br
.if\\n()E1 .di
.if\\n()E0 .}f
.if\\n()E1 .}1
.if\\n()E2 .}2
..
.deRS
.nr]\\n+()p \\n()I
.nr)\\n()p \\n()R
.ie!\\$1 .nr )R +\\$1n
.el.nr )R +\\n()I
.nr)I \\n()Mu
.}E
..
.deRE
.if!\\$1 \{.ie \\$10 .nr )p 1 1
.el.nr )p \\$1 1 \}
.ds]i \\*(]I\\n()p
.ds]r \\*(]R\\n()p
.nr)I \\*(]i
.nr)R \\*(]r
.if\\n()p .nr )p -1
.}E
..
'''\" .2C begin 2-column display, by diversion
'''\" CC=amount of text that will fit on page
'''\" CL=1 multicolumn in effect, else 0
'''\" CI saved indent
'''\" CB contains diverted text
.de 2C
.ne 2
.nf
.nr CC \\n(.t/1v*2v
.nr CI \\n(IN
.nr IN 0
.di CB
.nr CL 1
.}E
.dt \\n(CCu C1
..
'''\" .1C return to 1-column
.de 1C
.nr CL 0
.C1
.fi
..
'''\" end of diversion, at end of page or return to 1-column
'''\" CC=pos of nominal column end
.de C1
.dt
\!.C3
.di
.if \\n(dn \{.nr CC \\n(dnu/2u+\\n(nlu
.wh \\n(CCu C2
.mk
.nf
.nr IN \\n(CIu
.}E
.CB \}
..
'''\" end of first column retrieved from diversion
'''\" CC=pos of actual column end
.de C2
.wh \\n(CCu
.mk CC
.po +(\\n(LLu/2u)u
.rt
.if \\n(dn>1v .ns
..
'''\" end of second column
.de C3
.br
.po -(\\n(LLu/2u)u
.if \\n(CC>\\n(nl .sp |\\n(CCu
.ne 2
..
.dePM
.if\\$1 .nr !K 0
.if\w\\$1 \{\
.ie\\$1P .nr !K 1
.el.ie \\$1BP .nr !K 3
.el.ie \\$1BR .nr !K 4
.el.nr !K 2 \}
.if\\n(!K .wh -(\\n(:mu+5v) )G
..
.de)G
.if\\n(!K 'sp 2v
.ie\\n(!K=1 \{\
.iet .bd1 3
.el.bd1 0
.tlPRIVATE
.bd1
.tlThis information should not be disclosed to unauthorized persons.
.tlIt is meant solely for use by authorized Bell System employees. \}
.el.ie \\n(!K=3 \{\
.iet .bd1 3
.el.bd1 0
.tlBELL LABORATORIES PROPRIETARY
.bd1
.tlNot for use or disclosure outside Bell Laboratories except by
.tlwritten approval of the director of the distributing organization. \}
.el.ie \\n(!K=4 \{\
.iet .bd1 3
.el.bd1 0
.tlBELL LABORATORIES RESTRICTED
.bd1
.tlThe information herein is meant solely for use by authorized
.tlBell Laboratories employees and is not to be disclosed to others. \}
.el.if \\n(!K=2 \{\
.iet .bd1 3
.el.bd1 0
.tlNOTICE
.bd1
.tlNot for use or disclosure outside the
.tlBell System except under written agreement. \}
..
.nr)s 0
.ift .if \ns .nr )s 1
.nr)t 0
.ift .if !\ns .nr )t 1
.if\n()s \{.nr )L 9i
.nrLL 4.75i
.nr)O .75i
.nr)S 9
.nr)V 10 \}
.if\n()t \{.nr )L 11i
.nrLL 6.5i
.nr)O 1i
.nr)S 10
.nr)V 12 \}
.ift \{.ds R \(rg
.dsS \s\n()S
..\}
.ifn \{.nr )L 11i
.nrLL 6.5i
.nr)O .463i
.if '\*(.T'think' \{.nrLL 80n
.nr)O 0\}
.if '\*(.T'thinksmall' \{.nrLL 142n
.vs 9p
.nr)O 0\}
.dsR (Reg.)
.dsS
..\}
.if\nT .nr LL 80n
.if\nV>1 \{
.nrLL 82n
.nr)L 84v
.rmul \}
.nr)p 0 1
.ds]I \\\\n(]
.ds]R \\\\n()
.if\nd0 .nr m \n(mo-1
.if\nm0 .ds ]m January
.if\nm1 .ds ]m February
.if\nm2 .ds ]m March
.if\nm3 .ds ]m April
.if\nm4 .ds ]m May
.if\nm5 .ds ]m June
.if\nm6 .ds ]m July
.if\nm7 .ds ]m August
.if\nm8 .ds ]m September
.if\nm9 .ds ]m October
.if\nm10 .ds ]m November
.if\nm11 .ds ]m December
.ifn \{.nr m \nm+1
.ie\nd .ds ]W (last mod. \nm/\nd/\ny)
.el.ds ]W (printed \n(mo/\n(dy/\n(yr)
..\}
.if\n()s .ds ]W
.if\n()t \{.ie \nd .ds ]W \*(]m \nd, 20\ny
.el.ds ]W \*(]m \n(dy, 20\n(yr
..\}
.pl\n()Lu
.ll\n(LLu
.lt\n(LLu
.po\n()Ou
.fp 5 L CW
.ift .tr \``\''
.}f
.if\n()s .nr :m 3.5v
.if\n()t .nr :m 6v
.ifn .nr :m 7v
.ift .nr )M 3.6m
.ifn .nr )M 5n
.em}K
.nr q \np
.if!\np .nr p 1
.pn \np

44
tmac/tmac.bits Normal file
View file

@ -0,0 +1,44 @@
.ds Bf b \" default format; use i for icons and faces
.ds Bn /tmp/btroff\n($$ \" temporary file, reused on each macro call
.ds Bp /usr/lib/btroff \" bitmap filter
.de BM
.if \\n(.$=1 .ds Bf \\$1
.if \\n(.$=2 \{. \" copy request, perhaps diverted
.ie '\\n(.z'' .Bm \\$1 \\$2
.el \!.BM \\$1 \\$2\}
.if \\n(.$=4 \{. \" size request, numerator only
.nr Bz \\$2
.sy \\*(Bp -s -\\*(Bf -d\\n(Bz \\$1 | awk '{\
print ".nr \\$3 " $1; \
print ".nr \\$4 " $2; \
exit }' >\\*(Bn
.so \\*(Bn
.sy /bin/rm -f \\*(Bn \}
.if \\n(.$=5 \{. \" size request, numerator and denominator
.nr Bz \\$2
.sy \\*(Bp -s -\\*(Bf -d\\n(Bz \\$1 | awk '{\
print ".nr \\$4 " $1 "/\\$3"; \
print ".nr \\$5 " $2 "/\\$3"; \
exit }' >\\*(Bn
.so \\*(Bn
.sy /bin/rm -f \\*(Bn \}
..
.de Bm \" copy request, for real
.if \\n(.P>0 \{. \" maybe
.fl
.ie '\\$2'0' \{. \" ask driver to read the bits
.br
\\X'Bitmap \\$1'
.sp -1 \}
.el \{. \" use the Bitmap font
.sy \\*(Bp -\\*(Bf -d\\$2 \\$1 >\\*(Bn
.fp 9 BM Bitmap
.ft 9
.ps \\$2
.cf \\*(Bn \" next line is for pm to consume
\!n0 1
.ft
.ps
.sy /bin/rm -f \\*(Bn \}
.fl \}
..

1150
tmac/tmac.cs Normal file

File diff suppressed because it is too large Load diff

997
tmac/tmac.e Normal file
View file

@ -0,0 +1,997 @@
.nr _0 \n(.c
.\"**********************************************************************
.\"* *
.\"* ****** - M E N R O F F / T R O F F M A C R O S ****** *
.\"* *
.\"* Produced for your edification and enjoyment by: *
.\"* Eric Allman *
.\"* Electronics Research Laboratory *
.\"* U.C. Berkeley. *
.\"* *
.\"* VERSION 2.9 First Release: 11 Sept 1978 *
.\"* See file \*(||/revisions for revision history *
.\"* *
.\"* Documentation is available. *
.\"* *
.\"**********************************************************************
.\"
.\" @(#)tmac.e 2.9 12/10/80
.\" This version has had comments stripped; an unstripped version is available.
.if !\n(.V .tm You are using the wrong version of NROFF/TROFF!!
.if !\n(.V .tm This macro package works only on the version seven
.if !\n(.V .tm release of NROFF and TROFF.
.if !\n(.V .ex
.if \n(pf \
. nx \*(||/null.me
.de @C
.nr _S \\n(.s
.nr _V \\n(.v
.nr _F \\n(.f
.nr _I \\n(.i
.ev \\$1
.ps \\n(_Su
.vs \\n(_Vu
.ft \\n(_F
'in \\n(_Iu
.xl \\n($lu
.lt \\n($lu
.rr _S
.rr _V
.rr _F
.rr _I
.ls 1
'ce 0
..
.de @D
.ds |p "\\$3
.nr _d \\$1
.ie "\\$2"C" \
. nr _d 1
.el .ie "\\$2"L" \
. nr _d 2
.el .ie "\\$2"I" \
. nr _d 3
.el .ie "\\$2"M" \
. nr _d 4
.el \
. ds |p "\\$2
..
.de @z
.if !"\\n(.z"" \
\{\
. tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
. di
. ex
.\}
.if \\n(?a \
. bp
.rm bp
.rm @b
.if t \
. wh -1p @m
.br
..
.de @I
.rm th
.rm ac
.rm lo
.rm sc
.rm @I
..
.de he
.ie !\\n(.$ \
\{\
. rm |4
. rm |5
.\}
.el \
\{\
. ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
. ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.\}
..
.de eh
.ie !\\n(.$ \
. rm |4
.el \
. ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
..
.de oh
.ie !\\n(.$ \
. rm |5
.el \
. ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
..
.de fo
.ie !\\n(.$ \
\{\
. rm |6
. rm |7
.\}
.el \
\{\
. ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
. ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
.\}
..
.de ef
.ie !\\n(.$ \
. rm |6
.el \
. ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
..
.de of
.ie !\\n(.$ \
. rm |7
.el \
. ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
..
.de ep
.if \\n(nl>0 \
\{\
. wh 0
. rs
. @b
.\}
..
.de @h
.if (\\n(.i+\\n(.o)>=\\n(.l \
. tm Line \\n(c. -- Offset + indent exceeds line length
.if t .if (\\n(.l+\\n(.o)>7.75i \
. tm Line \\n(c. -- Offset + line length exceeds paper width
.nr ?h \\n(?H
.rr ?H
.nr ?c \\n(?C
.rr ?C
.rn |4 |0
.rn |5 |1
.rn |6 |2
.rn |7 |3
.nr _w 0
.nr ?W 0
.nr ?I 1
.ev 2
.rs
.if t .@m
.if \\n(hm>0 \
. sp |\\n(hmu
.if \\n($T=2 \\!.
.@t $h
.if \\n(tm<=0 \
. nr tm \n(.Vu
.sp |\\n(tmu
.ev
.mk _k
.if \\n(?n .nm 1
.nr $c 1
.ie \\n(?s \
\{\
. rr ?s
. rs
' @b
.\}
.el \
. @n
..
.de @m
.@O 0
.lt 7.5i
.tl '\(rn''\(rn'
.@O
.lt
..
.de @n
.if \\n(bm<=0 \
. nr bm \\n(.Vu
.if (\\n(_w<=\\n($l)&(\\n(?W=0) \
\{\
. nr _b (\\n(ppu*\\n($ru)/2u
. if \\n(_bu>((\\n(bmu-\\n(fmu-(\\n(tpu*\\n($ru))/2u) \
. nr _b (\\n(ppu*\\n($ru)-\n(.Vu
. nr _b +\\n(bmu
.\}
.nr _B \\n(_bu
.ch @f
.wh -\\n(_bu @f
.nr ?f 0
.if \\n(?o \
\{\
. (f _
. nf
. |o
. fi
. )f
. rm |o
.\}
.nr ?o 0
.if \\n(?T \
\{\
. nr _i \\n(.i
. in \\n($iu
. |h
. in \\n(_iu
. rr _i
. mk #T
. ns
.\}
.if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
\{\
. nr ?a 0
. @k |t
. if \\n(?w \
. mk _k
. nr ?w 0
.\}
.os
.$H
.ns
..
.de @f
.ec
.if \\n(?T \
\{\
. nr T. 1
. T# 1
. br
.\}
.ev 2
.ce 0
.if \\n(?b \
\{\
. nr ?b 0
. @k |b
.\}
.if \\n(?f \
. @o
.ie \\n($c<\\n($m \
. @c
.el \
. @e
.ev
..
.de @o
.nf
.ls 1
.in 0
.wh -\\n(_Bu @r
.|f
.fi
.if \\n(?o \
. di
. if \\n(dn=0 \
\{\
. rm |o
. nr ?o 0
. \}
. nr dn \\n(_D
. rr _D
.\}
.rm |f
.ch @r
..
.de @c
.rs
.sp |\\n(_ku
.@O +\\n($lu+\\n($su
.nr $c +1
.@n
..
.de @e
.@O \\n(_ou
.rs
.sp |\\n(.pu-\\n(fmu-(\\n(tpu*\\n($ru)
.@t $f
.nr ?h 0
.bp
..
.de @t
.if !\\n(?h \
\{\
. sz \\n(tp
. @F \\n(tf
. lt \\n(_Lu
. nf
. \\$1
. br
.\}
..
.de $h
.rm |z
.if !\\n(?c \
\{\
. if e .ds |z "\\*(|0
. if o .ds |z "\\*(|1
.\}
.if !\(ts\\*(|z\(ts\(ts \
' tl \\*(|z
.rm |z
..
.de $f
.rm |z
.if \\n(?c \
\{\
. if e .ds |z "\\*(|0
. if o .ds |z "\\*(|1
.\}
.if \(ts\\*(|z\(ts\(ts \
\{\
. if e .ds |z "\\*(|2
. if o .ds |z "\\*(|3
.\}
.if !\(ts\\*(|z\(ts\(ts \
' tl \\*(|z
.rm |z
..
.de @r
.di |o
.nr ?o 1
.nr _D \\n(dn
.ns
..
.rn bp @b
.de bp
.nr $c \\n($m
.ie \\n(nl>0 \
. @b \\$1
.el \
\{\
. if \\n(.$>0 \
. pn \\$1
. if \\n(?I \
. @h
.\}
.br
.wh 0 @h
..
.rn ll xl
.de ll
.xl \\$1
.lt \\$1
.nr $l \\n(.l
.if (\\n($m<=1):(\\n($l>\\n(_L) \
. nr _L \\n(.l
..
.rn po @O
.de po
.@O \\$1
.nr _o \\n(.o
..
.de hx
.nr ?H 1
..
.de ix
'in \\$1
..
.de bl
.br
.ne \\$1
.rs
.sp \\$1
..
.de n1
.nm 1
.xl -\w'0000'u
.nr ?n 1
..
.de n2
.nm \\$1
.ie \\n(.$ \
. xl -\w'0000'u
.el \
. xl \\n($lu
..
.de pa
.bp \\$1
..
.de ro
.af % i
..
.de ar
.af % 1
..
.de m1
.nr _0 \\n(hmu
.nr hm \\$1v
.nr tm +\\n(hmu-\\n(_0u
.rr _0
..
.de m2
.nr tm \\n(hmu+\\n(tpp+\\$1v
..
.de m3
.nr bm \\n(fmu+\\n(tpp+\\$1v
..
.de m4
.nr _0 \\n(fmu
.nr fm \\$1v
.nr bm +\\n(fmu-\\n(_0u
..
.de sk
.if \\n(.$>0 \
. tm Line \\n(c. -- I cannot skip multiple pages
.nr ?s 1
..
.de re
.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
..
.if t .ig
.de re
.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
..
.de ba
.ie \\n(.$ \
. nr $i \\$1n
.el \
. nr $i \\n(siu*\\n($0u
..
.de hl
.br
\l'\\n(.lu-\\n(.iu'
.sp
..
.de pp
.lp \\n(piu
..
.de lp
.@p
.if \\n(.$ \
. ti +\\$1
.nr $p 0 1
..
.de ip
.if (\\n(ii>0)&(\\n(ii<1n) \
. nr ii \\n(iin
.nr _0 \\n(ii
.if \\n(.$>1 \
. nr _0 \\$2n
.@p \\n(_0u
.if \\w"\\$1" \
\{\
. ti -\\n(_0u
. ie \\w"\\$1">=\\n(_0 \
\{\
\&\\$1
. br
. \}
. el \&\\$1\h'|\\n(_0u'\c
.\}
.rr _0
..
.de np
.nr $p +1
.ip (\\n($p)
..
.de @p
.@I
.if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
.in \\n($iu+\\n(pou
.if \\n(.$ \
. in +\\$1n
.ce 0
.fi
.@F \\n(pf
.sz \\n(ppu
.sp \\n(psu
.ne \\n(.Lv+\\n(.Vu
.ns
..
.de sh
.rn sh @T
.so \\*(||/sh.me
.sh "\\$1" "\\$2" \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
.rm @T
..
.de $p
.if (\\n(si>0)&(\\n(.$>2) \
. nr $i \\$3*\\n(si
.in \\n($iu
.ie !"\\$1\\$2"" \
\{\
. sp \\n(ssu
. ne \\n(.Lv+\\n(.Vu+\\n(psu+(\\n(spu*\\n($ru*\\n(.Lu)
. ie \\n(.$>2 \
. ti -(\\n(siu-\\n(sou)
. el \
. ti +\\n(sou
. @F \\n(sf
. sz \\n(spu
. if \\$3>0 \
. $\\$3
. if \w"\\$2">0 \\$2.
. if \w"\\$1">0 \\$1\f1\ \ \"
.\}
.el \
. sp \\n(psu
.@F \\n(pf
.sz \\n(ppu
..
.de uh
.rn uh @T
.so \\*(||/sh.me
.uh "\\$1"
.rm @T
..
.de 2c
.br
.if \\n($m>1 \
. 1c
.nr $c 1
.nr $m 2
.if \\n(.$>1 \
. nr $m \\$2
.if \\n(.$>0 \
. nr $s \\$1n
.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
.xl \\n($lu
.mk _k
.ns
..
.de 1c
.br
.nr $c 1
.nr $m 1
.ll \\n(_Lu
.sp |\\n(.hu
.@O \\n(_ou
..
.de bc
.sp 24i
..
.de (z
.rn (z @V
.so \\*(||/float.me
.(z \\$1 \\$2
.rm @V
..
.de )z
.tm Line \\n(c. -- unmatched .)z
..
.de (t
.(z \\$1 \\$2
..
.de )t
.)z \\$1 \\$2
..
.de (b
.br
.@D 3 \\$1 \\$2
.sp \\n(bsu
.@(
..
.de )b
.br
.@)
.if (\\n(bt=0):(\\n(.t<\\n(bt) \
. ne \\n(dnu
.ls 1
.nf
.|k
.ec
.fi
.in 0
.xl \\n($lu
.ev
.rm |k
.sp \\n(bsu+\\n(.Lv-1v
..
.de @(
.if !"\\n(.z"" .tm Line \\n(c. -- Illegal nested keep \\n(.z
.@M
.di |k
\!'rs
..
.de @M
.nr ?k 1
.@C 1
.@F \\n(df
.vs \\n(.su*\\n($Ru
.nf
.if "\\*(|p"F" \
. fi
.if \\n(_d=4 \
. in 0
.if \\n(_d=3 \
\{\
. in +\\n(biu
. xl -\\n(biu
.\}
.if \\n(_d=1 \
. ce 10000
..
.de @)
.br
.if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
.nr ?k 0
.di
.in 0
.ce 0
..
.de (c
.if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
.di |c
..
.de )c
.if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
.br
.di
.ev 1
.ls 1
.in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
.nf
.|c
.ec
.in
.ls
.ev
.rm |c
..
.de (q
.br
.@C 1
.fi
.sp \\n(qsu
.in +\\n(qiu
.xl -\\n(qiu
.sz \\n(qp
..
.de )q
.br
.ev
.sp \\n(qsu+\\n(.Lv-1v
.nr ?k 0
..
.de (l
.br
.sp \\n(bsu
.@D 3 \\$1 \\$2
.@M
..
.de )l
.br
.ev
.sp \\n(bsu+\\n(.Lv-1v
.nr ?k 0
..
.de EQ
.rn EQ @T
.so \\*(||/eqn.me
.EQ \\$1 \\$2
.rm @T
..
.de TS
.rn TS @W
.so \\*(||/tbl.me
.TS \\$1 \\$2
.rm @W
..
.de sz
.ps \\$1
.vs \\n(.su*\\n($ru
.bd S B \\n(.su/3u
..
.de r
.nr _F \\n(.f
.ul 0
.ft 1
.if \\n(.$ \&\\$1\f\\n(_F\\$2
.rr _F
..
.de i
.nr _F \\n(.f
.ul 0
.ft 2
.if \\n(.$ \&\\$1\f\\n(_F\\$2
.rr _F
..
.de b
.nr _F \\n(.f
.ul 0
.ie t \
. ft 3
.el \
. ul 10000
.if \\n(.$ \&\\$1\f\\n(_F\\$2
.if \\n(.$ \
. ul 0
.rr _F
..
.de rb
.nr _F \\n(.f
.ul 0
.ft 3
.if \\n(.$ \&\\$1\f\\n(_F\\$2
.rr _F
..
.de u
\&\\$1\l'|0\(ul'\\$2
..
.de q
\&\\*(lq\\$1\\*(rq\\$2
..
.de bi
.ft 2
.ie t \&\k~\\$1\h'|\\n~u+(\\n(.su/3u)'\\$1\fP\\$2
.el \&\\$1\fP\\$2
..
.de bx
.ie \\n($T \&\f2\\$1\fP\\$2
.el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
..
.de @F
.nr ~ \\$1
.if \\n~>0 \
\{\
. ul 0
. ie \\n~>4 \
\{\
. if n .ul 10000
. if t .ft 3
. \}
. el \
. ft \\n~
.\}
.rr ~
..
.de (f
.rn (f @U
.so \\*(||/footnote.me
.(f \\$1 \\$2
.rm @U
..
.de )f
.tm Line \\n(c. -- unmatched .)f
..
.de $s
\l'2i'
.if n \
. sp 0.3
..
.de (d
.rn (d @U
.so \\*(||/deltext.me
.(d \\$1 \\$2
.rm @U
..
.de )d
.tm Line \\n(c. -- unmatched .)d
..
.de (x
.rn (x @U
.so \\*(||/index.me
.(x \\$1 \\$2
.rm @U
..
.de )x
.tm Line \\n(c. -- unmatched .)x
..
.de th
.so \\*(||/thesis.me
.rm th
..
.de +c
.ep
.if \\n(?o:\\n(?a \
\{\
. bp
. rs
. ep
.\}
.nr ?C 1
.nr $f 1 1
.ds * \\*[1\\*]\k*
.if \\n(?R \
. pn 1
.bp
.in \\n($iu
.rs
.ie \\n(.$ \
. $c "\\$1"
.el \
. sp 3
..
.de ++
.nr _0 0
.if "\\$1"C" \
. nr _0 1
.if "\\$1"RC" \
. nr _0 11
.if "\\$1"A" \
. nr _0 2
.if "\\$1"RA" \
. nr _0 12
.if "\\$1"P" \
. nr _0 3
.if "\\$1"B" \
. nr _0 4
.if "\\$1"AB" \
. nr _0 5
.if \\n(_0=0 \
. tm Line \\n(c. -- Bad mode to .++
.nr ?R 0
.if \\n(_0>10 \
.\{
. nr ?R 1
. nr _0 -10
.\}
.nr ch 0 1
.if (\\n(_0=3):(\\n(_0=5) \
. pn 1
.ep
.if \\n(_0=1 \
\{\
. af ch 1
. af % 1
.\}
.if \\n(_0=2 \
\{\
. af ch A
. af % 1
.\}
.if \\n(_0=3 \
. af % i
.if \\n(_0=4 \
. af % 1
.if \\n(_0=5 \
. af % 1
.if \\n(.$>1 \
. he \\$2
.if !\\n(_0=\\n(_M .if \\n(_M=3 \
. pn 1
.nr _M \\n(_0
.rr _0
..
.de $c
.sz 12
.ft B
.ce 1000
.if \\n(_M<3 \
. nr ch +1
.ie \\n(_M=1 CHAPTER\ \ \\n(ch
.el .if \\n(_M=2 APPENDIX\ \ \\n(ch
.if \w"\\$1" .sp 3-\\n(.L
.if \w"\\$1" \\$1
.if (\\n(_M<3):(\w"\\$1") \
. sp 4-\\n(.L
.ce 0
.ft
.sz
.ie \\n(_M=1 \
. $C Chapter \\n(ch "\\$1"
.el .if \\n(_M=2 \
. $C Appendix \\n(ch "\\$1"
..
.de tp
.hx
.bp
.br
.rs
.pn \\n%
..
.de ac
.rn ac @T
.so \\*(||/acm.me
.ac "\\$1" "\\$2"
.rm @T
..
.de lo
.so \\*(||/local.me
.rm lo
..
.if \n(mo=1 .ds mo January
.if \n(mo=2 .ds mo February
.if \n(mo=3 .ds mo March
.if \n(mo=4 .ds mo April
.if \n(mo=5 .ds mo May
.if \n(mo=6 .ds mo June
.if \n(mo=7 .ds mo July
.if \n(mo=8 .ds mo August
.if \n(mo=9 .ds mo September
.if \n(mo=10 .ds mo October
.if \n(mo=11 .ds mo November
.if \n(mo=12 .ds mo December
.if \n(dw=1 .ds dw Sunday
.if \n(dw=2 .ds dw Monday
.if \n(dw=3 .ds dw Tuesday
.if \n(dw=4 .ds dw Wednesday
.if \n(dw=5 .ds dw Thursday
.if \n(dw=6 .ds dw Friday
.if \n(dw=7 .ds dw Saturday
.ds td \*(mo \n(dy, 20\n(yr
.if (1m<0.1i)&(\nx!=0) \
. vs 9p
.rr x
.nr $r \n(.v/\n(.s
.nr $R \n($r
.nr hm 4v
.nr tm 7v
.nr bm 6v
.nr fm 3v
.nr tf 3
.nr tp 10
.hy 14
.nr bi 4n
.nr pi 5n
.nr pf 1
.nr pp 10
.nr qi 4n
.nr qp -1
.nr ii 5n
.nr $m 1
.nr $s 4n
.ds || #9/sys/lib/tmac/me
.bd S B 3
.ds [ \u\x'-0.25v'
.ds ] \d
.ds < \d\x'0.25v'
.ds > \u
.ds - --
.if t \
\{\
. ds [ \v'-0.4m'\x'-0.2m'\s-3
. ds ] \s0\v'0.4m'
. ds < \v'0.4m'\x'0.2m'\s-3
. ds > \s0\v'-0.4m'
. ds - \-
. nr fi 0.3i
.\}
.if n \
\{\
. nr fi 3n
.\}
.nr _o \n(.o
.if n .po 1i
.if \n(.V=1v \
. nr $T 2
.if \n(.T=0 \
. nr $T 1
.if t \
\{\
. nr $T 0
. po -0.5i
.\}
.if \nv \
. po 1i
.if \n($T \
\{\
. if \n($T=1 \
. po 0
. ds [ [
. ds ] ]
. ds < <
. ds > >
.\}
.nr ps 0.5v
.if \n($T \
. nr ps 1v
.if t .nr ps 0.35v
.nr bs \n(ps
.nr qs \n(ps
.nr zs 1v
.nr xs 0.2v
.nr fs 0.2v
.if \n($T \
. nr fs 0
.if n .nr es 1v
.if t .nr es 0.5v
.wh 0 @h
.nr $l \n(.lu
.nr _L \n(.lu
.nr $c 1
.nr $f 1 1
.ds * \*[1\*]\k*\"
.nr $d 1 1
.ds # [1]\k#\"
.nr _M 1
.ds lq \&"\"
.ds rq \&"\"
.if t \
. ds lq ``
.if t \
. ds rq ''
.em @z
.de sc
.so \\*(||/chars.me
.rm sc
..
.ll 6.0i
.lt 6.0i

63
tmac/tmac.jsdisp Normal file
View file

@ -0,0 +1,63 @@
. \" DS - display. If .DS C, center; L, left-adjust; I, indent.
.de DS
.KS
.nf
.\\$1D \\$2 \\$1
.ft 1
.ps \\n(PS
.if \\n(VS>40 .vs \\n(VSu
.if \\n(VS<=39 .vs \\n(VSp
..
.de D
.ID \\$1
..
.de CD
.XD
.ce 1000
..
.de ID
.XD
.if t .in +0.5i
.if n .in +8
.if \\n(.$ .if !"\\$1"I" .if !"\\$1"" .in \\n(OIu
.if \\n(.$ .if !"\\$1"I" .if !"\\$1"" .in +\\$1n
..
.de LD
.XD
..
.de XD
.nf
.nr OI \\n(.i
.SP \\n(DVu
.sp \\n(DVu
..
. \" BD - block display: save everything, then center it.
.de BD
.XD
.nr BD 1
.nf
.in \\n(OIu
.di DD
..
. \"DE - display end
.de DE
.ce 0
.if \\n(BD>0 .DF
.nr BD 0
.in \\n(OIu
.KE
.SP \\n(DVu
.sp \\n(DVu
.fi
..
. \" DF - finish a block display to be recentered.
.de DF
.di
.if \\n(dl>\\n(BD .nr BD \\n(dl
.if \\n(BD<\\n(.l .in (\\n(.lu-\\n(BDu)/2u
.nr EI \\n(.l-\\n(.i
.ta \\n(EIuR
.nf
.DD
.in \\n(OIu
..

3
tmac/tmac.m Normal file
View file

@ -0,0 +1,3 @@
'''\" TMAC.M @(#)tmacs.src 1.7
.if n .so #9/sys/lib/tmac/mmn
.if t .so #9/sys/lib/tmac/mmt

2014
tmac/tmac.mcs Normal file

File diff suppressed because it is too large Load diff

1
tmac/tmac.nihongo Normal file
View file

@ -0,0 +1 @@
.pi $PLAN9/bin/mnihongo

2
tmac/tmac.org Normal file
View file

@ -0,0 +1,2 @@
'''\" TMAC.ORG @(#)tmacs.src 1.7
.so /usr/lib/macros/org

154
tmac/tmac.pictures Normal file
View file

@ -0,0 +1,154 @@
.de PI \" Picture Include
. \" $1=file(page) $2=height,width,yoff,xoff $3=flags
. \" Height, width, xoff, and yoff are for the frame, flags is for the
. \" picture. Default dimensions are inches.
\\X'PI:\\n(.o:\\n(.i:\\n(.l:\\n(.t:\\$1:\\$2:\\$3:'\\c
..
.nr FT 0
.de BP \" Begin a Picture
. \"
. \" $1=file(page) $2=height $3=width $4=position $5=offset $6=flags $7=label
. \"
. \" Height, width, position, and offset are for the frame, flags is for
. \" the picture. The postion flag should be l, c, r, or "". Omitting the
. \" position argument is also allowed for compatibility with the original
. \" version of the macro. In that case offset is taken relative to your
. \" left margin.
.if \\n(FT>1 .EP
. \" Need these when we switch environments.
.nr Ov \\n(.v
.nr Oi \\n(.i
.nr Ol \\n(.l
. \" Remember the arguments - sometimes as both a string and number register.
.nr $2 \\$2i
.nr $3 \\$3i
.nr $4 \\$4i
.ds $4 \\$4
.nr $5 \\$5i
.ds $5 \\$6
.ds $6 \\$7
. \" Accept a few unadvertised position flags.
.if '\\*($4'L' .ds $4 l
.if '\\*($4'C' .ds $4 c
.if '\\*($4'R' .ds $4 r
. \" A null with more than three arguments means l.
.if \\n(.$>3 .if '\\*($4'' .ds $4 l
. \" Default frame dimensions if missing, zero, or null.
.if !\\n($2>0 .nr $2 3.0i
.if !\\n($3>0 .nr $3 \\n(.lu-\\n(.iu-\\n($4u
.if !\\n($3>0 .nr $3 \\n($2u
. \" Figure out the offset that will be used the rest of the way.
.if '\\*($4'l' .nr $4 \\n($5u
.if '\\*($4'c' .nr $4 (\\n(.lu-\\n(.iu-\\n($3u)/2u+\\n($5u
.if '\\*($4'r' .nr $4 \\n(.lu-\\n(.iu-\\n($3u+\\n($5u
. \" If we haven't recognized the position flag assume it wasn't given and
. \" treat argument four as an offset from the left.
.if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $5 \\$5
.if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $6 \\$6
. \" Set increments for line length and indent.
.nr Ii \\n($3u+\\n($4u+.1i
.nr Il \\n(.lu-\\n(.iu-\\n($4u+.1i
. \" Set the frame type to one of:
. \" 0 - frame is as wide as a line of text - skip over it.
. \" 1 - fits in left or right margins
. \" 2 - fill with text on the right
. \" 3 - on the left
. \" 4 - or on both sides of the frame
. \" 5 - only set in EP if FT was 4 and now filling on the right.
. \" Assume the frame is as wide as a line of text, then check dimensions
. \" to see what's really true. The order of these tests is important!
.nr FT 0
.if \\n($4u>1.0i .nr FT 3
.if \\n($4u+\\n(.iu>=\\n(.lu .nr FT 1
.if \\n($3u+\\n($4u+\\n(.iu+1.0i<\\n(.lu .nr FT 2
.if \\n($3u+\\n($4u<=0 .nr FT 1
.if \\n(FT=2 .if \\n($4u>1.0i .nr FT 4
. \" Ask for some vertical space - labeled pictures need a little extra,
. \" margin pictures a little less.
.if \\n(FT=1 .if '\\*($6'' .ne \\n($2u
.if \\n(FT=1 .if !'\\*($6'' .ne \\n($2u+2v
.if !\\n(FT=1 .if '\\*($6'' .ne \\n($2u+3v
.if !\\n(FT=1 .if !'\\*($6'' .ne \\n($2u+5v
. \" Save our place, draw the picture, label it, and return. Need precise
. \" control of when \X'...' is put out - thus the new environment.
.mk Oh
.ev 1
.in \\n(Oiu
.ll \\n(Olu
.vs \\n(Ovu
.if \\n(FT=1 .sp -1v
.if \\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u t\\*($5
.if !\\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u \\*($5
.in
.ll
.vs
.ev
.lt \\n($3u
.tl \(ts\(ts\\h'\\n($4u+\\n(.iu'\\v'\\n($2u+1.5v'\\*($6\\v'-\\n($2u-1.5v'\\h'-\\n($4u-\\n(.iu'\(ts\(ts
.lt
'sp |\\n(Ohu
. \" Figure out what to do with the text that follows.
.if !'\\*($6'' .nr $2 +2v
.if \\n(FT=0 .sp \\n($2u+2v
.if \\n(FT=1 .nr FT 0
.if \\n(FT=2 'in +\\n(Iiu
.if \\n(FT>2 .ll -\\n(Ilu
.if \\n(FT>1 .di BB
.if \\n(FT>1 .dt \\n($2u+2v+1u EP
. \" Clean things up.
.rr $2
.rr $3
.rr $4
.rm $4
.rr $5
.rm $5
.rm $6
.rr Oh
.rr Oi
.rr Ol
.rr Ov
.if \\n(FT=0 .EP
..
.de EP \" End the Picture - Normally called from a trap, although it can be used
. \" on its own to mark the end of a picture.
.nr Ot 0
.if \\n(.tu<\\n(.pu .nr Ot \\n(.tu
.if \\n(Ot>0 .if \\n(FT=4 .nr FT 3
.if \\n(FT<2 .nr Ot 0
.if \\n(Ot>0 .br
.if \\n(FT=5 .nr Ot 0
.if \\n(FT>1 \{\
. ev 1
. eo
. br
. di
. nf
. in 0
. BB
. in
. fi
. ec
. ev
. rm BB\}
.if \\n(FT=5 \{\
. nr FT 2
' sp |\\n(Nhu+1v\}
.if \\n(FT=4 \{\
. mk Nh
. nr Nh -1v
. nr FT 5
' sp -\\n(dnu+1v
' in +\\n(Iiu
. ll +\\n(Ilu
. di BB
. dt \\n(dnu-2v+1u EP\}
.if \\n(FT=2 'in -\\n(Iiu
.if \\n(FT=3 .ll +\\n(Ilu
.if \\n(FT<4 .nr FT 0
.if \\n(Ot>0 .sp \\n(Otu
.rr Ot
.if \\n(FT=0 \{\
. rr Nh
. rr Ii
. rr Il\}
..

51
tmac/tmac.psychrefs Normal file
View file

@ -0,0 +1,51 @@
.de [1
.in 3n
.ti 0
\\*([A\c
.ie \\n([A=0 \&. \&
.el \& \&
\\*([T.
\f2\\*([J,\f1
\\*([D,
.if !"\\*([N"" .if !"\\*([V"" \\f3\\*([V\\f1 (\\*([N),
.if "\\*([N"" .if !"\\*([V"" \\f3\\*([V\\f1,
\\*([P.
..
.de [2
.in 3n
.ti 0
\\*([A\c
.ie \\n([A=0 \&. \&
.el \& \&
\\f2\\*([T.\\f1
\\*([C: \\*([I, \\*([D.
..
.de [3
.in 3n
.ti 0
\\*([A\c
.ie \\n([A=0 \&. \&
.el \& \&
\\*([T.
In \\*([E (Ed.),
\\f2\\*([B\\f1.
\\*([C: \\*([I, \\*([D.
..
.de [5
.in 3n
.ti 0
\\*([A\c
.ie \\n([A=0 \&. \&
.el \& \&
\\*([T,
\\*([M.
..
.de [4
.in 3n
.ti 0
\\*([A\c
.ie \\n([A=0 \&. \&
.el \& \&
\\*([T.
Report \\*([R, \\*([I, \\*([D.
..

Some files were not shown because too many files have changed in this diff Show more