V10/cmd/pic/pictest.a

!<arch>
Compare         672954389   9     1     100777  91        `
for i in $*
do
	echo $i:
	a.out $i >foo2
	/usr/bin/pic $i >foo1
	diff foo1 foo2 | ind
done

pt.arc          705721324   9     1     100644  1461      `
.nf
This should be a circle
.PS
arc;arc;arc;arc
.PE
This should be a wave
.PS
arc; arc cw; arc cw; arc
.PE
This should be an oval
.PS
arc; arc; line left; arc; arc; line right
.PE
This should be a ()
.PS
arc from 0,0 to 0,1.0 rad 1.0
arc from 0,1.0 to 0,0 rad 1.0
.PE
This ought to be the same
.PS
arc to 0,1.0 rad 1.
arc to 0,0
.PE
Arc down with arrow
.PS
arc cw ->
.PE
Arc up with arrow
.PS
arc ->
.PE
.bp
.ps 18
.vs 24
.PS
A: circle radius .50i "A"
circle radius .4i at A
move to A.e
move right 2i
B: circle radius .50i "B"
move down 1.5i from B.s
C: circle radius .50i "C"
move left 2i from C.w
D: circle radius .50i "D"
arc -> cw from A.e + 0,.1i to B.w + 0,.1i radius 3i
"a" at last arc.c + 0,3i + .1i
arc -> cw from B.w - 0,.1i to A.e - 0,.1i radius 3i
"a" at last arc.c - 0,3i - .1i
arc -> cw from D.e + 0,.1i to C.w + 0,.1i radius 3i
"a" at last arc.c + 0,3i + .1i
arc -> cw from C.w - 0,.1i to D.e - 0,.1i radius 3i
"a" at last arc.c - 0,3i - .1i
arc -> from A.s - .3i,0 to D.n - .3i,0 radius 3i
"b" at last arc.c - 3i + .2i,0
arc -> from D.n + .3i,0 to A.s + .3i,0 radius 3i
"b" at last arc.c + 3i + .2i,0
arc -> from B.s - .3i,0 to C.n - .3i,0 radius 3i
"b" at last arc.c - 3i + .2i,0
arc -> from C.n + .3i,0 to B.s + .3i,0 radius 3i
"b" at last arc.c + 3i + .2i,0
.PE
.PS 6i
circlerad = .5
A: circle  "A"
arrow "i" above
circle  "B"
arrow "g" above
circle "C"
arrow "e" above
circle  "D"
arrow "\en" above
E: circle  "E"
circle radius .4i at E
.PE

pt.arrow        705721324   9     1     100644  416       `
.sp 1i
.PS
define foo X
.ps $1
box "$1"
arrow down .25 right .25; move right .05
arrow right .25; move right .05
arrow up .25; move right .05
arc cw ->; move right .05
arc ->; move right .05
arc <-; move right .05
arc cw <-; move right .05
X
.PE
.PS
foo(24)
.PE
.PS
foo(16)
.PE
.PS
foo(10)
.PE
.PS
foo(9)
.PE
.PS
foo(8)
.PE
.PS
arrowhead = 7
foo(24)
.PE
.PS
foo(16)
.PE
.PS
foo(10)
.PE
.PS
foo(9)
.PE
.PS
foo(8)
.PE
pt.ava          705721324   9     1     100644  407       `
.EQ
delim $$
.EN
Pictures from the dragon book.
.sp
Page 96:
.nf
.sp
.nf
.PS
w = 1.; h = .75;	# for the ellipse
Center: circle rad 0.025;
move left .375;		# left ellipse
ellipse wid w ht h;
move up .1; "$N sub 1$"; move down .1;
move left .25; circle diam .2; "$i$";
move to Center + .375,0;	# right ellipse
move up .1; "$N sub 2$"; move down .1;
move right .25; circle diam .2; circle diam .25; "$f$";
.PE

pt.ava1         705721324   9     1     100644  1181      `
.po .25i
.PS
h = .5i
w = .75i
dh = .02i
dw = .1i
r1 = .05i
circlerad = r1

define part /
	Card: line from Start \
		up dh \
		then right w \
		then down h \
		then left dw
	line from Start + (dh,dh) to Root chop 0 chop r1
	Start: start of Card + (dw,dh)
/
define spce /
	Start: Start + (dw,dh)
/

Origin: box ht h wid w
Start: last box.nw - (0,dh)
Top: Start + (3*w,6*h)
circle at Top
fixh = h/4
define node X
	Root: Start + (h/2, 3*h-fixh)
	fixh = fixh + h/4
	circle at Root
	line from Root to Top chop
	part; part; part; part; part; spce; part
X

Left: node; node; node; spce; spce; node; node; node
right
circle rad 2*r1 at Left
circle rad 5*w/4 with .e at Origin + (-h, 6*h)
arrow from 2nd last circle to last circle \
	chop 2*r1 chop last circle.rad
[
	Ptr: [
		boxht = h; boxwid = dw
		A: box
		B: box
		C: box
		box wid 2*boxwid "..."
		D: box
	]
	Block: [
		boxht = 2*dw; boxwid = 2*dw
		movewid = 2*dh
		A: box; move
		B: box; move
		C: box; move
		box invis "..." wid 2*boxwid; move
		D: box
	] with .t at Ptr.s - (0,h/2)
	arrow from Ptr.A to Block.A.nw
	arrow from Ptr.B to Block.B.nw
	arrow from Ptr.C to Block.C.nw
	arrow from Ptr.D to Block.D.nw
] at last circle
.PE

pt.bigdef       705721324   9     1     100644  1086      `
.EQ
delim $$
.EN
.PS
define Flight2 %

	# recompute eta because we now want to find the midpoint
	# of the flight.  however, now the flight must take off
	# in the direction of tau, not the direction given by h
	# and eta, computed using sin(eta) and sin(tau)

	eta = atan2(h,r/2);
	seta = sin(eta); stau = sin(tau);
	if seta*stau >= 0 then | side = 1 | else | side = -1 |
	teta = h/seta; teta = max(teta,-teta);
	ma = eta*side+theta;
	O : "";
	P : "" at O + px,py
	G : "" at O + teta*cos(ma),teta*sin(ma);
	if ctau*ceta >= 0 then
	|
		# take-off fly and land

		ttau = h/stau; ttau = max(ttau,-ttau);
		A : [	GuidePP(teta,eta*side+theta,ttau,tau+theta);
		] with .O at O;
		B : [	GuidePP(teta,pi-eta*side+theta,ttau,pi-tau+theta);
		] with .O at Here + px,py;
		spline $1 from A.B to A.G to B.G to B.B
	|else
	|
		# take-off backwards

		ceiling = max(h,-h);
		A : [	GuidePP(ceiling,pi*side/2+theta,ceiling,tau+theta);
		] with .O at O;
		B : [	GuidePP(ceiling,pi*side/2+theta,ceiling,pi-tau+theta);
		] with .O at Here + px,py;
		spline $1 from A.B to A.G to G to B.G to B.B
	|
%
.PE
pt.blitbug      705721324   9     1     100644  1063      `
.vg
.ll 5i
Blit Software

.PS
UK: line dashed from 0,0 to 3,0
	"User" "Kernel" at UK + .4,0
HT: line dashed from UK.end + (0,1.4) to UK.end - (0,1.4)
	"Host  " rjust at end of last line + (0,.1)
	"  Terminal" ljust at end of last line + (0,.1)
U1: box ht .75 wid .75 "User" "Proc" at UK + 1,1
U2: box same "User" "Proc" with .w at U1.e + .1,0
Mux: box ht .5 wid .5 "mux" with .nw at U2.e + .1,0

	spline from U1.s down 1 then right 1.5 then up to .33<Mux.s,Mux.sw>
	spline from U2.s down .8 then right .55 then up to .66<Mux.s,Mux.sw>
Muxt: box ht .75 wid .75 "mux" "term" at end of UK + (1.2,-.3)
	spline from .5<Mux.s,Mux.se> down 1 then right to Muxt.w
	L: line from Muxt.e right .3 down .1
		" mouse" ljust at L.end
	line from .5<Muxt.e,Muxt.se> right .1 down .3
		" keyboard" ljust at end of last line
B1:	box ht .3 wid .4 at Muxt + (-.5,1) "\s-2u1\s0"
B2:	box ht .2 wid .5 at Muxt + (-.1,1.3) "\s-2u2\s0"
B3:	box ht .5 wid .2 at Muxt + (.2,1) "\s-2u3\s0"
	line from B1.s to Muxt.n - (.05,0)
	line from B2.s to Muxt.n
	line from B3.s to Muxt.n + (.05,0)
.PE

pt.bsb          705721324   9     1     100644  3524      `
.EQ
delim ``
.EN
.KS
.PS 4.5i
define Colbx %box "COL"%
define BLbx %box "BL"%
define Nbx %box "N"%
u=1.
w=6*u; t=11*u
h = u
e = .05

line down t from 0,t
Bot:	line right w
line up t

Box0:	BLbx wid 4*w/5 ht 3*h/2 with .sw at 0,0
Box1:	BLbx wid 3*w/4 ht h with .sw at Box0.nw
Box2:	BLbx wid w/2 +2*e ht 3*h/2 with .sw at Box1.nw
Line1:	line  right w  from Box2.nw

Col1:	Colbx wid 5*w/12 ht h+e with .ne at Line1.end
Col2:	Colbx wid w/3+e ht h/4 with .ne at Col1.se
Col3:	Colbx wid w/5+e ht h+e with .ne at Col2.se

Two1:	BLbx wid w/2-e ht h with .sw at Line1.start
Two2:	BLbx wid 5*w/12 ht 5*h/8 with .sw at Two1.se
Two3:	BLbx wid w/3+e ht h with .sw at Two2.nw
Two4:	BLbx wid w/3+e ht 3*h/4 with .sw at Two1.nw
Two5:	BLbx wid w/3+e ht h with .sw at Two4.r.x,Two3.t.y
Line2:	line  right w  from 0,Two5.t.y

Col21:	Colbx wid w/4+2*e ht h/2 with .ne at Line2.end
Col22:	Colbx wid w/4+e ht h/4+2*e with .ne at Col21.se

Thr1:	BLbx wid w/3-e ht h/2 with .sw at Line2.start
Thr2:	BLbx wid w/3-e ht 3*h/4 with .sw at Thr1.se
Thr3:	BLbx wid w/4+e ht h/4 with .sw at Thr2.se
Thr4:	BLbx wid w/4+e ht h/2 with .sw at Thr3.nw
Thr5:	BLbx wid w/4+e ht 3*h/2 with .sw at Thr1.nw
Line3:	line  right w  from Thr5.nw

Col31:	Colbx wid w/4-2*e ht h/2 with .ne at Line3.end
Col32:	Colbx wid w/5+e ht h/2 with .ne at Col31.se

F1:	BLbx wid w/4-e ht h/4 with .sw at Line3.start
F2:	BLbx wid w/5+e ht h/2 with .sw at F1.se
F3:	BLbx wid w/5+e ht 3*h/4 with .sw at F2.se
F4:	BLbx wid w/5+e ht h/2-2*e with .sw at F3.se
Line4:	line  right w  from 0,F3.nw.y

	hh = 3*h/2+2*e
N1:	Nbx wid w/8 ht hh with .sw at Box0.se
	hh=hh-2*e
N2:	Nbx wid w/16 ht hh with .sw at N1.se
	hh = h
N3:	Nbx wid w/20 ht hh with .sw at Box2.r.x,N1.t.y+hh
N21:	Nbx wid w/15 ht hh with .sw at Two2.se
	hh = 3*h/4
N22:	Nbx wid w/20 ht hh with .sw at Two3.r.x,N21.t.y
	hh = hh-2*e
N23:	Nbx wid w/12 ht hh with .sw at N22.se
N24:	Nbx wid w/35 ht hh with .sw at Two5.r.x,N22.t.y

N31:	Nbx wid w/20 ht hh with .sw at Thr3.se
N32:	Nbx wid w/40 ht hh with .sw at N31.se
N33:	Nbx wid w/4 ht hh with .sw at Thr5.r.x,N31.t.y+hh
N34:	Nbx wid w/8 ht hh-e with .sw at N33.se
N35:	Nbx wid w/12 ht hh-2*e with .sw at N34.se
	hh=hh-2*e
N41:	Nbx wid w/12 ht hh with .sw at F4.se
N51:	Nbx wid w/5 ht hh with .sw at Line4.start
N52:	Nbx wid w/12 ht hh with .sw at N51.se
	hh = hh - e
N53:	Nbx wid w/5 ht hh with .sw at N52.se
	hh = hh - e
N54:	Nbx wid w/6 ht hh with .sw at N53.se
N55:	Nbx wid w/20 ht hh with .sw at N54.se
	hh = hh -e
N56:	Nbx wid w/8 ht hh with .sw at N55.se
N57:	Nbx wid w/6 ht hh with .sw at N56.se
	hh = hh-e
N58:	Nbx wid w/8 ht hh with .sw at N51.nw
N59:	Nbx wid w/40 ht hh with .sw at N58.se
	hh = hh-e
N510:	Nbx wid w/5 ht hh with .sw at N59.se
Line5:	line right w-N59.r.x dashed from N59.ne

H0:	line right u/2 dashed from Bot.end
	"  `h sub 0`" at H0.end ljust
H1:	line right u/2 dashed from Line1.end
	"  `h sub 1`" at H1.end ljust
H2:	line right u/2 dashed from Line2.end
	"  `h sub 2`" at H2.end ljust
H3:	line right u/2 dashed from Line3.end
	"  `h sub 3`" at H3.end ljust
H4:	line right u/2 dashed from Line4.end
	"  `h sub 4`" at H4.end ljust
H5:	line right u/2 dashed from Line5.end
	"  `h sub 5`" at H5.end ljust

R1:	line invis from H0.start to H1.start "  `R sub 1`" ljust
R2:	line invis from H1.start to H2.start "  `R sub 2`" ljust
R3:	line invis from H2.start to H3.start "  `R sub 3`" ljust
R4:	line invis from H3.start to H4.start "  `R sub 4`" ljust
R5:	line invis from H4.start to H5.start "  `R sub 5`" ljust
.PE
.sp
.ce
Figure 2.  A UD packing.
.KE
pt.bugs         705721324   9     1     100644  2708      `
this looks like a bug in troff --
changing the spline to line works,
as does adding the X.  the pic output
actually looks ok from both

.PS
Muxt: box ht .75
	spline from Muxt.s down then right to Muxt.w; #"X"
	L: line from Muxt.e
.PE
.PS
#generated deref thru 0 on sun, 3b20:
circle below "abc"
.PE
.PS
box
arrow right from 2/3 <last box.ne, last box.se>
.PE
.PS
"x" at .5 < (0,0),(1,1) >
.PE
.PS 
CRT: circle "DISK"
"  paper" ljust at  0.25, 0.25
.PE
.PS
define ur "then up right"
define ul "then up left"
define dr "then down right"
define dl "then down left"

spline  down right dr ur ur ur ul ul ul ul dl dl dl dl dr dr
.PE
.PS
box
.PF
.PS
arrow
.PE
.PS
"abc" with .w at 1,2
.PE
.PS
line from 1,0 to 0,0
X: 1,0
"x"
.PE
.PS
define Lulu %
	if "$2" == "" then || else | x = $2; |
	if "$3" == "" then || else | y = $3; |
	if "$4" == "" then | n = m; | else | n = $4; |
	xx=x*hu; vx=xx*(1-n)/2; yy=y*vu; vy=yy*(1+n)/2
	spline $1 to Here + vx,vy to Here + xx,yy
	kx = vx/2;		ky = vy/2;
	mx = (vx+xx)/2;		my = (vy+yy)/2;
	mxk = mx-kx;		myk = my-ky;
	vxk = vx-kx;		vyk = vy-ky;

	b = 2*vxk; a = mxk-b;
	d = 2*vyk; c = myk-d;
	bcad = b*c - a*d;
	k = .5*bcad*(a*b+c*d)/(a*a+c*c);
	ksq = k*k;
	ta = d*bcad-2*c*k;
	tb = -b*bcad+2*a*k;
	ey = (ksq+k*ta/c)/(tb+a*ta/c);
	ex = (ksq-tb*ey)/ta;
% x=0; y=0; m=0; # initially

hu = 0.3i; vu = hu;
define T % { Lulu(,6,3,$1);} %

T(-1.5)
T(-1)
T(-.5)
T(0)
T(.5)
T(1)
T(1.5);

.PE
.PS
define Lulu %
	if "$2" == "" then || else | x = $2 * hu; |
	if "$3" == "" then || else | y = $3 * hu; |
	{ line $1 to Here + x,y chop c
	} move to Here + x,y
%
x = 0; y = 0; c = 0
.PE
.PS
define S % "$1"; { circle rad .12i at Here; } %
define F % S($1); { circle rad .1i at Here; } %
define T % Lulu(-> "$1" above,$2,$3); %
c = .12; hu = .75; vu = .5
T(start,1,0); S(0);
{	T(<,1,1); F(1);
	{	T(=,1,.75); F(2);
	}{	T(>,1,-.75); F(3);
	}
}{	T(=,1,0); F(4);
}{	T(>,1,-1); F(5); T(=,1,0); F(6);
}
.PE
this should scale to 1 wide 2 high:

.PS2 1
box wid 1 ht 1
circle rad .5 at last box
.PE
.PS
# When the next line is in, a 60000 X 60000 picture shrunk to 7 X 7
# problem is that size of B: [ O: 0,0 ] is zero, but it's set internally
# to -60000
# NOW FIXED

B: [ Origin: (0,0) ]
	#A: [ Origin: "" at (0,0) ] # This one works fine

A: [ Origin: 
	line from 0,0 to 1,1
] with .Origin at B
.PE
.PS
#	if the closing curly of { if $3 ...} is on the same line,
#	the motion is not restored.  If I split it:
#		{ if ...
#		}
#	it seems to work
#	also if use ; or else {}
# CAN'T SEE ANYTHING WRONG NOW

define nibble {	# nibble(len, "label", offset, any)
Nib:	box $2 $4
	{ if $3 >= 0 then { "\s-4 $3\s0" at Nib.w + (0,boxht/3) ljust } ; }
}
right
nibble(8, "label", 0000)
nibble(8, "word 0", -1)
.PE
pt.chop         705721325   9     1     100644  355       `
.PS
circle at .25,.25
circle at .5,1.
line from 1st circle to last circle chop
.PE
.PS
circle at 0,0
circle at -1i,-2i
line from 1st circle to last circle chop
circle at 1i,-2i
line from 1st circle to last circle chop
.PE
.PS
line from 0,0 to 0,1 to 1,1 to 1,0 to 0,0 chop
"x" at 0,0
"y" at 1,0
.PE
.PS
line from 0,0 to 1,1 chop
"x" at 0,0
"y" at 1,0
.PE

pt.copy         705721325   9     1     100644  88        `
.PS
copy thru / "abc" at 1,1 /
x
x
x
.PE
.PS
copy thru / box at $1,$2 /
1 2
3 4
5 6
.PE
pt.corner       705721325   9     1     100644  303       `
.PS 3i
circle
line from last circle.ne "ne"
line from last circle.nw "nw" left
line from last circle.sw "sw"
line from last circle.se "se" right
.PE
.PS 3i
ellipse
line from last ellipse.ne "ne"
line from last ellipse.nw "nw" left
line from last ellipse.sw "sw"
line from last ellipse.se "se" right
.PE

pt.ellipse      705721325   9     1     100644  273       `
.PS
ellipse wid 1i ht .1i
.PE
.PS
ellipse wid 1i ht .25i
.PE
.PS
ellipse wid 1i ht .5i
.PE
.PS
ellipse wid 1i ht .75i
.PE
.PS
ellipse wid 1i ht 1i
.PE
.PS
ellipse wid .1i ht 1i
.PE
.PS
ellipse wid .25i ht 1i
.PE
.PS
ellipse wid .5i ht 1i
.PE
.PS
ellipse wid .75i ht 1i
.PE

pt.for          705721325   9     1     100644  425       `
.PS
copy thru / box "$3" at $1,$2 /
0 0 middle
1 1 upper.right
-1 -1 lower.left
.PE


===================================================================================


.PS
for i = 1 to 5 do X box ht i wid i at 0,0 X
.PE


===================================================================================


.PS
for i = 1 to 5 do X
	if i % 2 == 0 then Y
		circle rad i/2 at 0,0
	Y else Y
		box ht i wid i at 0,0
	Y
X
.PE

pt.gray         705721325   9     1     100644  207       `
.sp
HELLO:
.PS
define b /
[ right
  box ht .7 wid 1.5 "hello" "world" "$1" fill $1
  circle rad .3 "hi" fill $1
  ellipse ht .3 wid .4 "bye" fill $1 ]; move .25
/
down
b(1)
b(.9)
b(.8)
b(.7)
b(.6)
b(.5)
.PE

pt.hartwell     705721325   9     1     100644  2524      `
.PS
boxwid=2.0i
psize=.06
.ps 9
#
define	memsect	X	box ht $3 $4 $5 $6 $7 $8 $9 ; \
			move to last box.nw ; \
			move left psize/2 then down psize*3/2 ; \
			$1 rjust ; \
			move to last box.sw ; \
			move left psize/2 then up psize ; \
			$2 rjust ; \
			move to last box.s ; \
			down ; \
		X
#
define	filler	X	box ht $1 $2 $3 $4 $5 $6 $7 $8 $9 ; \
			move to last box.s ; \
			down ; \
		X
#
define	bracket	X	move to $1.ne then down psize*2 ; \
			line <- right psize*5 ; \
			move to $2.se then up psize*2 ; \
			line <- right psize*5 ; \
			line from 2nd last line.r to last line.r ; \
			line right from last line.c ; \
			$3 ljust ; \
			move to $2.s ; \
			down ; \
		X
#
#
#
Traps:	memsect("0", "034", 0.4i, "Processor Traps")
	filler(0.25i)
	memsect("060-4", "", psize*3, "Console Interrupts")
	filler(0.25i)
	memsect("0100", "", psize*3, "60 Hz Line Clock")
EndT:	memsect("0104", "0776", 0.6i)
#
	bracket(Traps, EndT, " Low Core Vectors")
#
	move down 0.1i
Start:	memsect("01000", "", 0.25i, "start:")
	filler(0.75i, "main()", ".", ".", "goto start;")
	filler(0.35i, "user subroutines")
	filler(0.35i, "device drivers")
	filler(0.75i, "standard libraries")
	filler(0.75i, "initialized data", "and", "BSS data")
	filler(0.5i invis, "Available memory")
	line <- from last box.sw to last box.nw
	line <- from last box.se to last box.ne
	line <- from last box.s to last box.n
	move to last box.s
	move down 0.2i
EndS:	memsect("", "157776", 0.5i invis, "stack")
	line -> from last box.sw to last box.nw
	line -> from last box.se to last box.ne
	line <- from last box.n to last box.s
	line from last box.sw to last box.se
#
	bracket(Start, EndS, " Downloaded Program (Max 56Kb)")
#
	move down 0.1i
Devs:	memsect("160000", "", 0.5i)
	memsect("173000", "173776", 0.35i, "ROM Boot")
	filler(0.25i)
	memsect("177560-6", "", psize*3, "Console registers")
EndD:	memsect("", "177776", 0.5i)
#
	bracket(Devs, EndD, " Device Registers")
#
.PE
.PS
Locore:	box "Low Core" "Vectors"
	line -> right from Locore.e
DevDr:	box "Device" "Drivers"
	move to Locore.s
	move down
Init:	box "Initialize"
	line <- left from Init.w
Start:	circle "Start"
	move to Init.s
	line -> down
Main:	box ht 2*boxht "User" "Program"
	move to Main.ne then down Main.ht/8
	line <-> right
DevLib:	box "Device" "Libraries"
	move to DevLib.n
	line <-> to DevDr.s
	move to Main.se then up Main.ht/8
	line <-> right
Libs:	box "Standard" "Libraries"
	move to Main.s
	line -> down
Reset:	box "reset"
	line down then left Reset.x - Start.x
	line -> to Start.s
.PE
pt.jap          705721325   9     1     100644  9484      `
j.a             323723756   9     1     100666  132       `
.PS
scale = 200
line from 0,220 to 116,220
arc cw to 140,152 rad 38
arc cw to 63,108 rad 134
line from 63,168 to 63,58
arc cw to 7,0 rad 60
.PE
j.cdot          323887266   9     1     100666  82        `
.PS
scale = 200
line from 52,137 to 52,103
line to 102,103
line to 102,137
line to 52,137
.PE
j.chi           323885532   9     1     100666  120       `
.PS
scale = 200
arc cw from 144,240 to 8,219 rad 402
line from 0,131 to 154,131
line from 88,225 to 88,89
arc cw to 28,0 rad 97
.PE
j.circle        323989443   9     3     100666  32        `
.PS
scale = 200
circle at 51,189 rad 51
.PE
j.comma         323887201   9     1     100666  94        `
.PS
scale = 200
line from 24,-51 to 84,49
line to 124,49
line to 124,39
line to 34,-51
line to 24,-51
.PE
j.ddot          323887068   9     1     100666  62        `
.PS
scale = 200
line from 0,240 to 46,144
line from 80,234 to 126,140
.PE
j.e             323883213   9     1     100666  86        `
.PS
scale = 200
line from 9,170 to 145,170
line from 77,170 to 77,12
line from 0,12 to 154,12
.PE
j.elong         323887237   9     1     100666  79        `
.PS
scale = 200
line from 7,125 to 7,115
line to 147,115
line to 147,125
line to 7,125
.PE

j.fu            323886062   9     1     100666  83        `
.PS
scale = 200
line from 0,224 to 120,224
arc cw to 148,196 rad 28
arc cw to 32,0 rad 228
.PE

j.ha            323885981   9     1     100666  94        `
.PS
scale = 200
arc cw from 28,198 to 0,0 rad 426
arc cw from 108,228 to 154,44 rad 424
line to 154,0
.PE
j.he            323886097   9     1     100666  83        `
.PS
scale = 200
line from 0,144 to 23,197
arc cw to 72,204 rad 28
arc cw to 154,13 rad 400
.PE

j.hi            323958989   9     1     100666  116       `
.PS
scale = 200
line from 23,176 to 154,176
line from 23,240 to 23,37
arc to 60,0 rad 37
line to 78,0
arc to 154,20 rad 160
.PE
j.ho            323886148   9     1     100666  133       `
.PS
scale = 200
line from 0,184 to 154,184
line from 77,240 to 77,0
arc cw from 20,122 to 0,27 rad 258
arc cw from 136,115 to 154,26 rad 255
.PE

j.i             323724624   9     1     100666  70        `
.PS
scale = 200
arc cw from 154,240 to 0,130 rad 352
line from 92,179 to 92,0
.PE
j.ka            323883396   9     1     100666  169       `
.PS
scale = 200
line from 0,184 to 130,184
arc cw to 154,160 rad 24
line to 154,30
arc cw to 124,0 rad 30
arc cw to 89,8 rad 70
line from 55,240 to 55,185
arc cw to 0,8 rad 332
.PE

j.ke            323958345   9     1     100666  122       `
.PS
scale = 200
arc cw from 34,240 to 0,136 rad 176
line from 23,178 to 154,178
line from 105,178 to 105,89
arc cw to 16,0 rad 89
.PE
j.ki            323883440   9     1     100666  87        `
.PS
scale = 200
line from 8,184 to 145,184
line from 0,104 to 154,104
line from 73,240 to 83,0
.PE

j.ko            323958455   9     1     100666  88        `
.PS
scale = 200
line from 4,203 to 108,203
arc cw to 136,175 rad 28
line to 136,14
line to 0,14
.PE
j.ku            323958154   9     1     100666  104       `
.PS
scale = 200
arc from 0,136 to 46,224 rad 146
line to 132,224
arc cw to 154,202 rad 22
arc cw to 0,6 rad 247
.PE
j.lquote        323887297   9     1     100666  63        `
.PS
scale = 200
line from 47,240 to 47,100
line from 47,240 to 154,240
.PE

j.ma            323886194   9     1     100666  108       `
.PS
scale = 200
line from 0,227 to 124,227
arc cw to 148,179 rad 30
line to 65,63
arc cw from 0,96 to 108,0 rad 153
.PE
j.me            323886329   9     1     100666  80        `
.PS
scale = 200
arc cw from 122,232 to 0,0 rad 252
arc cw from 32,146 to 144,58 rad 243
.PE
j.mi            323886246   9     1     100666  118       `
.PS
scale = 200
arc cw from 13,223 to 136,220 rad 252
arc cw from 24,136 to 119,132 rad 255
arc cw from 0,24 to 154,0 rad 256
.PE
j.mo            323886381   9     1     100666  130       `
.PS
scale = 200
line from 8,226 to 143,226
line from 0,142 to 154,142
line from 68,226 to 68,36
arc to 104,0 rad 36
arc to 154,12 rad 108
.PE
j.mu            323959801   9     1     100666  102       `
.PS
scale = 200
line from 79,228 to 3,41
arc to 22,8 rad 22
line to 133,8
arc to 152,39 rad 21
line to 132,83
.PE
j.n             323970403   9     1     100666  118       `
.PS
scale = 200
arc cw from 6,185 to 82,178 rad 204
line from 3,24 to 0,0
line to 30,0
arc to 154,124 rad 124
line to 154,144
.PE
j.na            323885746   9     1     100666  83        `
.PS
scale = 200
line from 0,180 to 154,180
line from 91,240 to 91,80
arc cw to 22,0 rad 80
.PE

j.ne            323885877   9     1     100666  163       `
.PS
scale = 200
line from 77,240 to 77,196
line from 12,196 to 116,196
arc cw to 131,152 rad 25
line to 0,44
line from 77,107 to 77,0
arc cw from 95,122 to 154,62 rad 211
.PE

j.ni            323885775   9     1     100666  65        `
.PS
scale = 200
line from 12,186 to 142,186
line from 0,12 to 154,12
.PE
.PE

j.no            323885910   9     1     100666  43        `
.PS
scale = 200
arc cw from 145,218 to 0,0 rad 270
.PE

j.nu            323958864   9     1     100666  108       `
.PS
scale = 200
line from 10,231 to 120,231
arc cw to 140,191 rad 25
line to 0,0
arc cw from 0,146 to 154,0 rad 244
.PE
j.o             323958066   9     1     100666  98        `
.PS
scale = 200
line from 0,182 to 154,182
line from 100,240 to 100,0
arc cw from 100,169 to 0,49 rad 384
.PE
j.period        323887158   9     1     100666  75        `
.PS
scale = 200
line from 52,34 to 52,0
line to 102,0
line to 102,34
line to 52,34
.PE

j.ra            323886583   9     1     100666  111       `
.PS
scale = 200
line from 12,228 to 142,228
line from 0,158 to 135,158
arc cw to 154,139 rad 19
arc cw to 36,0 rad 143
.PE

j.re            323886707   9     1     100666  85        `
.PS
scale = 200
line from 12,230 to 12,0
line to 26,0
arc to 154,128 rad 128
line to 154,144
.PE

j.ri            323886611   9     1     100666  87        `
.PS
scale = 200
line from 30,222 to 30, 94
line from 120,228 to 120,80
arc cw to 84, 0 rad 108
.PE

j.ro            323962149   9     1     100666  127       `
.PS
scale = 200
line from 12,12 to 4,162
arc cw to 26,184 rad 22
line to 128,184
arc cw to 150,162 rad 22
line to 142,12
line to 12,12
.PE

j.rquote        323887313   9     1     100666  47        `
.PS
scale = 200
line from 107,140 to 107,0
line to 0,0
.PE

j.ru            323886674   9     1     100666  116       `
.PS
scale = 200
line from 7,230 to 7,51
arc cw to 0,0 rad 192
line from 77,232 to 77,0
arc to 154,90 rad 90
line to 154,131
.PE
j.sa            323883672   9     1     100666  113       `
.PS
scale = 200
line from 0,184 to 154,184
line from 36,240 to 36,116
line from 120,240 to 120,98
arc cw to 56,0 rad 108
.PE

j.se            323883897   9     1     100666  154       `
.PS
scale = 200
line from 0,184 to 124,184
arc cw to 140,129 rad 30
arc cw to 106,107 rad 165
line from 41,240 to 41, 38
arc to 78,0 rad 38
arc to 150,14 rad 151
.PE
j.shi           323883758   9     1     100666  154       `
.PS
scale = 200
line from 6,211 to 68,211
line from 0,136 to 63,136
line from 0,34 to 0,15
arc to 15,0 rad 15
line to 22,0
arc to 154,132 rad 132
line to 154,164
.PE
j.so            323885362   9     1     100666  86        `
.PS
scale = 200
line from 0,206 to 34,139
line from 154,240 to 154,207
arc cw to 40,0 rad 245
.PE
j.su            323883820   9     1     100666  107       `
.PS
scale = 200
line from 8,232 to 97,232
arc cw to 117,196 rad 24
line to 0,0
arc cw from 79,131 to 154,0 rad 164
.PE

j.ta            323885470   9     1     100666  156       `
.PS
scale = 200
arc from 0,140 to 40,231 rad 90
line to 138,231
arc cw to 154,215 rad 16
line to 154,196
arc cw to 0,0 rad 202
arc cw from 68,136 to 150,62 rad 172
.PE
j.te            323958735   9     1     100666  111       `
.PS
scale = 200
line from 10,221 to 144,221
line from 0,156 to 154,156
line from 88,156 to 88,80
arc cw to 20,0 rad 81
.PE

j.to            323885716   9     1     100666  71        `
.PS
scale = 200
line from 48,240 to 48,0
arc cw from 48,157 to 143,111 rad 122
.PE

j.tsu           323885569   9     1     100666  113       `
.PS
scale = 200
line from 0,222 to 12,146
line from 68,229 to 78,160
line from 154,234 to 154,161
arc cw to 32,0 rad 167
.PE

j.u             323725379   9     1     100666  149       `
.PS
scale = 200
line from 77,240 to 77,184
line from 0,116 to 0, 160
arc cw to 24,184 rad 24
line to 130,184
arc cw to 154,160 rad 24
arc cw to 46,0 rad 148
.PE

j.wa            323886797   9     1     100666  137       `
.PS
scale = 200
line from 0,128 to 0,198
arc cw to 24,222 rad 24
line to 130,222
arc cw to 154,198 rad 24
line to 154,124
arc cw to 85,0 rad 146
.PE

j.wo            323886893   9     1     100666  127       `
.PS
scale = 200
line from 0,226 to 134,226
arc cw to 146,214 rad 12
line to 146,165
arc cw to 54,0 rad 195
line from 21,128 to 143,128
.PE

j.ya            323886415   9     1     100666  101       `
.PS
scale = 200
line from 0,184 to 124,184
arc cw to 143,130 rad 30
line to 116,105
line from 44,240 to 64,0
.PE

j.yo            323886530   9     1     100666  128       `
.PS
scale = 200
line from 6,209 to 126,209
arc cw to 150,185 rad 24
line to 150,12
line from 12,119 to 150,119
line from 0,12 to 150,12
.PE
j.yu            323960001   9     3     100666  99        `
.PS
scale = 200
line from 14,207 to 82,207
arc cw to 108,168 rad 28
line to 68,12
line from 0,12 to 154,12
.PE

pt.karen        705721325   9     1     100644  557       `
.EQ
delim $$
.EN
+
.PS
x = .5
# this is the start of the bottom row of box + ellipse
arrow right x
box wid x ht x/2 "$lambda sub n$"
arrow
ellipse width x ht x/2 "$mu sub n$"
arrow
# now start the top outer part
line up 3*x
arrow left 3*x/2
box wid 2*x ht x "+++ big box +++"
arrow left 3*x/2
line down 3*x
# this brings us back to A
move up 2*x
arrow right x
box wid x ht x/2 "$lambda sub 1$"
arrow
ellipse width x ht x/2 "$mu sub 1$"
arrow
# this finishes the inner row
#now to middle
# buggy: move to 5*x/2, x
"\s-2\(bu  \(bu  \(bu\s0" at 3*x/2, x
.PE
+

pt.knuth        708220088   9     1     100644  512       `
.PS
define ur "then up right"
define ul "then up left"
define dr "then down right"
define dl "then down left"

Center: 0,0
move down down left left
Start: spline down right dr ur ur ur ur ul ul ul ul dl dl dl dl dr dr fill .9
move down right
line down down
move left left
line right right right right right right
move left left
line up up

move to Start up up up up  right
.ps 36
[ spline  dashed  .2 right right right down \
then left left left left left down down \
then right right right down ] at Center
.PE
pt.lasts        705721325   9     1     100644  4551      `
.PS 3i
.ps 8
box invis wid .5i ht .3i "System" at 0,0
box invis wid .2i ht .3i "User" at 2i, 3.5i
box invis ht .3i "Builder" at 4i,0

line -> from 1st box.t - .05i, 0 to 2nd box.sw - 0.05i, 0
box invis "user" "learning" with .se at last line.c

line <- from 1st box.t + .05i, 0 to 2nd box.sw + 0.05i, 0
box invis " personalized" " uses" with .nw at last line.c

line -> from 2nd box.se + .05i, 0 to 3rd box.t + .05i,0
box invis "middle-out" "design" with .sw at last line.c

line <- from 2nd box.se - .05i, 0 to 3rd box.t - .05i,0
box invis "facilitates" "implementation" with .ne at last line.c

line -> from 1st box.e + 0,0.05i to 3rd box.w + 0,0.05i \
	"pressure for evolution" above

line <- from 1st box.e - 0,0.05i to 3rd box.w - 0,0.05i \
	"evolution of system function" below
.ps
.PE
.PS
box invis "System" ht .25i wid .4i
move up .5i right .5i
box invis "User" ht .25i wid .4i
arc cw -> from top of 1st box to left of last box
arc cw -> from bottom of last box to east of 1st box
move to bottom of last box down .25i left .2i
right; line right .25i
.PE
.PS
circlerad = .1i
movewid = .4i
circle invis "S"; move; circle invis "  U"
arc cw -> from top of 1st circle to top of 2nd circle
arc cw -> from bottom of 2nd circle to bottom of 1st circle
move to last circle.e + .6i,0
circle invis "U"; move; circle invis "  B"; A:;
arc cw -> from top of 2nd last circle to top of last circle
arc cw -> from bottom of last circle to bottom of 2nd last circle
move to last circle.e + .6i,0
circle invis "S"; move; circle invis "  B"
arc cw -> from top of 2nd last circle to top of last circle
arc cw -> from bottom of last circle to bottom of 2nd last circle
.PE
.PS
circlerad = .1i
movewid = .4i
circle invis "S"; move; circle invis "  U"
arc cw -> from top of 1st circle to top of 2nd circle
arc cw -> from bottom of 2nd circle to bottom of 1st circle
.PE
.PS
circlerad = .1i
movewid = .4i
circle invis "U"; move; circle invis "  B"
arc cw -> from top of 1st circle to top of 2nd circle
arc cw -> from bottom of 2nd circle to bottom of 1st circle
.PE
.PS
circlerad = .1i
movewid = .4i
circle invis "S"; move; circle invis "  B"
arc cw -> from top of 1st circle to top of 2nd circle
arc cw -> from bottom of 2nd circle to bottom of 1st circle
.PE
.PS
circlerad = .1i
movewid = .4i
circle invis "U"; move; circle invis "  S"
arc cw -> from top of 1st circle to top of 2nd circle
arc cw -> from bottom of 2nd circle to bottom of 1st circle
.PE
.PS 3.5i
.ps 8
arcrad = 4i
box invis wid .45i ht .3i "System" at 0,0
box invis wid .4i ht .2i "User" at 2i, 3.5i
box invis wid .45i ht .3i "Builder" at 4i,0
box invis ht .4i "Task" "Representation" at 2i, 2i

arc cw -> from 1st box.t - .05i, 0 to 2nd box.sw - 0.05i, 0
arc cw <- from 1st box.t + .05i, 0 to 2nd box.sw + 0.05i, 0
arc cw -> from 2nd box.se + .05i, 0 to 3rd box.t + .05i,0
arc cw <- from 2nd box.se - .05i, 0 to 3rd box.t - .05i,0
arc  -> from 1st box.e + 0,0.05i to 3rd box.w + 0,0.05i
arc  <- from 1st box.e - 0,0.05i to 3rd box.w - 0,0.05i

line <- from 2nd box.b to 4th box.t
box invis "Descriptive map of" "user processes" at last line.c
arrow from 4th box.sw to 1st box.ne
box invis "design of" "DSS functions" "commands" with .nw at last arrow.c

arrow from 4th box.se to 3rd box.nw
box invis "Prescriptive map " "of task performance" with .ne at last arrow.c
.ps
.PE
.PS 4i
.ps 8
arcrad = 4i
box invis wid .5i ht .3i "System" at 0,0
box invis wid .4i ht .25i "User" at 2i, 3.5i
box invis ht .3i "Builder" at 4i,0
box invis "Task" "Representation" at 2i, 2i
box invis ht .4i "Organization's" "Technology (T)" at -1i, -1i
arrow dashed from last box.t - .1i,0 to 1st box.b - .1i,0
arrow dashed from 1st box.b + .1i,0 to last box.t + .1i, 0

box invis ht .7i "Organizational" "Procedures and" "Systems (O)" at 2i, 4.5i
arrow dashed from last box.b - .1i,0 to 2nd box.t - .1i, 0
arrow <- dashed from last box.b + .1i,0 to 2nd box.t + .1i, 0

box invis ht .75i "Organization" "Charter and" "Location" at 5i, -1i
arrow dashed from last box.t - .1i,0 to 3rd box.b - .1i,0
arrow dashed <- from last box.t + .1i,0 to 3rd box.b + .1i,0

arc cw -> from 1st box.t - .05i, 0 to 2nd box.sw - 0.05i, 0
arc cw <- from 1st box.t + .05i, 0 to 2nd box.sw + 0.05i, 0
arc cw -> from 2nd box.se + .05i, 0 to 3rd box.t + .05i,0
arc cw <- from 2nd box.se - .05i, 0 to 3rd box.t - .05i,0
arc  -> from 1st box.e + 0,0.05i to 3rd box.w + 0,0.05i
arc  <- from 1st box.e - 0,0.05i to 3rd box.w - 0,0.05i

line from 2nd box.b to 4th box.t
arrow from 4th box.sw to 1st box.ne

arrow from 4th box.se to 3rd box.nw
.ps
.PE

pt.line         705721325   9     1     100644  1891      `
.sp 3i
.PS
line
.PE
.PS
line right
.PE
.PS
line right up
.PE
.PS
line up then right then down right
.PE
.PS
line
line dotted
line dashed
line
.PE
.PS
line right 6i dashed 1i
.PE
.PS
line right 6i dashed 2i
.PE
.PS
line from 0,0 by 1,0 by 0,1 by -1,0 by 0,-1
.PE
.PS 6i
line from 0,0 \
 then to 0.05774,0.00368 \
 then to 0.11058,0.01276 \
 then to 0.16153,0.0272 \
 then to 0.21059,0.04689 \
 then to 0.25728,0.07164 \
 then to 0.30109,0.10117 \
 then to 0.34155,0.13517 \
 then to 0.37819,0.17324 \
 then to 0.41061,0.21496 \
 then to 0.43845,0.25988 \
 then to 0.4614,0.30747 \
 then to 0.47919,0.35723 \
 then to 0.49164,0.40858 \
 then to 0.4986,0.46096 \
 then to 0.5,0.51378 \
 then to 0.49582,0.56646 \
 then to 0.4861,0.6184 \
 then to 0.47095,0.66902 \
 then to 0.45055,0.71777 \
 then to 0.42513,0.76409 \
 then to 0.39495,0.80747 \
 then to 0.36037,0.84742 \
 then to 0.32177,0.8835 \
 then to 0.27958,0.91531 \
 then to 0.23426,0.94249 \
 then to 0.18634,0.96474 \
 then to 0.13637,0.98179 \
 then to 0.08514,0.99342 \
 then to 0.03477,0.9994 \
 then to 0,1 \
 then to -0.03477,0.9994 \
 then to -0.08514,0.99342 \
 then to -0.13637,0.98179 \
 then to -0.18634,0.96474 \
 then to -0.23426,0.94249 \
 then to -0.27958,0.91531 \
 then to -0.32177,0.8835 \
 then to -0.36037,0.84742 \
 then to -0.39495,0.80747 \
 then to -0.42513,0.76409 \
 then to -0.45055,0.71777 \
 then to -0.47095,0.66902 \
 then to -0.4861,0.6184 \
 then to -0.49582,0.56646 \
 then to -0.5,0.51378 \
 then to -0.4986,0.46096 \
 then to -0.49164,0.40858 \
 then to -0.47919,0.35723 \
 then to -0.4614,0.30747 \
 then to -0.43845,0.25988 \
 then to -0.41061,0.21496 \
 then to -0.37819,0.17324 \
 then to -0.34155,0.13517 \
 then to -0.30109,0.10117 \
 then to -0.25728,0.07164 \
 then to -0.21059,0.04689 \
 then to -0.16153,0.0272 \
 then to -0.11058,0.01276 \
 then to -0.05774,0.00368 \
 then to 0,0

.PE

pt.ljustbug     705721325   9     1     100644  866       `
From houxa!wjmayer Wed Apr 27 07:38 EDT 1988
To: research!bwk

Here is an example of the problem I described.
.nf

The following should produce text left adjusted
and right adjusted within the box.  Using the
newer pic it is centered at the west edge and
east edge of the box.

Tnx for your help.

Bill Mayer
houxa!wjmayer
..

.nf
.PS
scale=100
define t1219 |
[ box invis ht 48 wid 70 with .sw at 0,0
"\fH\s10\&Feature\f1\s0"  at 0,40 ljust
"\fH\s10\&Spec.\f1\s0"  at 0,24 ljust
"\fH\s10\&Document\f1\s0"  at 0,8 ljust
] |

define m13 |
[ box invis ht 80 wid 80 with .sw at 0,0
"\fH\s10\&305\f1\s0"  ljust at 4,66
t1219 with .nw at 4,54
box ht 80 wid 80 with .nw at 0,80 
"\fH\s10\&C\f1\s0"  at 76,66 rjust
] |

define m14 |
[ box invis ht 160 wid 80 with .sw at 0,0
m13 with .nw at 0,160
] |

box invis ht 736 wid 716 with .sw at 0,0
m14 with .nw at 56,424
.PE
.fi
pt.memo         705721325   9     1     100644  5952      `
.PS
box invis wid .25
ellipse "document"
arrow
box "PIC"
arrow
box "TBL/EQN" "(optional)" dashed
arrow
box "TROFF"
arrow
ellipse "typesetter"
.PE
.PS
box "box"
move
line "line" above
move
arrow "arrow" above
move
circle "circle"
move
ellipse "ellipse"
move
arc cw "arc"
.PE
.PS
	box "this is" "a box"
.PE
.PS
circle "this is" "a box"
move; move
ellipse "this is" "a box"
.PE
.PS
arrow "this is" "an arrow"
.PE
.PS
line "this is" "a line"
.PE
.PS
line; arc; arc cw; arrow
.PE
.PS
arrow; box "input"; arrow; box "process"; arrow; box "output"; arrow
.PE
.PS
box; move; box; move; box
.PE
.PS
down; box; arrow; ellipse; arrow; circle
.PE
.PS
left; box; arrow; ellipse; arrow; circle
.PE
.PS
	box wid 3i ht 0.1i
.PE
.PS
line up 1i right 2i
arrow left 2i
move left 0.1i
line <-> down 1i "height"
.PE
.PS
line up right; line down; line down left; line up
.PE
.PS
box dotted; line dotted; move; line dashed
.PE
.PS
line right 5i dashed
.PE
.PS
line right 5i dashed 0.25i
.PE
.PS
line right 5i dashed 0.5i
.PE
.PS
line right 5i dashed 1i
.PE
.PS
arrow "on top of"; move
arrow "above" "below"; move
arrow "above" above; move
arrow "below" below; move
arrow "above" "on top of" "below"
.PE
.PS
down; box ht 0.2i wid 1.5i; move down 0.15i;
 box ht 0.2i wid 1.5i; move down 0.15i; box ht 0.2i wid 1.5i
.PE
.PS
x = boxwid; y = boxht
boxwid = 0.1i; boxht = 1i
movewid = 0.2i
box; move; box; move; box
boxwid = x; boxht = y
.PE
.PS 2
box ht 0.2 wid 0.2 at 0,0 "1"
move to 0.5,0	# or "move right 0.5"
box "2" ht 0.2 wid 0.2	# use same dimensions as last box
move right .5	# use same motion as before
box "3" ht 0.2 wid 0.2
.PE
.PS
arc from 0.5i, 0 to 0, 0.5i
arc at 2i,0 from 2i,0.5i to 2.5i,0
circle rad .5i invis at 2i,0	# cheating
.PE
.PS
arc -> cw from 0,0 to 2i,0 rad 15i
.PE
.PS
arrow left; box; arrow; circle; arrow
.PE
.PS 1.5
B: box "B.c"
" B.e" at B.e ljust
" B.ne" at B.ne ljust
" B.se" at B.se ljust
"B.s" at B.s below
"B.n" at B.n above
"B.sw " at B.sw rjust
"B.w " at B.w rjust
"B.nw " at B.nw rjust
.PE
.PS
box ht 0.75i wid 0.75i
box ht 0.5i wid 0.5i with .sw at last box.se
.PE
.PS
ellipse; ellipse with .nw at last ellipse.se
.PE
.PS
circle "a"
circle "b" at 1st circle - (0.75i, 1i)
circle "c" at 1st circle + (0.75i, -1i)
line from 1st circle to 2nd circle chop
line from 1st circle to 3rd circle chop
.PE
.PS
box
arrow right from 1/3 of the way between last box.ne and last box.se
arrow right from 2/3 <last box.ne, last box.se>
.PE
.PS
line right 1i then down .5i left 1i then right 1i
.PE
.PS
line dashed right 1i then down .5i left 1i then right 1i
spline from start of last line\
  right 1i then down .5i left 1i then right 1i
.PE
.PS
box "1"
[ box "2"; arrow "3" above; box "4" ] with .n at last box.s - (0,0.1)
"thing" at last [].s
.PE
.PS
h = .5i
dh = .02i
dw = .1i
[
	Ptr: [
		boxht = h; boxwid = dw
		A: box
		B: box
		C: box
		box wid 2*boxwid "..."
		D: box
	]
	Block: [
		boxht = 2*dw; boxwid = 2*dw
		movewid = 2*dh
		A: box; move
		B: box; move
		C: box; move
		box invis "..." wid 2*boxwid; move
		D: box
	] with .t at Ptr.s - (0,h/2)
	arrow from Ptr.A to Block.A.nw
	arrow from Ptr.B to Block.B.nw
	arrow from Ptr.C to Block.C.nw
	arrow from Ptr.D to Block.D.nw
]
box dashed ht last [].ht+dw wid last [].wid+dw at last []
.PE
.PS
define square X box ht $1 wid $1  $2 X
square(1i, "one" "inch")
square(0.5i)
.PE
.PS
.ps 24
circle radius .4i at 0,0
.ps 12
circle radius .2i at 0,0
.ps 8
circle radius .1i at 0,0
.ps 6
circle radius .05i at 0,0
.ps 10	\" don't forget to restore size
.PE
.PS
ellipse "\s8\f(OESmile!\fP\s0"
.PE
.EQ
delim $$
.EN
.PS
arrow
box "$space 0 {H( omega )} over {1 - H( omega )}$"
arrow
.PE
.PS
define ndblock X
	box wid boxwid/2 ht boxht/2
	down;  box wid boxwid/2 ht boxht/2 with .t at bottom of last box;
	box wid boxwid/2 ht boxht/2
X
.ps -2
.ft PO
boxht = .2i; boxwid = .3i
down; box; box; box; box ht 3*boxht "." "." "."
L: box; box; box invis wid 2*boxwid "hashtab:" with .e at 1st box .w
right
Start: box wid .5i with .sw at 1st box.ne + (.4i,.2i) "..."
N1: box wid .2i "n1";  D1: box wid .3i "d1"
N3: box wid .4i "n3";  D3: box wid .3i "d3"
box wid .4i "..."
N2: box wid .5i "n2";  D2: box wid .2i "d2"

arrow right from 2nd box 
ndblock
spline -> right .2i from 3rd last box then to N1.sw + (0.05i,0)
spline -> right .3i from 2nd last box then to D1.sw + (0.05i,0)
arrow right from last box
ndblock
spline -> right .2i from 3rd last box to N2.sw-(0.05i,.2i) to N2.sw+(0.05i,0)
spline -> right .3i from 2nd last box to D2.sw-(0.05i,.2i) to D2.sw+(0.05i,0)
arrow right 2*linewid from L
ndblock
spline -> right .2i from 3rd last box to N3.sw + (0.05i,0)
spline -> right .3i from 2nd last box to D3.sw + (0.05i,0)

circlerad = .3i
circle invis "ndblock"  at last box.e + (.7i,.2i)
arrow dotted from last circle to last box chop

box invis wid 2*boxwid "ndtable:" with .e at Start.w
.ps
.ft
.PE
.PS 5
.ps 8
boxht = .5i; boxwid = .75i
circlerad = .25i
	arrow "source" "code"
LA:	box "lexical" "analyzer"
	arrow "tokens" above
P:	box "parser"
	arrow "intermediate" "code"
Sem:	box "semantic" "checker"
	arrow

	arrow <-> up from top of LA
LC:	box "lexical" "corrector"
	arrow <-> up from top of P
Syn:	box "syntactic" "corrector"
	arrow up
DMP:	box "diagnostic" "message" "printer"
	arrow <-> right  from right of DMP
ST:	box "symbol" "table"
	arrow from LC.ne to DMP.sw
	arrow from Sem.nw to DMP.se
	arrow <-> from Sem.top to ST.bot
.PE
.PS 5i
circle "DISK"
arrow "character" "defns"
box "CPU" "(16-bit mini)"
{ arrow <- from top of last box up "input " rjust }
arrow
CRT: "   CRT" ljust
line from CRT - 0,0.075 up 0.15 \
then right 0.5 \
then right 0.5 up 0.25 \
then down 0.5+0.15 \
then left 0.5 up 0.25 \
then left 0.5

Paper: CRT + 1.0+0.05,0
arrow from Paper + 0,0.75 to Paper - 0,0.5
{ move to start of last arrow down 0.25
  { move left 0.015; circle rad 0.05 }
  { move right 0.015; circle rad 0.05; "   rollers" ljust }
}
"  paper" ljust at end of last arrow + 0.25, 0.25
line left 0.2 dotted
.PE
pt.napmap       705721325   9     1     100644  4296      `
.po 0.4i
.sp .5i
.PS 7.3
.ps -2
.ft H
define polbegin { polflag = 1; copy thru polbody until "polend" }
define polbody {
	if polflag == 0 then {
		line from PolEnd to $1,$2; PolEnd: Here
	} else {
		PolEnd: $1,$2; polflag = 0
	}
}

define trapbegin { trapflag = 1; copy thru trapbody until "trapend" }
define trapbody {
	if trapflag == 0 then {
		ThisA: $1,$2; ThisB: $3,$4
		n = $5
.ps +4
		for i = 0 to n do {
			line from i/n <LastA,LastB> to i/n <ThisA,ThisB>
		}
.ps -4
		LastA: ThisA; LastB: ThisB
	} else {
		LastA: $1,$2; LastB: $3, $4; trapflag = 0
	}
}

maxx = 9.1
B: box ht 3.2 wid maxx with .sw at 0,0
.ps +3
"NAPOLEON'S RUSSIAN CAMPAIGN: June to December, 1812" at B.n + (0,.3)
.ps -3

# SCALE
line from 6.7,.4 to 8.24, .4
line down .05 from 6.7, .4
"0" at 6.7, .27
line down .05 from 7.47, .4
"50" at 7.47, .27
line down .05 from 8.24, .4
"100" at 8.24, .27
"Miles" at 7.47, .5

"Niemen R." ljust at .6, .1
spline from	0,	1.5\
	to	0.1,	1.6\
	to	.15,	1.5\
	to	.3,	1.5\
	to	.4,	1.26\
	to	.35,	1.08\
	to	.5,	1.0\
	to	.55,	.75\
	to	.5,	.55\
	to	.55,	.5\
	to	.5,	.35\
	to	.58,	.3\
	to	.58,	.2\
	to	.4,	0

"Beresina R." ljust at 3.52, .1
spline from	2.95,	.95\
	to	3.1,	.85\
	to	3.2,	.8\
	to	3.3,	.8\
	to	3.33,	.7\
	to	3.35,	.55\
	to	3.38,	.5\
	to	3.36,	.4\
	to	3.4,	.25\
	to	3.5,	0

"Moskva R." ljust at 7.3, 2.8
spline from	7.2, 2.8\
	to	7.45, 2.5\
	to	7.65, 2.48\
	to	7.73, 2.35\
	to	7.75, 2.28

"Dnieper R." ljust at 4.7, 0.1
spline from	5,	1.08\
	to	4.9,	1\
	to	4.7,	1\
	to	4.6,	.9\
	to	4.6,	.7\
	to	4.62,	.6\
	to	4.68,	.58\
	to	4.68,	.42\
	to	4.6,	.3\
	to	4.6,	.2\
	to	4.63,	.11\
	to	4.6,	0

#ADVANCE
polbegin
.25	1.45
.84	1.62
.87	2.2
.92	2.2
.9	1.55
1.5	1.48
2.2	2.05
3.52	1.9
3.48	1.83
2.25	1.96
1.55	1.4
2.9	1.7
4.2	1.8
4.4	1.76
5.4	1.4
6.3	1.7
7.15	2.5
7.70	2.33
7.69	2.30
7.85	2.26
8.7	2.68	# Top of Moscow
8.78	2.52	# Bottom of Moscow
7.85	2.05
7.23	2.2
6.35	1.38
5.4	1.05
4.3	1.5
3.0	1.25
1.4	.8
.9	.85
.5	.78
.25	1.45
polend

#RETREAT
# Return from Western Flanking
trapbegin
3.52	1.9	3.48	1.83
3.58	1.75	3.52	1.74	7
trapend
trapbegin
3.65	1.36	3.69	1.37
3.90	.6	3.94	.61	7
trapend
# Return from Eastern Flanking
trapbegin
0.83	2.22	0.83	2.22
.77	1.62	.77	1.62	1
trapend
trapbegin
.71	.8	.71	.8
.7	.74	.7	.74	1
trapend
# Main route
trapbegin
8.78	2.52	8.86	2.35
8.6	2.42	8.75	2.3	25
8.57	1.85	8.7	1.7	25
8.45	1.8	8.5	1.63	25
7.6	2	7.6	1.84	25
6.95	1.68	7	1.57	25
trapend
trapbegin
6.95	1.68	6.98	1.60
6.35	1.35	6.38	1.27	15
trapend
trapbegin
6.35	1.35	6.37	1.30
5.5	1.03	5.52	0.98	10
trapend
trapbegin
5.5	1.03	5.515	1.00
4.6	.88	4.615	.85	3
3.9	.56	3.915	.53	3
trapend
# Where first flanking returns
trapbegin
3.95	.6	3.95	.52
3.5	.5	3.5	.42	6
3.39	.5	3.39	.43	6
trapend
trapbegin
3.4	.5	3.4	.46
2.8	.82	2.8	.79	3
2.45	.67	2.45	.65	2
1.5	.78	1.5	.77	1
.7	.75	.7	.75	1
trapend
trapbegin
.7	.75	.7	.72
.5	.75	.5	.72	3
trapend

"Kovno"		ljust	at .45, 1.2
"Vilna"			at 1.5, 1.18
"Polotsk"	above	at 3.6, 2.0
"Vitebsk"		at 4.2, 1.68
"Smolensk"		at 5.4, 1.23
"Borodino"		at 7.7, 2.2
"MOSCOW"		at 8.7, 2.75
"Maloyaroslavets"	at 8.6, 1.5
"Mojaisk"	ljust	at 7.8, 2.0
"Viasma"	ljust	at 7, 1.45
"Mogilev"	ljust	at 4.7, .25
"Orsha"		rjust	at 4.6, .95
"Bobr"		ljust	at 4.05, .45
"Studenka"	rjust	at 3.3, .4
"Minsk"			at 2.8, .15
"Smorgoni"	ljust	at 2, .85

# SIZE OF ARMY
copy thru { "$1" at $2, $3 } until "xxx"
422	.5	1.65
6	.75	2.2
22	1.05	2.2
400	1.25	1.6
60	1.85	1.95
33	2.9	2.1
175	4.7	1.8
145	5.8	1.65
127	7	2.5
100	7.82	2.4
100	8.87	2.6
96	8	1.6
87	7.5	1.6
55	6.7	1.3
37	6	1.05
24	5	.8
20	4.3	.6
50	3.7	.3
28	3	.55
12	2.25	.55
14	1.8	.65
8	1.35	.65
4	.9	.65
10	.65	.6
xxx

minx = 0.3
maxx = maxx - minx
define temp { 0.015*($1) - 0.8 }
line from maxx, temp(40) to maxx, temp(-40)\
	to minx, temp(-40) to minx, temp(40) to maxx, temp(40)
copy thru {
	" $1\(de" ljust at maxx, temp($1)
	"$1\(de " rjust at minx, temp($1)
} until "xxx"
40
20
0
-20
-40
xxx
polflag = 1
copy thru {
	line dotted .05 from $1, $3 to $1, temp($2)
	"$2\(de" at $1, temp(-49)
	"$4 $5" at $1, temp(-58)
	if polflag == 0 then {
		line from PolEnd to $1,temp($2); PolEnd: Here
	} else {
		PolEnd: $1,temp($2); polflag = 0
	}
} until "xxx"
8.7	32	1.7	18 Oct
7.9	32	1.8	24 Oct
6.35	12	1.3	9 Nov
5.5	-15	1	14 Nov
3.9	7	.5
3.3	-13	.5	28 Nov
2.8	-22	.8	1 Dec
2.4	-35	.65	6 Dec
1.3	-26	.8	7 Dec
xxx
.ft
.ps +2
.PE
pt.parser       705721325   9     1     100644  901       `
.nf
.ll 5i
Dragon book, page 388:
.sp
.PS
x = .5; y = .325;	# dimensions of the boxes

LA:
	box wid x ht y "lexical" "analyzer";
	arrow right x/2 from LA.w - x/2,0 "" "" "source" "code";
Parser:
	box at LA + 2*x, 0 "parser";
	arrow from LA.e to Parser.w "" "tokens";
Sem:
	box at Parser + 5*x/2, 0 "semantic" "checker";
	arrow from Parser.e to Sem.w "" "" "intermediate" "code";
	arrow from Sem.e right x/2;
LC:
	box at LA + 0, 2*y "lexical" "corrector";
	arrow from LA.t to LC.b <->;
Syn:
	box at LC + 2*x, 0 "syntactic" "corrector";
	arrow from Parser.t to Syn.b <->;
DMP:
	box wid x ht x at Syn + 0,2*y "diagnostic" "message" "printer";
	arrow from LC.ne to DMP.sw;
	arrow from Syn.t to DMP.b;
	arrow from Sem.nw to DMP.se;
ST:
	box at DMP + 5*x/2,0 "symbol" "table";
	arrow <-> from Sem.t to ST.b;
	arrow <-> from DMP.r to ST.l;
.PE
.sp 2
.ce
\f3Fig. 11.1.\fP  Plan of an error detector/corrector

pt.ravi         705721325   9     1     100644  1340      `
.EQ
delim $$
.EN
.PP
this is figure 3
.KS
.nf
.PS 6i
scale = 200
"$upd$" at 100,300;
line from 80,280 to 20,220;
arc cw to 0,220;
line to 0,360;
arc cw to 40,400 radius 40;
line -> to 180,400;
"$upd$" at 200,400;
line -> from 180,380 to 120,320;
line -> from 100,280 to 120,220;
"\f2L2\fP" at 100,200;
line from 120,280 to 180,220;
arc to 220,200;
line to 280,200;
arc to 320,220;
line to 580,560;
arc cw to 620,580;
line -> to 680,520;
line -> from 200,380 to 220,320;
"\f2L1\fP" at 200,320;
line from 220,380 to 280,320;
arc to 320,320;
line to 580,660;
arc cw to 620,680;
line -> to 680,620;
"$a sub 1$" at 700,600;
line -> from 700,580 to 700,520;
"$a sub 2$" at 700,500;
line from 700,480 to 700,420;
"$b sub 1$" at 700,400;
line -> from 680,380 to 620,320;
"$app$" at 600,300;
line from 580,280 to 520,220;
arc cw to 480,220;
line to 320,480;
arc to 280,480;
line -> to 220,420;
line -> from 620,280 to 680,220;
"\f2L1\fP" at 700,200;
line -> from 720,380 to 780,320;
"$a sub 3$" at 800,300;
line -> from 800,280 to 800,220;
"$b sub 2$" at 800,200;
line -> from 780,180 to 720,120;
"$app$" at 700,100;
line from 680,80 to 620,20;
arc cw to 580,0;
line to 520,0;
arc cw to 480,20;
line to 320,480;
line -> from 820,180 to 880,120;
"$I$" at 900,100;
line -> from 720,80 to 780,20;
"\f2L2\fP" at 800,0;
.PE
.sp 2
.ce
Figure 3.
.sp 2
.KE
pt.ravi.1       705721325   9     1     100644  2654      `
.EQ
delim $$
.EN
.KS
.PS
scale = 225;
"$e$";
line <- from Here + 20,20 up 60 right 60;
"\f4upd\fP" at Here + 20,20;
{
   line -> from Here + 0,-20 down 60 right 20;
   "\f2L2\fP" at Here + 0,-20;
}
{
   line -> from Here + 20,-20 down 60 right 60;
   "\f4app\fP" at Here + 20,-20;
   {   line -> from Here + 20,-20 down 60 right 60; "\f2L2\fP" at Here + 20,-20;   }
   line -> from Here + -20,-20 down 60 left 60;
   "$e sub m$" at Here + -20,-20;
}
line <- from Here + 20,20 up 60 right 60;
"\f4upd\fP" at Here + 20,20;
{
   line -> from Here + 0,-20 down 60 right 20;
   "\f2L1\fP" at Here + 0,-20;
}
{
   line -> from Here + 20,-20 down 160 right 60;
   "\f4app\fP" at Here + 20,-20;
   {   line -> from Here + 20,-20 down 60 right 60; "\f2L1\fP" at Here + 20,-20;   }
   line -> from Here + -20,-20 down 60 left 160;
}
move to Here + 500,200;
{
   "$a sub 1$";
   line -> from Here + 0,-20 down 60;
   "$a sub 2$" at Here + 0,-20;
   line -> from Here + 0,-20 down 60;
   "$b sub 1$" at Here + 0,-20;
   {
      line -> from Here + -20,-20 down 60 left 60;
      "\f4app\fP" at Here + -20,-20;
      {
         line -> from Here + 20,-20 down 60 right 60;
         "\f2L1\fP" at Here + 20,-20;
      }
      spline -> from Here + -20,-20 to Here + -100,-100 to Here + -200,200 to Here + -380,120;
   }
   line -> from Here + 20,-20 down 60 right 60;
   "$a sub 3$" at Here + 20,-20;
   line -> from Here + 0,-20 down 60;
   "$b sub 2$" at Here + 0,-20;
   {
      line -> from Here + -20,-20 down 60 left 60;
      "\f4app\fP" at Here + -20,-20;
      {
         line -> from Here + 20,-20 down 60 right 60;
         "\f2L2\fP" at Here + 20,-20;
      }
      spline -> from Here + -20,-20 to Here + -100,-100 to Here + -300,100 to Here + -400,400 to Here + -480,320;
   }
   line -> from Here + 20,-20 down 60 right 60;
   "$I$" at Here + 20,-20;
}
arc <- from Here + 0,20 to Here + -80,180 radius 200;
"\f4upd\fP" at Here + -20,20;
{
   {
      line -> from Here + 0,-20 down 60 right 20;
      "\f2L1\fP" at Here + 0,-20;
   }
   line -> from Here + -20,-20 down 60 left 60;
   "\f4upd\fP" at Here + -20,-20;
   {
      line -> from Here + 0,-20 down 60 right 20;
      "\f2L2\fP" at Here + 0,-20;
   }
   {   line -> from Here + 20,-20 down 160 right 160;   }
   line -> from Here + -20,-20 down 60 left 60;
   "\f4nil\fP" at Here + -20,-20;
}
line dashed from Here + -40,0 left 640;
arc to Here + -20,-20 rad 20;
line dashed down 660;
arc to Here + 20,-20 rad 20;
line dashed to Here + 160,0;
.PE
.sp 2
.FI 5
The dashed line connects vertices that are merged when an
instance of the least fixed point operator is eliminated, as in
Figure 2.
.KE
pt.ravi.2       705721325   9     1     100644  6377      `
.EQ
delim $$
.EN
.PS
# u = 40;
u = 40/200;
boxwid = 2*u; boxht = u;
ellipsewid = 2*u; ellipseht = u;
d = 6*u/5;
define test % line down u left u; line down u right u; line up u right u; line up u left u; %
down;
ellipse "$bi start$";
line down d/2;
P0:	"$\(bu$"; { move right u/2; "$p sub 0$"; }; line -> down d/2;
	box "$f$";
	line down d/2;
P1:	"$\(bu$"; { move left u/2; "$p sub 1$"; }; line -> down d/2;
B1:	test();
	move down u;
	"$b sub 1$";
	{	move left u;
		spline ->  from Here to Here + -2*u,0 to Here + -2*u,2*u+3*d/2 to P0.w;
	}
	move right u;
	spline ->  from Here to Here + 2*u,0 to Here + 2*u,-u-d/2;
P2:	"$\(bu$"; {move right u/2; "$p sub 2$";}
	line down d/2;
	box "$g$";
	line -> down d;
B2:	test();
	move down u;
	"$b sub 2$";
	{	move right u;
		spline ->  from Here to Here + 2*u,0 to Here + 2*u,3*d/2+5*u to P1.e;
	}
	move left u;
	spline ->  from Here to Here + -d,0 to Here + -d,-d;
	down;
	box "$h$";
	line down d/2; "$\(bu$"; { move right u/2; "$p sub 3$"; }; line -> down d/2;
B3:	test();
	move down u;
	"$b sub 3$";
	{	move left u;
		spline -> from Here to Here + -d,0 to Here + -d,7*d/2+4*u to P2.w;
	}
	move right u;
	spline ->  from Here to Here + d,0 to Here + d,-d;
	down;
	box "$bi out$";
.PE
.bp
.PS
.ps 9
.sp
u = 40;
u = 40/200
boxwid = 3*u; boxht = 2*u;
ellipsewid = 3*u; ellipseht = 2*u;
linewid = 2*u; lineht = 2*u;
movewid = 2*u; moveht = 2*u;
LA:	box "lexical" "analyzer"
	arrow
P:	box "parser," "graph" "builder"
	arrow
	box "reducer"
	arrow
	box "code" "generator"
	arrow
	ellipse "code"

	arrow <- from LA.n up
LX:	box "\f1LEX\fP"
	arrow <- from LX.w left

Tok:	ellipse "Ltok.r"
	move to Tok.n
	move up
Sem:	ellipse "Lsem.d"
	arrow -> from Sem.e right
D:	box "d2y"

	arrow -> right "Lsem.y" above
Y2:	box "\f1YACC\fP"
	arrow from Y2.s to P.n

	arrow <- from LA.w left
Prog:	ellipse "prog.L"
	move to Prog.e
	move right u down 2*u
LC:	Here
	line dotted right 15*u
	line dotted up 12*u
	line dotted left 15*u
	line dotted down 12*u
.PE
.bp
.EQ
delim $$
.EN
.PS
x = 15/225; y = 3*x; z = 5*x;

define dr % move down x right x; line -> down y right y; move down x right x; %
define dl % move down x left x; line -> down y left y; move down x left x; %
define ur % move up x right x; line <- up y right y; move up x right x; %
define ul % move up x left x; line <- up y left y; move up x left x; %

move to Here + 5*z,z;
{
	"$b sub 1$";
	line -> from Here + 0,-x down y;
	"$b sub 2$" at Here + 0,-x;
	{
		dl;
		"$bi app$";
		{
			dr; "L1";
		}
		spline -> from Here + -x,-x to Here + -z,-z to Here + -2*z,2*z to Here + x-4*z,x+z;
	}
	spline -> from Here + x,-x to Here + z,-z to Here + z,x-2*z;
	move down x;
	"$b sub 3$";
	{
		dr; "fall";
	}
	{
		dl; "$bi app$";
		{
			dr; "L2";
		}
		spline -> from Here + -x,-x to Here + -z,-z to Here + -3*z,z to Here + -4*z,4*z to Here + x-5*z,x+3*z;
	}
}
.PE
.bp
.PS
x = 15/225; y = 3*x; z = 5*x;

define dr % move down x right x; line -> down y right y; move down x right x; %
define dl % move down x left x; line -> down y left y; move down x left x; %
define ur % move up x right x; line <- up y right y; move up x right x; %
define ul % move up x left x; line <- up y left y; move up x left x; %

"e";
ur;
"e' $bi updl$";
{	line -> from Here + x,-x down y+z right y;
	"list" at Here + x,-x;
}
move to Here + 5*z,z;
{
	"$b sub 1$";
	line -> from Here + 0,-x down y;
	"$b sub 2$" at Here + 0,-x;
	{
		dl;
		"$bi app$";
		{
			dr; "L1";
		}
		spline -> from Here + -x,-x to Here + -z,-z to Here + -2*z,2*z to Here + x-4*z,x+z;
	}
	spline -> from Here + x,-x to Here + z,-z to Here + z,x-2*z;
	move down x;
	"$b sub 3$";
	{
		dr; "fall";
	}
	{
		dl; "$bi app$";
		{
			dr; "L2";
		}
		spline -> from Here + -x,-x to Here + -z,-z to Here + -3*z,z to Here + -4*z,4*z to Here + x-5*z,x+3*z;
	}
}

move up z;
"L1";
move up x right x;
line <- up y/2 right y/2;
"$\(bu$";
{
	spline -> from Here to Here + z/2,-z/2 to Here + -y/2,x-3*z/2;
}
line <- up z/2 right z/2;
"$\(bu$";
{
	line -> down z right z;
	"$\(bu$";
	{
		line -> down y/2 right y/2;
		move down x right x;
		"$bi nil$";
	}
	line down z/2 left z/2;
	"$\(bu$";
	{
		line -> down y/2 left y/2;
		move down x left x;
		"L2";
	}
	spline -> from Here to Here + z/2,-z/2 to Here + -z-y/2,x-3*z/2;
}

line dashed from Here + -x,0 to Here + x-8*z,0;
arc to Here + -x,-x rad x;
line dashed down 5*z-2*x;
arc to Here + x,-x rad x;
line dashed right y/2+2*z;
.PE
.bp
.PS
x = 15/225; y = 3*x; z = 5*x;

define dr % move down x right x; line -> down y right y; move down x right x; %
define dl % move down x left x; line -> down y left y; move down x left x; %
define ur % move up x right x; line <- up y right y; move up x right x; %
define ul % move up x left x; line <- up y left y; move up x left x; %

"e";
ur;
"$bi upd$";
{
	line -> from Here + 0,-x down y right x;
	"L2" at Here + 0,-x;
}
{
	spline -> from Here + x,-x to Here + z,-z to Here + 2*z,-z to Here + 5*z,2*z to Here + 6*z-x,z+x;
}
ur;
"$bi upd$";
{
	line -> from Here + 0,-x down y right x;
	"L1" at Here + 0,-x;
}
{
	spline -> from Here + x,-x to Here + z,-z to Here + 4*z,2*z to Here +5*z-x,z+x;
}
move to Here + 5*z,z;
{
	"$b sub 1$";
	line -> from Here + 0,-x down y;
	"$b sub 2$" at Here + 0,-x;
	{
		dl;
		"$bi app$";
		{
			dr; "L1";
		}
		spline -> from Here + -x,-x to Here + -z,-z to Here + -2*z,2*z to Here + x-4*z,x+z;
	}
	spline -> from Here + x,-x to Here + z,-z to Here + z,x-2*z;
	move down x;
	"$b sub 3$";
	{
		dr; "fall";
	}
	{
		dl; "$bi app$";
		{
			dr; "L2";
		}
		spline -> from Here + -x,-x to Here + -z,-z to Here + -3*z,z to Here + -4*z,4*z to Here + x-5*z,x+3*z;
	}
}
.PE
.bp
.PS
x = 15/225; y = 3*x; z = 5*x;

define dr % move down x right x; line -> down y right y; move down x right x; %
define dl % move down x left x; line -> down y left y; move down x left x; %
define ur % move up x right x; line <- up y right y; move up x right x; %
define ul % move up x left x; line <- up y left y; move up x left x; %

{
	"$b sub 1$";
	line -> from Here + 0,-x down y;
	"$b sub 2$" at Here + 0,-x;
	{
		spline -> from Here + -x,-x to Here + -z,-z to Here + -2*z,0 to Here + -2*z,z to Here + -z,2*z to Here + -x,z+x;
	}
	spline -> from Here + x,-x to Here + z,-z to Here + z,x-2*z;
	move down x;
	"$b sub 3$";
	{
		dr; "fall";
	}
	{
		spline -> from Here + -x,-x to Here + -z,-z to Here + -4*z,-z to Here + -4*z,3*z to Here + -2*z,3*z to Here + -x-z,x+2*z;
	}
}
.PE

pt.ravi.3       705721325   9     1     100644  809       `
.EQ
delim $$
.EN
.PS
define L %
	if "$2" != "" then | x = $2; |
	if "$3" != "" then | y = $3; |
	if "$4" != "" then | n = $4; | else | n = m; |
	if "$5" != "" then | co = cos(2*$5); si = sin(2*$5); |\
		else | co = cos(2*theta); si = sin(2*theta); |
	px=x*hu; py=y*vu;
	vx=(px+n*(px*co+py*si))/2; vy=(py+n*(px*si-py*co))/2;
	alpha = atan2(vy,vx); beta = atan2(py-vy,px-vx);
	 { spline $1 from Here + c*cos(alpha),c*sin(alpha)\
		to Here + vx,vy\
		to Here + px-c*cos(beta),py-c*sin(beta);
	}
	move to Here + px,py
% x=0; y=0; m=0; theta=0; c=0; # initially
define E %
	 { move to Here + .25*(px/2+vx)-px,.25*(py/2+vx)-py;
		$1;
	}
%
pi = 3.1415926535; hu = 0.3i; vu = hu;
for i = 0 to 7 do | { L(,4,4,1,i*pi/8); E(line right i);} |
move down 2;
for i = 0 to 7 do | { L(,6,3,1,i*pi/8); E(line right i);} |
.PE

pt.ravi.4       705721325   9     1     100644  824       `
.EQ
delim $$
.EN
.PS
[
	lineht = .2; ellipseht = .25; ellipsewid = .45;
	arrowht = .08; arrowwid = .04;
	A : [
		down;
		E1 :	ellipse "1,2"
			arrow
		E2 :	ellipse "3"
			arrow
		E3 : 	ellipse "4,5,6"
			arrow
		E4 :	ellipse wid .7 "7,8,9,10"

		arc cw -> from E4.w to E1.w
		arc cw -> from E3.nw to E2.sw
		arc    -> from E4.ne to E3.e
		arc    -> rad  from E4.e to E2.e
print arcrad
	]
	B : [
		down;
		E1 :	ellipse "1,2"
			arrow
		E2 :	ellipse "3"
			arrow
		E3 : 	ellipse wid .7 "$4 ,..., 10$"

		arc cw -> rad 1 from E3.w to E1.w
		arc cw -> from E3.nw to E2.w
	] with .nw at A.ne + .25,0
	C : [
		down;
		E1 :	ellipse "1,2"
			arrow
		E2 :	ellipse wid .7 "$3 ,..., 10$"

		arc cw -> from E2.nw to E1.w
	] with .nw at B.ne + .25,0
	D : [
		down;
		E1 :	ellipse wid .7 "$1 ,..., 10$"

	] with .nw at C.ne + .25,0
]
.PE
pt.ravi.b1      705721325   9     1     100644  581       `
.PS
u = 0.1i;
h = 2*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*1.4;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
define expr %
	"expression";
	{ ln(-2,-1); $1; }
	{ ln(0,-1); "operator"; ln(0,-1); "\f8$2\f1"; }
	{ ln(2,-1); $3; }
%
define id %
{
	"expression"
	ln(0,-1);
	"identifier";
	ln(0,-1); "\f8$1\f1";
}
%
"assignment"; move down 1.5*u; "statement";
 {
	ln(-1,-1); "identifier";
	ln(0,-1);  "\f8position\f1";
}{
	ln(2,-1);
	expr(
		id(initial),+,expr( id(distance),*,id(time) )
	);
}
.PE

pt.ravi.b2      705721326   9     1     100644  8387      `
.PS
b = 0.1i
a = 1.5*b
d = a+2*b
define lleft % move down b left b; line down a left a; move down b left b %
define ldown % move down b; line down a; move down b %
define lright % move down b right b; line down a right a; move down b right b %
"$list$";
{
	move down b left 2*b;
	line down a left a+d; move down b left b; "$list$";
	{
		lleft; "$list$"; ldown; "$digit$"; ldown; "$9$";
	}
	{
		move down b; line down a+2*d; move down b; "$-$";
	}
	{
		lright; "$digit$";
		move down b; line down a+d; move down b; "$5$";
	}
}
{
	move down b; line down a+3*d; move down b; "$-$";
}
{
	move right b;
	lright; "$digit$";
	move down b; line down a+2*d; move down b; "$2$";
}
.PE
.PS
u = 0.08i;
h = 3*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*1.4;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
"$A$";	 { ln(-1,-1); "$X$";
	}{ ln(0,-1); "$Y$";
	}{ ln(1,-1); "$Z$";
	}
.PE
.PS
"$string$";
{
	lleft; "$string$";
	{ lleft; "$string$"; ldown; "$9$"; }
	{ ldown; "$-$"; }
	{ lright; "$string$"; ldown; "$5$"; }
}
{
	ldown; "$-$";
}
{
	lright; "$string$";
	ldown; "$2$";
}
move right 20*b;
"$string$";
{
	lleft; "$string$";
	ldown; "$9$";
}
{
	ldown; "$-$";
}
{
	lright; "$string$";
	{
		lleft; "$string$";
		ldown; "$5$";
	}
	{
		ldown; "$-$";
	}
	{
		lright; "$string$";
		ldown; "$2$";
	}
}
.PE
.PS
b = 0.1i
a = 1.5*b
d = a+2*b
define lleft % move down b left b; line down a left a; move down b left b %
define ldown % move down b; line down a; move down b %
define lright % move down b right b; line down a right a; move down b right b %
"$list$";
{
	lleft; "$list$";
	{
		lleft; "$list$";
		ldown; "$digit$"; ldown; "$9$";
	}
	{
		ldown; "$-$";
	}
	{
		lright; "$digit$"; ldown; "$5$";
	}
}
{
	ldown; "$-$";
}
{
	lright; "$digit$"; ldown; "$2$";
}
move right 20*b;
"\f2right\fP";
{
	lleft; "$letter$"; ldown; "$bd a $";
}
{
	ldown; "$=$";
}
{
	lright; "\f2right\fP";
	{
		lleft; "$letter$"; ldown; "$bd b$";
	}
	{
		ldown; "$=$";
	}
	{
		lright; "\f2right\fP";
		ldown; "$letter$"; ldown; "$ bd c$";
	}
}
.PE
.PS
b = 0.1i
a = 2*b
h = 6*b; hf = h+2*b;
d = a+2*b
define lleft % move down b left b; line down a left h; move down b left b %
define ldown % move down b; line down a; move down b %
define lright % move down b right b; line down a right h; move down b right b %
"$expr.t^=^95-2-$";
{
	move down b left 2*b;
	line down a left 2*h+2*b; move down b left 2*b;
	"$expr.t^=^95-$";
	{
		lleft; "$expr.t^=^9$";
		ldown; "$term.t^=^9$";
		ldown; "$9$";
	}
	{
		move down b; line down a+2*d; move down b; "$-$";
	}
	{
		lright; "$term.t^=^5$";
		move down b; line down a+d; move down b; "$5$";
	}
}
{
	move down b; line down a+3*d; move down b; "$-$";
}
{
	move right b;
	lright; "$term.t^=^2$";
	move down b; line down a+2*d; move down b; "$2$";
}
.PE
.PS
scale = 50
{
	line down 5
	line left 6
	line up 7
	line right 8
}
move right 50;
{
	line down 5
	line left 6
	line up 7
	line right 8
	line down 9
	line left 10
	line up 11
	line right 12
	line down 13
	line left 14
	line up 15
	line right 16
	line down 17
	line left 18
	line up 19
	line right 20
}
move right 100
{
	line down 5
	line left 6
	line up 7
	line right 8
	line down 9
	line left 10
	line up 11
	line right 12
	line down 13
	line left 14
	line up 15
	line right 16
	line down 17
	line left 18
	line up 19
	line right 20
	line down 21
	line left 22
	line up 23
	line right 24
	line down 25
	line left 26
	line up 27
	line right 28
	line down 29
	line left 30
	line up 31
	line right 32
	line down 33
	line left 34
	line up 35
	line right 36
	line down 37
	line left 38
	line up 39
	line right 40
	line down 41
	line left 42
	line up 43
	line right 44
	line down 45
	line left 46
	line up 47
	line right 48
	line down 49
	line left 50
	line up 51
	line right 52
	line down 53
	line left 54
	line up 55
	line right 56
	line down 57
	line left 58
	line up 59
	line right 60
	line down 61
	line left 62
	line up 63
	line right 64
	line down 65
	line left 66
	line up 67
	line right 68
}
.PE
.PS
scale = 1;
b = 0.1i
a = 1.5*b
d = a+2*b
define lleft % move down b left 2*b; line down 2*a+b left 2*d-b; move down b left b %
define ldown % move down b; line down a; move down b %
define lright % move down b right 2*b; line down 2*a+b right 2*d-b; move down b right b %

"$expr$"; { move right b; " {print $-$}" ljust; }
{
	ldown; "$-$";
}
{
	lright;
	"$term$"; { move right b; " {print $5$}" ljust; }
	ldown; "$9$";
}

lleft;
"$expr$"; { move right b; " {print $-$}" ljust; }
{
	ldown; "$-$";
}
{
	lright;
	"$term$"; { move right b; " {print $5$}" ljust; }
	ldown; "$5$";
}

lleft;
"$expr$";
ldown; "$term$"; { move right b; " {print $2$}" ljust; }
ldown; "$2$";
.PE
.PS
b = 0.1i
a = 2*b
h = 6*b; hf = h+2*b;
d = a+2*b
define lleft % move down b left b; line down a left h; move down b left b %
define ldown % move down b; line down a; move down b %
define lright % move down b right b; line down a right h; move down b right b %
"$expr.t^=^95-2-$";
{
	move down b left 2*b;
	line down a left 2*h+2*b; move down b left 2*b;
	"$expr.t^=^95-$";
	{
		lleft; "$expr.t^=^9$";
		ldown; "$term.t^=^9$";
		ldown; "$9$";
	}
	{
		move down b; line down a+2*d; move down b; "$-$";
	}
	{
		lright; "$term.t^=^5$";
		move down b; line down a+d; move down b; "$5$";
	}
}
{
	move down b; line down a+3*d; move down b; "$-$";
}
{
	move right b;
	lright; "$term.t^=^2$";
	move down b; line down a+2*d; move down b; "$2$";
}
.PE
.PS
u=0.02i;
{
	line to Here + 0*u,-5*u
	line to Here + -6*u,0*u
	line to Here + 0*u,7*u
	line to Here + 8*u,0*u
}
move right 1.0i;
{
	line to Here + 0*u,-5*u
	line to Here + -6*u,0*u
	line to Here + 0*u,7*u
	line to Here + 8*u,0*u
	line to Here + 0*u,-9*u
	line to Here + -10*u,0*u
	line to Here + 0*u,11*u
	line to Here + 12*u,0*u
	line to Here + 0*u,-13*u
	line to Here + -14*u,0*u
	line to Here + 0*u,15*u
	line to Here + 16*u,0*u
	line to Here + 0*u,-17*u
	line to Here + -18*u,0*u
	line to Here + 0*u,19*u
	line to Here + 20*u,0*u
}
move right 2.0i
{
	line to Here + 0*u,-5*u
	line to Here + -6*u,0*u
	line to Here + 0*u,7*u
	line to Here + 8*u,0*u
	line to Here + 0*u,-9*u
	line to Here + -10*u,0*u
	line to Here + 0*u,11*u
	line to Here + 12*u,0*u
	line to Here + 0*u,-13*u
	line to Here + -14*u,0*u
	line to Here + 0*u,15*u
	line to Here + 16*u,0*u
	line to Here + 0*u,-17*u
	line to Here + -18*u,0*u
	line to Here + 0*u,19*u
	line to Here + 20*u,0*u
	line to Here + 0*u,-21*u
	line to Here + -22*u,0*u
	line to Here + 0*u,23*u
	line to Here + 24*u,0*u
	line to Here + 0*u,-25*u
	line to Here + -26*u,0*u
	line to Here + 0*u,27*u
	line to Here + 28*u,0*u
	line to Here + 0*u,-29*u
	line to Here + -30*u,0*u
	line to Here + 0*u,31*u
	line to Here + 32*u,0*u
	line to Here + 0*u,-33*u
	line to Here + -34*u,0*u
	line to Here + 0*u,35*u
	line to Here + 36*u,0*u
	line to Here + 0*u,-37*u
	line to Here + -38*u,0*u
	line to Here + 0*u,39*u
	line to Here + 40*u,0*u
	line to Here + 0*u,-41*u
	line to Here + -42*u,0*u
	line to Here + 0*u,43*u
	line to Here + 44*u,0*u
	line to Here + 0*u,-45*u
	line to Here + -46*u,0*u
	line to Here + 0*u,47*u
	line to Here + 48*u,0*u
	line to Here + 0*u,-49*u
	line to Here + -50*u,0*u
	line to Here + 0*u,51*u
	line to Here + 52*u,0*u
	line to Here + 0*u,-53*u
	line to Here + -54*u,0*u
	line to Here + 0*u,55*u
	line to Here + 56*u,0*u
	line to Here + 0*u,-57*u
	line to Here + -58*u,0*u
	line to Here + 0*u,59*u
	line to Here + 60*u,0*u
	line to Here + 0*u,-61*u
	line to Here + -62*u,0*u
	line to Here + 0*u,63*u
	line to Here + 64*u,0*u
	line to Here + 0*u,-65*u
	line to Here + -66*u,0*u
	line to Here + 0*u,67*u
	line to Here + 68*u,0*u
}
.PE
.PS
b = 0.1i
a = 1.5*b
d = a+2*b
define lleft % move down b left 2*b; line down 2*a+b left 2*d-b; move down b left b %
define ldown % move down b; line down a; move down b %
define lright % move down b right 2*b; line down 2*a+b right 2*d-b; move down b right b %

"$expr$"; { move right b; "\f8 {\f1print\f8'-'}\fP" ljust; }
{
	ldown; "\f8-\fP";
}
{
	lright;
	"$term$"; { move right b; "\f8 {\f1print\f8'5'}\fP" ljust; }
	ldown; "\f82\fP";
}

lleft;
"$expr$"; { move right b; "\f8 {\f1print\f8'-'}\fP" ljust; }
{
	ldown; "\f8-\fP";
}
{
	lright;
	"$term$";"$term$"; { move right b; "\f8 {\f1print\f8'3'}\fP" ljust; }
	ldown; "\f85\fP";
}

lleft;
"$expr$";
ldown; "$term$"; { move right b; "\f8 {\f1print\f8'2'}\fP" ljust; }
ldown; "\f82\fP";
.PE

pt.ravi.b4      705721326   9     1     100644  3966      `
.PS
u = 0.08i;
h = 3*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*1.4;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
.PE
.PS
"$A$";	 { ln(-1,-1); "$X$";
	}{ ln(0,-1); "$Y$";
	}{ ln(1,-1); "$Z$";
	}
.PE
.PS
define uminus %
	"$E$"; { ln(-1,-1); "$-$"; }; ln(1,-1);
%
define parens %
	"$E$"; { ln(-1,-1); "\f8(\f1"; }{ ln(1,-1);  "\f8)\f1"; };
	ln(0,-1);
%
define id %
	"$E$"; ln(0,-1); "$ID$";
%
uminus();
parens();
"$E$";	 { ln(0,-1);  "$+$";
	}{ ln(-1,-1); id();
	}{ ln(1,-1);  id();
	}
.PE
.PS
{	move right 2*hs;
	"$E$"
}
{	move right 5*hs; "$=>$"; move right 2*hs;
	uminus(); "$E$";
}
move down 2*vs;
{	"$=>$"; move right 2*hs;
	uminus(); parens(); "$E$";
}
{	move right 5*hs; "$=>$"; move right 2*hs;
	uminus(); parens();
	"$E$";	 { ln(0,-1);  "$+$";
		}{ ln(-1,-1); "$E$";
		}{ ln(1,-1);  "$E$";
		}
}
move down 4*vs;
{	"$=>$"; move right 2*hs;
	uminus(); parens();
	"$E$";	 { ln(0,-1);  "$+$";
		}{ ln(-1,-1); id();
		}{ ln(1,-1);  "$E$";
		}
}
{	move right 5*hs; "$=>$"; move right 2*hs;
	uminus(); parens();
	"$E$";	 { ln(0,-1);  "$+$";
		}{ ln(-1,-1); id();
		}{ ln(1,-1);  id();
		}
}
.PE
.PS
{
	"$E$";	 { ln(0,-1);  "$+$";
		}{ ln(-1,-1); id();
		}{ ln(1,-1);"$E$";
			 { ln(0,-1);  "$star$";
			}{ ln(-1,-1); id();
			}{ ln(1,-1);  id();
			}
		}
	move down 4*vs; "(a)"
}
move right 6*hs;
{
	"$E$";	 { ln(0,-1);  "$star$";
		}{ ln(1,-1); id();
		}{ ln(-1,-1);"$E$";
			 { ln(0,-1);  "$+$";
			}{ ln(-1,-1); id();
			}{ ln(1,-1);  id();
			}
		}
	move down 4*vs; "(b)"
}
.PE
.PS
u = 0.08i;
h = 3*u; hs = h+2*u;
v = 4*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*(1.4 $4);}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
.PE
.PS
define tree %
	 { "`$1`";
	}{ move down u left 0.5*u;
	   line left 0.6*h down 1.75*u;
	   line right 0.6*h+0.5*u;
		 { move down 1.2*u; "`$2 sub $3`";
		}
	   line right 0.6*h+0.5*u;
	   line left 0.6*h up 1.75*u;
	}
%
define ifthen %
	 "`stmt`";
	 { ln(-1.5,-1); "`IF`";
	}{ ln(-0.5,-1); tree(cond,C,$1);
	}{ ln(0.5,-1); "`THEN`";
	}
	ln(1.5,-1);
%
define ifelse %
	 "`stmt`";
	 { ln(-1.5,-1); "`IF`";
	}{ ln(-0.5,-1); tree(cond,C,$1);
	}{ ln(0.5,-1); "`THEN`";
	}{ ln(1.5,-1); 
	}{ ln(2.5,-1); "`ELSE`";
	}{ ln(3.5,-1); 
	}
	 { move right (3.5-$3*2)*hs down vs; tree(stmt,S,$2)
	}
	move right (1.5+$3*2)*hs down vs;
%
ifelse(1,1,1);
ifelse(2,2,1);
tree(stmt,S,3);
.PE
.PS
ifthen(1);
ifelse(2,1,1);
tree(stmt,S,2);
.PE
.PS
ifelse(1,2,0);
ifthen(2);
tree(stmt,S,1);
.PE
.PS
define wiggle %
	spline $1 to Here + u/2,u/2 to Here + u,-u/2 to Here + 3*u/2,0
%
 { circle radius 1.3*u at Here;
}{ "$s sub 0$";
}{ move up vs right 2*hs; "path labeled $a sup i$";
}{ move down vs right 2*hs; "path labeled $a sup j$";
}
move right 4*hs;
 { ellipse wid 1.5*hs ht vs at Here;
}{ "$s sub i~=~s sub j$";
}
move right 0.75*hs;
wiggle();wiggle();wiggle();wiggle();wiggle();wiggle();
spline -> to Here + u/2,u/2 to Here + u,-u/2 to Here + 3*u/2,0 to Here + 2*u,0 to Here +5*u/2,0 to Here +7*u/2,0;
move right 0.8*u;
 { circle radius 1.2*u at Here;
}{ circle radius 1.4*u at Here;
}{ "$f$";
}
.PE
.PS
u = 0.08i;
h = 3*u; hs = h+2*u;
v = 4*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*(1.4 $4);}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
.PE
.PS
define ifthen %
	 "`S`";
	 { ln(-1.5,-1); "`i`";
	}{ ln(-0.5,-1); "`C`"; $1
	}{ ln(0.5,-1); "`t`";
	}
	ln(1.5,-1);
%
define ifelse %
	 "`stmt`";
	 { ln(-1.5,-1); "`i`";
	}{ ln(-0.5,-1); "`C`"; $1
	}{ ln(0.5,-1); "`t`";
	}{ ln(1.5,-1); "`S`"; $2
	}{ ln(2.5,-1); "`e`";
	}{ ln(3.5,-1);  "`S`"; $3
	}
%
ifthen(ln(0,-0.5);"`b`";);
ifelse(ln(0,-0.5);"`b`";,ln(0,-0.5);"`a`";,ln(0,-0.5);"`a`";);
.PE
.PS
ifthen(); "`S`";
.PE
.PS
ifthen(ln(0,-0.5); "\f8b\f1";); "`S`";
.PE
.PS
ifthen(ln(0,-0.5); "\f8b\f1";);
ifelse();
.PE
.PS
ifthen( ln(0,-0.5);"\f8b\f1"; );
ifelse( ln(0,-0.5);"\f8a\f1"; );
.PE
pt.ravi.b5      705721326   9     1     100644  2289      `
.PS
u = 0.1i;
h = 2*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop 1.4*u;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%

define digit %
	"`bd digit`";
	{
		move right 2*u; "`d = $1`" ljust;
	}
%
define nont %
	"`$1`";
	{
		move right 2*u; "`v = $2`" ljust;
	}
%
define chain %
	nont(exp,$1);
	ln(0,-0.6);
	nont(num,$2);
	ln(0,-0.6);
	digit($3)
%

nont(exp,119); {ln(0,-0.6); "\f8+\fP";}
{
	ln(1.5,-0.6);
	chain(4,4,4);
}
ln(-2.5,-1.2);
nont(exp,115); {ln(0,-0.6); "\f8*\fP";}
{
	ln(1.5,-0.6);
	chain(5,5,5);
}
ln(-2,-1.2);
nont(exp,23);
ln(0,-0.6);
nont(num,23);
{
	ln(1,-0.6);
	digit(3);
}
ln(-1.2,-1.2);
nont(num,2);
ln(0,-0.6);
digit(2);
.PE
.PS
u = 0.1i;
h = 3*u; hs = h+2*u;
v = 4*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop 1.5*u;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
"\f8;\f1"
{
	ln(-2,-0.6); "\f8:=\f1";
	{
		ln(-0.6,-0.6); "\f8r\f1"
	}
	{
		ln(0.6,-0.6); "\f8m\f1"
	}
}
ln(2,-0.6); "\f8while\f1"
{
	ln(-1.2,-0.6); "\f8>\f1";
	{
		ln(-0.6,-0.6); "\f8r\f1"
	}
	{
		ln(0.6,-0.6); "\f8n\f1"
	}
}
ln(1.2,-0.6); "\f8:=\f1"
{
	ln(-0.6,-0.6); "\f8r\f1"
}
ln(0.6,-0.6); "\f8-\f1";
{
	ln(-0.6,-0.6); "\f8r\f1";
}
ln(0.6,-0.6); "\f8n\f1"
.PE
.PS
u = 0.1i;
h = 5*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*($1*$1+$2*$2+4.75)/5;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
bs = 3*u;
define stmt %
	"\f8;\f1";
	{
		move left bs; "\(bu"; move left u; "\f2b\f1" rjust;
	}
%
define while %
	"\f8while\f1"
	{
		move left bs; "\(bu"; move left u; "\f2b\f1" rjust;
	}
	{
		move right bs; "\(bu"; move right u; "\f2out\f1" ljust;
	}
%
define pwhile %
	while;
	{
		ln(1,-1,dotted);
		move left bs;
		line <- to Here + -hs+2*bs,vs;
	}
	{
		ln(-1,-1,dotted);
		"\f8EXP\f1";
	}
%
define pseq %
	stmt;
	{
		ln(-1,-1,dotted);
		move left bs;
		lf(1,1,<-);
		lf(1,-1,->);
		move right bs;
		ln(-1,1,dotted);
	}
%

pwhile;
move down vs right hs;
pseq;
{
	move down vs left hs; stmt;
}
move down vs right hs;
pseq;
{
	move down vs right hs; stmt;
}
move down vs left hs;
pwhile;
move down vs right hs;
pseq;
{
	move down vs right hs; stmt;
}
move down vs left hs;
stmt;
.PE

pt.ravi.b6      705721326   9     1     100644  5692      `
.EQ
delim $$
.EN
.PS
u = 0.25i;
boxwid = 3*u; boxht = 2*u;
ellipsewid = 3*u; ellipseht = 2*u;
linewid = 2*u; lineht = 2*u;
movewid = 2*u; moveht = 2*u;
P:	box "parsing"
	arrow
	box "static" "checking"
	arrow dotted
CG:	box "code" "generation"
.PE
.PS
u = 0.1i;
h = 2*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*($1*$1+$2*$2+4.75)/5;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
{
	"\f2array\f1";
		{ ln(-1,-1); "\f8NUM\f1" }
		{ ln(1,-1); "\f2T\f1" }
	move down 1.5*vs; "(a)"
}

move right 5*hs

{
	"\f2pointer\f1"
		{ ln(0,-1); "\f2T\f1" }
	move down 1.5*vs; "(b)"
}
.PE
.PS
u = 0.1i;
h = 2*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*($1*$1+$2*$2+4.75)/5;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
{
	"\f8p\f1"; ln(1,-1,dotted);
	{ ln(1,1,dotted); "\f8q\f1"; }
	"\f2pointer\f1"; ln(1,-1);
	"\f8cell\f1"; ln(1,1);
	"\f2pointer\f1"; ln(0,1,dotted);
	"\f8r\f1"
}
move right 5*hs
{
	"\f8next\f1"; ln(1,-1,dotted);
	"\f8link\f1";
	ln(1,1,dotted);
	"\f8last\f1"
}
.PE
.PS
u = 0.08i;
h = 2*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*($1*$1+$2*$2+4.75)/5;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
{
S:	"\f2record\f1";
	{ ln(-1,-1); "\f8cell\f1"; }
	ln(1,-1); "$times$";
	{
		ln(-1,-1); "\f2field\f1";
		{ ln(-1,-1); "\f8info\f1";}
		ln(1,-1); "\f2integer\f1";
	}
	ln(2,-2); "$times$";
	{
		ln(-1,-1); "\f2field\f1";
		{ ln(-1,-1); "\f8next\f1";}
		ln(1,-1); "\f2pointer\f1";
		move down u;
		spline -> to Here + 0,-vs+u to Here + -5*hs,-vs+u to Here + -5*hs,5*vs to S + -2*u,0;
	}
	ln(1,-1); "\f2nil\f1";
}
.PE
.PS
u = 0.1i;
h = 3*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

	"\f8constructor\f1";
	move right hs up v; line down 2*v; move right hs up v;
	"\f8child1\f1";
	{ move right 3*u; "\(bu"; line -> down vs left hs; }
	move right hs up v; line down 2*v; move right hs up v;
	"\f8child2\f1";
	{ move right 3*u; "\(bu"; line -> down vs right hs; }
	move right hs up v; line down 2*v; move right hs up v;
	"\f8set\f1";
	{
		move right 2*u; "\(bu";
		spline -> to Here + 2*u,0 to Here + 2*u,vs to Here + 4*u,vs;
	}
	move right hs up v;
	line down 2*v;
	line left 8*hs;
	line up 2*v;
	line right 8*hs;
.PE
.PS
u = 0.1i;
h = 2*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*($1*$1+$2*$2+4.75)/5;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
"$E~:$"; { move right 2*u; "\f1{$i,c$}" ljust; }
{
	ln(0,-1);
	"$E~:$"; {move right 2*u; "\f1{$i$}" ljust; }
	ln(0,-1);
	"\f83$~:$\f1"; {move right 2*u; "\f1{$i$}" ljust; }
}
{
	ln(2,-1);
	"$E~:$"; {move right 2*u; "\f1{$i$}" ljust; }
	ln(0,-1);
	"\f85$~:$\f1"; {move right 2*u; "\f1{$i$}" ljust; }
}
{
	ln(-2,-1);
	move left hs down 2*u;
	"\f8*$~:~left { lpile { {c times c~->~c,} above {i times i~->~i,} above {i times i~->~c} } right }$"
}
.PE
.PS
u = 0.1i;
h = 4*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*($1*$1+$2*$2+4.75)/5;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
move left hs;
{ move left 2*u; "$apply~:~integer$" ljust; }
{
	ln(-1,-1);
	"$cw deref sub o~:$";
	move down 1.5*u;
	"$pointer( alpha sub o ) -> alpha sub o$"
}
ln(1,-1);
{ move left 2*u; "$apply~:~pointer(integer)$" ljust; }
{
	ln(-1,-1);
	"$cw deref sub i~:$";
	move down 1.5*u;
	"$pointer( alpha sub i ) -> alpha sub i$"
}
ln(1,-1);
"$cw q~:~pointer(pointer(integer))$" ljust;
.PE
.PS
u = 0.1i;
h = 2*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*($1*$1+$2*$2+4.75)/5;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
"\f8+";
{
	ln(2,-1);
	"\f8*"; { ln(1,-1); "\f8d"; }
	ln(-2,-2);
	"\f8-"; { ln(1,-1); "\f8c"; }
	ln(-1,-1); "\f8b";
}
ln(-2,-1);
"\f8+";
{
	spline from Here + -u,-u to Here + -hs,-vs to Here + -u,-2*vs+u;
}
ln(1,-1); 
"\f8*"; { ln(-1,-1); "\f8a"; }
ln(1,-1);
.PE
.PS
u = 0.1i; c = u;
h = 3*u;
v = 3*u;

define pearl %
	{ arc cw to Here + 0,-v;}
	arc to Here + 0,-v;
	"\(bu";
%
define b1 %
	{ line down v left  h-$1*c; "\(bu"; }
	{ line down v right h-$2*c; "\(bu"; }
%
define b2 %
	{ line down v left  h; "\(bu"; b1($1,1); }
	{ line down v right h; "\(bu"; b1(1,$2); }
%
define b3 %
	{ line down v left  2*h; "\(bu"; b2($1,1); }
	{ line down v right 2*h; "\(bu"; b2(1,$2); }
%

"\(bu";
pearl();
move down v;
"\(bu";
pearl(); pearl();
move down v;
"\(bu";
pearl(); pearl(); pearl();
move right h up 1.5*v;
"$=>$";
move up 3.5*v;
"$=>$";
move up 2.5*v;
"$=>$";
move up v/2;

move right 5*h;
"\(bu";
b1(0,0);
move down 2*v;
"\(bu";
b2(0,0);
move down 3*v;
"\(bu";
b3(0,0);
.PE
.PS
u = 0.1i;
h = 2*u; hs = h+2*u;
v = 2*u; vs = v+2*u;

define ln %
	{line $3 from Here to Here + $1*hs,$2*vs chop u*1.4;}
	move to Here + $1*hs,$2*vs
%
define lf %
	line $3 to Here + $1*hs,$2*vs
%
define spmm %
	{spline $3 from Here + -u,-u to Here + -hs,-vs to Here + hs*$1,vs*$2+u;}
	move to Here + $1*hs,$2*vs
%
define sppm %
	{spline $3 from Here + u,-u to Here + hs,-vs to Here + hs*$1,vs*$2+u;}
	move to Here + $1*hs,$2*vs
%
"$->^:^1$"
{	ln(-1,-1); "$times^:^2$";
	{	ln(-1,-1); "$->^:^3$";
		{	ln(-1,-1); "$alpha sub 1^:^4$";
		}{	ln(2,-1); "$alpha sub 2^:^4$";
		}
	}{	ln(1,-1); "$list^:^6$"; ln(3,-1);
	}
}{	ln(1.5,-1.5); "$list^:^7$"; ln(-1.5,-1.5);
}
move right 6*hs;
"$->^:^1$"
{	ln(-1,-1); "$times^:^2$";
	{	ln(-1,-1); "$->^:^3$";
		{	ln(-1,-1); "$beta^:^4$";
		}{	ln(1,-1); "$gamma^:^4$";
		}
	}{	ln(1,-1); "$list^:^6$"; ln(-1,-1);
	}
}{	ln(1,-1); "$delta^:^7$";
}
.PE
pt.sally        705721326   9     1     100644  1669      `
.PS 5.5i
circlerad = 0.05i
define pin | "\(bu" at end of last line |
define node |circle|
define chip |
[  	N1: node
	N2: node at N1 + (-.15i,-.2i);  line from N1.c to last circle chop
	N3: node at N1 + (.15i,-.2i);  line from N1.c to last circle chop
	N4: node at N2.c + (-.075i,-.2i);  line from N2.c to last circle chop
	N5: node at N2.c + (.075i,-.2i);  line from N2.c to last circle chop
	N6: node at N3 + (-.075i,-.2i);  line from N3.c to last circle chop
	N7: node at N3 + (.075i,-.2i);  line from N3.c to last circle chop
	N0: node at N1 + (.4i,0)
	Bll: (N4.w,N4.s) - (.1i,.1i)
	Bul: (Bll, N1.n) + (0,.1i)
	Bur: (N0.e,Bul) + (.1i,0)
	Blr: (Bur, Bll)	
	line from Bll to Bul to Bur to Blr to Bll
	line from N1.n up .1i;  SP: pin
	line from N0.n up .1i; P: pin
	line from N0.sw to N0.s - (.1i,0); line up .2i; L: pin
	line from N0.se to N0.s + (.1i,0); line up .2i; R: pin
] |

define twochips |
[	A: chip
	BLL: A.Bll - (.1i,.1i)
	BUL: BLL + (0,1i)
	B: chip with .w at A.e + (.15i,0)
	BLR: B.Blr + (.1i,-.1i); 
	BUR: (BLR,BUL);
	arc cw from A.SP to A.L
	arc from B.SP to A.R
 	line dashed from BLL to BUL to BUR to BLR to BLL
	line from A.P to (A.P,BUL); SP: pin
	line from B.L to (B.L,BUL); L: pin
	line from B.R to (B.R,BUL); R: pin
	line from B.P to (B.P,BUL); P: pin
] |

C: twochips
OBLL: C.BLL - (.1i,.1i)
OBUL: OBLL + (0,1.5i)
D: twochips with .w at C.e + (.25i,0)
OBLR: D.BLR + (.1i,-.1i)
OBUR: (OBLR, OBUL)
arc cw from C.SP to C.L
arc from D.SP to C.R
line dotted from OBLL to OBUL to OBUR to OBLR to OBLL
line from C.P to (C.P,OBUL); SP: pin
line from D.L to (D.L,OBUL); L: pin
line from D.R to (D.R,OBUL); R: pin
line from D.P to (D.P,OBUL); P: pin
.PE

pt.spline       705721326   9     1     100644  223       `
.nf
.PS
box "thing 1"
spline -> right 1.5 down .2 then left 1 down .2 then down .2 right 1.5 
box "thing 2"
.PE
.PS 4i
box "thing 1"
spline -> right 1.5 down .2 then left 1 down .2 then down .2 right 1.5 
box "thing 2"
.PE

pt.statediag    705721326   9     1     100644  275       `
.po .3i
.fp 8 US
.ft US
.ps 20
.PS
circlerad = .8i
circle
arrow right 3i
circle
arc -> from top of last circle to top of last circle + -1.5i,1.5i rad 3i
left
circle
arc -> to top of 1st circle rad 3i
.ps 60
"d" at 1st circle.c
"D" at 2nd circle.c
"v" at 3rd circle.c
.ps
.PE

pt.stereo       705721326   9     1     100644  1282      `
.sp 1i
.po .3i
.ps 12
.vs 14p
.PS 7
lpicx=2
rpicx=0
gs=3.8
planez=-.5
eyey=.5
eyez=-1
leyex=.44
reyex=1-leyex

define bullet X "\s-4\(bu\s+4" X
define circle X "\s-4\(de\s+4" X

define p X
  tx=$1; ty=$2; tz=$3
  sf=gs*(planez-eyez)/(tz-eyez)
  bullet at (lpicx,0) + (sf*(tx-leyex),sf*(ty-eyey))
  bullet at (rpicx,0) + (sf*(tx-reyex),sf*(ty-eyey))
X

define l X
  ax=$1; ay=$2; az=$3; bx=$4; bby=$5; bz=$6
  sfa=gs*(planez-eyez)/(az-eyez)
  sfb=gs*(planez-eyez)/(bz-eyez)
  line $7 from (lpicx,0)+(sfa*(ax-leyex),sfa*(ay-eyey))\
	  to   (lpicx,0)+(sfb*(bx-leyex),sfb*(bby-eyey))
  line $7 from (rpicx,0)+(sfa*(ax-reyex),sfa*(ay-eyey))\
	  to   (rpicx,0)+(sfb*(bx-reyex),sfb*(bby-eyey))
X

define frame Y
  l(0,0,0, 0,1,0)
  l(0,1,0, 1,1,0)
  l(1,1,0, 1,0,0)
  l(1,0,0, 0,0,0)

  l(0,0,1, 0,1,1, dashed)
  l(0,1,1, 1,1,1, dashed)
  l(1,1,1, 1,0,1, dashed)
  l(1,0,1, 0,0,1, dashed)

  l(0,0,0, 0,0,1, dashed)
  l(0,1,0, 0,1,1, dashed)
  l(1,0,0, 1,0,1, dashed)
  l(1,1,0, 1,1,1, dashed)
Y
frame

tp=2*3.1415926535
dx=.05
ub=3
if 1 then Y
  for x=0 to ub by dx do X
    p(.5+.5*cos(tp*x),x/ub,.5+.5*sin(tp*x))
  X
Y
if 1 then Y
  for x=0 to ub-dx by dx do X
    l(.5+.5*cos(tp*x),     x/ub,     .5+.5*sin(tp*x), \
      .5+.5*cos(tp*(x+dx)),(x+dx)/ub,.5+.5*sin(tp*(x+dx)))
  X
Y
.PE
pt.tbl          705721326   9     1     100644  185       `
.EQ
delim $$
.EN
xxxx
.TS
center, expand, doublebox;
c c c.
box	circle	ellipse
T{
.PS
box "$b sub 1$"
.PE
T}	T{
.PS
circle "$c sub 1$"
.PE
T}	T{
.PS
ellipse "$e sub 1$"
.PE
T}
.TE
yyyy

pt.tree         705721326   9     1     100644  849       `
.EQ
delim $$
.EN
.PS
circlerad = .15i
d = .5i
s = .3i
define tree X
{ R: $1; move to R
	{ line from R to R - $4,d chop; line from R to R + $4,-d chop }
	{ move left $4 down d - circlerad; $2; }
	{ move right $4 down d - circlerad; $3; }
}
X
.PE
This is a simple tree:
.PS
tree(circle "root", circle "left", circle "right", .3i)
.PE
This one is harder.
.PS
tree(circle "+", circle "$op sub 1$", tree(circle "*", circle "$op sub 2$", circle "$op sub 3$", .3i) , .3i)
.PE
This one is even worse:
.PS
tree(circle "+", tree(circle "*", circle "$op sub 1$", circle "$op sub 2$",.3i), tree(circle "+", circle "$op sub 3$", circle "$op sub 4$",.3i),.6i)
.PE
.PS
tree(circle invis "+", tree(circle invis "*", circle invis "$op sub 1$", circle invis "$op sub 2$",.3i), tree(circle invis "+", circle invis "$op sub 3$", circle invis "$op sub 4$",.3i),.6i)
.PE

pt.usa          705721326   9     1     100644  20229     `
From sid!rab Wed Jul  8 18:06 EDT 1987
.PS
move to 4.280, 3.592
line to 4.287, 3.611
line to 4.310, 3.616
line to 4.313, 3.637
line to 4.320, 3.656
line to 4.344, 3.665
line to 4.360, 3.679
line to 4.368, 3.703
line to 4.371, 3.723
line to 4.369, 3.744
line to 4.372, 3.764
line to 4.384, 3.786
line to 4.397, 3.813
line to 4.391, 3.835
line to 4.379, 3.853
line to 4.391, 3.871
line to 4.403, 3.853
line to 4.414, 3.835
line to 4.431, 3.817
line to 4.451, 3.826
line to 4.457, 3.804
line to 4.480, 3.801
line to 4.504, 3.801
line to 4.493, 3.820
line to 4.516, 3.820
line to 4.515, 3.845
line to 4.499, 3.860
line to 4.487, 3.878
line to 4.465, 3.893
line to 4.448, 3.908
line to 4.442, 3.929
line to 4.414, 3.933
line to 4.385, 3.937
line to 4.363, 3.949
line to 4.339, 3.952
line to 4.315, 3.951
line to 4.292, 3.958
line to 4.268, 3.957
line to 4.240, 3.960
line to 4.217, 3.963
line to 4.189, 3.970
line to 4.176, 3.988
line to 4.153, 3.986
line to 4.150, 4.007
move to 4.150, 4.007
line to 4.142, 4.028
line to 4.119, 4.030
line to 4.125, 4.050
line to 4.127, 4.070
line to 4.109, 4.084
line to 4.107, 4.108
line to 4.094, 4.125
line to 4.069, 4.116
line to 4.041, 4.122
line to 4.023, 4.136
line to 4.015, 4.157
line to 4.002, 4.182
line to 3.989, 4.199
line to 3.965, 4.201
line to 3.936, 4.204
line to 3.912, 4.205
line to 3.888, 4.215
line to 3.864, 4.221
line to 3.863, 4.201
line to 3.857, 4.181
line to 3.833, 4.171
line to 3.849, 4.198
line to 3.828, 4.179
line to 3.813, 4.160
line to 3.814, 4.184
line to 3.794, 4.173
line to 3.779, 4.150
line to 3.763, 4.135
line to 3.744, 4.121
line to 3.719, 4.110
line to 3.690, 4.099
line to 3.671, 4.088
line to 3.647, 4.078
line to 3.632, 4.062
line to 3.617, 4.047
line to 3.588, 4.024
line to 3.569, 4.009
line to 3.593, 4.004
line to 3.621, 4.011
line to 3.663, 4.021
line to 3.658, 4.001
line to 3.686, 3.991
line to 3.709, 3.994
move to 3.709, 3.994
line to 3.729, 4.005
line to 3.757, 4.016
line to 3.781, 4.022
line to 3.801, 4.033
line to 3.821, 4.048
line to 3.841, 4.066
line to 3.860, 4.077
line to 3.884, 4.079
line to 3.869, 4.060
line to 3.854, 4.045
line to 3.843, 4.026
line to 3.867, 4.028
line to 3.890, 4.019
line to 3.913, 4.009
line to 3.926, 3.992
line to 3.949, 3.986
line to 3.977, 3.979
line to 3.996, 3.990
line to 4.016, 4.000
line to 4.040, 3.998
line to 4.063, 3.999
line to 4.083, 4.009
line to 4.107, 4.011
line to 4.105, 3.991
line to 4.128, 3.981
line to 4.152, 3.978
line to 4.169, 3.964
line to 4.182, 3.946
line to 4.166, 3.932
line to 4.142, 3.935
line to 4.127, 3.920
line to 4.109, 3.934
line to 4.087, 3.945
line to 4.063, 3.943
line to 4.043, 3.933
line to 4.020, 3.931
line to 4.000, 3.917
line to 3.980, 3.902
line to 3.991, 3.921
line to 3.966, 3.907
line to 3.958, 3.928
line to 3.947, 3.905
line to 3.931, 3.878
move to 3.931, 3.878
line to 3.916, 3.863
line to 3.910, 3.844
line to 3.895, 3.829
line to 3.880, 3.810
line to 3.903, 3.816
line to 3.923, 3.830
line to 3.935, 3.809
line to 3.919, 3.782
line to 3.918, 3.762
line to 3.907, 3.739
line to 3.910, 3.714
line to 3.898, 3.687
line to 3.892, 3.667
line to 3.899, 3.642
line to 3.902, 3.622
line to 3.905, 3.597
line to 3.899, 3.577
line to 3.915, 3.555
line to 3.922, 3.534
line to 3.939, 3.521
line to 3.966, 3.526
line to 3.990, 3.544
line to 4.006, 3.567
line to 4.017, 3.594
line to 4.023, 3.614
line to 4.026, 3.638
line to 4.019, 3.659
line to 4.007, 3.681
line to 4.000, 3.702
line to 4.002, 3.726
line to 3.999, 3.747
line to 4.010, 3.770
line to 4.017, 3.798
line to 4.024, 3.817
line to 4.040, 3.840
line to 4.060, 3.854
line to 4.062, 3.834
line to 4.085, 3.823
line to 4.082, 3.844
line to 4.084, 3.864
line to 4.104, 3.878
line to 4.101, 3.899
line to 4.108, 3.918
move to 4.108, 3.918
line to 4.135, 3.911
line to 4.163, 3.904
line to 4.180, 3.890
line to 4.203, 3.883
line to 4.226, 3.876
line to 4.238, 3.859
line to 4.231, 3.839
line to 4.243, 3.817
line to 4.245, 3.797
line to 4.238, 3.777
line to 4.226, 3.754
line to 4.206, 3.745
line to 4.199, 3.721
line to 4.216, 3.707
line to 4.236, 3.720
line to 4.238, 3.741
line to 4.263, 3.754
line to 4.285, 3.747
line to 4.297, 3.729
line to 4.303, 3.703
line to 4.309, 3.674
line to 4.320, 3.656
move to 4.287, 3.611
line to 4.321, 3.594
line to 4.302, 3.585
line to 4.280, 3.592
line to 4.264, 3.578
line to 4.279, 3.555
line to 4.311, 3.555
line to 4.332, 3.572
line to 4.352, 3.586
line to 4.387, 3.609
line to 4.407, 3.619
line to 4.452, 3.612
line to 4.479, 3.608
line to 4.497, 3.634
line to 4.522, 3.642
line to 4.545, 3.642
line to 4.568, 3.638
line to 4.584, 3.648
line to 4.578, 3.616
line to 4.557, 3.599
line to 4.531, 3.583
line to 4.511, 3.573
line to 4.495, 3.560
line to 4.466, 3.552
line to 4.438, 3.544
line to 4.418, 3.535
line to 4.394, 3.526
line to 4.373, 3.509
line to 4.345, 3.504
line to 4.321, 3.496
line to 4.295, 3.503
line to 4.274, 3.510
line to 4.253, 3.522
line to 4.241, 3.540
line to 4.257, 3.558
line to 4.264, 3.578
move to 4.584, 3.648
line to 4.574, 3.675
line to 4.532, 3.677
line to 4.532, 3.706
line to 4.552, 3.715
line to 4.569, 3.729
line to 4.589, 3.738
line to 4.613, 3.742
line to 4.638, 3.746
line to 4.662, 3.746
line to 4.682, 3.755
line to 4.704, 3.743
line to 4.732, 3.738
line to 4.726, 3.760
line to 4.702, 3.760
line to 4.732, 3.767
line to 4.762, 3.774
line to 4.786, 3.773
line to 4.807, 3.782
line to 4.824, 3.795
line to 4.847, 3.816
line to 4.865, 3.829
line to 4.887, 3.845
line to 4.912, 3.848
line to 4.891, 3.840
line to 4.869, 3.828
line to 4.851, 3.811
line to 4.834, 3.797
line to 4.816, 3.780
line to 4.799, 3.767
line to 4.775, 3.767
line to 4.805, 3.745
line to 4.796, 3.726
line to 4.773, 3.701
line to 4.755, 3.684
line to 4.734, 3.675
line to 4.697, 3.678
line to 4.674, 3.682
line to 4.628, 3.690
line to 4.599, 3.683
line to 4.574, 3.675
line to 4.575, 3.679
move to 4.912, 3.848
line to 4.952, 3.849
line to 4.996, 3.848
line to 5.025, 3.846
line to 5.065, 3.846
line to 5.090, 3.849
line to 5.125, 3.849
line to 5.160, 3.850
line to 5.170, 3.869
line to 5.196, 3.875
line to 5.214, 3.888
line to 5.224, 3.907
line to 5.242, 3.920
line to 5.252, 3.938
line to 5.248, 3.965
line to 5.262, 3.982
line to 5.268, 4.006
line to 5.278, 4.029
line to 5.295, 4.055
line to 5.317, 4.083
line to 5.339, 4.065
line to 5.370, 4.066
line to 5.399, 4.076
line to 5.421, 4.063
line to 5.441, 4.037
line to 5.442, 4.003
line to 5.450, 3.971
line to 5.453, 3.945
line to 5.453, 3.924
line to 5.475, 3.909
line to 5.489, 3.885
line to 5.510, 3.866
line to 5.520, 3.847
line to 5.518, 3.821
line to 5.496, 3.814
line to 5.471, 3.800
line to 5.445, 3.798
line to 5.419, 3.796
line to 5.415, 3.818
line to 5.405, 3.800
line to 5.404, 3.778
line to 5.381, 3.784
line to 5.362, 3.772
line to 5.356, 3.748
move to 5.356, 3.748
line to 5.329, 3.742
line to 5.308, 3.735
line to 5.282, 3.732
line to 5.282, 3.711
line to 5.261, 3.687
line to 5.246, 3.669
line to 5.237, 3.650
line to 5.236, 3.629
line to 5.258, 3.615
line to 5.230, 3.605
line to 5.226, 3.584
line to 5.248, 3.575
line to 5.262, 3.554
line to 5.272, 3.534
line to 5.299, 3.527
line to 5.304, 3.547
line to 5.320, 3.530
line to 5.297, 3.519
line to 5.276, 3.512
line to 5.255, 3.526
line to 5.237, 3.513
line to 5.219, 3.501
line to 5.210, 3.520
line to 5.195, 3.502
line to 5.178, 3.490
line to 5.153, 3.487
line to 5.128, 3.485
line to 5.104, 3.482
line to 5.079, 3.479
line to 5.057, 3.468
line to 5.037, 3.460
line to 5.016, 3.452
line to 5.002, 3.434
line to 4.985, 3.421
line to 4.968, 3.408
line to 4.990, 3.399
line to 4.994, 3.376
line to 4.994, 3.355
line to 4.980, 3.337
line to 4.980, 3.316
line to 4.967, 3.297
line to 4.947, 3.289
line to 4.942, 3.269
move to 4.942, 3.269
line to 4.929, 3.251
line to 4.924, 3.273
line to 4.903, 3.278
line to 4.888, 3.294
line to 4.874, 3.315
line to 4.881, 3.351
line to 4.865, 3.317
line to 4.878, 3.292
line to 4.886, 3.265
line to 4.900, 3.245
line to 4.909, 3.226
line to 4.919, 3.206
line to 4.906, 3.188
line to 4.900, 3.164
line to 4.909, 3.183
line to 4.892, 3.170
line to 4.883, 3.147
line to 4.869, 3.124
line to 4.856, 3.106
line to 4.847, 3.086
line to 4.843, 3.109
line to 4.852, 3.128
line to 4.860, 3.148
line to 4.856, 3.170
line to 4.847, 3.189
line to 4.824, 3.190
line to 4.809, 3.206
line to 4.818, 3.225
line to 4.813, 3.247
line to 4.822, 3.267
line to 4.812, 3.286
line to 4.829, 3.299
line to 4.833, 3.319
line to 4.820, 3.301
line to 4.799, 3.289
line to 4.795, 3.268
line to 4.791, 3.248
line to 4.791, 3.227
line to 4.804, 3.203
line to 4.809, 3.181
line to 4.787, 3.185
line to 4.758, 3.196
line to 4.737, 3.205
move to 4.737, 3.205
line to 4.745, 3.224
line to 4.728, 3.202
line to 4.750, 3.202
line to 4.760, 3.183
line to 4.780, 3.174
line to 4.801, 3.165
line to 4.821, 3.152
line to 4.812, 3.133
line to 4.821, 3.110
line to 4.803, 3.088
line to 4.817, 3.072
line to 4.795, 3.073
line to 4.775, 3.086
line to 4.790, 3.070
line to 4.798, 3.046
line to 4.819, 3.059
line to 4.840, 3.054
line to 4.849, 3.035
line to 4.852, 3.008
line to 4.861, 2.989
line to 4.868, 2.961
line to 4.877, 2.942
line to 4.886, 2.922
line to 4.886, 2.901
line to 4.873, 2.883
line to 4.877, 2.903
line to 4.882, 2.923
line to 4.874, 2.947
line to 4.858, 2.973
line to 4.851, 3.000
line to 4.846, 3.018
line to 4.845, 2.997
line to 4.826, 2.989
line to 4.809, 2.971
line to 4.783, 2.973
line to 4.807, 2.963
line to 4.829, 2.962
line to 4.837, 2.939
line to 4.854, 2.956
line to 4.858, 2.934
line to 4.840, 2.912
line to 4.807, 2.903
line to 4.794, 2.923
move to 4.794, 2.923
line to 4.774, 2.911
line to 4.798, 2.901
line to 4.788, 2.877
line to 4.761, 2.871
line to 4.800, 2.870
line to 4.814, 2.854
line to 4.797, 2.837
line to 4.813, 2.850
line to 4.836, 2.874
line to 4.823, 2.856
line to 4.797, 2.837
line to 4.773, 2.847
line to 4.754, 2.838
line to 4.724, 2.820
line to 4.699, 2.804
line to 4.691, 2.784
line to 4.678, 2.762
line to 4.653, 2.763
line to 4.634, 2.754
line to 4.611, 2.747
line to 4.594, 2.725
line to 4.586, 2.701
line to 4.574, 2.682
line to 4.555, 2.673
line to 4.540, 2.660
line to 4.525, 2.646
line to 4.507, 2.637
line to 4.492, 2.623
line to 4.473, 2.610
line to 4.454, 2.596
line to 4.443, 2.577
line to 4.427, 2.559
line to 4.420, 2.540
line to 4.408, 2.516
line to 4.404, 2.496
line to 4.397, 2.476
line to 4.397, 2.454
line to 4.397, 2.433
line to 4.405, 2.410
line to 4.409, 2.388
line to 4.411, 2.357
line to 4.419, 2.334
line to 4.430, 2.310
move to 4.430, 2.310
line to 4.441, 2.286
line to 4.449, 2.263
line to 4.461, 2.247
line to 4.453, 2.223
line to 4.449, 2.245
line to 4.441, 2.264
line to 4.445, 2.242
line to 4.447, 2.215
line to 4.455, 2.196
line to 4.456, 2.218
line to 4.463, 2.198
line to 4.471, 2.179
line to 4.479, 2.160
line to 4.482, 2.133
line to 4.489, 2.114
line to 4.497, 2.095
line to 4.500, 2.072
line to 4.496, 2.051
line to 4.495, 2.029
line to 4.487, 2.010
line to 4.486, 1.984
line to 4.478, 1.964
line to 4.466, 1.945
line to 4.462, 1.924
line to 4.458, 1.903
line to 4.436, 1.887
line to 4.419, 1.878
line to 4.403, 1.869
line to 4.381, 1.870
line to 4.361, 1.866
line to 4.342, 1.861
line to 4.361, 1.866
line to 4.381, 1.870
line to 4.399, 1.870
line to 4.416, 1.879
line to 4.432, 1.888
line to 4.449, 1.896
line to 4.460, 1.916
line to 4.441, 1.912
line to 4.419, 1.913
line to 4.403, 1.926
line to 4.403, 1.947
line to 4.396, 1.966
move to 4.396, 1.966
line to 4.385, 1.987
line to 4.365, 2.000
line to 4.357, 2.019
line to 4.354, 2.042
line to 4.336, 2.046
line to 4.339, 2.066
line to 4.339, 2.088
line to 4.321, 2.088
line to 4.308, 2.103
line to 4.305, 2.126
line to 4.296, 2.145
line to 4.304, 2.165
line to 4.318, 2.183
line to 4.302, 2.199
line to 4.299, 2.179
line to 4.286, 2.194
line to 4.286, 2.220
line to 4.297, 2.239
line to 4.297, 2.261
line to 4.297, 2.282
line to 4.287, 2.314
line to 4.268, 2.318
line to 4.256, 2.341
line to 4.244, 2.361
line to 4.226, 2.372
line to 4.217, 2.391
line to 4.196, 2.407
line to 4.173, 2.403
line to 4.159, 2.388
line to 4.138, 2.379
line to 4.117, 2.366
line to 4.094, 2.365
line to 4.089, 2.387
line to 4.072, 2.402
line to 4.067, 2.424
line to 4.048, 2.423
line to 4.029, 2.430
line to 4.020, 2.448
line to 3.996, 2.443
line to 3.969, 2.438
line to 3.949, 2.432
line to 3.965, 2.443
line to 3.946, 2.437
move to 3.946, 2.437
line to 3.926, 2.435
line to 3.906, 2.425
line to 3.883, 2.424
line to 3.903, 2.430
line to 3.893, 2.448
line to 3.888, 2.469
line to 3.878, 2.449
line to 3.862, 2.439
line to 3.843, 2.441
line to 3.824, 2.439
line to 3.801, 2.437
line to 3.781, 2.430
line to 3.762, 2.424
line to 3.743, 2.430
line to 3.722, 2.444
line to 3.709, 2.429
line to 3.719, 2.407
line to 3.738, 2.410
line to 3.761, 2.420
line to 3.745, 2.405
line to 3.759, 2.391
line to 3.772, 2.406
line to 3.789, 2.392
line to 3.777, 2.377
line to 3.757, 2.370
line to 3.767, 2.352
line to 3.785, 2.338
line to 3.806, 2.328
line to 3.797, 2.308
line to 3.774, 2.302
line to 3.787, 2.317
line to 3.769, 2.331
line to 3.747, 2.338
line to 3.737, 2.355
line to 3.719, 2.361
line to 3.733, 2.347
line to 3.731, 2.327
line to 3.716, 2.315
line to 3.706, 2.337
line to 3.687, 2.330
line to 3.675, 2.315
line to 3.654, 2.329
line to 3.632, 2.335
move to 3.632, 2.335
line to 3.637, 2.355
line to 3.615, 2.361
line to 3.612, 2.382
line to 3.594, 2.379
line to 3.571, 2.380
line to 3.585, 2.367
line to 3.604, 2.362
line to 3.585, 2.359
line to 3.563, 2.364
line to 3.545, 2.365
line to 3.526, 2.370
line to 3.504, 2.380
line to 3.486, 2.389
line to 3.467, 2.386
line to 3.445, 2.382
line to 3.419, 2.375
line to 3.393, 2.359
line to 3.370, 2.351
line to 3.385, 2.363
line to 3.367, 2.364
line to 3.378, 2.384
line to 3.360, 2.376
line to 3.356, 2.356
line to 3.352, 2.335
line to 3.366, 2.347
line to 3.355, 2.331
line to 3.340, 2.314
line to 3.318, 2.298
line to 3.296, 2.286
line to 3.278, 2.277
line to 3.259, 2.273
line to 3.241, 2.273
line to 3.234, 2.253
line to 3.216, 2.256
line to 3.209, 2.236
line to 3.187, 2.235
line to 3.191, 2.215
line to 3.173, 2.206
line to 3.180, 2.185
line to 3.166, 2.156
line to 3.148, 2.151
line to 3.163, 2.135
line to 3.159, 2.114
move to 3.159, 2.114
line to 3.163, 2.089
line to 3.163, 2.068
line to 3.174, 2.048
line to 3.177, 2.069
line to 3.170, 2.094
line to 3.166, 2.123
line to 3.170, 2.152
line to 3.177, 2.177
line to 3.191, 2.198
line to 3.198, 2.219
line to 3.216, 2.232
line to 3.230, 2.244
line to 3.245, 2.257
line to 3.220, 2.232
line to 3.205, 2.219
line to 3.194, 2.202
line to 3.184, 2.181
line to 3.173, 2.152
line to 3.166, 2.127
line to 3.170, 2.098
line to 3.181, 2.077
line to 3.185, 2.052
line to 3.181, 2.031
line to 3.185, 2.010
line to 3.167, 2.010
line to 3.150, 2.022
line to 3.132, 2.026
line to 3.115, 2.025
line to 3.097, 2.033
line to 3.073, 2.045
line to 3.048, 2.060
line to 3.033, 2.072
line to 3.029, 2.097
line to 3.018, 2.113
line to 3.013, 2.138
line to 3.009, 2.167
line to 2.990, 2.187
line to 2.979, 2.207
line to 2.967, 2.223
line to 2.956, 2.243
line to 2.944, 2.259
line to 2.932, 2.279
line to 2.924, 2.299
move to 2.924, 2.299
line to 2.915, 2.319
line to 2.907, 2.340
line to 2.888, 2.355
line to 2.876, 2.371
line to 2.860, 2.386
line to 2.841, 2.389
line to 2.823, 2.387
line to 2.800, 2.389
line to 2.778, 2.387
line to 2.765, 2.369
line to 2.759, 2.348
line to 2.746, 2.326
line to 2.732, 2.307
line to 2.713, 2.314
line to 2.698, 2.324
line to 2.678, 2.335
line to 2.658, 2.349
line to 2.643, 2.360
line to 2.627, 2.371
line to 2.617, 2.394
line to 2.615, 2.415
line to 2.605, 2.435
line to 2.596, 2.455
line to 2.579, 2.469
line to 2.563, 2.480
line to 2.550, 2.495
line to 2.528, 2.517
line to 2.511, 2.531
line to 2.494, 2.546
line to 2.480, 2.560
line to 2.467, 2.575
line to 2.343, 2.568
line to 2.342, 2.522
line to 2.279, 2.523
line to 2.118, 2.522
line to 1.824, 2.625
line to 1.832, 2.645
line to 1.640, 2.629
line to 1.630, 2.652
line to 1.629, 2.674
line to 1.614, 2.700
line to 1.598, 2.713
line to 1.576, 2.733
move to 1.576, 2.733
line to 1.563, 2.752
line to 1.544, 2.742
line to 1.531, 2.760
line to 1.510, 2.772
line to 1.483, 2.777
line to 1.467, 2.790
line to 1.450, 2.803
line to 1.422, 2.808
line to 1.391, 2.811
line to 1.368, 2.813
line to 1.356, 2.841
line to 1.353, 2.866
line to 1.339, 2.884
line to 1.331, 2.913
line to 1.314, 2.925
line to 1.296, 2.942
line to 1.281, 2.964
line to 1.267, 2.981
line to 1.252, 2.999
line to 1.244, 3.028
line to 1.260, 3.050
line to 1.243, 3.063
line to 1.221, 3.074
line to 1.214, 3.098
line to 1.208, 3.118
line to 1.206, 3.140
line to 1.224, 3.128
line to 1.242, 3.115
line to 1.231, 3.134
line to 1.226, 3.154
line to 1.218, 3.179
line to 1.207, 3.153
line to 1.186, 3.160
line to 1.169, 3.173
line to 1.152, 3.212
line to 1.130, 3.240
line to 1.111, 3.257
line to 1.106, 3.286
line to 1.108, 3.313
line to 1.106, 3.334
line to 1.097, 3.363
line to 1.071, 3.385
line to 1.067, 3.415
move to 1.067, 3.415
line to 1.079, 3.440
line to 1.088, 3.474
line to 1.091, 3.496
line to 1.089, 3.518
line to 1.087, 3.556
line to 1.072, 3.574
line to 1.071, 3.595
line to 1.074, 3.618
line to 1.063, 3.637
line to 1.071, 3.661
line to 1.079, 3.684
line to 1.088, 3.704
line to 1.097, 3.724
line to 1.111, 3.745
line to 1.109, 3.766
line to 1.113, 3.789
line to 1.115, 3.815
line to 1.118, 3.841
line to 1.127, 3.861
line to 1.131, 3.883
line to 1.129, 3.904
line to 1.133, 3.927
line to 1.137, 3.949
line to 1.140, 3.975
line to 1.162, 3.968
line to 1.188, 3.966
line to 1.168, 3.982
line to 1.143, 3.980
line to 1.136, 4.004
line to 1.151, 4.025
line to 1.132, 4.037
line to 1.124, 4.065
line to 1.118, 4.085
line to 1.118, 4.106
line to 1.105, 4.133
line to 1.094, 4.151
line to 1.098, 4.173
line to 1.130, 4.173
line to 1.153, 4.165
line to 1.179, 4.163
line to 1.202, 4.156
line to 1.227, 4.157
line to 1.255, 4.151
move to 1.255, 4.151
line to 1.255, 4.130
line to 1.266, 4.107
line to 1.267, 4.086
line to 1.244, 4.077
line to 1.269, 4.078
line to 1.273, 4.100
line to 1.275, 4.130
line to 1.261, 4.148
line to 1.250, 4.167
line to 1.269, 4.154
line to 1.288, 4.142
line to 1.283, 4.161
line to 1.268, 4.179
line to 1.267, 4.200
line to 1.262, 4.220
line to 1.252, 4.239
line to 1.293, 4.239
line to 1.355, 4.240
line to 1.417, 4.236
line to 1.474, 4.235
line to 1.535, 4.235
line to 1.596, 4.234
line to 1.657, 4.233
line to 1.693, 4.231
line to 1.744, 4.228
line to 1.778, 4.230
line to 1.844, 4.228
line to 1.898, 4.229
line to 1.923, 4.228
line to 1.953, 4.229
line to 2.018, 4.226
line to 2.072, 4.225
line to 2.126, 4.224
line to 2.185, 4.228
line to 2.229, 4.225
line to 2.303, 4.225
line to 2.361, 4.224
line to 2.419, 4.225
line to 2.483, 4.223
line to 2.541, 4.224
line to 2.599, 4.221
line to 2.657, 4.221
line to 2.715, 4.221
move to 2.715, 4.221
line to 2.773, 4.220
line to 2.830, 4.224
line to 2.879, 4.222
line to 2.941, 4.220
line to 2.999, 4.222
line to 3.052, 4.220
line to 3.114, 4.221
line to 3.171, 4.222
line to 3.224, 4.218
line to 3.282, 4.222
line to 3.335, 4.218
line to 3.334, 4.238
line to 3.358, 4.246
line to 3.368, 4.225
line to 3.373, 4.202
line to 3.397, 4.185
line to 3.421, 4.181
line to 3.449, 4.172
line to 3.483, 4.179
line to 3.511, 4.175
line to 3.535, 4.162
line to 3.559, 4.157
line to 3.587, 4.148
line to 3.606, 4.135
line to 3.635, 4.134
line to 3.663, 4.145
line to 3.687, 4.136
line to 3.711, 4.134
line to 3.739, 4.129
line to 3.753, 4.128
move to 2.021, 3.431
line to 2.013, 3.451
line to 1.993, 3.460
line to 1.990, 3.480
line to 1.970, 3.489
line to 1.970, 3.510
line to 1.986, 3.525
line to 1.998, 3.507
line to 2.015, 3.489
line to 2.035, 3.480
line to 2.056, 3.458
line to 2.041, 3.443
line to 2.026, 3.428
line to 2.021, 3.431
move to 5.008, 3.437
line to 4.991, 3.424
line to 5.012, 3.415
line to 5.036, 3.417
line to 5.061, 3.420
line to 5.087, 3.431
line to 5.066, 3.423
line to 5.036, 3.417
line to 5.012, 3.415
line to 5.033, 3.422
line to 5.062, 3.424
line to 5.082, 3.432
line to 5.107, 3.435
line to 5.129, 3.446
line to 5.150, 3.454
line to 5.126, 3.455
line to 5.105, 3.448
line to 5.119, 3.466
line to 5.102, 3.453
line to 5.077, 3.450
line to 5.053, 3.448
line to 5.028, 3.445
line to 5.008, 3.437
.PE


pt.vap          705721327   9     1     100644  4573      `
From research!hounx!vap Wed Feb 25 17:49 EST 1987
Message-Version: 2
>To: /addr=research!bwk/pn=brian.w.kernighan
Date: Wed, 25 Feb 1987 17:49 EST
Message-Service: Mail
Message-Protocol: EMail
From: hounx!vap
End-Of-Header:
Email-Version: 2
X-Postmark: valerie.a.partridge attbl ho3c506a 59533 2019491448 hounx!vap
To: research!bwk
Subject: Curiosity
UA-Message-ID: <post.vap.Wed, 25 Feb 1987 17:39 EST>
End-Of-Protocol:

Brian,
  This is not a problem (the figure comes out the way I want it to),
just a curiosity:  on the lower figure, the 1st-3rd dashed-line pairs
have 5 dashes and the 4th & 5th sets have 4, more widely-spaced dashes.
The dashes in the legend and in the upper figure seem to be more like the
widely-spaced than the narrowly-spaced dashed lines.  Any ideas?
Valerie

.EQ
delim ##
.EN
.PH ""
.BS
.ce 2
\f3AT&T BELL LABORATORIES - PROPRIETARY\f1
Use pursuant to G.E.I. 2.2
.BE
.po -0.25i
.ce
\f3Figure 5a:\f1  Basic Operation of SPA*
.FS *
Figures adapted from [15].
.FE
.SP 2
.PS
.ps 10
define SL | circle radius 0.05i with .c at 1st line.w + ($1i,$2i) |
define ML | box invis wid 0.1i ht 0.1i with .c at 1st line.w + ($1i,$2i)
	line from last box.n to last box.se to last box.sw to last box.n |

line right 5.75i
line up 2.5i from 1st line.w "load       "
line invis right 5.75i from last line.n \
"smoothed load = forecasted load #cdot (1- alpha sub n )# + measured load #cdot ( alpha sub n )#" \
"smoothed increment = forecasted increment #cdot (1- beta sub n )# + measured increment #cdot ( beta sub n )#"
line up 0.1i from 1st line.w + (0.75i,0)
box invis "previous" "year" with .n at last line.s
SL(0.75,0.75)
line dashed right 1.45i from last circle.e
arrow from last circle.e to 1st line.w + (2.25i,1.05i)
line from last line.e to last line.e + (0.05i,0.05i) to last arrow.e \
     + (0.05i,-0.05i) to last arrow.e
line right 0.1i from last line.c + (0.05i,0)
box invis "forecasted" "increment" with .w at last line.e
line up 0.1i from 1st line.w + (2.25i,0)
box invis "base" "year" with .n at last line.s
SL(2.25,1.5)
ML(2.25,1.8)
line dashed right 1.45i from last circle.e
arrow from last circle.e to 1st line.w + (3.75i,1.8i)
line from last line.e to last line.e + (0.05i,0.05i) to last arrow.e \
     + (0.05i,-0.05i) to last arrow.e
line right 0.1i from last line.c + (0.05i,0)
box invis "smoothed" "increment" with .w at last line.e
line from 7th last line.e - (0.05i,0) to 7th last line.e + (-0.15i,0.1i) \
to 2nd last box.w - (0.1i,0.1i) to 2nd last box.w
line left 0.1i from last line.c - (0.1i,0)
box invis "measured" "increment" with .e at last line.w
arrow from last arrow.e to 1st line.w + (5.25i,2.1i)
line up 0.1i from 1st line.w + (3.75i,0)
box invis "future" "year 1" with .n at last line.s
line up 0.1i from 1st line.w + (5.25i,0)
box invis "future" "year 2" with .n at last line.s
SL(4.0,0.3)
ML(4.0,0.6)
box invis ht 0.5i wid 1.25i "measured load " "forecasted load" \
     "smoothed load " with .w at 1st line.w + (4.05i,0.45i)
line <- left 0.25i from last box.w
.PE
.ps
.SP 2
.ce
\f3Figure 5b:\f1  SPA Response to Outliers (Sign Repeated)*
.SP
.PS
.ps 10
define ML | box invis wid 0.1i ht 0.1i with .c at 1st line.w + ($1i,$2i)
	line from last box.n to last box.se to last box.sw to last box.n |
define FL | line -> right 0.95i up 0.2i from 1st line.w + ($1i,$2i) |
define OT | line dashed from last line.e - (0.2i,0.3i) to last line.e + (0.2i,-0.3i)
line dashed from 2nd last line.e + (-0.2i,0.3i) to 2nd last line.e + (0.2i,0.3i) |
define OL | box wid 0.1i ht 0.1i with .c at 1st line.w + ($1i,$2i) |
define SL | circle radius 0.05i with .c at 1st line.w + ($1i,$2i) |
define num | line up 0.1i from 1st line.w + ($1i,0)
	box invis ht 0.2i wid 0.1i "$2" with .n at last line.s |

line right 6.5i
line up 3.0i from 1st line.w "load        "
num(0.25,1)
num(1.25,2)
num(2.25,3)
num(3.25,4)
box invis ht 0.3i "year of operation" with .n at last box.s
num(4.25,5)
num(5.25,6)
num(6.25,7)
ML(0.25,0.75)
FL(0.3,0.75)
OT()
ML(1.25,1.2)
SL(1.25,1.05)
FL(1.3,1.05)
OT()
OL(2.25,2.0)
arrow from last box.s to last line.c
SL(2.25,1.4)
FL(2.3,1.4)
OT()
OL(3.25,2.2)
arrow from last line.c to last box.s
FL(3.3,2.2)
OT()
ML(4.25,2.25)
SL(4.25,2.35)
FL(4.3,2.35)
OT()
ML(5.25,2.75)
SL(5.25,2.65)
FL(5.3,2.65)

SL(4.5,0.3)
ML(4.5,0.9)
OL(4.5,0.45)
box invis ht 0.75i wid 1.4i "measured load     " "forecasted load    " \
     "outlier threshold  " "outlier                " \
     "smoothed load     " with .w at 1st line.w + (4.55i,0.6i)
line dashed left 0.25i from last box.w
line <- left 0.25i from last box.w + (0,0.15i)
.PE
.SP 2


pt.with         705721327   9     1     100644  243       `
.PS
ellipse
ellipse with .ne at last ellipse.sw
.PE
.PS
box with .sw at 0,0
box with .ne at last box.sw
.PE
.PS
box
box ht .25i width .25i with .sw at last box.se
box ht .15i width .5 with .sw at last box.se
circle with .sw at last box.ne
.PE

pt.woodall      705721327   9     1     100644  3291      `
From research!csnet!ucl-cs.arpa!drw%maths.nottingham.ac.uk ov 85 19:31:34 UT (Fri)
.\"pic
.\"roff
.\"
.ds 1 \fI\s12
.ds 2 \fR\s-3\v'3p'
.ds 3 \s+3\v'-3p'
.sp 1.25i
.PS
scale=1.05
a = 0.25
c = 0.05
d = 1/32
h = 2.25

define Ds '(-d*dy/dist , d*dx/dist )'		# vectors
define Dh '( c*dx/dist , c*dy/dist )'
define Dsh '(-h*d*dy/dist , h*d*dx/dist )'	# should be able to say h*Ds
define Dhh '( h*c*dx/dist , h*c*dy/dist )'

define implies "
dx = $2.x - $1.x			# pity: prevents args of form (a,b)
dy = $2.y - $1.y
dist = sqrt( dx * dx + dy * dy )
P1: (0.25/dist) < $1 , $2 >
P2: (0.25/dist) < $2 , $1 >
line from P1+Ds to P2+Ds-Dh
line from P1-Ds to P2-Ds-Dh
line from P2+Dsh-Dhh to P2
line from P2-Dsh-Dhh to P2
"

A:	"\*1A\*2\*3" at 0,0
BS:	"\*1B\*2S\*3" at 1,0.5
BW:	"\*1B\*2W\*3" at 1,-0.5
implies(A,BS)
implies(BS,BW)
CS:	"\*1C\*2S\*3" at 2,0.5
CW:	"\*1C\*2W\*3" at 2,-0.5
implies(BS,CS)
implies(BW,CW)
implies(CS,CW)
DS:	"\*1D\*2S\*3" at 3,0.5
DW:	"\*1D\*2W\*3" at 3,-0.5
implies(CS,DS)
implies(CW,DW)
implies(DS,DW)
ES:	"\*1E\*2S\*3" at 4,0.5
EW:	"\*1E\*2W\*3" at 4,-0.5
implies(DS,ES)
implies(DW,EW)
implies(ES,EW)
FS:	"\*1F\*2S\*3" at 5,1.375
FW:	"\*1F\*2W\*3" at 5,0.375
implies(ES,FS)
implies(EW,FW)
implies(FS,FW)
GS:	"\*1G\*2S\*3" at 5,-0.375
GW:	"\*1G\*2W\*3" at 5,-1.375
implies(ES,GS)
implies(EW,GW)
implies(GS,GW)
H:	"\*1H\*2\*3" at 6,0
implies(FW,H)
implies(GW,H)
.PE
.br
.sp 1i
.ps 10
.ce
Figure 1.
.ds 1 \fI\s12
.ds 2 \fR\z\(fm\s-3\v'3p'
.ds 3 \s+3\v'-3p'
.ds 4 \fR\(fm
.sp 1.25i
.PS
scale=1.05
a = 0.25
c = 0.05
d = 1/32
h = 2.25

define Ds '(-d*dy/dist , d*dx/dist )'
define Dh '( c*dx/dist , c*dy/dist )'
define Dsh '(-h*d*dy/dist , h*d*dx/dist )'
define Dhh '( h*c*dx/dist , h*c*dy/dist )'

define equiv "
dx = $2.x - $1.x
dy = $2.y - $1.y
dist = sqrt( dx * dx + dy * dy )
P1: (0.25/dist) < $1 , $2 >
P2: (0.25/dist) < $2 , $1 >
line from P1+Ds+Dh to P2+Ds-Dh
line from P1-Ds+Dh to P2-Ds-Dh
line from P2+Dsh-Dhh to P2
line from P2-Dsh-Dhh to P2
line from P1 to P1+Dsh+Dhh
line from P1 to P1-Dsh+Dhh
"

b=0.35
r=0.8
s=1.025
pi=3.1415926535
c1=cos(pi/5)
s1=sin(pi/5)
c2=cos(2*pi/5)
s2=sin(2*pi/5)


A:	"\*1A\*4" at 0,0
BS:	"\*1B\*2S\*3" at 1,0.5
BW:	"\*1B\*2W\*3" at 1,-0.5
Y:	BS - (0.05,0)
implies(A,Y)
CS:	"\*1C\*2S\*3" at 2,0.5
CW:	"\*1C\*2W\*3" at 2,-0.5
equiv(BS,CS)
equiv(BW,CW)
X:	(1.5,0.5)
Y:	(1.5,-0.5)
implies(X,Y)

DS:	"\*1D\*2S\*3" at 3,0.5
DW:	"\*1D\*2W\*3" at 3,-0.5
implies(CS,DS)
implies(CW,DW)
ES:	"\*1E\*2S\*3" at 4,0.5
EW:	"\*1E\*2W\*3" at 4,-0.5
equiv(DS,ES)
equiv(DW,EW)
X:	(3.5,0.5)
Y:	(3.5,-0.5)
implies(X,Y)

Pent: 5+r*c1,0
FS:	"\*1F\*2S\*3" at Pent+(-r*c1,r*s1)
FW:	"\*1F\*2W\*3" at Pent+(r*c2,r*s2)
GS:	"\*1G\*2S\*3" at Pent+(-r*c1,-r*s1)
GW:	"\*1G\*2W\*3" at Pent+(r*c2,-r*s2)
H:	"\*1H\*4" at Pent+(r,0)
X:	EW + (0.05,0)
Y:	(4.95,0)
implies(X,Y)
equiv(FS,FW)
equiv(GS,GW)
equiv(FW,H)
equiv(GW,H)
.ps 10
box ht b wid 1+b with .sw at BS.c-(b/2,b/2)
box ht b wid 1+b with .sw at BW.c-(b/2,b/2)
box ht b wid 1+b with .sw at DS.c-(b/2,b/2)
box ht b wid 1+b with .sw at DW.c-(b/2,b/2)
line from Pent+(-s*c1,s*s1) to Pent+(-s*c1,-s*s1)
line from Pent+(-s*c1,s*s1) to Pent+(s*c2,s*s2)
line from Pent+(s,0) to Pent+(s*c2,s*s2)
line from Pent+(-s*c1,-s*s1) to Pent+(s*c2,-s*s2)
line from Pent+(s,0) to Pent+(s*c2,-s*s2)
.PE
.br
.sp 1i
.ps 10
.ce
Figure 2.



pt.fill         705721327   9     1     100666  2582      `

.PS
fillval = .7
box
"Above is an unfilled, visible box" below at last box.s
move down
box fill
"Above is a filled, visible box" below at last box.s
move down
box fill invis
"Above is a filled, invisible box" below at last box.s
move down
box invis fill
"Above is an invisible, filled box" below at last box.s
move down
box invis
"Above is an invisible box" below at last box.s
move down
box invis fill "invis,fill"
"Above is an invisible, filled box with text" below at last box.s
.PE

.PS
fillval = .7
circle
"Above is an unfilled, visible circle" below at last circle.s
move down
circle fill
"Above is a filled, visible circle" below at last circle.s
move down
circle fill invis
"Above is a filled, invisible circle" below at last circle.s
move down
circle invis fill
"Above is an invisible, filled circle" below at last circle.s
move down
circle invis
"Above is an invisible circle" below at last circle.s
move down
circle invis fill "invis,fill"
"Above is an invisible, filled circle with text" below at last circle.s
.PE

.PS
fillval = .7
ellipse
"Above is an unfilled, visible ellipse" below at last ellipse.s
move down
ellipse fill
"Above is a filled, visible ellipse" below at last ellipse.s
move down
ellipse fill invis
"Above is a filled, invisible ellipse" below at last ellipse.s
move down
ellipse invis fill
"Above is an invisible, filled ellipse" below at last ellipse.s
move down
ellipse invis
"Above is an invisible ellipse" below at last ellipse.s
move down
ellipse invis fill "invis,fill"
"Above is an invisible, filled ellipse with text" below at last ellipse.s
.PE


.PS
spline from 0,0 to 1,0 to 1,1 to 0,1 to 0,0 fill "text" "here"
.PE

.PS
spline from 0,0 to 1,0 to 1,1 to 0,1 to 0,0 \
       to 0,-1 to -1,-1 to -1,0 to 0,0 fill "text" "here"
.PE

.PS
line from 0,0 to 1,0 to 1,1 to 0,1 to 0,0 fill "text" "here"
.PE

.PS
line from 0,0 to 1,0 to 1,1 to 0,1 to 0,0 \
       to 0,-1 to -1,-1 to -1,0 to 0,0 fill "text" "here"
.PE

.PS
spline invis from 0,0 to 1,0 to 1,1 to 0,1 to 0,0 fill "text" "here"
.PE

.PS
spline invis from 0,0 to 1,0 to 1,1 to 0,1 to 0,0 \
       to 0,-1 to -1,-1 to -1,0 to 0,0 fill "text" "here"
.PE

.PS
line invis from 0,0 to 1,0 to 1,1 to 0,1 to 0,0 fill "text" "here"
.PE

.PS
line invis from 0,0 to 1,0 to 1,1 to 0,1 to 0,0 \
       to 0,-1 to -1,-1 to -1,0 to 0,0 fill "text" "here"
.PE

.PS
arc at 0,0 from 1,0 to 0,1 fill "text" "here"
.PE

.PS
arc invis at 0,0 from 1,0 to 0,1 fill "text" "here"
.PE

.PS
arc cw at 0,0 from 1,0 to 0,1 fill "text" "here"
.PE

.PS
arc cw invis at 0,0 from 1,0 to 0,1 fill "text" "here"
.PE
pt.edge         708205107   9     1     100666  409       `
.sp 1i
.PS
box fill .7 noedge
box fill .3
.PE
.PS
circle fill .7 noedge
circle fill .3
.PE
.PS
line up right then up left then down left then down right fill .7 noedge
move right .5
line up right then up left then down left then down right fill .7
.PE

.PS
box ht 1 wid 1 fill .3
box ht .5 wid .5 at last box fill .7 noedge
.PE

.PS
box ht 1 wid 1 fill .7
box ht .5 wid .5 at last box fill 1 noedge "foo"
.PE

pt.ravi.fill    708211781   9     1     100666  1288      `
.sp 1i
.PS
	define Big %
		em = 12/72; vs = 15/72
.Big
	%
	define Normal %
		em = 10/72; vs = 12/72
.Normal
	%
	define Small %
		em = 9/72; vs = 11/72
.Small
	%

	Normal()
	arrowht = .08; arrowwid = .04; pagewid = 3
.PE
.PS
[
	define border % box ht $1.ht wid $1.wid at $1 %
	Small()
	u = .45*em
	boxht = 3*u; boxwid = 40*u
	dark = .7; medium = .9; light = .96; white = 1

Floor:	[
		box ht 60*u wid 60*u fill dark invis
	]
	[
		down
	Out:	box "output shift register" fill white invis
	Spare:	box "spare output shift register" fill white invis
	Column:	box ht 5*u fill medium invis
	SRAM:	box "SRAM" "cell array" ht 20*u fill light invis
		box "wide data transfer path" fill medium invis
	In01:	box "input shift register \01" fill white invis
	In02:	box "input shift register \02" fill white
		box "..." ht 2*boxht fill white invis
	In14:	box "input shift register 14" fill white invis

		box ht 10*u wid 9*u "queue" "manager"\
			with .e at .5<Out.nw,Column.sw> + -u,0 fill medium invis

		box ht SRAM.ht wid 5*u with .e at SRAM.w fill medium invis

		box ht (In01.n.y-In14.s.y) wid 4*u\
			with .e at .5<In01.nw,In14.sw> fill medium invis

		border(Out)
		border(Spare)
		border(In01)
		border(In02)
		border(In14)
	] at Floor

	"144-pin PGA package" rjust at Floor.se + -em,vs/2
]
.PE