v04i075: xpic -- pic previewer for X11, Part10/15

Dan Heller argv at island.uu.net
Sat Jul 22 17:41:19 AEST 1989


Submitted-by: Mark Moraes <moraes at ai.toronto.edu>
Posting-number: Volume 4, Issue 75
Archive-name: xpic/part10



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 10 (of 15)."
# Contents:  xpic/doc/marcel.ps xpic/obj_spline.c xpic/test/marcel.x
# Wrapped by moraes at neat.ai on Thu Jul 13 22:36:10 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'xpic/doc/marcel.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xpic/doc/marcel.ps'\"
else
echo shar: Extracting \"'xpic/doc/marcel.ps'\" \(15723 characters\)
sed "s/^X//" >'xpic/doc/marcel.ps' <<'END_OF_FILE'
X%!
X%%Creator: root at church.csri (Operator)
X%%Title: marcel.x (xpic)
X%%CreationDate: Tue Oct  4 04:23:42 1988
X%%Pages: 1
X%%BoundingBox: 0 0 504 319.05
X%	(in inches) at 0 0, width 7, height 4.43125
X%%EndComments
X% Prolog for xpic to PostScript converter
X% Author: Mark Moraes
X% $Header: x2ps.pro,v 1.2 88/03/19 16:50:09 moraes Exp 
X%	%d D - change style SOLID, DOTTED, SHORT-DASH, LONG-DASH, DOT-DASH
X%	%s F - change font to fontname
X%	%d S - change size (font size in points)
X%	(%s) rj %d t - text right just. (%d is TOPLINE, MIDLINE, BOTLINE)
X%	(%s) lj %d t - text left just. (%d is TOPLINE, MIDLINE, BOTLINE)
X%	(%s) ce %d t - text centered (%d is TOPLINE, MIDLINE, BOTLINE)
X%	%d %d l - lineto
X%	%d %d m - moveto
X%	%d %d s - spline segment
X%	x - flush line, spline
X%	<wid> <ht> <x> <y> b - box
X%	<wid> <ht> <x> <y> e - ellipse
X%	%d ss - setscale
X%	%d W - change linewidth
Xsave 50 dict begin /xpic exch def
X/StartXpic {newpath 0 0 moveto [] 0 setdash 0 setgray 1 setlinecap} def
X% Set defaults
X/fontname /Times-Roman def
X/ptsize 12 def
X% halign has the values for MIDLINE, TOPLINE, BOTLINE
X/halign 3 array def
X/s {rcurveto} def
X/x {stroke} def
X/l {lineto} def
X/m {moveto} def
X/b {
X	/ury exch def /urx exch def /lly exch def /llx exch def 
X	llx lly moveto urx lly lineto urx ury lineto 
X	llx ury lineto llx lly lineto stroke
X} def
X/mtrx matrix def
X/e {
X	/yc exch def /xc exch def /yrad exch def /xrad exch def
X	xc xrad add yc moveto
X	/savematrix mtrx currentmatrix def
X	xc yc translate
X	xrad yrad scale
X	0 0 1 0 360 arc
X	savematrix setmatrix stroke
X} def
X% The next three take the text string, and moveto the right horiz. position
X% leaving the string on the stack.
X/lj {} def
X/rj {dup stringwidth pop neg 0 rmoveto} def
X/ce {dup stringwidth pop 2 div neg 0 rmoveto} def
X% And this is invoked after one of the three above, and 
X% computes the vert. pos, and then displays the string.
X/t {halign exch get 0 exch rmoveto show newpath} def
X% Store an array of patterns in /styles - a pattern is an array consisting 
X% of an array and an offset. Corresp to xpic patterns
X% solid, dotted, short-dashed, long-dashed, dot-dashed
X/styles [ [] 0 ] [ [1 3] 0 ] [ [4 4] 0 ] [ [8 4] 0 ] [ [1 4 4 4] 0 ]
X	5 array astore def
X% change style to arg.
X/D {stroke styles exch get aload pop setdash newpath} def
X/W {stroke 0.5 mul setlinewidth newpath} def
X% fontbox takes a fontname off the stack, and returns an array
X% containing the values of the bottom line of the bounding box, the
X% mid line of the bounding box, and the top line of the bounding box
X% of that font, taken from the baseline, scaled to a font of size 1
X/fontbox {
X	findfont dup /FontMatrix get /fm exch def /FontBBox get aload pop
X	/ytop exch def pop /ybot exch def pop
X	/ymid ytop ybot sub 2 div def
X	0 ybot fm dtransform exch pop % botline
X	dup neg exch % midline - this works better than (ytop-ybot)/2!
X	0 ytop fm dtransform exch pop exch %topline
X	% now in the order midline, topline, botline.
X	3 array astore
X} def
X% select font
X/F {
X	dup /fontname exch def fontbox
X	/thisfontbox exch def SF 
X} def
X% set point size
X/S {/ptsize exch def SF} def
X% actually set font
X/SF {
X	fontname findfont ptsize curscale div scalefont setfont
X	thisfontbox aload pop
X	1 1 3 {
X		pop ptsize mul curscale div neg 3 1 roll
X	} for
X	halign astore pop
X} def
X% sets the scale to 72 / n, where n is on the stack, and stores the value
X% in curscale for font scaling
X/curscale 1 def
X/ss {/curscale exch 72 exch div dup dup scale def} def
X/land {90 rotate} def
XStartXpic
X%%EndProlog
X0.5 0.5 scale
X80 ss
X1 W
X0 D
X488 104 m
X440 104 l
X0 D
X449 101 m
X440 104 l
X449 108 l
X0 D
X440 104 m
Xx
X456 304 m
X456 128 l
X440 128 l
X0 D
X449 125 m
X440 128 l
X449 132 l
X0 D
X440 128 m
Xx
X316 368 m
X316 384 l
X0 D
X313 376 m
X316 384 l
X320 376 l
X0 D
X316 384 m
Xx
X0.5 W
X/Times-Roman F
X10 S
X408 336 m
X(dPC \(h\)) ce 0 t
X1 W
X488 456 m
X472 456 l
X0 D
X481 453 m
X472 456 l
X481 460 l
X0 D
X472 456 m
Xx
X0.5 W
X8 S
X396 392 m
X(Drtx) rj 0 t
X464 456 m
X(PC\(h\)in) rj 0 t
X464 392 m
X(HW_gen) rj 0 t
X316 360 m
X(\(from EU\)) ce 0 t
X304 392 m
X(IBASE) lj 0 t
X640 604 m
X(PC_sel) lj 0 t
X608 580 m
X(\(from EU\) PC\(h\)in) rj 0 t
X604 596 m
X(\(from IFU\) PCout) rj 0 t
X10 S
X816 472 m
X(+) ce 0 t
X1 W
X472 528 m
X504 528 l
X0 D
X496 532 m
X504 528 l
X496 525 l
X0 D
X504 528 m
Xx
X808 488 824 456 b
X632 576 m
X784 576 l
X784 544 l
X0 D
X788 553 m
X784 544 l
X781 553 l
X0 D
X784 544 m
Xx
X352 504 m
X352 632 l
X1096 632 l
X0 D
X1088 636 m
X1096 632 l
X1088 629 l
X0 D
X1096 632 m
Xx
X0.5 W
X436 528 m
X(PC Stack ptr) ce 0 t
X788 512 m
X(PC \(h\)) ce 0 t
X912 464 m
X(Control) ce 0 t
X912 480 m
X(Queue Shift) ce 0 t
X996 416 m
X(QL) ce 0 t
X996 432 m
X(QH) ce 0 t
X1 W
X984 424 m
X1008 424 l
Xx
X1048 0 m
X1048 424 l
X0 D
X1045 416 m
X1048 424 l
X1052 416 l
X0 D
X1048 424 m
Xx
X1048 424 m
X1008 424 l
X0 D
X1017 421 m
X1008 424 l
X1017 428 l
X0 D
X1008 424 m
Xx
X1080 400 m
X960 400 l
X0 D
X969 397 m
X960 400 l
X969 404 l
X0 D
X960 400 m
Xx
X1064 496 m
X1064 0 l
X0 D
X1068 9 m
X1064 0 l
X1061 9 l
X0 D
X1064 0 m
Xx
X792 496 m
X1064 496 l
X0 D
X1056 500 m
X1064 496 l
X1056 493 l
X0 D
X1064 496 m
Xx
X984 424 m
X960 424 l
X0 D
X969 421 m
X960 424 l
X969 428 l
X0 D
X960 424 m
Xx
X984 432 m
X960 432 l
X0 D
X969 429 m
X960 432 l
X969 436 l
X0 D
X960 432 m
Xx
X984 440 1008 408 b
X0.5 W
X16 S
X360 408 m
X(Controller) ce 0 t
X360 432 m
X(IFU) ce 0 t
X12 S
X72 472 m
X(IRQ) rj 0 t
X72 448 m
X(IRQ_addr) rj 0 t
X10 S
X192 424 m
X(TAG Mismatch) rj 0 t
X192 408 m
X(Read Exception) rj 0 t
X192 392 m
X(Write Exception) rj 0 t
X1 W
X256 472 m
X0 D
X248 476 m
X256 472 l
X248 469 l
X0 D
X256 472 m
X80 472 l
Xx
X256 448 m
X0 D
X248 452 m
X256 448 l
X248 445 l
X0 D
X256 448 m
X80 448 l
Xx
X256 392 m
X0 D
X248 396 m
X256 392 l
X248 389 l
X0 D
X256 392 m
X200 392 l
Xx
X256 408 m
X0 D
X248 412 m
X256 408 l
X248 405 l
X0 D
X256 408 m
X200 408 l
Xx
X256 424 m
X0 D
X248 428 m
X256 424 l
X248 421 l
X0 D
X256 424 m
X200 424 l
Xx
X0.5 W
X8 S
X800 540 m
X(F) rj 0 t
X788 540 m
X(T) rj 0 t
X532 364 m
X(T) rj 0 t
X544 364 m
X(F) rj 0 t
X552 384 m
X(18) lj 0 t
X1 W
X540 380 m
X548 388 l
Xx
X544 392 m
X544 368 l
X0 D
X548 377 m
X544 368 l
X541 377 l
X0 D
X544 368 m
Xx
X536 360 m
X536 344 l
X0 D
X540 353 m
X536 344 l
X533 353 l
X0 D
X536 344 m
Xx
X528 360 m
X544 360 l
X552 368 l
X520 368 l
X528 360 l
Xx
X504 400 m
X496 400 l
X0 D
X505 397 m
X496 400 l
X505 404 l
X0 D
X496 400 m
Xx
X0.5 W
X10 S
X536 336 m
X(QA data) ce 0 t
X1 W
X488 336 m
X488 576 l
X624 576 l
X0 D
X616 580 m
X624 576 l
X616 573 l
X0 D
X624 576 m
Xx
X0.5 W
X8 S
X464 440 m
X(length) rj 0 t
X1 W
X320 472 m
X320 464 l
X312 456 l
X312 480 l
X320 472 l
Xx
X300 464 m
X312 464 l
X0 D
X304 468 m
X312 464 l
X304 461 l
X0 D
X312 464 m
Xx
X300 472 m
X312 472 l
X0 D
X304 476 m
X312 472 l
X304 469 l
X0 D
X312 472 m
Xx
X384 468 m
X400 468 l
X0 D
X392 472 m
X400 468 l
X392 465 l
X0 D
X400 468 m
Xx
X320 468 m
X336 468 l
X0 D
X328 472 m
X336 468 l
X328 465 l
X0 D
X336 468 m
Xx
X296 504 m
X296 608 l
X628 608 l
X628 596 l
X0 D
X632 605 m
X628 596 l
X625 605 l
X0 D
X628 596 m
Xx
X328 504 m
X328 592 l
X624 592 l
X0 D
X616 596 m
X624 592 l
X616 589 l
X0 D
X624 592 m
Xx
X368 504 m
X368 544 l
X752 544 l
X756 540 l
X780 540 l
X0 D
X772 544 m
X780 540 l
X772 537 l
X0 D
X780 540 m
Xx
X0.5 W
X264 424 m
X(TAG) lj 0 t
X264 408 m
X(reade) lj 0 t
X264 392 m
X(writee) lj 0 t
X296 496 m
X(PC_sel) ce 0 t
X328 496 m
X(PCout) ce 0 t
X352 496 m
X(RD) ce 0 t
X368 496 m
X(abs) ce 0 t
X360 464 m
X(pre-decode) ce 0 t
X360 472 m
X(uPLA) ce 0 t
X392 496 m
X(fetch) ce 0 t
X424 496 m
X(inc) ce 0 t
X456 496 m
X(dec) ce 0 t
X464 480 m
X(h0_ovr) rj 0 t
X464 472 m
X(offset) rj 0 t
X1 W
X472 440 m
X848 440 l
X848 464 l
X864 464 l
X0 D
X856 468 m
X864 464 l
X856 461 l
X0 D
X864 464 m
Xx
X392 504 m
X392 616 l
X1080 616 l
X0 D
X1072 620 m
X1080 616 l
X1072 613 l
X0 D
X1080 616 m
Xx
X456 504 m
X456 520 l
X0 D
X453 512 m
X456 520 l
X460 512 l
X0 D
X456 520 m
Xx
X424 504 m
X424 520 l
X0 D
X421 512 m
X424 520 l
X428 512 l
X0 D
X424 520 m
Xx
X472 472 m
X776 472 l
X0 D
X768 476 m
X776 472 l
X768 469 l
X0 D
X776 472 m
Xx
X472 480 m
X736 480 l
X736 528 l
X820 528 l
X820 520 l
X0 D
X824 529 m
X820 520 l
X817 529 l
X0 D
X820 520 m
Xx
X408 536 472 520 b
X256 504 472 384 b
X336 480 384 456 b
X960 428 m
X504 428 l
Xx
X888 424 m
X888 392 l
Xx
X504 424 m
X960 424 l
Xx
X504 432 960 392 b
X1 D
X504 408 m
X960 408 l
Xx
X0 D
X944 424 m
X944 392 l
Xx
X624 552 m
X632 560 l
X632 592 l
X624 600 l
X624 552 l
Xx
X632 424 m
X632 392 l
Xx
X504 536 680 496 b
X816 520 m
X816 504 l
Xx
X824 472 m
X832 472 l
X832 576 l
X800 576 l
X800 544 l
X0 D
X804 553 m
X800 544 l
X797 553 l
X0 D
X800 544 m
Xx
X760 520 824 504 b
X792 504 m
X792 480 l
X808 480 l
X0 D
X800 484 m
X808 480 l
X800 477 l
X0 D
X808 480 m
Xx
X792 536 m
X792 520 l
X0 D
X796 529 m
X792 520 l
X789 529 l
X0 D
X792 520 m
Xx
X784 536 m
X800 536 l
X808 544 l
X776 544 l
X784 536 l
Xx
X784 464 m
X808 464 l
X0 D
X800 468 m
X808 464 l
X800 461 l
X0 D
X808 464 m
Xx
X776 448 m
X784 456 l
X784 472 l
X776 480 l
X776 448 l
Xx
X768 456 m
X776 456 l
X0 D
X768 460 m
X776 456 l
X768 453 l
X0 D
X776 456 m
Xx
X0.5 W
X12 S
X764 456 m
X('1') rj 0 t
X1 W
X864 488 960 456 b
X824 424 m
X824 392 l
Xx
X760 424 m
X760 392 l
Xx
X696 424 m
X696 392 l
Xx
X0.5 W
X8 S
X820 512 m
X(h) ce 0 t
X1 W
X592 536 m
X592 560 l
X624 560 l
X0 D
X616 564 m
X624 560 l
X616 557 l
X0 D
X624 560 m
Xx
X1080 616 m
X1080 0 l
X0 D
X1084 9 m
X1080 0 l
X1077 9 l
X0 D
X1080 0 m
Xx
X1096 632 m
X1096 0 l
X0 D
X1100 9 m
X1096 0 l
X1093 9 l
X0 D
X1096 0 m
Xx
X672 572 m
X680 580 l
Xx
X596 368 m
X604 376 l
Xx
X0.5 W
X608 372 m
X(18) lj 0 t
X672 588 m
X(31) lj 0 t
X752 552 m
X(abs) rj 0 t
X12 S
X592 520 m
X(PC  pseudo-stack) ce 0 t
X592 504 m
X(\(circular buffer\)) ce 0 t
X916 416 m
X(data) ce 0 t
X916 400 m
X(addr \(h\)) ce 0 t
X600 416 m
X(QB) ce 0 t
X664 416 m
X(QC) ce 0 t
X728 416 m
X(QD) ce 0 t
X792 416 m
X(QE) ce 0 t
X856 416 m
X(QF) ce 0 t
X10 S
X600 336 m
X(QB data) ce 0 t
X1 W
X568 344 m
X568 328 l
Xx
X504 344 632 328 b
X568 424 m
X568 392 l
Xx
X600 392 m
X600 344 l
X0 D
X604 353 m
X600 344 l
X597 353 l
X0 D
X600 344 m
Xx
X0.5 W
X12 S
X536 416 m
X(QA) ce 0 t
X1 W
X496 400 m
X496 360 l
X0 D
X500 369 m
X496 360 l
X493 369 l
X0 D
X496 360 m
Xx
X0.5 W
X8 S
X464 416 m
X(HW_op) rj 0 t
X1 W
X472 416 m
X480 416 l
X480 384 l
X528 384 l
X528 368 l
X0 D
X532 377 m
X528 368 l
X525 377 l
X0 D
X528 368 m
Xx
X496 360 m
X408 360 l
X408 344 l
X0 D
X412 353 m
X408 344 l
X405 353 l
X0 D
X408 344 m
Xx
X376 344 440 328 b
X408 328 m
X408 320 l
X456 320 l
X456 304 l
X0 D
X460 313 m
X456 304 l
X453 313 l
X0 D
X456 304 m
Xx
X416 280 424 240 b
X416 272 m
X0 0 -2 0 -8 0 s
X-5 0 -9 -2 -12 -6 s
X-2 -4 -2 -8 0 -12 s
X2 -4 9 -6 20 -6 s
Xx
X392 224 m
X384 216 l
X384 200 l
X392 192 l
X392 224 l
Xx
X416 248 m
X424 248 l
Xx
X416 256 m
X424 256 l
Xx
X416 264 m
X424 264 l
Xx
X416 272 m
X424 272 l
Xx
X424 240 m
X424 216 l
Xx
X392 260 m
X388 260 l
X388 220 l
X0 D
X392 229 m
X388 220 l
X385 229 l
X0 D
X388 220 m
Xx
X504 216 m
X392 216 l
X0 D
X401 213 m
X392 216 l
X401 220 l
X0 D
X392 216 m
Xx
X504 200 m
X392 200 l
X0 D
X401 197 m
X392 200 l
X401 204 l
X0 D
X392 200 m
Xx
X208 120 m
X240 120 l
X232 112 l
X216 112 l
X208 120 l
Xx
X232 160 m
X232 120 l
X0 D
X236 129 m
X232 120 l
X229 129 l
X0 D
X232 120 m
Xx
X160 136 m
X160 128 l
X216 128 l
X216 120 l
X0 D
X220 129 m
X216 120 l
X213 129 l
X0 D
X216 120 m
Xx
X2 D
X280 160 m
X280 280 l
Xx
X0 D
X112 144 200 136 b
X144 280 328 160 b
X424 116 m
X236 116 l
X0 D
X245 113 m
X236 116 l
X245 120 l
X0 D
X236 116 m
Xx
X352 216 m
X352 184 l
X344 192 l
X344 208 l
X352 216 l
Xx
X384 208 m
X352 208 l
X0 D
X361 205 m
X352 208 l
X361 212 l
X0 D
X352 208 m
Xx
X344 200 m
X328 200 l
X0 D
X337 197 m
X328 200 l
X337 204 l
X0 D
X328 200 m
Xx
X388 260 m
X0 0 -1 0 -4 0 s
X-2 0 -4 -8 -4 -26 s
X0 -17 -2 -26 -8 -26 s
Xx
X224 112 m
X0 0 0 -2 0 -8 s
X0 D
X228 113 m
X224 104 l
X221 113 l
X0 D
X224 104 m
Xx
X264 96 328 80 b
X64 88 240 56 b
X320 96 m
X320 80 l
Xx
X64 72 m
X240 72 l
Xx
X160 72 m
X160 56 l
Xx
X112 72 m
X112 56 l
Xx
X224 104 m
X152 104 l
X152 88 l
X0 D
X156 97 m
X152 88 l
X149 97 l
X0 D
X152 88 m
Xx
X224 104 m
X296 104 l
X296 96 l
X0 D
X300 105 m
X296 96 l
X293 105 l
X0 D
X296 96 m
Xx
X324 80 m
X324 72 l
X348 72 l
X348 188 l
X0 D
X345 180 m
X348 188 l
X352 180 l
X0 D
X348 188 m
Xx
X296 80 m
X296 64 l
X360 64 l
X360 192 l
X352 192 l
X0 D
X361 189 m
X352 192 l
X361 196 l
X0 D
X352 192 m
Xx
X976 112 m
X976 72 l
X0 D
X980 81 m
X976 72 l
X973 81 l
X0 D
X976 72 m
Xx
X920 112 m
X920 72 l
X0 D
X924 81 m
X920 72 l
X917 81 l
X0 D
X920 72 m
Xx
X348 72 m
X432 72 l
X432 96 l
X0 D
X429 88 m
X432 96 l
X436 88 l
X0 D
X432 96 m
Xx
X916 88 m
X924 96 l
Xx
X836 88 m
X844 96 l
Xx
X772 88 m
X780 96 l
Xx
X692 88 m
X700 96 l
Xx
X612 88 m
X620 96 l
Xx
X572 88 m
X580 96 l
Xx
X532 88 m
X540 96 l
Xx
X720 72 m
X720 56 l
Xx
X824 72 m
X824 56 l
Xx
X600 72 m
X600 56 l
Xx
X560 72 m
X560 56 l
Xx
X960 72 992 56 b
X904 72 936 56 b
X680 72 864 56 b
X520 72 640 56 b
X536 112 m
X536 72 l
X0 D
X540 81 m
X536 72 l
X533 81 l
X0 D
X536 72 m
Xx
X576 112 m
X576 72 l
X0 D
X580 81 m
X576 72 l
X573 81 l
X0 D
X576 72 m
Xx
X616 112 m
X616 72 l
X0 D
X620 81 m
X616 72 l
X613 81 l
X0 D
X616 72 m
Xx
X696 112 m
X696 72 l
X0 D
X700 81 m
X696 72 l
X693 81 l
X0 D
X696 72 m
Xx
X776 112 m
X776 72 l
X0 D
X780 81 m
X776 72 l
X773 81 l
X0 D
X776 72 m
Xx
X840 112 m
X840 72 l
X0 D
X844 81 m
X840 72 l
X837 81 l
X0 D
X840 72 m
Xx
X972 88 m
X980 96 l
Xx
X504 280 1000 112 b
X488 40 m
X488 336 l
X0 D
X485 328 m
X488 336 l
X492 328 l
X0 D
X488 336 m
Xx
X0.5 W
X160 140 m
X(NOP, length 0) ce 0 t
X256 120 m
X(stall!) lj 0 t
X10 S
X292 88 m
X(nxt addr) ce 0 t
X152 80 m
X(uWord Control Fields) ce 0 t
X136 64 m
X(stage 2) ce 0 t
X88 64 m
X(stage 3) ce 0 t
X200 64 m
X(stage 1) ce 0 t
X540 64 m
X(Breg1) ce 0 t
X580 64 m
X(offset1) ce 0 t
X620 64 m
X(ctrl1) ce 0 t
X700 64 m
X(Breg2) ce 0 t
X776 64 m
X(offset2) ce 0 t
X844 64 m
X(ctrl2) ce 0 t
X920 64 m
X(sop) ce 0 t
X1 W
X424 136 440 96 b
X0.5 W
X8 S
X976 64 m
X(car/cdr) ce 0 t
X10 S
X432 116 m
X(=) ce 0 t
X12 S
X512 200 m
X(ExtraOp) lj 0 t
X536 216 m
X(OpCode) ce 0 t
X20 S
X760 188 m
X(Operand Decode Logic) ce 0 t
X22 S
X760 228 m
X(ODL) ce 0 t
X10 S
X544 92 m
X(5) lj 0 t
X584 92 m
X(5) lj 0 t
X704 92 m
X(5) lj 0 t
X784 92 m
X(30) lj 0 t
X928 92 m
X(2) lj 0 t
X984 92 m
X(1) lj 0 t
X14 S
X232 252 m
X(uROM) ce 0 t
X12 S
X216 216 m
X(Instruction) ce 0 t
X216 192 m
X(Decode ROM) ce 0 t
X304 216 m
X(ODL) ce 0 t
X304 192 m
X(uCode) ce 0 t
X10 S
X232 164 m
X(data) ce 0 t
X488 28 m
X(next_PC) ce 0 t
X304 168 m
X(rtx) ce 0 t
X8 S
X424 392 m
X(stall!) rj 0 t
X1 W
X304 160 m
X304 152 l
X464 152 l
X464 304 l
X0 D
X461 296 m
X464 304 l
X468 296 l
X0 D
X464 304 m
Xx
X464 304 m
X464 376 l
X384 376 l
X384 384 l
X0 D
X381 376 m
X384 384 l
X388 376 l
X0 D
X384 384 m
Xx
X448 384 m
X448 368 l
X480 368 l
X480 336 l
X0 D
X484 345 m
X480 336 l
X477 345 l
X0 D
X480 336 m
Xx
X416 384 m
X0 D
X413 376 m
X416 384 l
X420 376 l
X0 D
X416 384 m
X416 352 l
X472 352 l
X472 336 l
Xx
X408 116 m
X408 144 l
X472 144 l
X472 336 l
X0 D
X469 328 m
X472 336 l
X476 328 l
X0 D
X472 336 m
Xx
X480 336 m
X480 48 l
X424 48 l
X424 40 l
X0 D
X428 49 m
X424 40 l
X421 49 l
X0 D
X424 40 m
Xx
X0.5 W
X10 S
X424 28 m
X(length0) ce 0 t
X1 W
X976 56 m
X976 40 l
X0 D
X980 49 m
X976 40 l
X973 49 l
X0 D
X976 40 m
Xx
X920 56 m
X920 40 l
X0 D
X924 49 m
X920 40 l
X917 49 l
X0 D
X920 40 m
Xx
X840 56 m
X840 40 l
X0 D
X844 49 m
X840 40 l
X837 49 l
X0 D
X840 40 m
Xx
X776 56 m
X776 40 l
X0 D
X780 49 m
X776 40 l
X773 49 l
X0 D
X776 40 m
Xx
X696 56 m
X696 40 l
X0 D
X700 49 m
X696 40 l
X693 49 l
X0 D
X696 40 m
Xx
X616 56 m
X616 40 l
X0 D
X620 49 m
X616 40 l
X613 49 l
X0 D
X616 40 m
Xx
X576 56 m
X576 40 l
X0 D
X580 49 m
X576 40 l
X573 49 l
X0 D
X576 40 m
Xx
X536 56 m
X536 40 l
X0 D
X540 49 m
X536 40 l
X533 49 l
X0 D
X536 40 m
Xx
X136 56 m
X136 40 l
X0 D
X140 49 m
X136 40 l
X133 49 l
X0 D
X136 40 m
Xx
X88 56 m
X88 40 l
X0 D
X92 49 m
X88 40 l
X85 49 l
X0 D
X88 40 m
Xx
X0.5 W
X200 32 m
X(\(decoded\)) ce 0 t
X1 W
X200 56 m
X200 40 l
X0 D
X204 49 m
X200 40 l
X197 49 l
X0 D
X200 40 m
Xx
X536 328 m
X536 280 l
X0 D
X540 289 m
X536 280 l
X533 289 l
X0 D
X536 280 m
Xx
X600 328 m
X600 280 l
X0 D
X604 289 m
X600 280 l
X597 289 l
X0 D
X600 280 m
Xx
X2 D
X0 336 m
X368 336 l
Xx
X640 336 m
X1120 336 l
Xx
X248 64 m
X288 64 l
Xx
X368 64 m
X472 64 l
Xx
X496 64 m
X512 64 l
Xx
X648 64 m
X672 64 l
Xx
X872 64 m
X896 64 l
Xx
X944 64 m
X952 64 l
Xx
X1000 64 m
X1120 64 l
Xx
X0 D
X808 376 m
X776 376 l
X0 D
X785 373 m
X776 376 l
X785 380 l
X0 D
X776 376 m
Xx
X776 360 m
X808 360 l
X0 D
X800 364 m
X808 360 l
X800 357 l
X0 D
X808 360 m
Xx
X0.5 W
X816 376 m
X(shift) lj 0 t
X768 360 m
X(fill) rj 0 t
X22 S
X40 696 m
X(SLIME PROCESSOR) lj 0 t
X1 W
X40 680 m
X264 680 l
Xx
X0.5 W
X20 S
X40 584 m
X(IFU) ce 0 t
X40 544 m
X(1 stage) ce 0 t
X40 264 m
X(IDU) ce 0 t
X40 224 m
X(1 stage) ce 0 t
X1 W
X8 600 72 568 b
X0.5 W
X600 696 m
X(Stage Interconnect Diagram \(Part 1\)) ce 0 t
X1 W
X2 D
X0 64 m
X56 64 l
Xx
X0 D
X8 280 72 248 b
X%%Trailer
Xshowpage
X% Trailer for xpic to PostScript converter
X% $Header: x2ps.tra,v 1.1 88/08/31 23:48:01 moraes Exp $
Xxpic end restore
END_OF_FILE
if test 15723 -ne `wc -c <'xpic/doc/marcel.ps'`; then
    echo shar: \"'xpic/doc/marcel.ps'\" unpacked with wrong size!
fi
# end of 'xpic/doc/marcel.ps'
fi
if test -f 'xpic/obj_spline.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xpic/obj_spline.c'\"
else
echo shar: Extracting \"'xpic/obj_spline.c'\" \(14826 characters\)
sed "s/^X//" >'xpic/obj_spline.c' <<'END_OF_FILE'
X/* $Header: obj_spline.c,v 1.5 89/04/21 03:31:22 xwindows Exp $ */
X/* This code is UNBELIEVABLY convoluted and UGLY. Works - just barely! */
X/*
X *  The spline routines - These require some really ugly hacks to get
X *  half-decent rubber-banding. And it still leaves some droppings on
X *  the screen. The basic idea is that the segments of the spline are
X *  invariant from midpoint of the defining segment to the midpoint of
X *  the next defining segment. So the non-invariant section is covered
X *  up by the defining segment during rubberbanding. When the spline is
X *  complete, the rubber banded segments are erased and the complete
X *  spline drawn. Yuck! There must be a better way to do this.
X */
X#include <values.h>
X
X#include "xpic.h"
X#include "windows.h"
X#include "spline.h"
X#include "gels.h"
X#include "draw.h"
X#include "assert.h"
X
Xstatic int xmin, xmax, ymin, ymax;	/* Bounding box */
Xstatic XPoint *drawVerts;			/*
X									 *  Points four points behind current
X									 *  point, used by the spline drawing routine
X									 */
Xstatic PointList *ptList;
X
Xspline_event(evtype, mx, my)
X{
X	switch(evtype) {
X	case MOTION | START_MODE:
X	case RIGHT  | START_MODE:
X	case MIDDLE | START_MODE:
X	case REDRAW | START_MODE:
X		break;
X	case MOTION | END_MODE:
X		if (((line_arrow & ST_ARROW) != 0) && (nVerts == 2))
X			Arrow(picDpy, picWin, verts[2].x, verts[2].y, 
X			 verts[1].x, verts[1].y, gcInvert);
X		if ((line_arrow & EN_ARROW) != 0)
X			Arrow(picDpy, picWin, verts[nVerts - 1].x, verts[nVerts - 1].y, 
X			 verts[nVerts].x, verts[nVerts].y, gcInvert);
X		drawlines(picDpy, picWin, gcInvert, drawVerts, 3, CoordModeOrigin);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat, 
X		 CoordModePrevious);
X		verts[nVerts].x = verts[nVerts+1].x = mx;
X		verts[nVerts].y = verts[nVerts+1].y = my;
X		CopyAndFlatten(drawVerts, 3, &flatVerts, &nFlat, &flatSize);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat, 
X		 CoordModePrevious);
X		drawlines(picDpy, picWin, gcInvert, drawVerts, 3, CoordModeOrigin);
X		if (((line_arrow & ST_ARROW) != 0) && (nVerts == 2))
X			Arrow(picDpy, picWin, verts[2].x, verts[2].y, 
X			 verts[1].x, verts[1].y, gcInvert);
X		if ((line_arrow & EN_ARROW) != 0)
X			Arrow(picDpy, picWin, verts[nVerts - 1].x, verts[nVerts - 1].y, 
X			 verts[nVerts].x, verts[nVerts].y, gcInvert);
X		break;
X	case LEFT | START_MODE:
X		drawingMode = END_MODE;
X		xmin = xmax = verts[0].x = verts[1].x = verts[2].x = 
X		 verts[3].x = mx;
X		ymin = ymax = verts[0].y = verts[1].y = verts[2].y = 
X		 verts[3].y = my;
X		drawVerts = verts;
X		nVerts = 2;
X		CopyAndFlatten(drawVerts, 3, &flatVerts, &nFlat, &flatSize);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat, 
X		 CoordModePrevious);
X		drawlines(picDpy, picWin, gcInvert, drawVerts, 3, CoordModeOrigin);
X		break;
X	case LEFT | END_MODE:
X		/*
X		 *  must always have at least two extra vertices in the
X		 *  verts array for the current mouse coordinates
X		 */
X		if (nVerts + 3 >= maxVerts) {
X			maxVerts += INC_VERTS;
X#ifdef DEBUG
X			(void) fprintf(stderr, "Reallocing verts to %d\n", maxVerts);
X#endif
X			if ((verts = (XPoint *) realloc((char *) verts,
X			 (unsigned) (maxVerts * sizeof(XPoint)))) == NULL) {
X				message("No more memory for vertices");
X				break;
X			}
X			drawVerts = &verts[nVerts - 2];
X		}
X		if (((line_arrow & ST_ARROW) != 0) && (nVerts == 2))
X			Arrow(picDpy, picWin, verts[2].x, verts[2].y, 
X			 verts[1].x, verts[1].y, gcInvert);
X		if ((line_arrow & EN_ARROW) != 0)
X			Arrow(picDpy, picWin, verts[nVerts - 1].x, verts[nVerts - 1].y, 
X			 verts[nVerts].x, verts[nVerts].y, gcInvert);
X		drawlines(picDpy, picWin, gcInvert, drawVerts, 3, CoordModeOrigin);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat, 
X		 CoordModePrevious);
X		verts[nVerts].x = verts[nVerts+1].x = verts[nVerts+2].x = mx;
X		verts[nVerts].y = verts[nVerts+1].y = verts[nVerts+2].y = my;
X		/*
X		 *  Really ugly - we'd like leave the last rubber banded section
X		 *  around because the spline that we're showing at this point
X		 *  consists of lots of rubber-banded segments. But we can't
X		 *  leave the rubber banded section from the MOTION drawing,
X		 *  because the button may have been pressed at a different
X		 *  place, so we invert that, compute a fidged rubber segment
X		 *  for this point, draw it, and never invert it back.
X		 *  Eventually, the protruding lines from the end segments get
X		 *  erased by the defining polyline, (we hope) and the spline
X		 *  gets overwritten by the DRAW operation at the end.
X		 *  Horrible!!
X		 */
X		CopyAndFlatten(drawVerts, 3, &flatVerts, &nFlat, &flatSize);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat, 
X		 CoordModePrevious);
X		if (((line_arrow & ST_ARROW) != 0) && (nVerts == 2))
X			Arrow(picDpy, picWin, verts[2].x, verts[2].y, 
X			 verts[1].x, verts[1].y, gcNormal);
X		nVerts++;
X		xmin = MIN(xmin, mx);
X		xmax = MAX(xmax, mx);
X		ymin = MIN(ymin, my);
X		ymax = MAX(ymax, my);
X		drawVerts++;
X		CopyAndFlatten(drawVerts, 3, &flatVerts, &nFlat, &flatSize);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat,
X		 CoordModePrevious);
X		drawlines(picDpy, picWin, gcInvert, drawVerts, 3, CoordModeOrigin);
X		if ((line_arrow & EN_ARROW) != 0)
X			Arrow(picDpy, picWin, verts[nVerts - 1].x, verts[nVerts - 1].y, 
X			 verts[nVerts].x, verts[nVerts].y, gcInvert);
X		break;
X	case RIGHT | END_MODE:
X		if (((line_arrow & ST_ARROW) != 0) && (nVerts == 2))
X			Arrow(picDpy, picWin, verts[2].x, verts[2].y, verts[1].x, 
X			 verts[1].y, gcInvert);
X		if ((line_arrow & EN_ARROW) != 0)
X			Arrow(picDpy, picWin, verts[nVerts - 1].x, verts[nVerts - 1].y, 
X			 verts[nVerts].x, verts[nVerts].y, gcInvert);
X		drawlines(picDpy, picWin, gcInvert, drawVerts, 3, CoordModeOrigin);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat, 
X		 CoordModePrevious);
X		/* Use ERASE to clean out junk */
X		setwidth(tmpGcErase, lineThickness);
X		SETDASHES(tmpGcErase, line_type);
X		drawlines(picDpy, picWin, tmpGcErase, verts, nVerts, CoordModeOrigin);
X		verts[nVerts].x = verts[nVerts-1].x;
X		verts[nVerts].y = verts[nVerts-1].y;
X		FlattenSpline(verts, nVerts, &flatVerts, &nFlat, &flatSize);
X		nVerts++;
X		drawlines(picDpy, picWin, gcNormal, flatVerts, nFlat,
X		 CoordModePrevious);
X		if (((line_arrow & EN_ARROW) != 0) && (nVerts > 2))
X			Arrow(picDpy, picWin, verts[nVerts - 3].x, verts[nVerts - 3].y, 
X			 verts[nVerts - 2].x, verts[nVerts - 2].y, gcInvert);
X		drawingMode = START_MODE;
X		if (nVerts <= 3)
X			break;
X		if ((ptList = NewPtList(verts, nVerts)) == NULL)
X			message("No more memory for line/spline");
X		else {				
X			AddLineGel(&(CurrentCell->gelList), SPLINE, ptList,
X			 line_type | line_arrow, xmin, ymin, xmax, ymax, lineThickness);
X			FreeGel(CurrentCell->undoList);
X			CurrentCell->undoList = NULL;
X			CurrentCell->undo = 1;
X			CurrentCell->saved |= MODIFIED;
X		}
X		break;
X	case MIDDLE | END_MODE:
X		if ((line_arrow & ST_ARROW) != 0)
X			Arrow(picDpy, picWin, verts[2].x, verts[2].y,
X 			 verts[1].x, verts[1].y, gcInvert);
X		if ((line_arrow & EN_ARROW) != 0)
X			Arrow(picDpy, picWin, verts[nVerts - 1].x, verts[nVerts - 1].y, 
X			 verts[nVerts].x, verts[nVerts].y, gcInvert);
X		drawlines(picDpy, picWin, gcInvert, drawVerts, 3, CoordModeOrigin);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat,
X		 CoordModePrevious);
X		/*
X		 *  We use background and GXcopy instead of inverting
X		 *  because some of the points on the path may have
X		 *  already been turned off by the previous drawlines.
X		 */
X		setwidth(tmpGcErase, lineThickness);
X		SETDASHES(tmpGcErase, line_type);
X		drawlines(picDpy, picWin, tmpGcErase, verts, nVerts, CoordModeOrigin);
X		verts[nVerts].x = verts[nVerts+1].x = mx;
X		verts[nVerts].y = verts[nVerts+1].y = mx;
X		nVerts += 2;
X		FlattenSpline(verts, nVerts-1, &flatVerts, &nFlat, &flatSize);
X		drawlines(picDpy, picWin, tmpGcErase, flatVerts, nFlat, 
X		 CoordModePrevious);
X		drawingMode = START_MODE;
X		break;
X	case REDRAW | END_MODE:
X		if (((line_arrow & ST_ARROW) != 0) && (nVerts == 2))
X			Arrow(picDpy, picWin, verts[2].x, verts[2].y, 
X			 verts[1].x, verts[1].y, gcInvert);
X		if ((line_arrow & EN_ARROW) != 0)
X			Arrow(picDpy, picWin, verts[nVerts - 1].x, verts[nVerts - 1].y, 
X			 verts[nVerts].x, verts[nVerts].y, gcInvert);
X		/* !! Should call XDraw for the whole spline here  - this is wrong */
X		drawlines(picDpy, picWin, gcInvert, drawVerts, 3, CoordModeOrigin);
X		drawlines(picDpy, picWin, gcInvert, flatVerts, nFlat,
X		 CoordModePrevious);
X		break;
X	default:
X#ifdef DEBUG
X		(void) sprintf(errstring, "Hey! Unknown SPLINE mode %d", drawingMode);
X		message(errstring);
X#endif
X		break;
X	}
X	ASSERT(allock(), "spline_event");
X}
X
X
Xspline_abort()
X{
X	spline_event((RIGHT | drawingMode), 0, 0);
X}
X
X#define MAXSPLINEBUF	7
Xstatic XPoint vbuf[MAXSPLINEBUF];
X
X/*
X *  Copies N vertices from v to vbuf, duplicates the ones at the
X *  beginning and end, and calls the spline routine to flatten them. This
X *  wouldn't be needed if the spline routine properly doubled up the
X *  endpoints, but alas, it doesn't.
X */
X/*
X *  NOTE: The new spline routine doubles the endpoints, but expects the
X *  0th and Nth locations in the verts array passed to it to be free
X */
XCopyAndFlatten(v, n, flattened, nflat, flatSize)
Xregister XPoint *v;
XXPoint *flattened[];
Xint *nflat;
Xint *flatSize;
X{
X	register int i;
X	register int j;
X
X	ASSERT(n < MAXSPLINEBUF, "n too large");
X	/* Copy the n points */
X	for (i = 1, j = 0; j < n; i++, j++) {
X		vbuf[i].x = v[j].x;
X		vbuf[i].y = v[j].y;
X	}
X	FlattenSpline(vbuf, n+1, flattened, nflat, flatSize);
X}
X
X
Xspline_adj(evtype, gel, mx, my)
Xint evtype;
XGel *gel;
Xint mx, my;
X{
X	static XPoint *v;
X	static XPoint *adjusted;
X	static int arrowstyle, start, end, npts;
X	static Gel *splinegel, *oldsplinegel;
X	/*
X	 *  Will not need to process MOTION|START_MODE, RIGHT|START_MODE,
X	 *  REDRAW|START_MODE - these are taken care of in
X	 *  the adj_element routine.
X	 */
X	switch(evtype) {
X	case MOTION | END_MODE:
X		DrawSplineSection(v, npts, tmpGcInvert, start, end);
X		adjusted->x = mx;
X		adjusted->y = my;
X		CopyAndFlatten(v, npts, &flatVerts, &nFlat, &flatSize);
X		DrawSplineSection(v, npts, tmpGcInvert, start, end);
X		break;
X	case LEFT | START_MODE:
X		splinegel = CopyGel(gel, 1);
X		oldsplinegel = gel;
X		gel = NULL;
X		GetClosestSplinePoint(splinegel, mx, my, &v, &npts, &adjusted, &start, &end);
X		/* Spline has been erased in element_adjust, so we redraw inverted */
X		GelDraw(splinegel, INVERT);
X		setwidth(tmpGcNormal, splinegel->linewidth);
X		setwidth(tmpGcInvert, splinegel->linewidth);
X		SETDASHES(tmpGcNormal, getlinestyle(splinegel->attributes))
X		SETDASHES(tmpGcInvert, getlinestyle(splinegel->attributes))
X		if (!start) {
X			v--;
X			npts++;
X		}
X		if (!end) {
X			npts++;
X		}
X		CopyAndFlatten(v, npts, &flatVerts, &nFlat, &flatSize);
X		/*
X		 *  Now we redraw the section of the spline we're going to
X		 *  adjust + the end segments. This erases it!
X		 */
X		drawlines(picDpy, picWin, tmpGcInvert, flatVerts, nFlat, 
X		 CoordModePrevious);
X		/* Now we redraw the spline section so it shows - yuk. */
X		DrawSplineSection(v, npts, tmpGcInvert, start, end);
X		drawingMode = END_MODE;
X		arrowstyle = getlinearrow(splinegel->attributes);
X		start = start && (arrowstyle & ST_ARROW);
X		end = end && (arrowstyle & EN_ARROW);
X		break;
X	case LEFT | END_MODE:
X		DrawSplineSection(v, npts, tmpGcInvert, start, end);
X		adjusted->x = mx;
X		adjusted->y = my;
X		/*
X		 *  We need to erase the end segments of the spline that
X		 *  protrude. The logic (or illogic, is sililar to the junk code
X		 *  in the LEFT | END_MODE case in the draw. Go read the comment
X		 *  there. It won't help much either. 	
X		 */
X		CopyAndFlatten(v, npts, &flatVerts, &nFlat, &flatSize);
X		drawlines(picDpy, picWin, tmpGcInvert, flatVerts, nFlat, 
X		 CoordModePrevious);
X		update_box(splinegel->b_box, mx, my);
X		GelDraw(splinegel, DRAW);
X		(void) PushGel(&(CurrentCell->gelList), splinegel);
X		splinegel = NULL;
X		FreeGel(CurrentCell->undoList);
X		CurrentCell->undoList = oldsplinegel;
X		CurrentCell->undo = 1;
X		CurrentCell->saved |= MODIFIED;
X		drawingMode = START_MODE;
X		break;
X	case RIGHT | END_MODE:
X	case MIDDLE | END_MODE:
X		DrawSplineSection(v, npts, tmpGcInvert, start, end);
X		GelDraw(oldsplinegel, DRAW);
X		(void) PushUnderUndo(&(CurrentCell->gelList), oldsplinegel, 
X		 CurrentCell->undo);
X		oldsplinegel = NULL;
X		FreeGel(splinegel);
X		splinegel = NULL;
X		if (evtype == (MIDDLE | END_MODE))
X			ClearGelFlags(CurrentCell->gelList);
X		drawingMode = START_MODE;
X		break;
X	case MIDDLE | START_MODE:
X		ClearGelFlags(CurrentCell->gelList);
X		break;
X	case REDRAW | END_MODE:
X		DrawSplineSection(v, npts, tmpGcInvert, start, end);
X		break;
X	default:
X#ifdef DEBUG
X		(void) sprintf(errstring, "Hey! Unknown mode %d in spline_adj", 
X		 evtype);
X		message(errstring);
X#endif
X		break;
X	}
X	ASSERT(allock(), "spline_adj");
X}
X
X
XDrawSplineSection(v, npts, gc, start, end)
XXPoint *v;
XGC gc;
Xint start, end, npts;
X{
X	drawlines(picDpy, picWin, gc, flatVerts, nFlat, CoordModePrevious);
X	drawlines(picDpy, picWin, gc, v, npts, CoordModeOrigin);
X
X	/* !! Fix! */
X	if (start)
X		Arrow(picDpy, picWin, v[1].x, v[1].y, v[0].x, v[0].y, gc);
X	if (end)
X		Arrow(picDpy, picWin, v[0].x, v[0].y, v[1].x, v[1].y, gc);
X}
X
X
X/*
X *  Finds the closest point in the spline gel 'g' to mx, my and
X *  puts the points in 'v'. Caller must allocate space for v. 'adjusted'
X *  will point to the closest point in the gel pointlist, and start and
X *  end will be set depending on whether the point is the start or end
X *  point. 'npts' is the number of points in v, usually 3, but 2 if one
X *  of the points is an endpoint.
X */
XGetClosestSplinePoint(g, mx, my, v, npts, adjusted, start, end)
XGel *g;
XXPoint **v;
XXPoint **adjusted;
Xint *start, *end, *npts;
Xint mx, my;
X{
X	register int i;
X	int mindist = MAXINT;
X	int dist;
X	int closest;
X	int n = ((PointList *) g->data)->nVerts;
X	XPoint *vertices = ((PointList *) g->data)->v;
X
X	*adjusted = vertices;
X	for (i = 1,vertices++; i < n-1; i++, vertices++) {
X		dist = (vertices->x - mx)*(vertices->x - mx) + 
X		 (vertices->y - my)*(vertices->y - my);
X		if (dist < mindist) {
X			closest = i;
X			*adjusted = vertices;
X			mindist = dist;
X		}
X	}
X	*npts = 3;
X	if (closest <= 1) {
X		*start = TRUE;
X		*v = *adjusted;
X		(*npts)--;
X	} else {
X		*start = FALSE;
X		*v = *adjusted - 1;
X	}
X	if (closest >= n - 2) {
X		*end = TRUE;
X		(*npts)--;
X	} else {
X		*end = FALSE;
X	}
X	ASSERT((*npts != 1), "One point spline");
X}
X
X/*
X * Finds distance of point from a spline. This is the distance of the closest
X * segment of the controlling line from the point. The distance of a segment
X * from the point is the perpendicular distance of the point from the segment,
X * if the perpendicular intersects the segment, else it is the distance of the
X * closest endpoint. We just call line_distance()..
X */
Xint
Xspline_distance(gel, xp, yp)
XGel *gel;
Xint xp, yp;
X{
X	extern int line_distance();
X	
X	return(line_distance(gel, xp, yp));
X}
END_OF_FILE
if test 14826 -ne `wc -c <'xpic/obj_spline.c'`; then
    echo shar: \"'xpic/obj_spline.c'\" unpacked with wrong size!
fi
# end of 'xpic/obj_spline.c'
fi
if test -f 'xpic/test/marcel.x' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xpic/test/marcel.x'\"
else
echo shar: Extracting \"'xpic/test/marcel.x'\" \(13421 characters\)
sed "s/^X//" >'xpic/test/marcel.x' <<'END_OF_FILE'
X56 67 1176 776 8
X1 438 496 672 544 672 20 1
X2
X 544 672 496 672
X1 439 496 472 512 648 20 1
X3
X 512 472 512 648 496 648
X1 440 372 392 372 408 20 1
X2
X 372 408 372 392
X6 441 447 434 481 447 0 0
X464 440 7 0 2
XdPC (h)
X1 442 528 320 544 320 20 1
X2
X 544 320 528 320
X6 443 435 379 452 390 2000 0
X452 384 4 0 1
XDrtx
X6 444 489 315 520 326 2000 0
X520 320 7 0 1
XPC(h)in
X6 445 487 379 520 390 2000 0
X520 384 6 0 1
XHW_gen
X6 446 353 411 392 422 0 0
X372 416 9 0 1
X(from EU)
X6 447 360 379 386 390 1000 0
X360 384 5 0 1
XIBASE
X6 448 696 167 720 178 1000 0
X696 172 6 0 1
XPC_sel
X6 449 594 191 664 202 2000 0
X664 196 17 0 1
X(from EU) PC(h)in
X6 450 595 175 660 186 2000 0
X660 180 16 0 1
X(from IFU) PCout
X6 451 867 298 877 311 0 0
X872 304 1 0 2
X+
X1 452 528 248 560 248 20 1
X2
X 528 248 560 248
X3 453 864 288 880 320 0 1
X1 454 688 200 840 232 20 1
X3
X 688 200 840 200 840 232
X1 455 408 144 1152 272 20 1
X3
X 408 272 408 144 1152 144
X6 456 465 242 519 255 0 0
X492 248 12 0 2
XPC Stack ptr
X6 457 830 258 858 271 0 0
X844 264 6 0 2
XPC (h)
X6 458 950 306 987 319 0 0
X968 312 7 0 2
XControl
X6 459 941 290 995 303 0 0
X968 296 11 0 2
XQueue Shift
X6 460 1044 354 1060 367 0 0
X1052 360 2 0 2
XQL
X6 461 1043 338 1061 351 0 0
X1052 344 2 0 2
XQH
X1 462 1040 352 1064 352 0 1
X2
X 1040 352 1064 352
X1 463 1104 352 1104 776 20 1
X2
X 1104 776 1104 352
X1 464 1064 352 1104 352 20 1
X2
X 1104 352 1064 352
X1 465 1016 376 1136 376 20 1
X2
X 1136 376 1016 376
X1 466 1120 280 1120 776 20 1
X2
X 1120 280 1120 776
X1 467 848 280 1120 280 20 1
X2
X 848 280 1120 280
X1 468 1016 352 1040 352 20 1
X2
X 1040 352 1016 352
X1 469 1016 344 1040 344 20 1
X2
X 1040 344 1016 344
X3 470 1040 336 1064 368 0 1
X6 471 378 358 454 378 0 0
X416 368 10 0 5
XController
X6 472 401 334 431 354 0 0
X416 344 3 0 5
XIFU
X6 473 103 297 128 311 2000 0
X128 304 3 0 3
XIRQ
X6 474 71 321 128 335 2000 0
X128 328 8 0 3
XIRQ_addr
X6 475 177 346 248 359 2000 0
X248 352 12 0 2
XTAG Mismatch
X6 476 176 362 248 375 2000 0
X248 368 14 0 2
XRead Exception
X6 477 173 378 248 391 2000 0
X248 384 15 0 2
XWrite Exception
X1 478 136 304 312 304 10 1
X2
X 312 304 136 304
X1 479 136 328 312 328 10 1
X2
X 312 328 136 328
X1 480 256 384 312 384 10 1
X2
X 312 384 256 384
X1 481 256 368 312 368 10 1
X2
X 312 368 256 368
X1 482 256 352 312 352 10 1
X2
X 312 352 256 352
X6 483 851 231 856 242 2000 0
X856 236 1 0 1
XF
X6 484 838 231 844 242 2000 0
X844 236 1 0 1
XT
X6 485 582 407 588 418 2000 0
X588 412 1 0 1
XT
X6 486 595 407 600 418 2000 0
X600 412 1 0 1
XF
X6 487 608 387 616 398 1000 0
X608 392 2 0 1
X18
X1 488 596 388 604 396 0 1
X2
X 596 396 604 388
X1 489 600 384 600 408 20 1
X2
X 600 384 600 408
X1 490 592 416 592 432 20 1
X2
X 592 416 592 432
X1 491 576 408 608 416 0 1
X5
X 584 416 600 416 608 408 576 408
X 584 416
X1 492 552 376 560 376 20 1
X2
X 560 376 552 376
X6 493 573 434 611 447 0 0
X592 440 7 0 2
XQA data
X1 494 544 200 680 440 20 1
X3
X 544 440 544 200 680 200
X6 495 497 331 520 342 2000 0
X520 336 6 0 1
Xlength
X1 496 368 296 376 320 0 1
X5
X 376 304 376 312 368 320 368 296
X 376 304
X1 497 356 312 368 312 20 1
X2
X 356 312 368 312
X1 498 356 304 368 304 20 1
X2
X 356 304 368 304
X1 499 440 308 456 308 20 1
X2
X 440 308 456 308
X1 500 376 308 392 308 20 1
X2
X 376 308 392 308
X1 501 352 168 684 272 20 1
X4
X 352 272 352 168 684 168 684 180
X1 502 384 184 680 272 20 1
X3
X 384 272 384 184 680 184
X1 503 424 232 836 272 20 1
X5
X 424 272 424 232 808 232 812 236
X 836 236
X6 504 320 347 340 358 1000 0
X320 352 3 0 1
XTAG
X6 505 320 363 340 374 1000 0
X320 368 5 0 1
Xreade
X6 506 320 379 342 390 1000 0
X320 384 6 0 1
Xwritee
X6 507 340 275 364 286 0 0
X352 280 6 0 1
XPC_sel
X6 508 372 275 396 286 0 0
X384 280 5 0 1
XPCout
X6 509 401 275 415 286 0 0
X408 280 2 0 1
XRD
X6 510 418 275 430 286 0 0
X424 280 3 0 1
Xabs
X6 511 395 307 437 318 0 0
X416 312 10 0 1
Xpre-decode
X6 512 405 299 428 310 0 0
X416 304 4 0 1
XuPLA
X6 513 439 275 458 286 0 0
X448 280 5 0 1
Xfetch
X6 514 475 275 486 286 0 0
X480 280 3 0 1
Xinc
X6 515 506 275 519 286 0 0
X512 280 3 0 1
Xdec
X6 516 495 291 520 302 2000 0
X520 296 6 0 1
Xh0_ovr
X6 517 499 299 520 310 2000 0
X520 304 6 0 1
Xoffset
X1 518 528 312 920 336 20 1
X4
X 528 336 904 336 904 312 920 312
X1 519 448 160 1136 272 20 1
X3
X 448 272 448 160 1136 160
X1 520 512 256 512 272 20 1
X2
X 512 272 512 256
X1 521 480 256 480 272 20 1
X2
X 480 272 480 256
X1 522 528 304 832 304 20 1
X2
X 528 304 832 304
X1 523 528 248 876 296 20 1
X5
X 528 296 792 296 792 248 876 248
X 876 256
X3 524 464 240 528 256 0 1
X3 525 312 272 528 392 0 1
X3 526 392 296 440 320 0 1
X1 527 560 348 1016 348 0 1
X2
X 1016 348 560 348
X1 528 944 352 944 384 0 1
X2
X 944 352 944 384
X1 529 560 352 1016 352 0 1
X2
X 560 352 1016 352
X3 530 560 344 1016 384 0 1
X1 531 560 368 1016 368 1 1
X2
X 560 368 1016 368
X1 532 1000 352 1000 384 0 1
X2
X 1000 352 1000 384
X1 533 680 176 688 224 0 1
X5
X 680 224 688 216 688 184 680 176
X 680 224
X1 534 688 352 688 384 0 1
X2
X 688 352 688 384
X3 535 560 240 736 280 0 1
X1 536 872 256 872 272 0 1
X2
X 872 256 872 272
X1 537 856 200 888 304 20 1
X5
X 880 304 888 304 888 200 856 200
X 856 232
X3 538 816 256 880 272 0 1
X1 539 848 272 864 296 20 1
X3
X 848 272 848 296 864 296
X1 540 848 240 848 256 20 1
X2
X 848 240 848 256
X1 541 832 232 864 240 0 1
X5
X 840 240 856 240 864 232 832 232
X 840 240
X1 542 840 312 864 312 20 1
X2
X 840 312 864 312
X1 543 832 296 840 328 0 1
X5
X 832 328 840 320 840 304 832 296
X 832 328
X1 544 824 320 832 320 20 1
X2
X 824 320 832 320
X6 545 805 313 820 327 2000 0
X820 320 3 0 3
X'1'
X3 546 920 288 1016 320 0 1
X1 547 880 352 880 384 0 1
X2
X 880 352 880 384
X1 548 816 352 816 384 0 1
X2
X 816 352 816 384
X1 549 752 352 752 384 0 1
X2
X 752 352 752 384
X6 550 874 259 879 270 0 0
X876 264 1 0 1
Xh
X1 551 648 216 680 240 20 1
X3
X 648 240 648 216 680 216
X1 552 1136 160 1136 776 20 1
X2
X 1136 160 1136 776
X1 553 1152 144 1152 776 20 1
X2
X 1152 144 1152 776
X1 554 728 196 736 204 0 1
X2
X 728 204 736 196
X1 555 652 400 660 408 0 1
X2
X 652 408 660 400
X6 556 664 399 672 410 1000 0
X664 404 2 0 1
X18
X6 557 728 183 736 194 1000 0
X728 188 2 0 1
X31
X6 558 796 219 808 230 2000 0
X808 224 3 0 1
Xabs
X6 559 604 249 692 263 0 0
X648 256 16 0 3
XPC  pseudo-stack
X6 560 605 265 691 279 0 0
X648 272 17 0 3
X(circular buffer)
X6 561 961 353 984 367 0 0
X972 360 4 0 3
Xdata
X6 562 951 369 993 383 0 0
X972 376 8 0 3
Xaddr (h)
X6 563 647 353 666 367 0 0
X656 360 2 0 3
XQB
X6 564 711 353 730 367 0 0
X720 360 2 0 3
XQC
X6 565 774 353 794 367 0 0
X784 360 2 0 3
XQD
X6 566 839 353 858 367 0 0
X848 360 2 0 3
XQE
X6 567 903 353 921 367 0 0
X912 360 2 0 3
XQF
X6 568 638 434 674 447 0 0
X656 440 7 0 2
XQB data
X1 569 624 432 624 448 0 1
X2
X 624 432 624 448
X3 570 560 432 688 448 0 1
X1 571 624 352 624 384 0 1
X2
X 624 352 624 384
X1 572 656 384 656 432 20 1
X2
X 656 384 656 432
X6 573 582 353 603 367 0 0
X592 360 2 0 3
XQA
X1 574 552 376 552 416 20 1
X2
X 552 376 552 416
X6 575 490 355 520 366 2000 0
X520 360 5 0 1
XHW_op
X1 576 528 360 584 408 20 1
X5
X 528 360 536 360 536 392 584 392
X 584 408
X1 577 464 416 552 432 20 1
X3
X 552 416 464 416 464 432
X3 578 432 432 496 448 0 1
X1 579 464 448 512 472 20 1
X4
X 464 448 464 456 512 456 512 472
X3 580 472 496 480 536 0 1
X2 581 448 504 472 528 0 1
X5
X 472 504 456 504 448 516 456 528
X 472 528
X1 582 440 552 448 584 0 1
X5
X 448 552 440 560 440 576 448 584
X 448 552
X1 583 472 528 480 528 0 1
X2
X 472 528 480 528
X1 584 472 520 480 520 0 1
X2
X 472 520 480 520
X1 585 472 512 480 512 0 1
X2
X 472 512 480 512
X1 586 472 504 480 504 0 1
X2
X 472 504 480 504
X1 587 480 536 480 560 0 1
X2
X 480 536 480 560
X1 588 444 516 448 556 20 1
X3
X 448 516 444 516 444 556
X1 589 448 560 560 560 20 1
X2
X 560 560 448 560
X1 590 448 576 560 576 20 1
X2
X 560 576 448 576
X1 591 264 656 296 664 0 1
X5
X 264 656 296 656 288 664 272 664
X 264 656
X1 592 288 616 288 656 20 1
X2
X 288 616 288 656
X1 593 216 640 272 656 20 1
X4
X 216 640 216 648 272 648 272 656
X1 594 336 496 336 616 2 1
X2
X 336 616 336 496
X3 595 168 632 256 640 0 1
X3 596 200 496 384 616 0 1
X1 597 292 660 480 660 20 1
X2
X 480 660 292 660
X1 598 400 560 408 592 0 1
X5
X 408 560 408 592 400 584 400 568
X 408 560
X1 599 408 568 440 568 20 1
X2
X 440 568 408 568
X1 600 384 576 400 576 20 1
X2
X 400 576 384 576
X2 601 428 516 444 568 0 1
X4
X 444 516 436 516 436 568 428 568
X2 602 280 664 280 672 20 1
X2
X 280 664 280 672
X3 603 320 680 384 696 0 1
X3 604 120 688 296 720 0 1
X1 605 376 680 376 696 0 1
X2
X 376 680 376 696
X1 606 120 704 296 704 0 1
X2
X 120 704 296 704
X1 607 216 704 216 720 0 1
X2
X 216 704 216 720
X1 608 168 704 168 720 0 1
X2
X 168 704 168 720
X1 609 208 672 280 688 20 1
X3
X 280 672 208 672 208 688
X1 610 280 672 352 680 20 1
X3
X 280 672 352 672 352 680
X1 611 380 588 404 704 20 1
X4
X 380 696 380 704 404 704 404 588
X1 612 352 584 416 712 20 1
X5
X 352 696 352 712 416 712 416 584
X 408 584
X1 613 1032 664 1032 704 20 1
X2
X 1032 664 1032 704
X1 614 976 664 976 704 20 1
X2
X 976 664 976 704
X1 615 404 680 488 704 20 1
X3
X 404 704 488 704 488 680
X1 616 972 680 980 688 0 1
X2
X 972 688 980 680
X1 617 892 680 900 688 0 1
X2
X 892 688 900 680
X1 618 828 680 836 688 0 1
X2
X 828 688 836 680
X1 619 748 680 756 688 0 1
X2
X 748 688 756 680
X1 620 668 680 676 688 0 1
X2
X 668 688 676 680
X1 621 628 680 636 688 0 1
X2
X 628 688 636 680
X1 622 588 680 596 688 0 1
X2
X 588 688 596 680
X1 623 776 704 776 720 0 1
X2
X 776 704 776 720
X1 624 880 704 880 720 0 1
X2
X 880 704 880 720
X1 625 656 704 656 720 0 1
X2
X 656 704 656 720
X1 626 616 704 616 720 0 1
X2
X 616 704 616 720
X3 627 1016 704 1048 720 0 1
X3 628 960 704 992 720 0 1
X3 629 736 704 920 720 0 1
X3 630 576 704 696 720 0 1
X1 631 592 664 592 704 20 1
X2
X 592 664 592 704
X1 632 632 664 632 704 20 1
X2
X 632 664 632 704
X1 633 672 664 672 704 20 1
X2
X 672 664 672 704
X1 634 752 664 752 704 20 1
X2
X 752 664 752 704
X1 635 832 664 832 704 20 1
X2
X 832 664 832 704
X1 636 896 664 896 704 20 1
X2
X 896 664 896 704
X1 637 1028 680 1036 688 0 1
X2
X 1028 688 1036 680
X3 638 560 496 1056 664 0 1
X1 639 544 440 544 736 20 1
X2
X 544 736 544 440
X6 640 192 631 241 642 0 0
X216 636 13 0 1
XNOP, length 0
X6 641 312 651 329 662 1000 0
X312 656 6 0 1
Xstall!
X6 642 330 682 366 695 0 0
X348 688 8 0 2
Xnxt addr
X6 643 160 690 257 703 0 0
X208 696 20 0 2
XuWord Control Fields
X6 644 178 706 207 719 0 0
X192 712 7 0 2
Xstage 2
X6 645 130 706 159 719 0 0
X144 712 7 0 2
Xstage 3
X6 646 242 706 271 719 0 0
X256 712 7 0 2
Xstage 1
X6 647 583 706 610 719 0 0
X596 712 5 0 2
XBreg1
X6 648 620 706 653 719 0 0
X636 712 7 0 2
Xoffset1
X6 649 665 706 687 719 0 0
X676 712 5 0 2
Xctrl1
X6 650 743 706 770 719 0 0
X756 712 5 0 2
XBreg2
X6 651 816 706 849 719 0 0
X832 712 7 0 2
Xoffset2
X6 652 889 706 911 719 0 0
X900 712 5 0 2
Xctrl2
X6 653 968 706 984 719 0 0
X976 712 3 0 2
Xsop
X3 654 480 640 496 680 0 1
X6 655 1020 707 1045 718 0 0
X1032 712 7 0 1
Xcar/cdr
X6 656 483 654 493 667 0 0
X488 660 1 0 2
X=
X6 657 568 569 615 583 1000 0
X568 576 7 0 3
XExtraOp
X6 658 569 553 615 567 0 0
X592 560 6 0 3
XOpCode
X6 659 713 576 919 601 0 0
X816 588 20 0 7
XOperand Decode Logic
X6 660 790 535 843 562 0 0
X816 548 3 0 8
XODL
X6 661 600 678 606 691 1000 0
X600 684 1 0 2
X5
X6 662 640 678 646 691 1000 0
X640 684 1 0 2
X5
X6 663 760 678 766 691 1000 0
X760 684 1 0 2
X5
X6 664 840 678 852 691 1000 0
X840 684 2 0 2
X30
X6 665 984 678 990 691 1000 0
X984 684 1 0 2
X2
X6 666 1040 678 1046 691 1000 0
X1040 684 1 0 2
X1
X6 667 265 516 311 533 0 0
X288 524 4 0 4
XuROM
X6 668 242 553 303 567 0 0
X272 560 11 0 3
XInstruction
X6 669 235 577 309 591 0 0
X272 584 10 0 3
XDecode ROM
X6 670 346 553 375 567 0 0
X360 560 3 0 3
XODL
X6 671 342 577 378 591 0 0
X360 584 5 0 3
XuCode
X6 672 278 606 298 619 0 0
X288 612 4 0 2
Xdata
X6 673 524 742 564 755 0 0
X544 748 7 0 2
Xnext_PC
X6 674 354 602 367 615 0 0
X360 608 3 0 2
Xrtx
X6 675 463 379 480 390 2000 0
X480 384 6 0 1
Xstall!
X1 676 360 472 520 624 20 1
X4
X 360 616 360 624 520 624 520 472
X1 677 440 392 520 472 20 1
X4
X 520 472 520 400 440 400 440 392
X1 678 504 392 536 440 20 1
X4
X 504 392 504 408 536 408 536 440
X1 679 472 392 528 440 10 1
X4
X 472 392 472 424 528 424 528 440
X1 680 464 440 528 660 20 1
X4
X 464 660 464 632 528 632 528 440
X1 681 480 440 536 736 20 1
X4
X 536 440 536 728 480 728 480 736
X6 682 463 742 498 755 0 0
X480 748 7 0 2
Xlength0
X1 683 1032 720 1032 736 20 1
X2
X 1032 720 1032 736
X1 684 976 720 976 736 20 1
X2
X 976 720 976 736
X1 685 896 720 896 736 20 1
X2
X 896 720 896 736
X1 686 832 720 832 736 20 1
X2
X 832 720 832 736
X1 687 752 720 752 736 20 1
X2
X 752 720 752 736
X1 688 672 720 672 736 20 1
X2
X 672 720 672 736
X1 689 632 720 632 736 20 1
X2
X 632 720 632 736
X1 690 592 720 592 736 20 1
X2
X 592 720 592 736
X1 691 192 720 192 736 20 1
X2
X 192 720 192 736
X1 692 144 720 144 736 20 1
X2
X 144 720 144 736
X6 693 233 738 280 751 0 0
X256 744 9 0 2
X(decoded)
X1 694 256 720 256 736 20 1
X2
X 256 720 256 736
X1 695 592 448 592 496 20 1
X2
X 592 448 592 496
X1 696 656 448 656 496 20 1
X2
X 656 448 656 496
X1 697 56 440 424 440 2 1
X2
X 56 440 424 440
X1 698 696 440 1176 440 2 1
X2
X 696 440 1176 440
X1 699 304 712 344 712 2 1
X2
X 304 712 344 712
X1 700 424 712 528 712 2 1
X2
X 424 712 528 712
X1 701 552 712 568 712 2 1
X2
X 552 712 568 712
X1 702 704 712 728 712 2 1
X2
X 704 712 728 712
X1 703 928 712 952 712 2 1
X2
X 928 712 952 712
X1 704 1000 712 1008 712 2 1
X2
X 1000 712 1008 712
X1 705 1056 712 1176 712 2 1
X2
X 1056 712 1176 712
X1 706 832 400 864 400 20 1
X2
X 864 400 832 400
X1 707 832 416 864 416 20 1
X2
X 832 416 864 416
X6 708 872 394 893 407 1000 0
X872 400 5 0 2
Xshift
X6 709 811 410 824 423 2000 0
X824 416 4 0 2
Xfill
X6 710 96 67 319 94 1000 0
X96 80 15 0 8
XSLIME PROCESSOR
X1 711 96 96 320 96 0 1
X2
X 96 96 320 96
X6 712 77 180 116 205 0 0
X96 192 3 0 7
XIFU
X6 713 67 220 125 245 0 0
X96 232 7 0 7
X1 stage
X6 714 75 500 118 525 0 0
X96 512 3 0 7
XIDU
X6 715 67 540 125 565 0 0
X96 552 7 0 7
X1 stage
X3 716 64 176 128 208 0 1
X6 717 497 68 815 93 0 0
X656 80 35 0 7
XStage Interconnect Diagram (Part 1)
X1 718 56 712 112 712 2 1
X2
X 56 712 112 712
X3 719 64 496 128 528 0 1
END_OF_FILE
if test 13421 -ne `wc -c <'xpic/test/marcel.x'`; then
    echo shar: \"'xpic/test/marcel.x'\" unpacked with wrong size!
fi
# end of 'xpic/test/marcel.x'
fi
echo shar: End of archive 10 \(of 15\).
cp /dev/null ark10isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 15 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0



More information about the Comp.sources.x mailing list