summaryrefslogtreecommitdiff
path: root/static/v10/man9
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 21:07:28 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 21:07:28 -0400
commit711594636704defae873be1a355a292505585afd (patch)
tree59ee13f863830d8beba6cfd02bbe813dd486c26f /static/v10/man9
parent3258a063c1f189d7b019e40e525b46bef9b9a7b1 (diff)
docs: Added UNIX V10 Manuals
Diffstat (limited to 'static/v10/man9')
-rw-r--r--static/v10/man9/32ld.955
-rw-r--r--static/v10/man9/3cc.9163
-rw-r--r--static/v10/man9/Makefile3
-rw-r--r--static/v10/man9/add.9138
-rw-r--r--static/v10/man9/alloc.993
-rw-r--r--static/v10/man9/bitblt.9161
-rw-r--r--static/v10/man9/bitfile.974
-rw-r--r--static/v10/man9/blitblt.9130
-rw-r--r--static/v10/man9/blitmap.9191
-rw-r--r--static/v10/man9/brfs.927
-rw-r--r--static/v10/man9/brush.9301
-rw-r--r--static/v10/man9/button.9108
-rw-r--r--static/v10/man9/cip.958
-rw-r--r--static/v10/man9/circle.978
-rw-r--r--static/v10/man9/cos.959
-rw-r--r--static/v10/man9/crabs.952
-rw-r--r--static/v10/man9/demo.937
-rw-r--r--static/v10/man9/face.986
-rw-r--r--static/v10/man9/faced.9179
-rw-r--r--static/v10/man9/flickfile.986
-rw-r--r--static/v10/man9/flicks.9138
-rw-r--r--static/v10/man9/font.9110
-rw-r--r--static/v10/man9/gebaca.918
-rw-r--r--static/v10/man9/getfont.959
-rw-r--r--static/v10/man9/graphdraw.9310
-rw-r--r--static/v10/man9/icon.990
-rw-r--r--static/v10/man9/intro.9128
-rw-r--r--static/v10/man9/jf.9117
-rw-r--r--static/v10/man9/jim.9347
-rw-r--r--static/v10/man9/jioctl.974
-rw-r--r--static/v10/man9/jx.9112
-rw-r--r--static/v10/man9/lens.9108
-rw-r--r--static/v10/man9/libc.942
-rw-r--r--static/v10/man9/lsh.932
-rw-r--r--static/v10/man9/mcc.9227
-rw-r--r--static/v10/man9/menuhit.9210
-rw-r--r--static/v10/man9/mld.9146
-rw-r--r--static/v10/man9/mouse.963
-rw-r--r--static/v10/man9/movie.9172
-rw-r--r--static/v10/man9/mux.9210
-rw-r--r--static/v10/man9/muxstring.9124
-rw-r--r--static/v10/man9/newlayer.981
-rw-r--r--static/v10/man9/newproc.9193
-rw-r--r--static/v10/man9/pads.9102
-rw-r--r--static/v10/man9/paint.9218
-rw-r--r--static/v10/man9/ped.9318
-rw-r--r--static/v10/man9/pengo.972
-rw-r--r--static/v10/man9/pi.9397
-rw-r--r--static/v10/man9/proof.9124
-rw-r--r--static/v10/man9/psi.9142
-rw-r--r--static/v10/man9/reader.972
-rw-r--r--static/v10/man9/rebecca.9123
-rw-r--r--static/v10/man9/request.9238
-rw-r--r--static/v10/man9/ruler.946
-rw-r--r--static/v10/man9/sam.9888
-rw-r--r--static/v10/man9/samuel.9420
-rw-r--r--static/v10/man9/string.9102
-rw-r--r--static/v10/man9/term.950
-rw-r--r--static/v10/man9/thinkblt.9108
-rw-r--r--static/v10/man9/thinkclient.946
-rw-r--r--static/v10/man9/twid.990
-rw-r--r--static/v10/man9/types.9147
-rw-r--r--static/v10/man9/vismon.9116
-rw-r--r--static/v10/man9/windows.990
64 files changed, 9099 insertions, 0 deletions
diff --git a/static/v10/man9/32ld.9 b/static/v10/man9/32ld.9
new file mode 100644
index 00000000..40ed492a
--- /dev/null
+++ b/static/v10/man9/32ld.9
@@ -0,0 +1,55 @@
+.TH 32LD 9.1
+.CT 1 lib_obj
+.SH NAME
+32ld \- bootstrap loader for 5620
+.SH SYNOPSIS
+.B 32ld
+[
+.I option ...
+]
+.I file
+[
+.I argument ...
+]
+.SH DESCRIPTION
+.I 32ld
+loads the MAC-32 object
+.I file
+for execution in a 5620 connected to the standard output.
+When loading into a
+.IR mux (9.1)
+layer, the
+.I arguments
+are passed to the program as in Unix.
+The options are:
+.TP
+.B -d
+Print on the standard error file the sizes of the text, data and bss
+segments of
+.I file.
+The standard error must be
+separated from the standard output to
+avoid corrupting the down-load.
+.TP
+.B -p
+Print down-loading protocol statistics on the diagnostic output
+(for stand-alone loading only).
+.TP
+.B -z
+Load the process but don't run it.
+It may be started using
+.IR 3pi ;
+see
+.IR pi (9.1).
+This option works only under
+.IR mux .
+.PP
+The environment variable
+.B JPATH
+is the analog of the shell's
+.B PATH
+variable to define a set of directories in which to search for
+.IR file .
+.SH SEE ALSO
+.IR jx (9.1),
+.IR mux (9.1)
diff --git a/static/v10/man9/3cc.9 b/static/v10/man9/3cc.9
new file mode 100644
index 00000000..6f104393
--- /dev/null
+++ b/static/v10/man9/3cc.9
@@ -0,0 +1,163 @@
+.TH 3CC 9.1
+.CT 1 prog_c
+.SH NAME
+3cc, 3as, 3ar, 3ld, 3nm, 3size, 3strip, cprs \- MAC-32 C compiler
+.SH SYNOPSIS
+.B 3cc
+[
+.I option ...
+]
+.I file ...
+.PP
+.B cprs
+.I infile outfile
+.SH DESCRIPTION
+.I 3cc
+is the C compiler for the MAC-32 microprocessor in the
+Teletype DMD-5620 terminal.
+Its default action is to compile programs to run under the
+.IR mux (9.1)
+environment.
+.PP
+The behavior of
+.I 3cc
+is similar to
+.IR cc (1).
+Here are listed only options with special behavior for 5620s.
+.TP
+.B -J
+Compile the named programs, and link them for running stand-alone
+on a 5620 terminal.
+.TP
+.B -O
+Invoke an object-code improver (not recommended).
+.TP
+.B -m
+Compile the named programs for ordinary (non-jerq) environments.
+.TP
+.BI -D name = def
+.br
+.ns
+.TP
+.BI -D name
+Define the
+.I name
+to the preprocessor,
+as if by
+.LR #define .
+If no definition is given, the name is defined as
+.LR 1 .
+The symbol
+.B MUX
+is predefined unless
+.B -J
+or
+.B -m
+is set.
+.TP
+.BI -I dir
+.L #include
+files whose names do not begin with
+.L /
+are always sought first in the directory
+of the
+.I file
+argument, then in directories named in
+.B -I
+options,
+then in directories on a standard list, which includes
+.FR /usr/jerq/include .
+.PP
+Associated object-code manipulating programs exist.
+Their behavior is similar to the programs cited below.
+The loader, assembler and archive program are System V
+derivatives, and are slightly different in behavior;
+see the System V manuals.
+For typical uses, these differences are irrelevant.
+The support programs include:
+.TP
+.I 3as
+assembler, see
+.IR as (1)
+.PD 0
+.TP
+.I 3ar
+archive, see
+.IR ar (1)
+(there is no
+.IR 3ranlib )
+.TP
+.I 3ld
+link editor, see
+.IR ld (1)
+.TP
+.I 3nm
+name list, see
+.IR nm (1),
+doesn't work on archives
+.TP
+.I 3size
+object code size, see
+.IR size (1)
+.TP
+.I 3strip
+symbol table; see
+.IR strip (1).
+.RB ( -r
+is mandatory for
+.IR mux -runnable
+binaries.)
+.PD
+.PP
+.I 3strip
+has no
+.B -g
+flag; but
+.I cprs
+removes redundant symbol table entries while
+copying
+.I infile
+to
+.IR outfile .
+.SH FILES
+.TF /usr/jerq/lib/m32/optim
+.TP
+.F a.out
+loaded output
+.TP
+.F /tmp/ctm*
+temporary
+.TP
+.F /lib/cpp
+preprocessor
+.TP
+.F /usr/jerq/lib/m32/comp
+compiler
+.TP
+.F /usr/jerq/lib/m32/optim
+optimizer
+.TP
+.F /usr/jerq/lib/*.o
+runtime startoff, etc.
+.TP
+.F /usr/jerq/lib/libc.a
+standard library
+.TP
+.F /usr/jerq/lib/libj.a
+stand-alone graphics library
+.F /usr/jerq/lib/libmj.a
+mux-runnable graphics library (default)
+.TP
+.F /usr/jerq/lib/muxmap
+loader I-file
+.TP
+.F /usr/jerq/include
+standard directory for
+.L #include
+files
+.SH "SEE ALSO"
+System V manuals for
+.I 3ar, 3ld, 3as
+and
+.I cprs
+documentation.
diff --git a/static/v10/man9/Makefile b/static/v10/man9/Makefile
new file mode 100644
index 00000000..740d316d
--- /dev/null
+++ b/static/v10/man9/Makefile
@@ -0,0 +1,3 @@
+MAN = $(wildcard *.9)
+
+include ../../mandoc.mk
diff --git a/static/v10/man9/add.9 b/static/v10/man9/add.9
new file mode 100644
index 00000000..346df52d
--- /dev/null
+++ b/static/v10/man9/add.9
@@ -0,0 +1,138 @@
+.TH ADD 9.3
+.CT 2 math
+.SH NAME
+add, sub, mul, div, eqpt, eqrect, inset, muldiv, ptinrect, raddp, rsubp, rectXrect, rectclip \- arithmetic on points and rectangles
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B Point add(p, q)
+.B Point p, q;
+.PP
+.B Point sub(p, q)
+.B Point p, q;
+.PP
+.B Point mul(p, a)
+.B Point p; int a;
+.PP
+.B Point div(p, a)
+.B Point p; int a;
+.PP
+.B int eqpt(p, q)
+.B Point p, q;
+.PP
+.B int eqrect(r, s)
+.B Rectangle r, s;
+.PP
+.B Rectangle inset(r, n)
+.B Rectangle r; int n;
+.PP
+.B int muldiv(a, b, c)
+.B int a, b, c;
+.PP
+.B int ptinrect(p, r)
+.B Point p; Rectangle r;
+.PP
+.B Rectangle raddp(r, p)
+.B Rectangle r; Point p;
+.PP
+.B Rectangle rsubp(r, p)
+.B Rectangle r; Point p;
+.PP
+.B int rectXrect(r, s)
+.B Rectangle r, s;
+.PP
+.B int rectclip(rp, s)
+.B Rectangle *rp, s;
+.SH DESCRIPTION
+.I Add
+returns the Point
+sum of its arguments:
+.BI Pt( p .x+ q .x,
+.IB p .y+ q .y).
+.I Sub
+returns the Point
+difference of its arguments:
+.BI Pt( p .x- q .x,
+.IB p .y- q .y).
+.I Mul
+returns the Point
+.BI Pt( p .x* a ,
+.IB p .y* a ).
+.I Div
+returns the Point
+.BI Pt( p .x/ a ,
+.IB p .y/ a ).
+.PP
+.I Eqpt
+and
+.I eqrect
+compare their arguments and return
+0 if unequal,
+1 if equal.
+.PP
+.I Inset
+returns the Rectangle
+.BI Rect( r .origin.x+ n ,
+.IB r .origin.y+ n ,
+.IB r .corner.x- n ,
+.IB r .corner.y- n ) .
+The following code creates a clear rectangle
+.B r
+with a 2-pixel wide border inside
+.BR r :
+.IP
+.EX
+rectf(&display, r, F_OR);
+rectf(&display, inset(r, 2), F_CLR);
+.EE
+.PP
+.I Muldiv
+is a macro that returns the 16-bit result
+.BI ( a * b )/ c\fR,
+with
+.BI ( a * b )
+calculated to 32 bits, so
+no precision is lost.
+.PP
+.I Ptinrect
+returns 1 if
+.I p
+is a point within
+.IR r ,
+and 0 otherwise.
+.PP
+.I Raddp
+returns the Rectangle
+.BI Rect(add( r .origin,
+.IB p ),
+.BI add( r .corner,
+.IB p ))\fR;
+.I rsubp
+returns the Rectangle
+.BI Rect(sub( r .origin,
+.IB p ),
+.BI sub( r .corner,
+.IB p ))\fR.
+.PP
+.I RectXrect
+returns 1 if
+.I r
+and
+.I s
+share any point; 0 otherwise.
+.PP
+.I Rectclip
+clips in place
+the Rectangle pointed to by
+.I rp
+so that it is completely contained within
+.IR s .
+The return value is 1 if any part of
+.RI * rp
+is within
+.IR s .
+Otherwise, the return value is 0 and
+.RI * rp
+is unchanged.
+.SH SEE ALSO
+.IR types (9.5)
diff --git a/static/v10/man9/alloc.9 b/static/v10/man9/alloc.9
new file mode 100644
index 00000000..4a7374fc
--- /dev/null
+++ b/static/v10/man9/alloc.9
@@ -0,0 +1,93 @@
+.TH ALLOC 9.3
+.CT 2 mem_man
+.SH NAME
+alloc, free, balloc, bfree, gcalloc, gcfree \- allocate memory
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B char *alloc(nbytes)
+.B unsigned nbytes;
+.PP
+.B void free(s)
+.B char *s;
+.PP
+.B Bitmap *balloc(r)
+.B Rectangle r;
+.PP
+.B void bfree(b)
+.B Bitmap *b;
+.PP
+.B char *gcalloc(nbytes, where)
+.B unsigned long nbytes;
+.B char **where;
+.PP
+.B void gcfree(s)
+.B char *s;
+.SH DESCRIPTION
+.I Alloc
+corresponds to the standard C function
+.IR calloc ;
+see
+.IR malloc (3).
+It returns a pointer to a block of
+.I nbytes
+contiguous bytes of storage, or 0
+if unavailable.
+The storage is aligned on 4-byte boundaries
+and is cleared to zeros.
+.I Free
+frees storage allocated by
+.IR alloc .
+.PP
+.I Balloc
+returns a pointer to a Bitmap
+large enough to contain
+the Rectangle
+.IR r ,
+or 0
+for failure.
+The coordinate system inside the Bitmap is set by
+.IR r :
+the
+.B origin
+and
+.B corner
+of the Bitmap are those of
+.IR r .
+.I Bfree
+frees the storage associated with a Bitmap allocated by
+.IR balloc .
+.PP
+.I Gcalloc
+provides a simple garbage-compacting allocator.
+It returns a pointer to a block of
+.I nbytes
+contiguous bytes of storage, or
+0
+if unavailable.
+The storage is initialized to zeros.
+.I Where
+is a pointer to the user's data where the location of the
+block is to be saved.
+The return value of
+.I gcalloc
+is stored in
+.BI * where
+and will be updated after each compaction.
+Therefore, a program using
+.I gcalloc
+should never store the location of memory obtained from
+.I gcalloc
+anywhere other than
+.I where.
+Typically, this location is contained in a structure, such as a
+Bitmap
+.RI ( balloc
+uses
+.IR gcalloc ).
+.I Gcfree
+frees the storage block at
+.IR p .
+.SH SEE ALSO
+.IR types (9.5),
+.IR malloc (3)
diff --git a/static/v10/man9/bitblt.9 b/static/v10/man9/bitblt.9
new file mode 100644
index 00000000..28b4156c
--- /dev/null
+++ b/static/v10/man9/bitblt.9
@@ -0,0 +1,161 @@
+.TH BITBLT 9.3
+.CT 2 graphics
+.SH NAME
+Code, addr, bitblt, point, rectf, screenswap, segment, texture \- graphics functions
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B typedef int Code;
+.br
+.B "Code F_STORE, F_XOR, F_OR, F_CLR;
+.PP
+.B Word *addr(b, p)
+.B "Bitmap *b; Point p;
+.PP
+.B void bitblt(sb, r, db, p, f)
+.B "Bitmap *sb, *db; Rectangle r; Point p; Code f;
+.PP
+.B void point(b, p, f)
+.B "Bitmap *b; Point p; Code f;
+.PP
+.B void rectf(b, r, f)
+.B "Bitmap *b; Rectangle r; Code f;
+.PP
+.B void screenswap(b, r, s)
+.B "Bitmap *b; Rectangle r, s;
+.PP
+.B void segment(b, p, q, f)
+.B "Bitmap *b; Point p, q; Code f;
+.PP
+.B void texture(b, r, t, f)
+.B "Bitmap *b; Rectangle r; Texture *t; Code f;
+.SH DESCRIPTION
+The type
+.B Code
+tells the graphics primitives what
+operation perform.
+The possible values are:
+.nf
+.IP
+.de fx
+\f5\&\\$1 \fI\\$2 \&\f5\\$3\fI \\$4
+..
+.ta \w'\f5F_STORE\ 'u +\w'\fItarget 'u +\w'\f5&=\fI 'u
+.fx F_STORE target = source
+.fx F_OR target |= source
+.fx F_XOR target ^= source
+.fx F_CLR target &= ~source
+.fi
+.DT
+.PP
+In other words, if a
+Rectangle
+is copied to another place with Code
+.BR F_OR ,
+the result will be the bitwise
+OR of the contents of the source
+Rectangle
+and the target area.
+For operations with no explicit source, such as line drawing,
+the source is taken to be an infinite bitmap with zeros everywhere
+except on the object (e.g. line) generated by the operator,
+with coordinates aligned with the destination bitmap.
+.B F_STORE
+is the same as
+.B F_OR
+for non-rectangular operations.
+.PP
+.I Addr
+returns the address of the Word containing the bit
+at Point
+.I p
+in the Bitmap
+.IR b .
+.PP
+.I Bitblt
+(bit-block transfer)
+copies the data in Rectangle
+.I r
+in Bitmap
+.I sb
+to the congruent Rectangle with
+.I origin
+.I p
+in Bitmap
+.IR db .
+The nature of the copy is specified by the Code
+.IR f .
+.PP
+.I Point
+draws the pixel at location
+.I p
+in the Bitmap
+.I b
+according to
+.I Code
+.IR f .
+.PP
+.I Screenswap
+does an in-place exchange of the on-screen Rectangle
+.I s
+and the Rectangle
+.I r
+within the Bitmap
+.IR b .
+Its action is undefined if
+.I r
+and
+.I s
+are not congruent.
+The Rectangle
+.I s
+is not
+clipped to
+the Bitmap
+.IR b ,
+only to the screen.
+.PP
+.I Segment
+draws a line segment in Bitmap
+.I b
+from Point
+.I p
+to
+.IR q ,
+with Code
+.IR f .
+The segment is half-open:
+.I p
+is the first point of the segment and
+.I q
+is the first point beyond the segment,
+so adjacent segments sharing endpoints abut.
+Like all the other graphics operations,
+.I segment
+clips the line so that only the portion of the line intersecting the
+bitmap is displayed.
+.PP
+.I Texture
+draws, with function
+.I f
+in the Rectangle
+.IR r
+in Bitmap
+.IR b ,
+the
+Texture specified by
+.IR t .
+The texture is replicated to cover
+.IR r .
+.I Rectf
+is equivalent to
+.I texture
+with
+.I *t
+set to all one's.
+.PP
+In the above definitions, the type Bitmap may
+be replaced with Layer anywhere; see
+.IR newlayer (9.2).
+.SH SEE ALSO
+.IR types (9.5)
diff --git a/static/v10/man9/bitfile.9 b/static/v10/man9/bitfile.9
new file mode 100644
index 00000000..f31e2c9c
--- /dev/null
+++ b/static/v10/man9/bitfile.9
@@ -0,0 +1,74 @@
+.TH BITFILE 9.5
+.CT 1 comm_other
+.SH NAME
+bitfile \- format of bitmap file
+.SH DESCRIPTION
+Binary files produced by
+.IR blitblt (9.1)
+and other bitmap-generating programs
+are formatted as follows:
+.TP 12
+Byte no.
+Description
+.TP
+0, 1:
+Zero.
+.TP
+2, 3:
+.IR x -coordinate
+of the rectangle origin (low-order byte, high-order byte).
+.TP
+4, 5:
+.IR Y -coordinate
+of the rectangle origin (low-order byte, high-order byte).
+.TP
+6, 7:
+.IR x -coordinate
+of the rectangle corner (low-order byte, high-order byte).
+.TP
+8, 9:
+.IR Y -coordinate
+of the rectangle corner (low-order byte, high-order byte).
+.TP
+remainder:
+Compressed raster data.
+Each raster is exclusive-or'd
+with the previous one, and
+zero-extended (if necessary) to a 16-bit boundary.
+It is then encoded into
+byte sequences, each of which consists of a control byte followed by
+two or more data bytes:
+.TP 12
+Control
+Data
+.TP
+.IR n " (< 127)"
+.RI 2\(mu n
+bytes of raster data, running from left to right.
+.TP
+.BI "0x80+" n
+2 bytes of raster data, to be replicated from left to right
+.I n
+times.
+.LP
+There are also two
+.SM ASCII
+formats in current use.
+Textures and 16\(mu16 icons,
+as created by
+.IR icon (9.1),
+are encoded as a
+.B Texture
+declaration with initializer,
+to be copied unchanged into C program source; see
+.IR types (9.5).
+Faces and other large icons
+are without any surrounding C syntax.
+In either case, each scan line of the
+bitmap is a comma-separated list of C-style short
+hexadecimal constants; scan lines are separated by newlines.
+.SH "SEE ALSO"
+.IR blitblt (9.1),
+.IR icon (9.1),
+.IR types (9.5),
+.IR vismon (9.1)
diff --git a/static/v10/man9/blitblt.9 b/static/v10/man9/blitblt.9
new file mode 100644
index 00000000..fd690e91
--- /dev/null
+++ b/static/v10/man9/blitblt.9
@@ -0,0 +1,130 @@
+.TH BLITBLT 9.1
+.CT 1 comm_other
+.SH NAME
+blitblt, menudrop \- save or print a screen image
+.SH SYNOPSIS
+.B blitblt
+[
+.B -p
+.I command
+]
+.PP
+.B menudrop
+.SH DESCRIPTION
+.I Blitblt
+copies a selected area of a
+.IR mux (9.1)
+screen into a file
+or to a program.
+It is menu-driven off button 3 to select a
+rectangular area and to treat it by flipping the
+border from wide to narrow and back, inverting video,
+saving the selcted area in a file, or sending
+it to a program, usually for printing.
+Details of certain menu items:
+.nr xx \w'\f5sweep rectangle\f1'u+2n/1n
+.TP \n(xx
+.TP
+.B choose layer
+.br
+.ns
+.TP
+.B layer rectangle
+One gets the bits of a layer, obscured or not; the other
+gets screen bits including superposed layers.
+.TP
+.B run/halt
+Restart or stop the terminal
+process in the selected layer.
+.TP
+.B write file
+Write the selected area into a file or pipe in
+.IR bitfile (9.5)
+format.
+The filename is typed
+at the bottom of the
+.I blitblt
+layer.
+A bare newline repeats the previous name.
+If the first character is
+.LR | ,
+the remainder of
+the line is taken as a shell command to pipe into.
+(A likely command is
+.BR |lp
+for hard copy.)
+.TP
+.BI | " command"
+Pipe the selected area to the
+.I command
+specified by the
+.B -p
+option.
+.PP
+.I Menudrop
+may be used with
+.IR blitblt
+to make images containing `menus'
+as fraudulent overlaid layers.
+The program is menu-driven off button 3:
+.nr xx \w'\f5drop menu\f1'u+2n/1n
+.TP \n(xx
+.B drop menu
+A
+.RI non- mux
+menu selected in another window will be drawn
+and will remain on screen after
+the button selecting the menu has been released.
+Subsequent menu selections
+will delete the previous menu layer and create a new one.
+Once such a menu-bearing layer is present, the
+.I menudrop
+menu changes to allow cursor placement, highlighting of menu items,
+lifting of the displayed menu, etc.
+The functionality of the program using the menu is not affected.
+.TP
+.B mux menus
+The next click of button 1 or 2 will drop the corresponding (non-functional)
+.I mux
+menu at the mouse position.
+.TP
+.B exit
+.I Menudrop
+will exit in a clean manner.
+.SH EXAMPLES
+.TP
+.L blitlblt -p lp
+.br
+.ns
+.TP
+.L
+blitblt -p "lp -p bpost"
+Arrange for piping output to a laser printer: a good
+way, and a surefire way.
+.SH SEE ALSO
+.IR mbits (6),
+.IR bitfile (9.5)
+.SH BUGS
+Animated layers result in broken images.
+Use the
+.B halt
+function.
+.br
+If a pipe request fails, the
+.I blitblt
+layer becomes unusable.
+.br
+The default
+.I command
+for
+.L "write file"
+is obsolete.
+.br
+Deleting a
+.I menudrop
+layer, rather than exiting through the menu, can crash the terminal.
+.br
+Programs that use private menu packages are unaffected by
+.IR menudrop ;
+using a debugger to stop a program in midmenu may
+get the same effect.
diff --git a/static/v10/man9/blitmap.9 b/static/v10/man9/blitmap.9
new file mode 100644
index 00000000..be776d44
--- /dev/null
+++ b/static/v10/man9/blitmap.9
@@ -0,0 +1,191 @@
+.TH BLITMAP 9.7 seki
+.CT 1 inst_info graphics
+.SH NAME
+blitmap \- road maps and path finding
+.SH SYNOPSIS
+.B blitmap
+[
+.I option ...
+]
+.SH DESCRIPTION
+.I Blitmap
+displays road maps.
+It relies on the mouse to select regions, functions, and to give
+formats for typed commands.
+The metropolitan N.Y.-N.J. area is the default map.
+.IR Blitmap's
+screen consists of two frames,
+a large frame for plotting maps and printing messages to the user, and
+a one-line command frame at the bottom.
+.I Blitmap
+recognizes two commands from the keyboard,
+to designate a region and to scale or plot a route
+from one point to another.
+The commands, which may be typed at any time, follow.
+Here
+.I option
+is as in the command line.
+.HP
+[
+.I option ...
+]
+.B radius
+.I address
+[
+.BI , " town or zip
+]
+Plot an area with the given radius in miles around the
+.I address.
+.TP
+.B path
+[
+.I option ...
+]
+.B from
+.I address
+.B to
+.I address
+[
+.BI , " town or zip
+]
+Trace a route on a map and print traveling
+directions from point to point.
+.PP
+.I Address
+may be a number and street or an intersection such as,
+.L main and 10th
+or
+.LR "600 Mountain av,new providence" .
+.LP
+Button 3 Menu
+.TF Zoom-out
+.TP
+.B Regions
+Select which region to plot.
+Available regions are San Francisco, New York City and North Jersey,
+Washington, Los Angeles and Ann Arbor.
+.TP
+.B Zoom-in
+Using button 3 and the box icon, enclose the area desired and
+.I blitmap
+will plot a map of that area
+centered at the center of the drawn rectangle.
+.TP
+.B Zoom-out
+Enclose an area with a rectangle and the map shown will be reduced to the
+rectangle size and the rest of the map filled in. The center will be at the center
+of the drawn rectangle.
+.TP
+.B Center
+With button 3 point to new center. The radius will remain the same.
+.TP
+.B Prev. map
+.I Blitmap
+plots the previous frame.
+.TP
+.B To draw map
+.TP
+.B To find path
+Tell about the keyboard commands
+.TP
+.B Quit
+Confirm with button 3.
+.PD
+.PP
+Button 2 controls map editing functions.
+No editing is actually done, but
+by using
+the
+.B -f
+option, a file
+of changes will be written, which may be added to the actual database.
+.PP
+The options specify the algorithm of the path search and plotting choices:
+.TP
+.B -2
+Two ended search (default).
+.PD 0
+.TP
+.B -1
+One way search.
+.TP
+.B -b
+Breadth search.
+.TP
+.B -C
+Cyclists \- ignore costs for turns.
+.TP
+.B -F
+Stop at first route connect with breadth search.
+.TP
+.B -H
+Hierarchical search.
+(Give priority to major roads.)
+.TP
+.B -G
+In breadth search, ignore ones whose cost + dist >4/3 total airline distance.
+.TP
+.B -J
+Use precomputed routes.
+(Available from 600 mountain av,New Providence.)
+.TP
+.B -V
+Verbose directions (all intersections given).
+.TP
+.B -W
+Walkers \- no cost for turns and ignore one-way streets.
+.TP
+.B -A
+Print every possible label.
+.TP
+.B -B
+Print business names.
+.TP
+.BI -MI x
+Forces a detailed street plot for maps whose radius is greater than 10,000 ft.
+.TP
+.B \-b
+Don't print boundaries.
+.TP
+.BI -i x
+Plot only streets with importance
+.RI > x ;
+.IR x =0
+is default.
+.TP
+.B -j
+Do sketch map only.
+.TP
+.B -l
+Don't print labels.
+.TP
+.B -r
+Don't print railroads.
+.TP
+.B -s
+Don't print streets.
+.TP
+.B -w
+Don't print waterways.
+.PD
+.SH FILES
+.TF /n/seki/usr/rje/BLIT/term/term
+.TP
+.F /n/seki/usr/rje/BLIT/term/term
+terminal support program
+.TP
+.F /n/seki/m?/map/*
+map files
+.SH BUGS
+Since the data bases have not been checked and many streets are not connected,
+some paths may be circuitous.
+There are no connecting roads
+from N.J into N.Y or from Middlesex county into Union.
+The routing programs
+will churn, trying to find a through street and will not give up.
+.br
+There are
+no one-way tags on the streets.
+.br
+.I Blitmap
+does not know if it has been reshaped.
diff --git a/static/v10/man9/brfs.9 b/static/v10/man9/brfs.9
new file mode 100644
index 00000000..c1188486
--- /dev/null
+++ b/static/v10/man9/brfs.9
@@ -0,0 +1,27 @@
+.TH BRFS 9.8
+.SH NAME
+brfs \- browse file system
+.SH SYNOPSIS
+.B /etc/brfs
+[
+.I filesystem
+]
+.SH DESCRIPTION
+.I Brfs
+examines a
+.I filesystem
+using a
+.I pads (9.5)
+interface, in the manner of
+.IR pi (9.1).
+It requires license
+.BR T_NOCHK ;
+see
+.IR getplab (2).
+.PP
+The top level menu inspects the superblock and gives access to
+other blocks by block number in the file system interpreted
+as inode blocks, directory blocks, indirect blocks or ascii blocks.
+.PP
+.SH SEE ALSO
+.IR filsys (5)
diff --git a/static/v10/man9/brush.9 b/static/v10/man9/brush.9
new file mode 100644
index 00000000..06a9a4ac
--- /dev/null
+++ b/static/v10/man9/brush.9
@@ -0,0 +1,301 @@
+.TH BRUSH 9.1
+.CT 1 games
+.SH NAME
+brush \- painting program
+.SH SYNOPSIS
+.B brush
+[
+.B -f
+.I fontdir
+]
+[
+.B -p
+.I picdir
+]
+[
+.B -t
+.I texdir
+]
+.SH DESCRIPTION
+.I Brush
+paints images under mouse control.
+Options are
+.TP
+.B -f
+font directory
+.RF ( /usr/jerq/font
+by default)
+.PD 0
+.TP
+.B -p
+the directory in which to keep pictures
+(current directory by default)
+.TP
+.B -t
+texture directory, where brushes and shades live
+(current directory by default)
+.PD
+.PP
+In general, button 1 draws, button 2 erases;
+the cursor assumes the shape of the current brush.
+Button 3 is used to select options, sweep out areas,
+or cancel operations in progress.
+.PP
+The borders on either side of the drawing area contain menus of
+available shades and brushes.
+The current brush and shade are outlined by boxes.
+To choose another, click button 3 at it.
+.PP
+The top border contains
+a help area,
+drawing options,
+and certain commands.
+Selections are made by pointing with button 3.
+Some cycle through options; others bring up menus.
+The items are:
+.TP
+help
+Icons in three boxes indicate what buttons
+1, 2, and 3 will do at any given time:
+.PD
+.IP
+.nf
+.ta \w'\f5square with arrow 'u
+paintbrush draw with this button
+pencil eraser erase with this button
+menu with cursor menu on this button
+thumbs down cancel or finish an operation
+pointing hand indicate a point
+square with arrow sweep a rectangle
+circle with arrow sweep a circle
+skull exit the program
+.fi
+.DT
+.TP
+smooth
+Smooth the contours of magnified images.
+.TP
+align
+Force circles, discs, text, and other images
+to align with texture cell boundaries.
+.TP
+.B image
+Manipulate the
+`current image',
+(box, ellipse, etc.)\&
+selected from the drawing menu described below.
+Button 3 makes the image disappear, reserved for future use.
+The image menu contains:
+.RS
+.TF magnify
+.TP
+.B same
+Bring back the current image.
+.TP
+.B magnify
+Sweep a rectangle indicating the
+size of the magnified image.
+The numbers that appear are horizontal and vertical
+magnification factors.
+.TP
+.B shrink
+Shrink to 1/4 size.
+Indicate whether image is shaded or black & white.
+.TP
+.B flip
+Reflect left-right or top-bottom.
+.TP
+.B rotate
+Rotate counterclockwise or clockwise 90 degrees.
+.TP
+.B slant
+Drag the current image rectangle into a parallelogram.
+.TP
+.B outline
+Replace the current image with its outline.
+.TP
+.B shadow
+Draw a `shadow' behind the current image.
+.TP
+.B shadow
+Draw a `shadow' behind the current image.
+.TP
+.B new
+Make a new image by copying a rectangular portion of the screen.
+.RE
+.PD
+.TF Smooth
+.IP
+To move an image on the screen, select
+.B new
+from the
+.B image
+menu.
+Sweep the area to be moved, click button 2 to erase it,
+move it, and click button 1 to draw it.
+.PD
+.TP
+drawing style
+Select continuous curves, dotted lines,
+disconnected dots, or an `airbrush' effect when painting.
+.PD 0
+.TP
+constrain
+Select freehand (wavy-line icon) or
+horizontal-vertical drawing (angular icon).
+.PD
+.TP
+reflect
+Draw symmetric figures.
+The icon shows the symmetries:
+.B x=0
+(left-right),
+.B y=0
+(top-bottom),
+or
+.BR both ,
+relative to the center of the screen.
+.PD0
+.TP
+draw mode
+Set the drawing mode to one of
+.BR or ,
+.BR xor ,
+.BR store ,
+.BR and ,
+.B copy
+(preserves interior whitespace of images).
+.TP
+text style
+Set the text style to one of
+.BR normal ,
+.BR outline ,
+.BR bold ,
+.BR shadow ,
+.BR italic .
+.TP
+font name
+Set the text font.
+Menu selection
+.B new
+prompts for a font name
+from the font directory.
+.PD
+.TP
+.B i/o
+Interact with host machine.
+Menu items are:
+.PD 0
+.RS
+.TF recall
+.TP
+.B save
+Copy screen, brushes, or shades to a file.
+Prompts for a file name, starting with the default picture
+directory (if any).
+Backspace past this if you wish to save elsewhere;
+hit return to quit.
+Next sweep a rectangle to be saved.
+Bitmaps are saved in
+.IR bitfile (9.5)
+format.
+.TP
+.B recall
+Prompts for a file name.
+The recalled picture becomes the
+current image.
+.TP
+.B exit
+Leave the program.
+Confirm by
+two clicks on button 3.
+.PD
+.RE
+.PP
+The menu on button 3 in the drawing area contains these selections:
+.TF Smooth
+.TP
+.B lines
+Indicate first point, then position cursor with rubber band line
+for subsequent lines.
+Button 1 draws, button 2 erases.
+.PD
+.TP
+.B curves
+Indicate first control point, then position cursor with rubber band line
+for subsequent control points.
+A curve (spline) will be drawn (erased) using these control points,
+depending on whether the last button hit is button 1 (draw), or button 2 (erase).
+.PD 0
+.TP
+.B box
+.TP
+.B ellipse
+.TP
+.B disc
+(A disc is a filled ellipse).
+Sweep a rectangle;
+numbers show the dimensions.
+A single dot marks the center of an ellipse.
+The image becomes the current image;
+use buttons 1 and 2 to draw or erase with it.
+.PD
+.TP
+.B string
+Type in text.
+The string becomes the current image.
+.TP
+.B texture
+Sweep a rectangle.
+The current image
+becomes a rectangle of this size textured with current shade.
+.TP
+.B fill
+Sweep a rectangle, then indicate interior seed points
+using button 1, or button 3 to quit.
+Enclosed regions will be filled with current shade.
+Any button cancels the fill.
+.PD 0
+.TP
+.B clear
+.TP
+.B invert
+Sweep a rectangle to be cleared or color-inverted.
+.PD
+.TP
+.B fade
+Sweep a rectangle.
+Holding button 2 will fade this area, as if
+erasing in
+spray paint mode with
+a random pattern instead of a shade.
+.PD 0
+.TP
+.B new brush
+.TP
+.B new shade
+Menu select whether to edit or snarf from screen (with button 3).
+If editing,
+the current brush (shade) will appear magnified in upper left corner.
+Edit with buttons 1 and 2, quit with 3.
+Several `spare' brushes appear at the bottom of the brush menu.
+.PD
+.TP
+.B details
+Select an area with box cursor to be magnified for detailed editing.
+.PD
+.SH "SEE ALSO"
+.IR paint (9.1),
+.IR mbits (6),
+.IR bitfile (9.5)
+.SH BUGS
+The smoothing operation fully smooths only
+for magnification factors that are powers of two.
+.br
+Bitmaps moved off the top or bottom
+of the physical screen can pick up noise.
+.br
+.B Copy
+mode generates a mask the first time a given image is moved.
+This can take a while for large images.
+Be patient.
diff --git a/static/v10/man9/button.9 b/static/v10/man9/button.9
new file mode 100644
index 00000000..3699192d
--- /dev/null
+++ b/static/v10/man9/button.9
@@ -0,0 +1,108 @@
+.TH BUTTON 9.2
+.CT 2 comm_term
+.SH NAME
+button123, mouse, cursallow, cursinhibit, cursset, cursswitch, getrect123 \- mouse control
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B extern struct Mouse {
+.br
+.B " Point xy;
+.br
+.B " short buttons;
+.br
+.B } mouse;
+.PP
+.B int button(n)
+.B int n;
+.br
+.B int button1(), button2(), button3();
+.br
+.B int button12(), button23(), button123();
+.PP
+.B void cursinhibit();
+.br
+.B void cursallow();
+.PP
+.B void cursset(p);
+.B Point p;
+.PP
+.B Texture *cursswitch(t);
+.B Texture *t;
+.PP
+.B Rectangle getrect(n)
+.B int n;
+.br
+.B Rectangle getrect1(), getrect2(), getrect3();
+.br
+.B Rectangle getrect12(), getrect23(), getrect123();
+.SH DESCRIPTION
+When the mouse is requested
+(see
+.IR request (9.2)),
+the mouse state is updated asynchronously in the structure
+.BR mouse .
+The coordinates of the mouse are held in
+.BR mouse.xy ,
+and the state of the buttons in
+.BR mouse.buttons .
+Each process's
+.B mouse
+structure is independent of the others, so that
+(except for
+.IR cursset )
+actions such as
+changing the tracking cursor do not affect the mouse in
+other processes.
+.PP
+The macro
+.I button
+and its counterparts return the state of the associated mouse button:
+non-zero if the button is depressed, 0 otherwise.
+The buttons are numbered 1 to 3 from left to right.
+.I Button12
+and the other multi-button functions return the
+OR
+of their states: true if either button 1 or
+button 2 is depressed.
+.PP
+.I Cursinhibit
+turns off interrupt-time cursor tracking
+(the drawing of the cursor on the screen),
+although the mouse coordinates are still kept current
+and available.
+.I Cursallow
+enables interrupt-time cursor tracking.
+.I Cursallow
+and
+.I cursinhibit
+stack: to enable cursor tracking after two calls to
+.IR cursinhibit ,
+two calls to
+.I cursallow
+are required.
+.PP
+.I Cursset
+moves the mouse cursor to the Point
+.I p.
+.PP
+.I Cursswitch
+changes the mouse cursor (a 16\(mu16 pixel image) to that specified by the
+Texture
+.BI * t.
+If the argument is
+.BR (Texture*)0 ,
+the cursor is restored to the default arrow.
+.I Cursswitch
+returns the previous value of the cursor: the argument of the previous
+call to
+.I cursswitch.
+.PP
+.I Getrect
+prompts the user with a box cursor and waits for a
+rectangle to be swept out with the named button,
+identified as with the
+.I button
+primitives.
+It returns the screen coordinates of the box swept.
+The box may be partly or wholly outside the process's layer.
diff --git a/static/v10/man9/cip.9 b/static/v10/man9/cip.9
new file mode 100644
index 00000000..c8e1109c
--- /dev/null
+++ b/static/v10/man9/cip.9
@@ -0,0 +1,58 @@
+.TH CIP 9.1
+.CT 1 writing_troff graphics
+.SH NAME
+cip \- draw pictures for typesetting
+.SH SYNOPSIS
+.B cip
+.SH DESCRIPTION
+.I Cip
+prepares or modifies
+.IR pic (1)
+descriptions, which may subsequently be typeset.
+It provides a palette of
+shapes: box, circle, ellipse, line, arc, spline, and text.
+Button 1 selects shapes from the palette or the screen.
+Button 2 places or redraws
+.RL ( edit ,
+.LR move )
+shapes.
+Button 3 controls menus.
+.PP
+File names and text strings are entered from the keyboard.
+Keyboard input always ends with a newline.
+A current file name is remembered and offered for
+file operations; backspace over it to substitute
+a new name, or type newline to accept it.
+.PP
+The
+.L define macro
+menu item allows a box to be swept, collecting all contained shapes
+into a group.
+Groups are selected as whole.
+When a group is selected, a special menu appears.
+Item
+.L separate
+dissolves the group;
+.L reflect x
+reflects about a horizontal midline; after
+.L copy
+button 2 places copies at the cursor.
+Item
+.L edit
+confines activity to the group.
+Changes are reflected in all copies of the group.
+To leave the group, click button 1 at
+.LR "edit depth" .
+.SH SEE ALSO
+.IR pic (1),
+.IR ped (9.1)
+.br
+Sally A. Browning,
+`Cip User's Manual: One Picture is Worth a Thousand Words',
+this manual, Volume\ 2
+.SH BUGS
+.I Cip
+cannot handle arbitrary
+.I pic
+programs, just programs in the style
+that it produces.
diff --git a/static/v10/man9/circle.9 b/static/v10/man9/circle.9
new file mode 100644
index 00000000..0ae1f68c
--- /dev/null
+++ b/static/v10/man9/circle.9
@@ -0,0 +1,78 @@
+.TH CIRCLE 9.3
+.CT 2 graphics
+.SH NAME
+circle, disc, arc, ellipse, eldisc, elarc \- circle-drawing functions
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B void circle(bp, p, r, f)
+.B "Bitmap *bp; Point p; int r; Code f;
+.PP
+.B void disc(bp, p, r, f)
+.B "Bitmap *bp; Point p; int r; Code f;
+.PP
+.B void arc(bp, p0, p1, p2, f)
+.B "Bitmap *bp; Point p0, p1, p2; Code f;
+.PP
+.B void ellipse(bp, p, a, b, f)
+.B "Bitmap *bp; Point p; int a, b; Code f;
+.PP
+.B void eldisc(bp, p, a, b, f)
+.B "Bitmap *bp; Point p; int a, b; Code f;
+.PP
+.B "void elarc(bp, p0, a, b, p1, p2, f)
+.B "Bitmap *bp; Point p0, p1, p2; int a, b; Code f;
+.SH DESCRIPTION
+.I Circle
+draws the best approximate circle of radius
+.I r
+centered at Point
+.I p
+in the Bitmap
+.I bp
+with Code
+.IR f .
+The circle is guaranteed to be symmetrical about the horizontal,
+vertical and diagonal axes.
+.I Disc
+draws the corresponding disc.
+.PP
+.I Arc
+draws a circular arc centered on
+.IR p0 ,
+traveling counter-clockwise
+from
+.I p1
+to the point on the circle closest to
+.IR p2 .
+.PP
+.I Ellipse
+draws an ellipse centered at
+.I p
+with horizontal semi-axis
+.I a
+and vertical semi-axis
+.I b
+in Bitmap
+.I bp
+with Code
+.IR f .
+.IR Eldisc
+draws the corresponding elliptical disc.
+.I Elarc
+draws the corresponding elliptical arc, traveling
+counter-clockwise from the ellipse point closest to
+.I p1
+to the point closest to
+.IR p2 .
+(Beware the regrettable difference between the calling conventions for
+.I arc
+and
+.IR elarc .)
+.SH BUGS
+When an endpoint of an arc lies near a tail of
+an ellipse so thin that its ends degenerate into
+straight lines,
+.I elarc
+does not try to distinguish which side of the tail the
+point belongs on.
diff --git a/static/v10/man9/cos.9 b/static/v10/man9/cos.9
new file mode 100644
index 00000000..060896d9
--- /dev/null
+++ b/static/v10/man9/cos.9
@@ -0,0 +1,59 @@
+.TH COS 9.3
+.CT 2 math
+.SH NAME
+cos, sin, atan2, sqrt, norm \- integer math functions
+.SH SYNOPSIS
+.B int cos(d)
+.B int d;
+.PP
+.B int sin(d)
+.B int d;
+.PP
+.B int atan2(x, y)
+.B int x, y;
+.PP
+.B int norm(x, y, z)
+.B int x, y, z;
+.PP
+.B int sqrt(x)
+.B long x;
+.PP
+.SH DESCRIPTION
+.I Cos
+and
+.I sin
+return scaled integer approximations to the trigonometric functions.
+The argument values are in degrees.
+The return values are scaled so that
+.BR cos(0)==1024 .
+Thus, to calculate the mathematical expression
+.if t .IR x \|=\| a\^ cos( d ),
+.if n .IR x = x0 *cos( d ),
+the multiplication must be scaled:
+.IP
+.L
+x = muldiv(x0, cos(d), 1024)
+.PP
+.I Atan2
+returns the approximate arc-tangent of
+.IR y / x .
+The return value is in integral degrees.
+.PP
+.I Sqrt
+returns the 16-bit signed integer closest to the
+square root of its 32-bit signed argument.
+.PP
+.I Norm
+returns the Euclidean length of the three-vector
+.RI ( x ,
+.IR y ,
+.IR z ).
+.SH DIAGNOSTICS
+.I Sqrt
+returns 0 for negative arguments; and
+.BR atan2(0,0)==0.
+.IR Norm
+does not protect against overflow.
+.SH BUGS
+.I Atan2
+may be off by as much as two degrees.
diff --git a/static/v10/man9/crabs.9 b/static/v10/man9/crabs.9
new file mode 100644
index 00000000..edf2fc93
--- /dev/null
+++ b/static/v10/man9/crabs.9
@@ -0,0 +1,52 @@
+.TH CRABS 9.6
+.CT 1 games
+.SH NAME
+crabs \- graphical marine adventure game
+.SH SYNOPSIS
+.B crabs
+[
+.B -i
+]
+[
+.B -s
+.I duration
+]
+[
+.B -v
+.I velocity
+]
+[
+.I number
+]
+.SH DESCRIPTION
+In
+.IR crabs ,
+difficult situations are encountered in trying to kill or capture
+crustaceans swarming in a murky sea.
+You will have to work very
+rapidly to keep your territory free of seabed intruders.
+At first,
+you may even find it hard to keep a clear view of your surroundings, but
+later discoveries about the spirit of the game will suggest a solution.
+.PP
+There are several options.
+.TP
+.B -i
+causes the intruders to play intelligently, allowing them to avoid detection.
+.TP
+.B -s
+simplifies the game for the first
+.I duration
+time intervals.
+Default is 0.
+5-10 is recommended for beginners, although
+you may want to forgo this option the first time, just to see how interesting
+it can get.
+.TP
+.B -v
+adjusts the velocity of the crabs, 1 being fastest.
+Default is 5.
+.PP
+.I Number
+specifies the number of intruders.
+Default is 30.
diff --git a/static/v10/man9/demo.9 b/static/v10/man9/demo.9
new file mode 100644
index 00000000..33071fec
--- /dev/null
+++ b/static/v10/man9/demo.9
@@ -0,0 +1,37 @@
+.TH DEMO 9.6
+.CT 1 games
+.SH NAME
+demo, swar, pacman \- graphic demonstrations and games
+.SH SYNOPSIS
+.B demo
+[
+.I name
+]
+.SH DESCRIPTION
+If a demo is named,
+.I demo
+runs it, otherwise
+.I demo
+produces a list of what's available.
+.PP
+Games that permit interaction are often controlled by the mouse;
+experiment to find out what it does.
+Some less obvious interactions are listed below.
+.PP
+.I Swar
+is a two-player game.
+One player uses the
+.L asdwx
+keys,
+the other
+.L 12350
+keys on the keypad.
+.PP
+.I Pacman
+is controlled by the
+.L hjkl
+keys or the mouse.
+.SH SEE ALSO
+.IR crabs (9.6)
+.SH BUGS
+Some of the programs don't play fair.
diff --git a/static/v10/man9/face.9 b/static/v10/man9/face.9
new file mode 100644
index 00000000..ea8ff139
--- /dev/null
+++ b/static/v10/man9/face.9
@@ -0,0 +1,86 @@
+.TH FACE 9.7
+.CT 1 inst_info graphics
+.SH NAME
+face, mugs \- show faces, make face icons from pictures
+.SH SYNOPSIS
+.B face
+.IB machine ! user
+.I file ...
+.PP
+.B mugs
+[
+.B -a
+]
+.SH DESCRIPTION
+.I Face
+displays the 48\(mu48 bit icons specified by its arguments.
+If an argument contains an exclamation mark,
+it is assumed to be a machine and user pair
+and is looked up in the face file system,
+.IR faced (9.5);
+otherwise it is taken to be a file name.
+If the file does not exist and contains no slashes,
+it is looked up in
+.FR /n/face/48x48x1 .
+.PP
+When
+.IR face 's
+layer is full, it waits for a character to be typed before continuing.
+.PP
+.I Mugs
+interactively converts grey-scale images in
+the form of
+.IR picfile (5)
+into 48\(mu48 icons for display by
+.I face
+and
+.IR vismon (9.1).
+It prompts for the name of a picture file,
+displaying a large approximation to the original picture
+and a matrix of 48\(mu48 icons of varying contrast and
+brightness. Button 1 selects one of the 48\(mu48's.
+Button 3 presents a menu with entries:
+.TP
+.B window
+Select a square window in the large picture using button 3.
+Touch down at
+the top and center of the square and slide around to adjust its size.
+Appropriately cropped 48\(mu48's will be displayed.
+.TP
+.B in
+Zoom in on a smaller part of contrast-brightness space, displaying
+an array of 48\(mu48's that look more-or-less like the selected one.
+Repeated
+.BR in s
+will zoom in farther.
+.TP
+.B out
+Opposite of
+.BR in .
+.TP
+.B save
+Type in the name of a file in which to save the currently selected 48\(mu48.
+.TP
+.B read
+Type in the name of a picture file containing the next face to process.
+.TP
+.B exit
+Confirm with button 3.
+.PP
+Option
+.B -a
+indicates that picture files have non-square pixels with
+aspect ratio 1.25, as produced by the ITI frame-grabber attached
+to kwee.
+Normally pixels are assumed to be square.
+.SH EXAMPLES
+.TP
+.L
+face /n/face/coma/*/48x48x1
+All the users of coma.
+.SH SEE ALSO
+.IR faced (9.5),
+.IR icon (9.1),
+.IR vismon (9.1),
+.IR imscan (1),
+.IR picfile (5)
diff --git a/static/v10/man9/faced.9 b/static/v10/man9/faced.9
new file mode 100644
index 00000000..5078be51
--- /dev/null
+++ b/static/v10/man9/faced.9
@@ -0,0 +1,179 @@
+.TH FACED 9.5
+.CT 1 sa_auto
+.SH NAME
+faced \- network face server
+.SH SYNOPSIS
+.B /usr/net/face.go
+.SH DESCRIPTION
+The network face server provides a database of 48\(mu48 bit icons
+and other facial representations.
+It is implemented as a network file system similar to
+.IR netfs (8).
+.PP
+The file system, conventionally mounted on
+.BR /n/face ,
+has a fixed three-level hierarchy.
+The first level is a machine name,
+the second level a user name,
+and the third level a resolution.
+Thus the file
+.F /n/face/kwee/pjw/48x48x1
+is the standard face icon (for user pjw) on machine kwee:
+.LP
+.ce 1000
+.nf
+.ps 6
+.ft H
+.tr x.
+.tr -
+.cs H 5
+.vs 8u
+-------------------xxxxxx-x---------------------
+-----------------xxxxxxxxxxxxx------------------
+----------------xxxxxxx-xxxxxxxx----------------
+---------------xx-xxxxxxx-xxxxxxxx--------------
+---------------xxxx-xxxxxxxxx-x-xxx-------------
+--------------x---------xxxxxxxxxxxxx-----------
+--------------x----------xxxxxxxxxxxxxxxx-------
+---------------------------xxxxx-xxxxxx---------
+------------xx-------------xxxxxxxxxxxxxxx------
+---------------------------x-x-xxxxxxxxxxx------
+----------xx---------------xxxxxxxxxxxxxxxxx----
+---------xxx----------------xxxxxxxxxxx-x-xx----
+--------xx-------------------xxxxxxxxxxxxxxxx---
+--------xxx------------------xxxxxxxxxxxxxx-x---
+-------xxxx-------------------xxxxxxxxxxxxxxx---
+------xxxx---------------------xxxxxxxxxxxxxx---
+------xxxxx--------------------xxxxxxxxxxxxxx---
+-----xxxxx----x-x---------------xxxxxxxxxxxx----
+----xxxxxxxxx-x-xxxxx-----xxxxxxx-xxxxxxxxxxx---
+----xxxxxxx------xxxxx---xx--xxxxxxxxxxxxxxxx---
+---xxxxxxxxx---xxxx-xxxxxxxxx--x-xxxxxxxxxxxx---
+---xxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx---
+---xxxxxxxxx-x-xx-x--x--xxxxxxxxxxxxxxxxxxxxx---
+---xxxxxxx-x------x--x---xxxxxxxxxxxxxxxxxxx----
+----xxxxxxx-----x--------x---x-xxxxxxxxxxxxx----
+---xxxxxx-x---------x----xxx------xxxxxxxxxx----
+------xx--x--------------xx-----xx-xxxxxxxx-----
+----x-xxx----------x------xx-------xxxxxx-------
+-------xx------x-xx--------xxxxxxxxx-xxxx-------
+--------x----x-x-x-------x-xx-x--x-xxxxx--------
+--------------------x-xxxxxxx-xxxxxxxxxx--------
+-------xx----------xxxxxxxx-x---xxx-xxx---------
+------xxx------------xxxxxxx--x-x-xxxxx---------
+-------xx-----x-------xxxx-x-x-xxxx-xxxxxx------
+--------x----------------xxx-x-x-xxxxxxxx-------
+-------xxx-----xxx-x-x-xxx-xxx-x-x--xxxxx-------
+--------xx-----x-x-x-xxxxxxxxxxxxxxxxxxxx-------
+---------x----------------xxx--x-xxxxxxx--------
+---------xx--------------xx-x-xxxx--xxx---------
+-------------x-----xxxxxxxx-x-xx-xx-------------
+---------------------xxxxxxxxxxxxxxxx-----------
+--------------x------------x-x-xx-x-------------
+-------------------------x-x-xxxxx--------------
+--------------x-----------xxxxxx-x--------------
+----------------x--------x--x-xxxx--------------
+--------------x-x-xxx-xxxxxxxxx-x---------------
+----------------x---xxxxxxxxx-xxxx--------------
+---------------x-xxxx-x-x-xxxxxxxx--------------
+.tr --
+.tr xx
+.fi
+.vs
+.ps
+.ce 0
+.ft
+Many local users also have 512\(mu512 byte high-resolution faces, named
+.BR 512x512x8 .
+Other resolutions may also be present for a particular face.
+One-bit images are stored in the format used by
+.IR icon (9.1);
+eight-bit images are arrays of bytes.
+The directories for machines sharing a user community, such as those on
+a Datakit node, are linked together and given a name appropriate to the
+community. For example,
+.B /n/face/kwee
+is a link to
+.BR /n/face/astro .
+.PP
+To access the face for a mail name
+.IB machine ! uid
+take the result of the first successful open from the following list of files:
+.IP
+.EX
+/n/face/machine/uid/48x48x1
+/n/face/misc./uid/48x48x1
+/n/face/machine/unknown/48x48x1
+/n/face/misc./unknown/48x48x1
+.EE
+.PP
+The directory
+.BR misc .\&
+holds faces for generic users such as
+.L root
+and
+.LR uucp .
+The face server is made available on a machine by running
+.B /usr/net/face.go
+from
+.IR rc (8).
+.PP
+The face server data is administered by a pair of
+.SM ASCII
+files that associate related
+machines and faces.
+The machine table
+.L machine.tab
+attaches machines to communities; in it the line
+.IP
+.B kwee=astro
+.PP
+puts machine
+.L kwee
+in community
+.LR astro .
+The people table
+.L people.tab
+associates a machine/user pair in the
+face server with a file in one of the source directories
+.F /n/kwee/usr/jerq/icon/face48
+or
+.FR /n/kwee/t0/face/512x512x8 .
+Thus
+.IP
+.B astro/pjw=pjweinberger
+.PP
+causes the images stored in source files named
+.L pjweinberger
+to be available in the face server in directory
+.BR /n/face/astro/pjw .
+As well, each disk file used by the face server is linked
+(by its original name) into the directory
+.B /n/face/48x48x1
+or
+.B /n/face/512x512x8
+for easy access to all the images.
+.SH FILES
+.TF /n/kwee/usr/net/face/machine.tab
+.TP
+.F /n/kwee/usr/jerq/icon/face48
+directory of low resolution faces
+.TP
+.F /n/kwee/t0/face/512x512x8
+directory of high resolution faces
+.TP
+.F /n/kwee/usr/net/face/people.tab
+people/file equivalences
+.TP
+.F /n/kwee/usr/net/face/machine.tab
+machine/community equivalences
+.SH SEE ALSO
+.IR netfs (8),
+.IR face (9.7),
+.IR icon (9.1),
+.IR vismon (9.1)
+.SH BUGS
+After updating the tables, an indeterminate time may pass before the
+new faces are available.
+.br
+All face server files are unwritable.
diff --git a/static/v10/man9/flickfile.9 b/static/v10/man9/flickfile.9
new file mode 100644
index 00000000..f8726fe5
--- /dev/null
+++ b/static/v10/man9/flickfile.9
@@ -0,0 +1,86 @@
+.TH FLICKFILE 9.5
+.CT 1 comm_term
+.SH NAME
+movies \- graphics movie file formats
+.SH DESCRIPTION
+Movie files are generated by
+.I preflicks
+and used by
+.IR fflicks ;
+see
+.IR flicks (9.1).
+The format of a movie files is:
+.IP
+.EX
+struct Header {
+ unsigned char version;
+ short header_length;
+ short nr_frames;
+ unsigned char nr_tables;
+ struct LOOKUP_TABLE {
+ short number_of_entries;
+ struct {
+ short count;
+ unsigned char value;
+ } table[256];
+ } Table[nr_tables];
+};
+struct Frame {
+ short width, height;
+ short compacted_length;
+ unsigned char which_table;
+ unsigned char data[compacted_length];
+} Frame[nr_frames];
+.EE
+Each
+.B short
+in the above structure is present as a two-byte number in the
+file, most significant byte first.
+Each
+.B "unsigned char"
+is a single byte.
+.TP
+.B version
+software version number, to
+ensure compatibility between producer and consumer
+of the file.
+.PD0
+.TP
+.B header_length
+total length in bytes of the lookup table(s)
+used to encode the file plus three bytes (the next three that follow).
+.TP
+.B nr_frames
+total number of movie frames in the file.
+.TP
+.B nr_tables
+number of lookup tables.
+.TP
+.B nr_entries
+number of entries in the lookup table (maximum 256).
+.TP
+.B count
+.B value
+pixel value and a count of
+how many times that value is to be repeated.
+.PD
+.PP
+Immediately following the lookup tables begin the frames
+encoded in an indirect run-length code.
+Each frame is described by
+.BR width ,
+.BR height ,
+and the
+.B compacted_length
+of the frame in bytes.
+The frame is coded in raster-scan order
+as a sequence of indexes into
+the table numbered
+.BR which_table
+(counting from 0).
+.SH FILES
+_movie
+.SH "SEE ALSO"
+.IR flicks (9.1),
+.IR pico (1),
+.IR rebecca (9.1)
diff --git a/static/v10/man9/flicks.9 b/static/v10/man9/flicks.9
new file mode 100644
index 00000000..4b044770
--- /dev/null
+++ b/static/v10/man9/flicks.9
@@ -0,0 +1,138 @@
+.TH FLICKS 9.1
+.CT 1 comm_term
+.SH NAME
+flicks, fflicks, preflicks, 2mux \- movie graphics for 5620
+.SH SYNOPSIS
+.B flicks
+[
+.B -fmte
+]
+.I file ...
+.PP
+.B preflicks
+[
+.B -fmtvloics
+]
+.I file ...
+.PP
+.B fflicks
+[
+.I flickfile
+]
+.SH DESCRIPTION
+.I Flicks
+interprets each of the
+.I files
+as a grey-scale frame in the form of
+.IR picfile (5)
+(or a square raster of unsigned bytes),
+dithers them, and displays them on the terminal.
+Once the frames have been downloaded the frames can be played
+as a movie, controlled by a menu on button 3.
+Most menu selections are self-explanatory.
+.I Step
+shows individual frames,
+stepping forward with button 1, or backward with button 2.
+Button 3 brings back the main menu.
+.PP
+The size of a frame is an option:
+.TP
+.B -f
+full size: same size as the input (typically 512\(mu512)
+.TP
+.B -m
+medium size: half the input size (typically 256\(mu256) default
+.TP
+.B -t
+tiny size: quarter of the input size (typically 128\(mu128)
+.PD
+.PP
+If only one image is processed, full size is the default. For more
+than 11 pictures, tiny size is default. Anything in between is
+medium size by default.
+.PP
+The frames are rendered with dithering by default,
+and with error propagation if
+.B -e
+is specified.
+.PP
+.I Fflicks
+downloads frames
+that have been preprocessed by
+.IR preflicks
+into a
+.I flickfile.
+.I Fflicks
+downloads much faster than
+.I flicks.
+.PP
+The options for
+.I preflicks
+include
+.BR -f ,
+.BR -m ,
+and
+.B -t
+as for
+.I flicks,
+plus
+.TP
+.B -l
+Use logarithmic dither.
+.TP
+.B -v
+Chatter on standard error.
+.TP
+.B -o
+Write the flickfile onto standard output;
+by default output goes into file
+.BR _movie .
+.TP
+.B -i
+Print a summary of the contents of
+the flickfiles.
+.TP
+.B -c
+Catenate named flickfiles onto the standard output.
+.TP
+.BI -s X , Y
+the (one only) input file is assumed to be a sequence of
+.IR X\(muY -byte
+frames.
+If
+.I X
+and
+.I Y
+may be omitted, 512\(mu512 is assumed.
+.PP
+.I Fflicks
+display is controlled by a menu on button 3.
+The selection `movie rate' tries to run the display at 24 frames/sec.
+.PP
+Frames prepared with
+.I preflicks
+are compacted.
+Thus
+.I fflicks
+can play a longer sequence than
+.IR flicks :
+up to roughly 120 medium sized or 480 tiny frames (20 seconds of movie).
+Still longer sequences (about twice as long) can be downloaded if
+.I fflicks
+is run within
+.I 2mux
+instead of
+.I mux.
+The price of compaction is speed.
+Menu selections are available
+for uncompacting some (even- or odd-numbered) frames.
+.SH FILES
+.B _movie
+.br
+.B /usr/jerq/lib/2term
+.SH "SEE ALSO"
+.IR pico (1),
+.IR picfile (5),
+.IR rebecca (9.1),
+.IR flickfile (9.5),
+.IR movie (9.1)
diff --git a/static/v10/man9/font.9 b/static/v10/man9/font.9
new file mode 100644
index 00000000..e8733eaa
--- /dev/null
+++ b/static/v10/man9/font.9
@@ -0,0 +1,110 @@
+.TH FONT 9.5
+.CT 2 comm_term
+.SH NAME
+font \- jerq font layouts
+.SH SYNOPSIS
+.B #include <jerq.h>
+.br
+.B #include <font.h>
+.PP
+.B typedef struct Fontchar Fontchar;
+.br
+.B typedef struct Font Font;
+.PP
+.B extern Font defont;
+.SH DESCRIPTION
+A
+.I Font
+is a character set, stored as a single
+Bitmap
+with the characters
+placed side-by-side.
+It is described by the following data structures.
+.IP
+.EX
+.ta +.5i +\w'unsigned char bottom; 'u
+typedef struct Fontchar {
+ short x; /* left edge of bits */
+ unsigned char top; /* first non-zero scan-line */
+ unsigned char bottom; /* last non-zero scan-line */
+ char left; /* offset of baseline */
+ unsigned char width; /* width of baseline */
+} Fontchar;
+typedef struct Font {
+ short n; /* number of chars in font */
+ char height; /* height of bitmap */
+ char ascent; /* top of bitmap to baseline */
+ long unused;
+ Bitmap *bits; /* where the characters are */
+ Fontchar info[n+1]; /* n+1 character descriptors */
+} Font;
+.EE
+.PP
+Characters in
+.L bits
+abut exactly, so the displayed width of the character
+.I c
+is
+.BI Font.info[ c +1].x\ -\ Font.info[ c ].x .
+The first
+.L left
+columns of pixels in a character overlap the previous character.
+The upper left corner of the nonempty columns appears at
+.RB ( x, 0)
+in the bitmap.
+.L Width
+is the distance to move horizontally after drawing a character.
+The font bitmap has a fixed
+.LR height ;
+parameters
+.L top
+and
+.L bottom
+may speed up the copying of a character.
+.PP
+Characters are positioned by their upper left corners.
+.PP
+Fonts are stored on disk in binary with byte
+order that of the terminal.
+First in the file is the Font structure
+with
+.B bits
+elided.
+The data for the bitmap follows.
+The header for the bitmap must be inferred from
+.B Font.height
+and
+.BR Font.info[Font.n].x .
+.SH EXAMPLES
+.EX
+Fontchar *i = f->info + c;
+bitblt(f->bits, Rect(i->x, i->top, (i+1)->x, i->bottom),
+ &display, Pt(p.x+i->left, p.y+i->top), fc);
+p.x += i->width;
+.EE
+.ns
+.IP
+Copy character
+.I c
+from font
+.I f
+to point
+.I p
+with Code
+.B F_XOR
+or
+.BR F_OR .
+.PP
+For Code
+.LR F_STORE ,
+use
+.LR "Rect(i->x, 0, (i+1)->x, f->height)" .
+.SH SEE ALSO
+.IR jf (9.1),
+.IR string (9.3),
+.IR getfont (9.1)
+.SH BUGS
+The
+.L unused
+field is used, by
+.IR getfont (9.1).
diff --git a/static/v10/man9/gebaca.9 b/static/v10/man9/gebaca.9
new file mode 100644
index 00000000..2655d42e
--- /dev/null
+++ b/static/v10/man9/gebaca.9
@@ -0,0 +1,18 @@
+.TH GEBACA 9.6
+.CT 1 games
+.SH NAME
+gebaca, gebam \- get back at corporate america
+.SH SYNOPSIS
+.B /usr/games/gebaca
+.PP
+.B demo gebam
+.SH DESCRIPTION
+.I Gebaca
+is an arcade-type shoot-em-down with familiar characters.
+It runs on Teletype 5620 terminals in
+native mode only.
+Use the mouse to dodge and shoot.
+.PP
+.I Gebam
+is a cheap ripoff that runs under
+.IR mux (9.1).
diff --git a/static/v10/man9/getfont.9 b/static/v10/man9/getfont.9
new file mode 100644
index 00000000..60c358ce
--- /dev/null
+++ b/static/v10/man9/getfont.9
@@ -0,0 +1,59 @@
+.TH GETFONT 9.1
+.CT 1 comm_term
+.SH NAME
+getfont \- replace terminal's default font
+.SH SYNOPSIS
+.B getfont
+[
+.I option ...
+]
+[
+.I font
+]
+.SH DESCRIPTION
+.I Getfont
+reads font data from file
+.I font.
+The current layer and subsequently created layers use this font as
+.IR defont ;
+see
+.IR string (9.3).
+If
+.I font
+does not directly name a file, it is looked for in directory
+.FR /usr/jerq/font .
+.PP
+The options are:
+.TP
+.B -m
+The font change applies to the basic
+.IR mux (9.1)
+menu as well as to layers.
+.TP
+.B -l
+The font change applies to the current layer only.
+.TP
+.B -d
+Print debugging information about fonts before and after.
+.PP
+.I Getfont
+discards inaccessible fonts.
+To reclaim store without loading a font,
+call it with no
+.I font
+argument.
+.SH EXAMPLES
+.TP
+.L
+getfont pelm.10
+Larger type for demos and eyesight problems.
+.TP
+.L
+getfont defont
+Restore the original font.
+.SH FILES
+.F /usr/jerq/font
+.SH SEE ALSO
+.IR string (9.3),
+.IR font (9.5),
+.IR font (6)
diff --git a/static/v10/man9/graphdraw.9 b/static/v10/man9/graphdraw.9
new file mode 100644
index 00000000..aa02d921
--- /dev/null
+++ b/static/v10/man9/graphdraw.9
@@ -0,0 +1,310 @@
+.TH GRAPHDRAW 9.1
+.CT 1 editor graphics
+.SH NAME
+graphdraw graphpic \- edit (combinatoric) graphs, convert to pic files
+.SH SYNOPSIS
+.B graphdraw
+[
+.I file
+]
+.PP
+.B graphpic
+[
+.I option ...
+]
+.I file
+.SH DESCRIPTION
+.I Graphdraw
+interactively edits and displays undirected graphs, and can also be used
+to display real-time animation of algorithms.
+If a
+.I file
+is mentioned, the graph stored in that file is edited.
+.PP
+Click button 1 in command line (at bottom of window) to type in commands:
+.TP \w'\f5!\fI\ program\ file\ \ \fR'u
+.BI r " file"
+Read file and display graph.
+.PD0
+.TP
+.BI w " file"
+Write current graph to file.
+.TP
+.BI cd " directory"
+Change directory.
+.TP
+.BI ! " program file"
+Execute animation
+.I program
+with
+.I file
+as input.
+.TP
+.B q
+Quit.
+.PD
+.PP
+Button 3 gets a menu of actions, which are
+usually accomplished by pointing with button 1.
+The parenthesized equivalents in the following list are explained
+under `Algorithm animation'.
+.TP 0
+.B create vertex
+Vertex is placed where button 1 is clicked.
+.RB ( vc
+.IR "x y" )
+.PD 0
+.TP
+.B delete
+Delete selected vertex and associated edges.
+.RB ( vd
+.IR i )
+.TP
+.B move
+Selected vertex moves with mouse until button 1 is released.
+.RB ( vm
+.IR i )
+.TP
+.B copy
+Copy of selected vertex and associated edges moves with mouse.
+.RB ( vc
+.IR "i x y" )
+.TP
+.B create/delete edge
+Point to first endpoint and click button 1.
+Point to second endpoint and click button 1.
+Continue selecting second endpoints with button 1.
+To unselect first endpoint, click button 2.
+.RB ( ec
+.IB "i j " /
+.B ed
+.IR "i j" )
+.TP
+.B restart
+Click button 1 to clear screen and discard current graph.
+.RB ( pr )
+.TP
+.B standard window
+Restart and reshape window to standard size,
+in which the drawing area is square and as large as possible.
+.TP
+.B small/large/no grid
+Impose/remove visible grid to which all new coordinates will be rounded.
+.TP
+.B exit
+Click button 1 to confirm.
+.TP
+.B labels menu
+.RS
+.TP
+.B label vertex
+Select vertex with button 1.
+Current label appears on command line.
+To accept it, click button 1.
+Otherwise, type in new label and hit return.
+.RB ( vl
+.IR "i w" )
+.TP
+.B number vertices
+Vertex labels are set to the consecutive integers 1,2,...;
+this is the default.
+.RB ( vn )
+.TP
+.B label edge
+Default is
+.LR 1 .
+.RB ( el
+.IR "i j w" )
+.HP
+.B show/hide vertex labels
+.RB ( vs ,
+.BR vh )
+.HP
+.B show/hide edge labels
+.RB ( es ,
+.BR eh )
+.TP
+.B turn Euclidean edge labels on/off
+Distances are measured in pixels.
+.RB ( ee )
+.TP
+.B show/hide sum of edges
+.RE
+.TP
+.B graphics menu
+.RS
+.TP
+.B light/heavy/empty/full/invisible vertex
+Select style from menu with button 3; select vertices to change with button 1.
+The default is
+.LR light .
+.RB ( vg
+.IR "i c" )
+.HP
+.B light/heavy edge
+.RB ( eg
+.IR "i j c" )
+.RE
+.TP
+.B macros menu
+Arrange for sets of vertices to act together.
+Actions on any vertex in the set apply to the whole set.
+Copying duplicates edges internal to the set.
+Creating an edge between vertexes in two different sets
+creates edges from every vertex in one set to every
+vertex in the other (bipartite subgraph).
+.RS
+.TF unselect\ set
+.TP
+.B select set
+Sweep a rectangle around the set with button 1.
+Dissociate conflicting sets.
+.TP
+.B unselect set
+Dissociate set containing selected vertex.
+.TP
+.B shrink/expand set
+Selected set is shrunk/expanded about its center.
+.TP
+.B reshape set
+Selected set is redrawn in swept rectangle.
+.TP
+.B complete/disconnect subgraph
+Create/delete edges between every pair of vertices in a set.
+.RE
+.PP
+.I Graphpic
+is a filter which, when applied to a file in graphdraw format, outputs
+.I pic
+code for the graph.
+The options are:
+.TP
+.B -v
+Print vertex labels.
+.TP
+.B -e
+Print edge labels.
+.TP
+.B -i
+Optimize for imagen printer (default is d202).
+.PD
+.SS File format
+Graphs are stored as adjacency lists.
+.PP
+First line:
+.I n m t,
+where
+.I n
+is the number of vertices,
+.I m
+is the number of edges, and
+.I t
+is an optional graph type.
+The only legal type is the default type
+.B u
+(undirected).
+.PP
+For each vertex, an initial line:
+.I d w x y c,
+where
+.I d
+is the degree of the vertex,
+.I w
+is its label,
+.I x
+and
+.I y
+are its coordinates in the window, and
+.I c
+is an optional graphics code,
+.BR L =light
+(default),
+.BR H =heavy
+(circled dot),
+.BR F =full
+(large bullet),
+.BR E =empty
+(empty circle),
+.B I =invisible.
+Window coordinates will be scaled to fit when graph is read in.
+.PP
+After the initial line follow
+.I d
+lines for the vertex's edges:
+.I i w c,
+where
+.I i
+is the index (1 to
+.IR n)
+of the other endpoint,
+.I w
+is the edge label, and
+.I c
+is an optional graphics code,
+.B L
+or
+.BR H .
+.PD
+.SS Algorithm animation
+The typed command
+.BI ! "program file"
+causes the standard output of
+.I program
+to be captured by the host and
+interpreted as commands to
+.I graphdraw.
+The resulting movie
+can be killed or temporarily halted from the the terminal
+by clicking button 2 and choosing the desired option from the resulting menu.
+.PP
+Animation codes (defined parenthetically with menu items above)
+appear one per line.
+Their arguments are:
+.I i,
+index of a vertex (normally the
+.IR i th
+to be created);
+.I x, y,
+integer coordinates in the range 0 to
+.BR maxcoord ;
+.I w
+a label; or
+.I c,
+a graphic code.
+.PP
+Other animation codes are
+.PD0
+.TP \w'\f5pm\fI\ message\ \ \fR'u
+.BI pw " n"
+Change the value of
+.B maxcoord to
+.I n.
+Default is 10,000.
+.TP
+.BI vl " i w"
+Give vertex
+.I i
+the label
+.I w.
+.TP
+.BI pd " t"
+Delay program for
+.I t
+clicks of the 60Hz clock.
+.TP
+.B ps
+Halt program until user clicks button 2 to continue.
+.TP
+.BI pm " message"
+Print
+.I message
+on command line.
+.PD
+.SH SEE ALSO
+.IR dag (1),
+.IR pic (1)
+.SH BUGS
+It is impossible to move or reshape a
+.I graphdraw
+layer, except via
+.LR "standard window" .
diff --git a/static/v10/man9/icon.9 b/static/v10/man9/icon.9
new file mode 100644
index 00000000..cda22879
--- /dev/null
+++ b/static/v10/man9/icon.9
@@ -0,0 +1,90 @@
+.TH ICON 9.1
+.CT 1 editor graphics
+.SH NAME
+icon \- icon editor
+.SH SYNOPSIS
+.B icon
+.SH DESCRIPTION
+.I Icon
+is a pixel-level editor for textures and small bitmaps.
+.I Icon
+presents a magnified pixel grid and a true-size image.
+Editing is done on the magnified grid.
+Pixels can be turned black by pressing the button 1,
+and white by pressing button 2.
+.PP
+Button 3 provides an iconic menu of editing commands.
+Some commands require a rectangle to
+be swept; this is done either by
+the middle button (which supplies a fixed 16\(mu16 rectangle) or by the right
+button (for rectangles of any size).
+.PP
+.TP \w'band-aid\ 'u
+arrow
+Move region (sweep rectangle
+and click at destination).
+.TP
+overlapping regions
+Copy region (sweep rectangle
+and click at destination).
+.TP
+cross
+Invert region (sweep rectangle).
+.TP
+eraser
+Erase region (sweep rectangle).
+.TP
+horizontal (vertical) folded arrow
+Reflect region horizontally (vertically) (sweep rectangle).
+.TP
+clockwise (counterclockwise) arrow
+Rotate region deasil (withershins) (sweep rectangle).
+.TP
+horizontal (vertical) sheared lines
+Shear a region horizontally (vertically) (sweep rectangle and point at destination
+of nearest corner of rectangle).
+.TP
+scaled square
+Scale a region (sweep rectangle and
+sweep destination rectangle).
+.TP
+tweed pattern
+Texture a region (sweep source rectangle and
+a (bigger) destination rectangle to be tiled with copies of the source).
+.TP
+glasses
+Read file (type file name and position the icon by clicking).
+The subdirectories of
+.F /usr/jerq/icon/
+are searched automatically
+after the current directory.
+.TP
+grid
+Switch on or off the background grids.
+.TP
+extend region
+Change the size of the drawing area.
+.TP
+pen
+Write file (sweep rectangle and type file name).
+See
+.IR bitfile (9.5)
+for the format.
+.TP
+overlapping rectangles
+Bitblt region (driven by submenus on the right button).
+.TP
+mouse
+Pick up a 16\(mu16 rectangle and make it the current cursor
+(click a button to pick up a 16\(mu16 region, and click again to
+revert to normal).
+.TP
+help
+Display help information (click a button to revert to normal).
+.TP
+band-aid
+Undo last drawing operation.
+.SH FILES
+.F /usr/jerq/icon/*/*
+.SH SEE ALSO
+.IR bitfile (9.5)
diff --git a/static/v10/man9/intro.9 b/static/v10/man9/intro.9
new file mode 100644
index 00000000..242c4876
--- /dev/null
+++ b/static/v10/man9/intro.9
@@ -0,0 +1,128 @@
+.TH INTRO 9
+.SH NAME
+intro \- introduction to 5620-related software
+.SH SYNOPSIS
+.BI PATH= stuff :/usr/jerq/bin
+.SH DESCRIPTION
+Section 9 of this manual lists software for running or supporting
+Teletype DMD-5620 terminals.
+Subsections 9.1-9.7 mirror the purposes of the preceding sections 1-7,
+with 9.1 being commands, 9.6 being games, etc.
+Command synopses assume that the shell search path includes
+.FR /usr/jerq/bin .
+.PP
+Few commands deal with a 5620 in native mode.
+.IR 32ld (9.1)
+loads programs into the terminal and
+.IR mux (9.1)
+starts the characteristic `layer' or window system.
+Almost all other commands in section 9 either run on
+Unix or within
+.I mux
+layers.
+.PP
+A layer is technically a virtual terminal,
+but is almost indistinguishable in software from a real terminal;
+in particular, the interface described in
+.IR ttyld (4)
+applies to layers, except for the additional editing capabilities discussed in
+.IR mux (9.1).
+.PP
+The commands in sections 9.1 and 9.6 run on Unix,
+but most implicitly call
+.I 32ld
+to down-load a program that replaces the
+default terminal process running in the layer.
+To Unix the interface is still that of
+a terminal; in particular
+.F /dev/tty
+(see
+.IR fd (4))
+is always connected to the layer.
+The default
+.I mux
+terminal program implements the teletype driver function itself.
+When a program is down-loaded,
+there is no teletype driver;
+programs that desire one
+must push the teletype line discipline on the stream,
+and arrange to pop the line discipline
+on exit; see
+.IR stream (4)
+and
+.IR ttyld (4).
+Some commands may simply
+emulate other terminals by down-loading
+a terminal program (see
+.IR term (9.1);
+others, such as the text editor
+.IR sam (9.1),
+are really two programs \(em one on Unix and one in the layer \(em
+communicating using standard input/output on Unix
+and
+.BR sendchar() / rcvchar()
+in the terminal; see
+.IR request (9.2).
+.PP
+There is an identity between bitmaps and layers
+in the graphics software.
+Graphic objects are bitmaps.
+The
+.IR newlayer (9.2)
+primitives that operate on layers are aliased to bitmap
+primitives of (9.3), and the data structures are isomorphic.
+When running under
+.IR mux ,
+a programmer need not consider layers as graphical objects
+at all; the operating system checks the arguments to the graphics
+primitives and dispatches the appropriate operator depending
+on the type of the argument.
+Except in stand-alone software, layers are an invisible
+implementation detail.
+.SS Teletype 630
+.I Mux
+and various programs that run in
+.I mux
+layers have been ported to Teletype DMD-630 terminals.
+The ported software is not available on all machines and
+is not specifically documented.
+Look in
+.F /usr/630/bin
+to see what's there.
+.SH FILES
+.TF /usr/jerq/mbin
+.TP
+.F /usr/jerq/bin
+jerq-related Unix object programs
+.TP
+.F /usr/jerq/mbin
+terminal programs, usually down-loaded automatically
+by programs in
+.F /usr/jerq/bin
+.TP
+.F /usr/630/bin
+630-related Unix object programs
+.TP
+.F /usr/630/lib
+terminal programs
+.SH SEE ALSO
+.IR 32ld (9.1),
+.IR mux (9.1),
+.IR stream (4)
+.SH BUGS
+There are two mechanical-drawing programs,
+.I cip
+and
+.I ped,
+two `artistic' drawing programs,
+.I paint
+and
+.I twid,
+one `graphic' drawing program,
+.I brush,
+two pixel-level drawing programs,
+.I icon
+and
+.I jf,
+all for working on binary images.
+None dominates.
diff --git a/static/v10/man9/jf.9 b/static/v10/man9/jf.9
new file mode 100644
index 00000000..5db7690d
--- /dev/null
+++ b/static/v10/man9/jf.9
@@ -0,0 +1,117 @@
+.TH JF 9.1
+.CT 1 editor graphics
+.SH NAME
+jf \- font editor
+.SH SYNOPSIS
+.B jf
+[
+.I file ...
+]
+.SH DESCRIPTION
+.I Jf
+edits jerq font files.
+If
+.I file
+does not begin with a slash and is not a font file,
+it is looked up in a standard font directory.
+.PP
+.I Jf
+is mostly mouse- and
+menu-driven, except when prompting for file names.
+.I Jf
+divides its layer into two types of areas:
+Font displays
+show all characters in a given font in actual size.
+When characters are opened for editing, they appear magnified in
+edit displays.
+.PP
+Button 1
+is the `do it' button.
+Clicking button 1 inside a font display
+opens a character for editing; inside an edit display
+it sets a pixel.
+It may have other functions selected via menus, in which case the function
+is indicated by a special cursor.
+.PP
+Button 2
+is the `undo it' button.
+Clicking button 2 closes a character or clears a
+pixel, unless conditioned otherwise via menu selection.
+.PP
+Button 3
+is the `menu' button.
+Clicking button 3 selects a menu, pops control
+back to the top level, or (when the gunsight cursor shows)
+picks a font or character to be affected.
+Sometimes menu selection is the only (non-trivial)
+option available, as indicated by a `menu' cursor.
+.PP
+A font is described by several parameters; these are either read from the
+font file, or set by default by the
+.B make new font
+function:
+.B max width
+(default 16 pixels),
+.B height
+(16)\-measured from the top,
+.B ascent
+(16)\-the distance of the printing baseline from the top, and
+.B range
+(1)\-the highest-numbered character in the font.
+(The first character is numbered 0.)
+All may be changed under the
+.B set sizes
+menu.
+.B Squeeze font,
+in the
+.B open/close font
+menu, reduces max width as much as possible.
+.PP
+Each character has a width, which is shown by the length of the baseline
+in the edit display.
+The
+.B char width
+may be set under the
+.B set sizes
+menu; button 1 sets it to 0, button 2 sets it to a specified pixel
+within the max width.
+The quantity
+.B char left
+may be used for kerning.
+If positive, it shifts a character right and causes
+.B max width
+to increase if necessary; if negative, the character will be shifted
+left.
+Otherwise
+.I char left
+is irrelevant to font editing.
+.PP
+The
+.B bit function
+menu controls copying among characters in any of the
+.IR bitblt (9.3)
+Codes:
+.BR F_STORE ,
+.BR F_CLR ,
+.BR F_OR ,
+.BR F_XOR.
+Press button 3 on the source character; hold it down while moving and
+release it on the destination.
+.PP
+Several fonts may be open at once.
+When editing a font, it is often convenient to open a second copy
+for recovering botched characters.
+.SH FILES
+.TF /usr/jerq/include/font.h
+.TP
+.F /usr/jerq/font/*
+jerq fonts
+.TP
+.F /usr/jerq/include/font.h
+jerq font header file
+.SH SEE ALSO
+.IR font (9.5)
+.SH DIAGNOSTICS
+When out of memory or screen area,
+.I jf
+ignores the offending operation.
diff --git a/static/v10/man9/jim.9 b/static/v10/man9/jim.9
new file mode 100644
index 00000000..eac05bb4
--- /dev/null
+++ b/static/v10/man9/jim.9
@@ -0,0 +1,347 @@
+.TH JIM 9.1
+.SH NAME
+jim, jim.recover \- text editor
+.SH SYNOPSIS
+.B jim
+[
+.I file ...
+]
+.br
+.B jim.recover
+[
+.B -f
+]
+[
+.B -t
+]
+[
+.I file ...
+]
+.SH DESCRIPTION
+.I Jim
+is an old text editor for the jerq terminal.
+It relies on the mouse to select text and commands.
+It runs only under
+.IR mux (9.1).
+.IR Jim 's
+screen consists of a number of
+.IR frames ,
+a one-line command and diagnostic frame at the bottom
+and zero or more larger file frames above it.
+Except where indicated, these frames behave identically.
+One of the frames is always the current frame,
+to which typing and editing commands refer,
+and one of the file frames is the working frame,
+to which file commands such as pattern searching and IO refer.
+.PP
+A frame has at any time a selected region of text,
+indicated by reverse video highlighting.
+The selected region may be a null string between two characters,
+indicated by a narrow vertical bar between the characters.
+The editor has a single
+`save buffer'
+containing an arbitrary string.
+The editing commands invoke transformers between the
+selected region and the save buffer.
+.PP
+The mouse buttons are used for the most common operations.
+Button 1 (left) is used for selection.
+Clicking button 1 in a frame
+which is not the current frame makes the indicated frame current.
+Clicking button 1 in the current frame selects the null string closest
+to the mouse cursor.
+Making the same null selection twice (`double clicking') selects
+(in decreasing precedence) the bracketed or quoted string, word or line
+enclosing the selection.
+By pushing and holding button 1, an arbitrary contiguous visible string
+may be selected.
+Button 2 provides a small menu of text manipulation functions, described below.
+Button 3 provides control for inter-frame operations.
+.PP
+The button 2 menu entries are:
+.TP .7i
+.B cut
+Copy the selected text to the save buffer and delete it from the frame.
+If the selected text is null, the save buffer is unaffected.
+.TP
+.B paste
+Replace the selected text by the contents of the save buffer.
+.TP
+.B snarf
+Copy the selected text to the save buffer.
+If the selected text is null, the save buffer is unaffected.
+.TP
+.B look
+Search forward for the next occurrence of
+the selected text or, if the selection is null,
+to the next occurrence of the text in the save buffer.
+.TP
+.B <mux>
+Exchange save buffers with
+.IR mux .
+.PP
+Also stored on the button 2 menu are the last Unix command and last
+search string typed (see below); these may be selected to repeat the action.
+.PP
+Typing
+replaces the selected text with the typed text.
+If the selected text is not null,
+the first character typed forces an implicit
+.BR cut .
+Control characters are discarded, but
+BS
+.RB (control- H ),
+ETB
+.RB (control- W )
+and ESC have special meanings.
+BS is the usual backspace character, which erases the character
+before the selected text (which is a null string when it takes effect).
+ETB erases back to the word boundary preceding the selected text.
+There is no line kill character.
+ESC selects the text typed since the last button hit or ESC.
+If an ESC is typed immediately after a button hit or ESC,
+it is identical to a
+.BR cut .
+ESC and
+.B paste
+provide the functionality for a simple undo feature.
+.PP
+The button 3 menu entries are:
+.TP
+.B new
+Create a new frame, much as in
+.IR mux .
+.TP
+.B reshape
+Change the shape of the indicated frame, as in
+.IR mux .
+The frame is indicated by a button 3 hit after the selection.
+.TP
+.B close
+Close the indicated frame and its associated file.
+.TP
+.B write
+Write the indicated frame's contents to its associated file.
+.PP
+The rest of the menu is a list of file names available for editing.
+To work in a different file, select the file from the menu.
+If the file is not open on the screen, the cursor will switch to an
+outline box to prompt for a rectangle to be swept out with button 3,
+as in the New operator of
+.IR mux .
+(Unlike
+.IR mux ,
+there is a shorthand: sweeping the empty rectangle creates the largest
+possible rectangle.)
+The file is not read until its frame is first opened.
+If the file is already open, it will simply be made the workframe and
+current frame (for typing).
+The format of the lines in the menu is
+.TP
+-
+possibly an apostrophe, indicating that the file has been modified since
+last written,
+.TP
+-
+possibly a period or asterisk, indicating the file is open (asterisk) or
+the workframe (period),
+.TP
+-
+a blank,
+.TP
+-
+and the file name.
+The file name may be abbreviated by compacting path components to keep
+the menu manageable, but the last component will always be complete.
+.PP
+The work frame has a
+`scroll bar'\(ema black vertical bar down the left edge.
+A small tick in the bar indicates the relative position of the frame
+within the file.
+Pointing to the scroll bar and clicking a button controls scrolling
+operations in the file:
+.TP 1i
+button 1
+Move the line at the top of the screen to the
+.I y
+position of the mouse.
+.TP
+button 2
+Move to the absolute position in the file indicated by the y position of the mouse.
+.TP
+button 3
+Move the line at the
+.I y
+position of the mouse to the top of the screen.
+.PP
+The bottom line frame is used for a few typed commands, modeled on
+.IR ed (1),
+which operate on the work frame.
+When a carriage return is typed in the bottom line,
+the line is interpreted as a command.
+The bottom line scrolls, but only
+when the first character of the next line is typed.
+Thus, typically, after some message appears in the bottom line,
+a command need only be typed;
+the previous contents of the line will be automatically cleared.
+The commands available are:
+.TP
+.BI e " file"
+Edit the named
+.IR file ,
+or use the current file name if none specified.
+Note that each file frame has an associated file name.
+.TP
+.BI f " file"
+Set the name of the
+file associated with the work frame, if one is specified,
+and display the result.
+.TP
+.BI g " file ..."
+Enter the named
+.I files
+into the filename menu, without duplication,
+and set the work frame to one of the named files.
+If the new work frame's file is not open, the user is prompted to create its frame.
+The arguments to
+.B g
+are passed through
+.IR echo (1)
+for shell metacharacter interpretation.
+.TP
+.BI w " file"
+Write the named
+.IR file ,
+or use the current file name if none specified.
+The special command
+.IR w \(aa
+writes all modified files with file names.
+.TP
+.B q
+Quit the editor.
+.TP
+.B =
+Print the line number of the beginning of the selected text.
+.TP
+.B /
+Search forward for the string matching the regular expression after the slash.
+If found, the matching text is selected.
+The regular expressions are exactly as in
+.IR egrep (1),
+with two additions: the character
+.L @
+matches any character, including
+newline, and the sequence
+.L \en
+specifies a newline, even in character classes.
+The negation of a character class does not match a newline.
+An empty regular expression (slash-newline) repeats the last regular expression.
+.TP
+.B ?
+Search backwards for the expression after the query.
+.TP
+.B 94
+Select the text of line 94, as in
+.IR ed .
+.TP
+.B cd
+Set the working directory, as in the shell.
+There is no
+.B CDPATH
+search.
+.TP
+.BI > command
+Send the selected text to the standard input of the Unix
+.IR command .
+.TP
+.B < command
+Replace the selected text by the standard output of the Unix
+.IR command .
+.TP
+.B | command
+Replace the selected text by the standard output of the Unix
+.IR command,
+given the original selected text as standard input.
+.PP
+If any of
+.B < > |
+is preceded by an asterisk
+.BR * ,
+the command is applied to the entire file, instead of just the selected text.
+If the command for
+.B <
+or
+.B |
+exits with non-zero status, the original text
+is not deleted; otherwise, the new text is selected.
+Finally, the standard error output of the command, which is merged with the
+standard output for
+.BR > ,
+is saved in the file
+.FR $HOME/jim.err .
+If the file is non-empty when the command completes, the first line is
+displayed in the diagnostic frame.
+Therefore the command
+.L >pwd
+will report
+.I jim 's
+current directory.
+.PP
+Attempts to quit with modified files, or edit a new file
+in a modified frame, are rejected.
+A second
+.L q
+or
+.L e
+command will succeed.
+The
+.L Q
+or
+.L E
+commands ignore modifications and work immediately.
+Some consistency checks are performed for the
+.L w
+command.
+.I Jim
+will reject write requests which it considers dangerous
+(such as writes which would change a file modified since
+.I jim
+read it into its memory).
+A second
+.L w
+will always write the file.
+.PP
+If
+.I jim
+receives a hangup signal, it writes a file
+.FR $HOME/jim.recover ,
+which is a shell command file that, when executed, will retrieve
+the files that were modified when
+.I jim
+exited.
+The
+.B -t
+option prints a table of contents, but does not unpack the files.
+By default,
+.I jim.recover
+is interactive; the
+.B -f
+option suppresses the interaction.
+If no files are named to
+.FR jim.recover ,
+it will recover all the saved files.
+.SH FILES
+.F $HOME/jim.err
+.br
+.F $HOME/jim.recover
+.SH BUGS
+The regular expression matcher is non-deterministic,
+and may be slow for spectacular expressions.
+.br
+When reshaped, the open frames must be re-opened manually.
+.br
+The
+.B <
+and
+.B |
+operators should snarf the original text.
diff --git a/static/v10/man9/jioctl.9 b/static/v10/man9/jioctl.9
new file mode 100644
index 00000000..0fa341a7
--- /dev/null
+++ b/static/v10/man9/jioctl.9
@@ -0,0 +1,74 @@
+.TH JIOCTL 9.4
+.CT 2 comm_term
+.SH NAME
+jioctl \- mux ioctl requests
+.SH SYNOPSIS
+.B
+#include "/usr/jerq/include/jioctl.h"
+.\" not <jioctl.h>: /usr/jerq/include is not in the cc include path
+.PP
+.B ioctl(fd, request, 0)
+.PP
+.B ioctl(fd, JWINSIZE, win)
+.br
+.B struct winsize *win;
+.SH DESCRIPTION
+.IR Mux (9.1)
+supports several
+.IR ioctl (2)
+requests for Unix programs attached to layers.
+The requests are:
+.TF JBOOT
+.TP
+.B JMUX
+returns 0 if file descriptor
+.I fd
+is connected to a
+.I mux
+layer, \-1 otherwise.
+.PD
+.TP
+.B JTERM
+resets the layer connected to
+.I fd
+to the default terminal program.
+.TP
+.B JBOOT
+initiates the down-load protocol to replace the layer's terminal program.
+Usually called by
+.IR 32ld (9.1).
+.TP
+.B JZOMBOOT
+is the same as
+.IR JBOOT ,
+but disables execution of the program when the download is complete
+(see the
+.B -z
+flag of
+.IR 32ld ).
+.TP
+.B JWINSIZE
+returns, in the location pointed to by the third argument,
+a structure describing the size of the layer connected to
+.IR fd ,
+with character
+.L 0
+being the unit of size.
+The structure is:
+.IP
+.EX
+.ta 7n +7n +\w'bytesx, bytesy; 'u"
+struct winsize {
+ char bytesx, bytesy; /* size in characters */
+ short bitsx, bitsy; /* size in pixels */
+};
+.EE
+.TP
+.B JEXIT
+causes
+.I mux
+to exit.
+.SH SEE ALSO
+.IR 32ld (9.1),
+.IR mux (9.1),
+.IR ioctl (2)
diff --git a/static/v10/man9/jx.9 b/static/v10/man9/jx.9
new file mode 100644
index 00000000..15e93f32
--- /dev/null
+++ b/static/v10/man9/jx.9
@@ -0,0 +1,112 @@
+.TH JX 9.1
+.CT 1 comm_term
+.SH NAME
+jx \- 5620 execution and stdio interpreter
+.SH SYNOPSIS
+.B jx
+.I file
+[
+.I argument ...
+]
+.SH DESCRIPTION
+.I Jx
+downloads the program in
+.I file
+to the terminal or layer on its controlling tty
+and runs it there, simulating standard I/O functions of
+.IR stdio (3).
+.I Jx
+works either stand-alone or in a layer.
+.PP
+The
+.B stdout
+and
+.B stderr
+streams, if directed to the controlling terminal,
+will be squirreled away during
+execution and copied to the terminal
+after the down-loaded program exits.
+.PP
+Programs to be run by
+.I jx
+should include
+.B <jerqio.h>
+and call
+.B exit()
+upon termination in order to
+restart the default terminal program.
+Programs to be run stand-alone
+should be compiled with
+the
+.B -J
+option of
+.IR 3cc (9.1).
+No special options are required for running in a layer.
+.PP
+.IR Stdio (3)
+functions available under
+.I jx
+are
+.IP
+.EX
+.nr f \w'freopen '
+.ta +\nfu +\nfu +\nfu +\nfu +\nfu
+getc putc fopen popen printf fread
+getchar putchar freopen pclose sprintf fwrite
+fgets puts fclose fprintf
+ fputs access
+ fflush
+.EE
+.PP
+Unlike in
+.IR stdio (3),
+.I getc
+and
+.I putc
+are functions, not macros.
+.I Printf
+has only
+.BR %d ,
+.BR %s,
+.BR %c,
+.BR %o ,
+and
+.BR %x.
+.B %u
+prints an unsigned decimal number.
+.B %D
+prints an unsigned long decimal number.
+.PP
+Since
+.I jx
+uses
+.IR sendchar ,
+.IR sendnchars ,
+and
+.IR rcvchar ,
+.I jx
+programs should avoid these,
+and use only the standard I/O routines.
+.SH FILES
+.TF /usr/jerq/include/blitio.h
+.TP
+.F /usr/jerq/include/jerqio.h
+.TP
+.F /usr/jerq/lib/sysint
+standard I/O interpreter
+.TP
+.F $HOME/.jxout
+saved standard output
+.TP
+.F $HOME/.jxerr
+saved standard diagnostic output
+.SH SEE ALSO
+.IR request (9.2),
+.IR stdio (3)
+.SH BUGS
+Keyboard standard input doesn't work; use
+.IR kbdchar ;
+see
+.IR request (9.2).
+.br
+Stand-alone programs do not receive arguments.
diff --git a/static/v10/man9/lens.9 b/static/v10/man9/lens.9
new file mode 100644
index 00000000..bdb6f53b
--- /dev/null
+++ b/static/v10/man9/lens.9
@@ -0,0 +1,108 @@
+.de m
+.if t \{\
+.nr M \w'\|\|\\$1'
+.nr N \w'\s24\|\|\\$1'
+\h'-\w' \(br\|\\$1'u'\(br\|\\$1\|\(br\
+\\h'-\\nMu'\l'\\nMu\(rn'\\h'-\\nMu'\l'\\nMu\(ul'\
+\s24\v'1m'\(br\|\\$1\|\(br\
+\\h'-\\nNu'\l'\\nNu\(rn'\\h'-\\nNu'\l'\\nNu\(ul'\
+\v'-1m'\s0 \}
+.if n \\$1
+..
+.TH LENS 9.1
+.CT 1 games comm_term
+.SH NAME
+lens \- bitmap magnifier
+.m magnifier
+.SH SYNOPSIS
+.B lens
+.SH DESCRIPTION
+.I Lens
+is an interactive screen bitmap magnifier.
+When it
+starts, it displays an enlarged image of a magnifying glass in
+its layer, which becomes a setting sun when
+.I lens
+wants to confirm a command to exit.
+.PP
+The first item in the button 2 menu,
+which rotates among
+.BR go ,
+.BR peek ,
+and
+.BR stop ,
+determines the activity of the magnifier.
+Clicking button 1 serves as an abbreviation for selecting
+.B go
+or
+.BR peek .
+When the magnifier is going,
+a crawling-bordered rectangle is drawn
+around the source, and the
+.I lens
+window contains the magnified image.
+The mouse controls
+the position of the source rectangle.
+.PP
+During peeking, the rectangle last selected while
+going is re-examined periodically, and the contents
+are magnified, whether or not the
+.I lens
+window is currently selected.
+.PP
+When stopped, the
+.I lens
+window is inactive.
+.PP
+The button 2 menu also allows changing the magnification factor.
+The magnification factors are chosen from the
+Fibonacci numbers, and menu items for the next size smaller and larger
+are presented as, e.g.,
+.L 3x
+or
+.LR 8x .
+The current magnification factor is not displayed in the menu, only
+the next factors larger and smaller.
+The initial magnification factor is two.
+.PP
+Button 2 may also be used to select the intervals at which peeking
+updates occur.
+These intervals are selected, in ticks, from among the powers of two, where
+a tick is one-sixtieth of a second.
+These choices are presented as, e.g.,
+.L "32 ticks"
+or
+.LR "128 ticks" .
+The initial interval between peeks is 64 ticks, approximately one second.
+.PP
+The image window may be controlled by the button 2 menu item which
+toggles between
+.B inset
+and
+.BR "full size" .
+In inset mode, the image is displayed inside the image window of the
+magnified lens icon.
+In full size mode, the image is displayed in the entire
+.I lens
+window.
+.PP
+The final button 2 menu entry is
+.I exit.
+A setting sun is displayed, and button 3 must be clicked to confirm.
+.SH BUGS
+While going, the display is only refreshed when the mouse is moved.
+.br
+While peeking, it is assumed that the
+.I lens
+window contains an accurate magnification of what was on the screen
+at the time of the last magnification.
+If
+.I lens
+is used to examine its own image, strange things may occur.
+.br
+Due to the bitmap reshaping techniques employed by the magnification
+algorithms, high magnification factors will not work with large image
+windows.
+Precisely, if the product of the vertical magnification factor and
+the width of the destination rectangle overflows a signed
+short integer, predictable but undesirable results will occur.
diff --git a/static/v10/man9/libc.9 b/static/v10/man9/libc.9
new file mode 100644
index 00000000..fcad7a45
--- /dev/null
+++ b/static/v10/man9/libc.9
@@ -0,0 +1,42 @@
+.TH LIBC 9.3
+.CT 1 lib_obj
+.SH NAME
+libc \- standard library functions
+.SH DESCRIPTION
+Various standard functions from
+Section 3 are available in 5620 programs:
+.LP
+.2C
+.ft 5
+abs
+atoi
+atol
+chrtab
+qsort
+rand
+srand
+strcat
+strchr
+strrchr
+strcmp
+strcpy
+strncat
+strncmp
+strncpy
+strlen
+.1C
+.ft 1
+.LP
+In addition, certain
+.IR stdio (3)
+programs are available under the
+.IR jx (9.1)
+emulator.
+.SH SEE ALSO
+.IR arith (3),
+.IR atof (3),
+.IR chrtab (3),
+.IR libc (9.3),
+.IR qsort (3),
+.IR rand (3),
+.IR string (3)
diff --git a/static/v10/man9/lsh.9 b/static/v10/man9/lsh.9
new file mode 100644
index 00000000..6f72f88f
--- /dev/null
+++ b/static/v10/man9/lsh.9
@@ -0,0 +1,32 @@
+.TH LSH 9.9
+.SH NAME
+lsh \- create layers and run shell commands
+.SH SYNOPSIS
+.B lsh
+[<file] [>file]
+.br
+.SH DESCRIPTION
+.I Lsh
+runs under
+.IR mpx (1)
+and reproduces a specified setup of layers.
+Each line of the standard input is of the form:
+.IP
+x0 y0 x1 y1 shell-command
+.PP
+For each line
+.I Lsh
+creates a layer whose diagonal spans the points
+.RI ( x0,y0 )
+and
+.RI ( x1, y1 ),
+where (0,0) is the upper left corner of the screen and (800,1024) is the
+lower right.
+If a shell-command is given, it is executed in that layer.
+.PP
+The standard output gives the coordinates of each layer that already exists and
+its downloaded object file, if any.
+This provides coordinates for an input script to duplicate
+a handmade setup.
+.SH BUGS
+Standard input cannot be the keyboard.
diff --git a/static/v10/man9/mcc.9 b/static/v10/man9/mcc.9
new file mode 100644
index 00000000..115741bb
--- /dev/null
+++ b/static/v10/man9/mcc.9
@@ -0,0 +1,227 @@
+.TH MCC 9.1
+.SH NAME
+mcc \- MC68000 C compiler
+.SH SYNOPSIS
+.B mcc
+[
+.I option
+]
+... file ...
+.SH DESCRIPTION
+.I Mcc
+is the C compiler for the Motorola 68000.
+Its default action is to compile programs to run under the
+.IR mpx (1)
+environment on a Blit terminal.
+.PP
+.I Mcc
+accepts several types of arguments:
+.PP
+Arguments whose names end with `.c' are taken to be
+C source programs; they are compiled, and
+each object program is left on the file
+whose name is that of the source with `.o' substituted
+for `.c'.
+The `.o' file is normally deleted, however, if a single
+C program is compiled and loaded all at one go.
+.PP
+In the same way,
+arguments whose names end with `.s' are taken to be assembly source programs
+and are assembled, producing a `.o' file.
+.PP
+Programs using floating-point must be compiled with the
+.B \-lf
+load-time option
+to load the floating-point support package.
+.PP
+The following options are interpreted by
+.IR mcc .
+Load time options, described under
+.IR mld (1),
+are passed to
+.I mld.
+.TP 8
+.B \-c
+Suppress the loading phase of the compilation; force
+an object file to be produced even if only one program is compiled.
+.TP
+.B \-j
+Compile the named programs, and load and link them for running stand-alone
+on a Blit terminal.
+.TP
+.B \-m
+Compile the named programs for ordinary (non-Blit) environments.
+.TP
+.B \-w
+Suppress warning diagnostics.
+.TP
+.SM
+.B \-O
+Invoke an
+object-code improver.
+.TP
+.SM
+.B \-S
+Compile the named C programs, and leave the
+assembler-language output on corresponding files suffixed `.s'.
+.TP
+.SM
+.B \-E
+Run only the macro preprocessor
+on the named C programs, and send the result to the
+standard output.
+.TP
+.SM
+.B \-C
+prevent the macro preprocessor from eliding comments.
+.TP
+.BI \-o " output"
+Name the final output file
+.IR output .
+If this option is used the file `a.out' will be left undisturbed.
+.TP
+.SM
+.BI \-D name=def
+.br
+.ns
+.TP
+.SM
+.BI \-D \*Sname
+Define the
+.I name
+to the preprocessor,
+as if by
+`#define'.
+If no definition is given, the name is defined as "1".
+The symbol
+.I mc68000
+is predefined.
+.TP
+.SM
+.BI \-U \*Sname
+Remove any initial definition of
+.IR name .
+.TP
+.SM
+.BI \-I \*Sdir
+`#include' files
+whose names do not begin with `/' are always
+sought first in the directory
+of the
+.I file
+argument,
+then in directories named in
+.B \-I
+options,
+then in directories on a standard list.
+.TP
+.SM
+.BI \-B \*Sstring
+Find substitute compiler passes in the files named
+.I string
+with the suffixes cpp, ccom and c2.
+If
+.I string
+is empty, use a standard backup version.
+.TP
+.BR \-t [ p012 ]
+Find only the designated compiler passes in the
+files whose names are constructed by a
+.B \-B
+option.
+In the absence of a
+.B \-B
+option, the
+.I string
+is taken to be `/usr/c/'.
+.PP
+Other arguments
+are taken
+to be either loader option arguments, or C-compatible
+object programs, typically produced by an earlier
+.I mcc
+run,
+or perhaps libraries of C-compatible routines.
+These programs, together with the results of any
+compilations specified, are loaded (in the order
+given) to produce an executable program with name
+.B a.out.
+.SH FILES
+.ta \w'/usr/jerq/lib/notsolow.o 'u
+file.c input file
+.br
+file.o object file
+.br
+a.out loaded output
+.br
+/tmp/ctm? temporary
+.br
+/lib/cpp preprocessor
+.br
+/usr/jerq/lib/ccom compiler
+.br
+/usr/jerq/lib/occom backup compiler
+.br
+/usr/jerq/lib/mc2 optimizer
+.br
+/usr/jerq/lib/l.o runtime startoff for
+.B \-j
+.br
+/usr/jerq/lib/notsolow.o runtime startoff for
+.B \-m
+.br
+/usr/jerq/lib/libc.a standard library
+.br
+/usr/jerq/lib/libf.a floating-point library
+.br
+/usr/jerq/lib/libj.a graphics library (used in
+.BR \-lj ).
+.br
+/usr/jerq/lib/libsys.a system and I/O library (used in
+.BR \-lj ).
+.br
+/usr/jerq/include standard directory for `#include' files
+.SH "OTHER PROGRAMS"
+The usual array of associated object-code manipulating programs exists,
+with specifications identical to the usual Unix programs, and with
+names prefixed with an `m.'
+These programs include:
+.ta \w'mlorder 'u
+.br
+mas assembler, see
+.IR as (1)
+.br
+mlorder order library,
+.IR lorder (1)
+(there is no mranlib)
+.br
+mnm name list, see
+.IR nm (1)
+.br
+msize object code size,
+.IR size (1)
+.br
+mstrip strip symbol table,
+.IR strip (1)
+.fi
+.SH "SEE ALSO"
+B. W. Kernighan and D. M. Ritchie,
+.I The C Programming Language,
+Prentice-Hall,
+1978
+.br
+B. W. Kernighan,
+.I
+Programming in C\(ema tutorial
+.br
+D. M. Ritchie,
+.I
+C Reference Manual
+.br
+.IR mld (1),
+.IR cc (1)
+.SH DIAGNOSTICS
+The diagnostics produced by C itself are intended to be
+self-explanatory.
+Occasional messages may be produced by the assembler
+or loader.
diff --git a/static/v10/man9/menuhit.9 b/static/v10/man9/menuhit.9
new file mode 100644
index 00000000..3cde12a1
--- /dev/null
+++ b/static/v10/man9/menuhit.9
@@ -0,0 +1,210 @@
+.TH MENUHIT 9.3
+.CT 2 comm_term
+.SH NAME
+menuhit, hmenuhit \- present user with menu and get selection
+.SH SYNOPSIS
+.nf
+.B #include <jerq.h>
+.PP
+.B int menuhit(m, b)
+.B Menu *m;
+.PP
+.B #include <menu.h>
+.PP
+.B NMitem *hmenuhit(m, b)
+.B NMenu *m;
+.fi
+.SH DESCRIPTION
+.I Menuhit
+presents the user with a menu specified by the Menu pointer
+.I m
+and returns an integer indicating the selection made,
+or
+\-1
+for no selection.
+The integer
+.I b
+specifies which button to use for the interaction: 1, 2 or 3.
+.I Menuhit
+assumes that the button is already depressed when it is called.
+The user makes a selection by lifting the button when the cursor
+points at the desired selection;
+lifting the button outside the menu indicates no selection.
+.PP
+Menus can be built in two ways, either as an array of
+strings or with a generator function:
+.IP
+.EX
+typedef struct {
+ char **item; /* string array, ending with 0 */
+ char *(*generator)(); /* used if item == 0 */
+ short prevhit; /* offset from top of last select */
+ short prevtop; /* topmost item displayed */
+} Menu;
+
+char *menutext[]={"Item 0", "Item 1", "Item 2", 0};
+Menu stringsmenu={ menutext };
+.EE
+.LP
+or
+.IP
+.EX
+char *menugen();
+Menu genmenu={ (char **)0, menugen };
+.EE
+.PP
+The generator function is passed an integer parameter
+.IR n ,
+and must return the string for the
+.IR n th
+menu entry, or 0 if
+.I n
+is beyond the number of entries in the menu.
+The
+.IR n 's
+may come in any order but the result is only needed until the next call.
+.PP
+Regardless of the method of generation, characters with the
+.B 0200
+bit set are regarded as fill characters.
+For example, the string
+.L
+"\e240X"
+will appear in the menu as a right-justified
+.L X
+.RL ( 040
+is the
+.SM ASCII
+space character).
+Menu strings without fill characters are drawn centered in the menu.
+.PP
+The fields
+.I prevhit
+and
+.I prevtop
+are used to guide which items are displayed and which item
+the mouse points to initially.
+They should be nonnegative.
+Both
+.I menuhit
+and
+.I hmenuhit
+may choose to ignore these fields.
+.PP
+.I Hmenuhit
+supports hierarchical menus.
+Submenus are denoted graphically by a right-pointing arrow.
+Moving the cursor onto the arrow causes the submenu to appear.
+Hierarchical menus are built of
+.BR NMitem s
+defined as
+.IP
+.EX
+typedef struct NMenu {
+ char *text;
+ char *help;
+ struct NMenu *next;
+ void (*dfn)(), (*bfn)(), (*hfn)();
+ long data;
+} NMitem;
+.EE
+.PP
+The
+.B text
+field is shown to the user;
+characters with the
+.B 0200
+bit set behave as above.
+The contents of the
+.B help
+field are shown whenever the user holds down button 1 at the same time
+as the button specified by the parameter
+.IR b .
+If
+.I b
+is 1,
+you get help all the time.
+The
+.B next
+field is the address of a submenu or
+.B "(NMenu *)0"
+if there is none.
+The two functions
+.B (*dfn)()
+and
+.B (*bfn)()
+support dynamic submenus.
+.I Dfn
+is called just before the submenu is invoked.
+Its argument is the current menu item.
+Similarly,
+.I bfn
+is called with the current menu item just after the submenu has finished.
+.I Hfn
+is called only when a menu item is selected;
+its argument is the current menu item.
+The menu has been undrawn before
+.I hfn
+is called.
+The return value from
+.I hmenuhit
+is the menu item selected or
+.B "(NMenu *)0"
+if none was selected.
+To permit communication between menu functions and the calling program,
+the
+.I data
+field is available for the user;
+it is ignored by
+.IR hmenuhit .
+.PP
+An
+.BR NMenu ,
+like a
+.BR Menu ,
+may be built by list or by generator.
+An
+.B NMenu
+generator takes an integer parameter
+.I n
+and returns a pointer to an
+.LR NMitem .
+In either case,
+the list of menu items is terminated by an item with a 0
+.B text
+field.
+.SH EXAMPLES
+Simple code to use
+.B stringsmenu
+declared above:
+.IP
+.EX
+.ta \w'case -1: 'u
+switch(menuhit(&stringsmenu, 3)){
+case 0: item_0();
+ break;
+case 1: item_1();
+ break;
+case 2: item_2();
+ break;
+case -1: noselection();
+ break;
+}
+.EE
+.PP
+To provide a submenu for item 1:
+.IP
+.DT
+.EX
+NMitem *gen();
+NMenu i1list = { 0, gen };
+void item_2(), item_3();
+NMitem imenu = {
+ { "item 1", "item 1 help", &i1list },
+ { "item 2", "item 2 help", 0, 0, 0, item_2 },
+ { "item 3", 0, 0, 0, 0, item_3 },
+ { 0 }
+};
+NMenu b3 = { imenu };
+(void)hmenuhit(&b3, 3);
+.EE
diff --git a/static/v10/man9/mld.9 b/static/v10/man9/mld.9
new file mode 100644
index 00000000..59ec8cc5
--- /dev/null
+++ b/static/v10/man9/mld.9
@@ -0,0 +1,146 @@
+.TH MLD 9.1
+.SH NAME
+mld \- MC68000 link editor (loader)
+.SH SYNOPSIS
+.B mld
+[ option ] ... file ...
+.SH DESCRIPTION
+.I Mld
+combines several Motorola 68000
+object programs into one, resolves external
+references, and searches libraries.
+In the simplest case several object
+.I files
+are given, and
+.I mld
+combines them, producing
+an object module which can be either executed or
+become the input for a further
+.I mld
+run.
+(In the latter case, the
+.B \-r
+option must be given
+to preserve the relocation bits.)
+The output of
+.I mld
+is left on
+.BR a.out .
+This file is made executable
+only if no errors occurred during the load.
+.PP
+The argument routines are concatenated in the order
+specified.
+The entry point of the output is the
+beginning of the first routine.
+.PP
+A library is a collection of object modules gathered into
+a file by
+.I ar (1).
+If any argument is a library, it is searched exactly once
+at the point it is encountered in the argument list.
+Only those routines defining an unresolved external
+reference are loaded.
+If a routine from a library
+references another routine in the library,
+the referenced routine must appear after the
+referencing routine in the library.
+Thus the order of programs within libraries
+may be important.
+.PP
+The symbols `etext', `edata' and `end'
+are reserved, and if referred to,
+are set to the first location above the program,
+the first location above initialized data,
+and the first location above all data respectively.
+It is erroneous to define these symbols.
+.PP
+.I Mld
+understands several options.
+Except for
+.BR \-l ,
+they should appear before the file names.
+.TP
+.BI \-b
+relocate the program so its
+first instruction is at the absolute position indicated by the
+decimal
+.I address
+after the
+.B \-b
+option.
+.TP
+.B \-B
+Similar to
+.BR \-b ,
+but only set the base address for the BSS segment.
+This option is usually used in conjunction with
+.B \-b
+when loading programs to run from ROM.
+.TP
+.B \-d
+Force definition of common storage
+even if the
+.B \-r
+flag is present.
+.TP
+.BI \-l x
+This
+option is an abbreviation for the library name
+.RI `/usr/lib/lib x .a',
+where
+.I x
+is a string.
+If that does not exist,
+.I mld
+tries
+.RI `/usr/jerq/lib/lib x .a'
+A library is searched when its name is encountered,
+so the placement of a
+.B \-l
+is significant.
+.TP
+.B \-o
+The
+.I name
+argument after
+.B \-o
+is used as the name of the
+.I mld
+output file, instead of
+.BR a.out .
+.TP
+.B \-r
+Generate relocation bits in the output file
+so that it can be the subject of another
+.I mld
+run.
+This flag also prevents final definitions from being
+given to common symbols,
+and suppresses the `undefined symbol' diagnostics.
+.TP
+.B \-s
+Remove the symbol table and relocation symbols to
+save space in the resulting binary.
+.TP
+.B \-R
+Similar to
+.BR \-r ,
+but flag an error if there are undefined symbols.
+.TP
+.B \-M
+Set the resulting a.out's magic number to 0406,
+to signify a binary runnable under
+.IR mpx (1).
+.TP
+.B \-v
+Generate copious debugging information on standard output.
+.SH FILES
+.ta \w'/usr/jerq/lib/lib*.a\ \ 'u
+/usr/jerq/lib/lib*.a libraries
+.br
+/usr/lib/lib*.a more libraries
+.br
+a.out output file
+.SH "SEE ALSO"
+ld(1), mcc(1), ar(1)
diff --git a/static/v10/man9/mouse.9 b/static/v10/man9/mouse.9
new file mode 100644
index 00000000..f037a192
--- /dev/null
+++ b/static/v10/man9/mouse.9
@@ -0,0 +1,63 @@
+.TH MOUSE 9.4
+.CT 1 comm_term
+.SH NAME
+mouse \- jerq mouse user interface
+.SH DESCRIPTION
+Most jerq programs use the mouse for control, either by pointing at things
+on the screen or by making selections from a menu.
+The mouse buttons are different from keys on a keyboard in that
+events are reported when a button is released (let `up') as well as
+depressed (pressed `down').
+It therefore matters not only
+.I where
+and
+.I when
+a button is pressed, but for how long.
+For example, menus are drawn when a button is depressed, and remain
+displayed as long as the button is held down.
+While the button is down, moving the cursor over the menu highlights
+entries in the menu; the entry (possibly none) under the
+cursor when the button is
+.I released
+is the selection returned to the program.
+Large menus also present a
+`scroll bar'
+on the left side of the menu.
+Moving the mouse inside the scroll bar chooses which subset of the
+available entries are displayed and therefore selectable.
+.PP
+There is a convention about how the buttons are used.
+The left button (button 1) is used to point:
+selecting which layer to work in, which file inside the editor,
+some text in the file, etc.
+The middle button (button 2) produces
+a menu of actions related to the selection:
+remove the selected text, replace it, etc.
+The right button (button 3) presents a menu of global, program-wide actions:
+pick up a new file, rearrange the files on the screen, etc.
+Programs follow this convention well enough that an unfamiliar program
+can often be learned simply by trying it.
+The main violators of the convention are drawing programs,
+which use button 1 to draw things and button 2 to undraw them,
+but this is also a consistent convention.
+.PP
+The mouse cursor is usually an arrow pointing at a pixel, but
+programs often change the cursor to an iconic representation
+of the program's state.
+The most common cursors are:
+.TP
+arrow
+standard cursor
+.TP
+coffee cup
+Program will be busy for a while.
+.TP
+rectangle and arrow
+Program expects a rectangle to be `swept out' by pressing
+a button (usually 3) at one corner and releasing at the diagonally opposite corner.
+.TP
+gunsight
+Program expects an object to be selected by pointing at it and pressing a button (usually 3).
+.TP
+upside-down mouse
+Program is thinking; the mouse is inoperative.
diff --git a/static/v10/man9/movie.9 b/static/v10/man9/movie.9
new file mode 100644
index 00000000..44735e11
--- /dev/null
+++ b/static/v10/man9/movie.9
@@ -0,0 +1,172 @@
+.TH MOVIE 9.1
+.CT 1 graphics writing_troff
+.SH NAME
+movie, stills \- algorithm animation
+.SH SYNOPSIS
+.B movie
+[
+.B -t
+.I termprog
+]
+[
+.B -m
+.I memory
+]
+[
+.I file
+]
+.PP
+.B stills
+[
+.I files ...
+]
+.SH DESCRIPTION
+.I Movie
+converts a `movie script'
+into an internal representation, then displays it in a window on a
+Teletype 5620, AT&T630, or X-11 system (depending on which version has been compiled).
+If the filename is of the form
+.IB file .s ,
+.I movie
+creates the intermediate form in
+.IB file .i ,
+which will be used in subsequent calls if it is more recent than
+.IB file .s ,
+The options are:
+.TP \w'\f5-t\ \fItermprog\ 'u
+.BI -t " termprog
+Load
+.I termprog
+instead of the default terminal program.
+.br
+.ns
+.TP
+.BI -m mem
+Use
+.I mem
+bytes of terminal memory instead of the default.
+.PP
+In the terminal, button 1 stops and starts the movie;
+button 2 adjusts view sizes and selects clicks;
+button 3 sets various parameters.
+.SS Movie scripts
+A movie consists of multiple independent views,
+each presented as a rectangular sub-window.
+If no
+.B view
+statements appear, there is a single implicit view
+.BR def.view .
+Any text or geometrical object may be labeled with a name and colon.
+Labels and coordinates are local to views.
+A recurring label erases the previous
+object with that label.
+.PP
+Comments follow #; blank lines are ignored.
+.HP
+.B text
+.I options x y string
+.br
+Text is centered and medium size by default; options: one of
+.B "center
+.B ljust
+.B rjust
+.B above
+.BR below ,
+and one of
+.BR "small
+.B medium
+.B big
+.BR bigbig .
+A leading quote is stripped from
+.IR string ,
+as is a trailing quote if a leading one is present.
+.PD 0
+.HP
+.BI line
+.I "options x1 y1 x2 y2
+.br
+Lines are solid by default; options: one of
+.B "fat
+.B fatfat
+.B dotted
+.B dashed
+and one of
+.B "->
+.B <-
+.BR <-> .
+.HP
+.BI box
+.I "options xmin ymin xmax ymax
+.br
+A box may be
+.BR fill ed.
+.HP
+.BI circle
+.I "options x1 y1 radius
+.br
+Radius is measured in the
+.I x
+dimension.
+A circle may be
+.BR fill ed.
+.TP
+.BI erase " label
+Erase an object explicitly.
+.TP
+.B clear
+Erase all objects currently in the current view.
+.TP
+.BI click " optional-name
+Place a mark in the intermediate with this name;
+clicks are used to control stepping in a movie or to define frames
+for a set of stills.
+.TP
+.BI view " name
+.br
+Associate subsequent objects with this view,
+until changed again.
+.PD
+.PP
+.I Stills
+converts selected frames of a movie into
+commands for
+.IR pic (1).
+Commands for
+.I stills
+begin with
+.B .begin stills
+and end with
+.B .end
+.BR stills .
+.SH FILES
+All files are in
+.BR /usr/lib/movie .
+.TF stills.awk
+.TP
+.F develop
+Shell script to control conversion from script language to internal form.
+.TP
+.F fdevelop
+C program that does the work.
+.TP
+.F stills.awk
+Awk program to process stills language into
+.IR pic (1).
+.TP
+.F anim
+Host end of the animation system.
+.TP
+.F animterm
+terminal end.
+.TP
+.F newer
+Test whether one file is newer than another.
+.SH "SEE ALSO"
+.IR flicks (9.1),
+.IR pic (1)
+.br
+J. L. Bentley and B. W. Kernighan,
+`A System for Algorithm Animation',
+this manual, Volume 2
+.SH BUGS
+The 630 can only handle 65000 bytes of memory.
diff --git a/static/v10/man9/mux.9 b/static/v10/man9/mux.9
new file mode 100644
index 00000000..02fc3604
--- /dev/null
+++ b/static/v10/man9/mux.9
@@ -0,0 +1,210 @@
+.TH MUX 9.1
+.CT 1 comm_term
+.SH NAME
+mux, ismux, invert \- layer multiplexer for 5620
+.SH SYNOPSIS
+.B mux
+[
+.B -l
+.I command ...
+]
+.PP
+.B mux exit
+.PP
+.B mux cd
+.I directory
+.PP
+.B ismux
+[
+.B -
+]
+.PP
+.B invert
+.SH DESCRIPTION
+.I Mux
+manages asynchronous windows, or layers.
+Upon invocation, it loads the terminal with a
+program
+(default
+.FR /usr/jerq/lib/muxterm ,
+settable by the environment variable
+.BR MUXTERM )
+that is
+the primary user interface.
+Option
+.B -l
+also creates a layer and invokes the shell to run
+.I commands
+in it.
+(See
+.IR windows (9.1)).
+.PP
+The command
+.L mux exit
+leaves
+.I mux,
+destroying all layers;
+.L mux cd
+changes the directory of
+.IR mux ,
+and hence of layers later created,
+but not of the current layers.
+.PP
+Each layer is essentially a separate terminal.
+Characters typed into the layer are sent to the standard input of
+a Unix process bound to the layer, and characters written on the
+standard output of that process appear in the layer.
+When a layer is created, a separate shell
+(the value of the
+.B SHELL
+environment variable, or
+.I sh
+by default)
+is established, and bound to the layer.
+.PP
+Layers are created, deleted, and rearranged using the mouse.
+Depressing mouse button 3 activates a menu of layer operations.
+Releasing button 3 then selects an operation.
+At this point, a gunsight or box cursor indicates that an operation is pending.
+Hitting button 3 again activates the operation on the layer pointed to by the cursor.
+.PP
+The
+.B New
+operation, to create a layer,
+requires a rectangle to be swept out,
+across any diagonal, while button 3 is depressed.
+A box outline cursor indicates that a rectangle is to be created.
+The
+.B Reshape
+operation, to change the size and location of a layer on the screen,
+requires first that a layer be indicated (gunsight cursor) and a new rectangle
+be swept out (box cursor).
+The other operations are self-explanatory.
+.PP
+In a non-current layer,
+button 1 is a shorthand for
+.B Top
+and
+.BR Current ,
+which pulls a layer to the front
+of the screen and makes it the active layer for keyboard and mouse input.
+Th current layer is indicated by a heavy border.
+.PP
+There is a point
+in each layer, called the `Unix point', where
+the next character from the host Unix system will be inserted.
+The Unix point advances whenever characters
+are received from the host, but not when echoing typed characters.
+When a newline is typed after the Unix point,
+characters between the Unix point and the newline,
+inclusive, are sent to the host and the
+Unix point advanced to after the newline.
+This means that
+shell prompts and other output will be inserted before
+characters that have been typed ahead.
+No other characters are sent to the host (but see the discussion of raw mode
+below).
+Therefore partially typed lines or text anywhere before the Unix
+point may be edited.
+.PP
+The default terminal program allows any text on the screen to be edited,
+much as in
+.IR sam (9.1).
+Text may be selected by sweeping it with button 1 depressed.
+Typed characters replace selected text.
+.PP
+All layers share a common `snarf buffer' (distinct from
+.IR sam 's).
+The
+.B cut
+operation on button 2 deletes selected text and puts it
+in the buffer;
+.B snarf
+copies selected text to the buffer;
+.B paste
+replaces selected text (which may be null) from the buffer; and
+.B send
+copies the snarf buffer to after the Unix point.
+.PP
+Normally the terminal doesn't scroll
+as text is received, but a button 2 menu item selects scrolling.
+.PP
+A scroll bar indicates what portion of all the text stored
+for a layer is on the screen.
+(It measures characters, not lines.)
+Releasing button 1 in the scroll bar brings the line at the top
+of the screen to the cursor;
+releasing button 3 takes the line at the cursor
+to the top of the screen.
+Button 2, treating the scroll bar as a ruler, brings the indicated
+point in the whole stored text to the top of the screen.
+Slide the cursor off either end of the scroll bar with button 2
+depressed to get right to an end of the file.
+.PP
+The
+.SM NUM LOCK
+key advances a half page.
+.PP
+.I Ismux
+reports on its standard error whether its standard output is a
+.I mux
+layer, and also generates the appropriate exit status.
+With option
+.LR - ,
+no message is produced.
+.PP
+.I Invert
+reverses the sense of video, from black on white to
+white on black, or
+.I vice
+.IR versa .
+.PP
+Independent user-level programs can be loaded into layers, see
+.IR 32ld (9.1).
+.SM SHIFT-SETUP
+freezes
+.I mux
+and complements the video of the layer of the running user-level terminal process.
+Hitting button 2 in this state will attempt to kill the process;
+1 or 3 will leave it running.
+.PP
+In raw mode or no-echo mode (see
+.IR ttyld (4))
+the Unix point advances with each character
+typed after it.
+In 8bit mode, characters with octal codes 0200 and greater
+print according to the ISO Latin1 alphabet; see
+.IR ascii (6).
+.SH FILES
+.F /tmp/.mux*
+temporary file used by
+.B -l
+option
+.SH SEE ALSO
+.IR 32ld (9.1),
+.IR sam (9.1),
+.IR jx (9.1),
+.IR term (9.1),
+.IR windows (9.1)
+.br
+R. Pike,
+`Blit Download Protocols',
+this manual, Vol. 2
+.SH DIAGNOSTICS
+.I Mux
+refuses to create a layer when there is not enough memory.
+Space can be recovered by deleting a layer.
+.br
+Error messages from
+.I mux
+are written directly to the layer which caused them.
+They are usually meaningful only to system administrators,
+and indicate system difficulties.
+.SH BUGS
+Reshape only works properly for processes that arrange to see if they have
+been reshaped, although most programs
+make this arrangement.
+.br
+The behavior of raw mode prohibits editing
+partially typed lines when running
+.IR cu (1).
diff --git a/static/v10/man9/muxstring.9 b/static/v10/man9/muxstring.9
new file mode 100644
index 00000000..738a4daa
--- /dev/null
+++ b/static/v10/man9/muxstring.9
@@ -0,0 +1,124 @@
+.TH MUXSTRING 9.3
+.CT 2 comm_term
+.SH NAME
+strinsure, strinsert, strdelete, strzero, setmuxbuf, getmuxbuf, movstring \- dynamic strings in mux
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B strinsure(s, n); String *s;
+.PP
+.B "strinsert(d, i, s); String *d, *s;
+.PP
+.B "strdelete(d, i, j); String *d;
+.PP
+.B strzero(d); String *d;
+.PP
+.B setmuxbuf(s); String *s;
+.PP
+.B getmuxbuf(d); String *d;
+.PP
+.B movstring(n, sp, dp); char *sp, *dp;
+.SH DESCRIPTION
+These functions manipulate strings represented
+in the following form.
+.IP
+.EX
+.ta \w'struct 'u
+struct String {
+ char *s;
+ short n;
+ short size;
+};
+.EE
+.LP
+The string proper occupies the first
+.B n
+characters of a data block of
+.L size
+characters pointed to by
+.BR s .
+Initially both
+.B size
+and
+.B s
+should be 0.
+Strings are always counted, not terminated by
+.BR \e0 .
+The functions obtain space as needed from
+.IR gcalloc ;
+see
+.IR alloc (9.3).
+Thus a
+.B String
+structure should never be copied.
+.PP
+.I Strinsure
+arranges that
+.IB s ->size\(>= n.
+It must be called before any operation that could
+overflow the current size.
+.PP
+.I Strinsert
+inserts a copy of source
+.I s
+into destination
+.I d
+beginning at character
+.I i
+(counted from 0),
+adding
+.IB s ->n
+to
+.IB d ->n .
+.PP
+.I Strdelete
+removes characters
+.I i
+through
+.IR j \-1
+from string
+.I d,
+subtracting
+.IR j \- i,
+which must be nonnegative, from
+.IB d ->n .
+.PP
+.IB Strzero
+frees the memory associated with
+.I d
+and sets both
+.IB d ->n
+and
+.IB d ->size
+to zero.
+.PP
+.I Setmuxbuf
+copies string
+.I s
+into the snarf buffer maintained by
+.IR mux (9.1);
+.I getmuxbuf
+copies from the snarf buffer into
+.I d.
+.PP
+.I Movstr
+copies a block of
+.I n
+characters beginning at
+.I sp
+to a block beginning at
+.I dp.
+If
+.I n
+is negative it copies
+.RI \- n
+characters ending at
+.IR sp \- 1
+to a block ending at
+.IR dp \-1.
+Notice that
+.I movstring
+does not operate on
+.BR String s.
+.SH SEE ALSO
+.IR libc (9.3)
diff --git a/static/v10/man9/newlayer.9 b/static/v10/man9/newlayer.9
new file mode 100644
index 00000000..2d89e172
--- /dev/null
+++ b/static/v10/man9/newlayer.9
@@ -0,0 +1,81 @@
+.TH NEWLAYER 9.2
+.CT 2 comm_term
+.SH NAME
+newlayer, dellayer, downback, lbitblt, lpoint, lrectf, lsegment, ltexture, upfront \- layer control and graphics
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B Layer *newlayer(r);
+.B Rectangle r;
+.PP
+.B void dellayer(l)
+.B Layer *l;
+.PP
+.B void lbitblt(sl, r, dl, p, f)
+.B "Layer *sl, *dl; Rectangle r; Point p; Code f;
+.PP
+.B void lpoint(l, p, f)
+.B "Layer *l; Point p; Code f;
+.PP
+.B void lrectf(l, r, f)
+.B "Layer *l; Rectangle r; Code f;
+.PP
+.B void segment(l, p, q, f)
+.B "Layer *l; Point p, q; Code f;
+.PP
+.B void ltexture(l, r, t, f)
+.B "Layer *l; Rectangle r; Texture *t; Code f;
+.PP
+.B void upfront(l)
+.B "Layer *l;
+.PP
+.B void downback(l)
+.B "Layer *l;
+.SH DESCRIPTION
+.I Newlayer
+creates a layer in Rectangle
+.I r
+in the physical display bitmap, and returns its address,
+or 0 on failure.
+.IR Newproc (9.2)
+explains how to attach a process to a layer.
+.PP
+.I Dellayer
+de-allocates a layer; the associated process must also
+be freed (see
+.IR newproc (9.2)).
+.PP
+.I Upfront
+and
+.I downback
+are the subroutines corresponding to the
+.IR mux (9.1)
+menu items
+.B Top
+and
+.BR Bottom .
+.PP
+The routines
+.IR lbitblt ,
+.IR lpoint ,
+.I lsegment
+and
+.IR ltexture
+are equivalent to their
+.IR bitblt (9.3)
+counterparts
+except that they never inhibit the mouse cursor,
+so they are mainly useful only for implementation
+of efficient composite graphics operations such
+as circle-drawing.
+Because of the duality of Bitmaps and Layers,
+arguments of either type may be passed freely
+to any of the graphics primitives.
+.SH SEE ALSO
+.IR bitblt (9.3),
+.IR newproc (9.2)
+.br
+Rob Pike,
+.I
+Graphics in Overlapping Bitmap Layers,
+ACM Trans. on Graphics, April 1983.
diff --git a/static/v10/man9/newproc.9 b/static/v10/man9/newproc.9
new file mode 100644
index 00000000..0a0c38b6
--- /dev/null
+++ b/static/v10/man9/newproc.9
@@ -0,0 +1,193 @@
+.TH NEWPROC 9.2
+.CT 2 proc_man
+.SH NAME
+P, newproc, muxnewwind, newwindow, tolayer, debug, getproc, getproctab, putname, getname \- jerq process control
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B extern struct Proc *P;
+.PP
+.B struct Proc *newproc(f)
+.B void (*f)();
+.PP
+.B struct Proc *newwindow(f);
+.B void (*f)();
+.PP
+.B void tolayer(l)
+.B Layer *l;
+.PP
+.B void debug();
+.PP
+.B struct Proc *getproc();
+.PP
+.B struct Proc *getproctab();
+.PP
+.B int putname(string, data)
+.B char *string; long data;
+.PP
+.B struct Nqueue *getname(string)
+.B char *string;
+.PP
+.B #include <msgs.h>
+.br
+.B void muxnewwind(p, c)
+.B struct Proc *p; int c;
+.SH DESCRIPTION
+Processes in the jerq consist of a coroutine-style process
+structure and an associated layer
+(see
+.IR newlayer (9.2)),
+allocated independently.
+This section describes the process allocation and control
+primitives.
+They are direct links to the system's own
+control structures, so given
+.IR mux 's
+open addressing, they should be used with care.
+.PP
+Each process has a global variable
+.I P
+that points to its process structure.
+The only regular use of
+.I P
+is to check that the process has been moved or reshaped:
+.IP
+.EX
+if(P->state & RESHAPED){
+ do_reshape();
+ P->state &= ~RESHAPED;
+}
+.EE
+.PP
+The definition of
+.B struct Proc
+is in the include file
+.BR <jerqproc.h> ,
+which is included automatically by
+.BR <jerq.h> .
+.PP
+.I Newproc
+allocates a new process, returning a pointer to it, or 0
+if one cannot be allocated.
+Argument
+.I f
+points to the program text to be executed.
+The special case
+.IR f =0
+creates a process running the default terminal program,
+and is almost always how
+.I newproc
+should be called; use
+.IR 32ld (9.1)
+to run non-standard programs.
+A process is disabled by setting
+.I p->state
+to zero.
+After calling
+.IR newproc,
+the process must be bound to a layer and
+Unix told of its presence, typically as:
+.IP
+.EX
+struct Proc *p;
+Rectangle r;
+p = newproc((struct Proc *)0);
+if(p == 0)
+ error();
+p->layer = newlayer(r);
+if(p->layer == 0){
+ p->state = 0;
+ error();
+}
+p->rect = r;
+muxnewwind(p, C_NEW);
+.EE
+.PP
+The second argument to
+.I muxnewwind
+should be
+.B C_RESHAPE
+if an existing process is being given a new layer.
+If the process is
+.I not
+running the default terminal program, its variables
+.L display
+and
+.L Drect
+must be set:
+.IP
+.EX
+struct udata *u=((struct udata *)p->data);
+u->Drect=p->rect;
+u->Jdisplayp=p->layer;
+.EE
+This procedure works regardless of whether the process being manipulated is itself.
+.PP
+.I Newwindow
+creates a process by the above procedure, going through the
+standard user interface to select the rectangle for the process's
+layer.
+.PP
+.I Tolayer
+takes an argument
+.I layer
+pointer and makes the process in that layer the receiver of
+mouse and keyboard events.
+.PP
+.I Getproc
+presents the user with a gunsight cursor and returns the
+address of the process whose layer is indicated with the mouse.
+.I Getproctab
+simply returns the address of the base of the process table array.
+This is an array of
+.B NPROC
+process structures.
+.B NPROC
+is stored in the word immediately lower in address than the
+process table.
+.PP
+.I Debug
+announces to the system that the calling process is prepared
+to handle exceptions by other processes.
+.PP
+.I Putname
+and
+.I getname
+manage a bulletin board for interprocess communication.
+Further communication may be arranged through shared memory.
+.I Putname
+associates
+.I data
+with
+.I string,
+returning nonzero normally, or 0 if the data could not be stored.
+.I Getname
+returns a pointer
+to a structure which contains
+.TP
+.B struct Proc *proc
+pointer to the process structure of the layer that
+most recently announced the string
+.TP
+.B long data
+the corresponding data
+.LP
+.I Getname
+returns 0 if no such string has been announced.
+A pointer returned by
+.I getname
+remains valid: a client may rendezvous with a server by
+calling
+.I getname
+once and repeatedly testing
+the associated
+.B proc
+pointer thereafter.
+.SH BUGS
+These primitives are awkward at best, and are
+subject to change.
+.br
+Creating a process without a layer or
+.I
+vice versa
+is dangerous.
diff --git a/static/v10/man9/pads.9 b/static/v10/man9/pads.9
new file mode 100644
index 00000000..7173ecdc
--- /dev/null
+++ b/static/v10/man9/pads.9
@@ -0,0 +1,102 @@
+.TH PADS 9.5
+.CT 2 comm_term
+.SH NAME
+pads \- user interface package
+.SH DESCRIPTION
+.I Pads
+is a mouse-based interface for browsing a network
+of windows.
+.PP
+Button 1 points.
+Pointing at a window makes it current, with a heavy border;
+pointing at a line of text makes it current, inverts its video,
+and scrolls it to the middle of the window.
+A scroll bar at the left of each window shows how
+much of the text of a window is visible;
+pointing into the scroll region controls what text is displayed.
+.PP
+Button 2 has a menu of operations that apply to the current line.
+Operations above the
+.B ~~~~~
+separator are specific to each line;
+operations below the separator are generic line operations:
+.TF truncate
+.TP
+.B cut
+Remove the line.
+.PD
+.TP
+.B sever
+Remove the line and all lines above it.
+.TP
+.B fold
+If lines pass the right margin, continue them on following lines.
+.TP
+.B truncate
+Truncate lines at the right margin.
+.LP
+Button 3 has a menu of window-level operations, and is in three parts.
+Below the lower separator is a list of windows;
+selecting one makes it current.
+They appear in front-to-back screen order, current at the top.
+Operations above the upper separator are specific to each window;
+operations between the separators are generic window operations:
+.TF truncate
+.TP
+.B reshape
+.TP
+.B move
+.TP
+.B close
+Like
+.BR reshape ,
+.BR move ,
+and
+.B delete
+in
+.IR mux (9.1).
+.PD
+.TP
+.B fold
+.br
+.ns
+.TP
+.B truncate
+apply to all lines in the window.
+.PP
+Keyboard characters accumulate at the bottom of the layer.
+If the current line accepts input, it flashes with each keystroke;
+otherwise, if the current window accepts input, its border flashes.
+Carriage return is ignored until a line or window
+accepts the text, whereupon
+the input line is sent to the line or window.
+The ESC key substitutes the
+.IR mux (9.1)
+global snarf buffer.
+.PP
+If the first character of a line from the keyboard is
+.B <
+or
+.B >
+the remainder of the line is interpreted as a shell command.
+For
+.BR < ,
+each line of the command's standard output is sent to the line or window,
+as though it had come from the keyboard.
+For
+.BR > ,
+the line or lines of the window become the command's standard input.
+Each line or window that accepts keyboard input produces
+some help in response to
+.BR ? .
+Special cursor icons occasionally appear:
+.TP
+arrow-dot-dot-dot
+The host is completing an operation; the terminal is ready
+asynchronously.
+.TP
+exclamation mark
+Confirm a dangerous menu selection by pressing that menu's button again.
+.SH SEE ALSO
+T. A. Cargill,
+.I Pads Programming Guide
diff --git a/static/v10/man9/paint.9 b/static/v10/man9/paint.9
new file mode 100644
index 00000000..db8492eb
--- /dev/null
+++ b/static/v10/man9/paint.9
@@ -0,0 +1,218 @@
+.TH PAINT 9.1
+.CT 1 games
+.SH NAME
+paint \- draw pictures in a layer
+.SH SYNOPSIS
+.B paint
+.SH DESCRIPTION
+.PP
+.I Paint
+is a program for artistic interactive drawing.
+Buttons 1 and 2 draw in different ways,
+e.g. depositing and erasing paint.
+Button 3 gets a menu.
+Certain menu items contain arrows, which if touched call submenus.
+Moving off the right of a submenu causes it to disappear.
+Some items toggle a state on and off; a
+.L *
+appears in the abnormal state.
+Pressing button 1 while holding button 3 gets a short help
+message for the menu item.
+The top-level menu contains:
+.PP
+.de fq
+\f5\\$1\fR \\$2 \\$3 \\$4 \\$5 \\$6
+..
+.nf
+.ta \w'\f5Line style\fP 'u +\w'\(-> 'u
+.fq Style \(-> "Different kinds of brush strokes"
+.fq Operation \(-> "Ways of putting paint on canvas"
+.fq Texture \(-> "Things to do to the texture pattern"
+.fq Brush \(-> "Things to do to the paintbrush"
+.fq Canvas \(-> "Things to do to the whole picture"
+.fq State \(-> "Change things saved in \fI.paintstate\fP"
+.fq Fill "" "Fill an area of the picture"
+.fq Green "" "Erase the entire picture"
+.fq Mask "" "Display mask instead of image"
+.fq Exit
+.fi
+.PP
+The
+.B Style
+submenu:
+.PP
+.nf
+.fq Paint "" "Multiple brush spots while holding button 1 or 2
+.fq Circles "" "Circles; press at center and release at circumference
+.fq Lines "" "Rubber-band brush lines
+.fq Curves "" "Continuous strokes while holding button 1 or 2
+.fq "Line Style" \(-> "Solid, dotted, dashed, etc. lines
+.fi
+.PP
+Entries in the
+.B Line Style
+sub-submenu are strings of
+.LR A s,
+.LR B s
+and dot that
+describe dotted and dashed lines.
+.L A
+stands for the brush on the button pushed,
+.L B
+stands for the brush on the other button;
+.L .
+for
+no brush at all.
+The string is cycled through at successive points when drawing
+Lines, Curves, or Circles.
+Thus
+.L A
+means a solid line,
+.L A...
+means a 1 in 4 dotted
+line, and
+.L AAAA....
+means 4-pixel dashes.
+.PP
+The
+.B Operation
+submenu assigns a pair of operations for buttons 1 and 2.
+A hidden `mask' plane describes the shape that has been painted;
+black pixels in the mask are inside, green outside.
+Likewise, the brush
+consists of a pair of rectangular image and mask planes.
+There are 11 effective operations to combine the part of the brush
+inside its mask
+with the part of the picture it sits on (see
+the Porter/Duff paper for details); selected pairs can be assigned to the
+buttons:
+.PP
+.nf
+.ta \w'\f5Line style\fP \(-> 'u
+.fq Above/Erase "Button 1 paints on top, Button 2 erases
+.fq Below/Erase "Button 1 paints behind, Button 2 erases
+.fq Above/Below "Button 1 paints on top, Button 2 behind
+.fq Inside/Erase "Button 1 paints inside, Button 2 erases
+.fq Brush/Clear "Special effects
+.fq AoutB/AinB "Special effects
+.fq BinA/BatopA "Special effects
+.fq Xor/Above "Special effects
+.fi
+.PP
+.B Above
+paints on top of the picture, as in
+`normal' paint programs.
+.PP
+.B Below
+paints underneath\(emonly in places that were not
+previously covered.
+.PP
+.B Inside
+paints on top, but only inside the already-painted part.
+.PP
+The other 7 operations are best described as `special effects'.
+Try them out
+to see what they do, or look at the Porter/Duff paper.
+.PP
+Texture
+facilities paint with a repeating 16\(mu16 pattern instead of copies of
+a brush.
+The
+.B Texture
+submenu contains:
+.PP
+.nf
+.ta \w'\f5Line style\fP 'u +\w'\(-> 'u
+.fq Texture "" "Turn texturing on or off
+.fq Make "" "Pick a texture from the picture
+.fq Negate "" "Reverse the texture's green and black
+.fq Save "" "Name a texture and copy it into a file
+.fq Library \(-> "List and and retrieve textures in library
+.fq Get "" "Type a name and get a texture from a file
+.fi
+.PP
+.B Make
+gives a 16\(mu16 square cursor with which to pick
+a texture.
+.PP
+The
+.B Brush
+submenu has the same items
+for brushes.
+.B Make
+allows you to sweep out a region to use as a brush.
+.PP
+The
+.B Canvas
+submenu contains
+.BR Negate ,
+.BR Save ,
+.BR Library ,
+and
+.BR Get ,
+in this case pertaining to entire pictures.
+A library picture
+is saved in a file containing the image plane then the
+mask plane in
+.IR bitfile (9.5)
+format.
+.PP
+The file
+.B .paintstate
+in the current directory remembers
+the names of the current brush, texture,
+and libraries between sessions.
+The
+.B State
+submenu displays the library names at the bottom
+of the layer, where they can be edited:
+.PP
+.nf
+.ta \w'\f5Line style\fP \(-> 'u
+.fq Brushes "" "Name the brush directory
+.fq Pictures "" "Name the picture directory
+.fq Textures "" "Name the texture directory
+.fi
+.PP
+The
+.B Fill
+menu item gives an arrowhead cursor.
+If you touch down with button 3 at a point not painted,
+the rookwise-connected
+region containing it will fill with black.
+On completion, the
+black will be replaced by the current texture.
+While the region is filling, any button click aborts the operation.
+.PP
+The current selections from the
+.BR "Brush Library" ,
+.BR Style ,
+.BR Operation ,
+.BR Texture ,
+and
+.B "Line Style"
+menus are marked with a
+.LR * ,
+and are displayed in the information box
+at the bottom of the layer.
+.SH FILES
+.TF /usr/jerq/lib/paint/brush
+.TP
+.F /usr/jerq/lib/paint/brush
+the default brush library
+.TP
+.F /usr/jerq/lib/paint/tex
+the default texture library
+.TP
+.F \&.paintstate
+state of terminated program
+.SH SEE ALSO
+.IR mbits (6),
+.IR bitfile (9.5),
+.IR brush (9.1),
+.IR cip (9.1),
+.IR ped (9.1)
+.br
+Thomas Porter and Tom Duff,
+`Compositing Digital Images,'
+Siggraph '84 Proceedings
diff --git a/static/v10/man9/ped.9 b/static/v10/man9/ped.9
new file mode 100644
index 00000000..becd4d41
--- /dev/null
+++ b/static/v10/man9/ped.9
@@ -0,0 +1,318 @@
+.TH PED 9.1
+.CT 1 editor writing_troff graphics
+.SH NAME
+ped, tped \- picture editor
+.SH SYNOPSIS
+.B ped
+[
+.B -f
+]
+[
+.I file ...
+]
+.PP
+.B tped
+[
+.I option ...
+]
+[
+.I file ...
+]
+.SH DESCRIPTION
+.I Ped
+is an interactive drawing program for
+5620 terminals.
+A
+.I file
+argument is equivalent to
+an
+.L e
+command as described below.
+Most features of
+.I ped
+are menu-controlled and self-explanatory; further details
+are in the reference.
+.PP
+Button 1 selects actions
+from a permanent menu and to draw or pick up an object.
+Button 3 terminates drawing actions or changes
+the permanent menu.
+Button 2 causes the permanent menu to revert to
+.LR basic .
+.PP
+The operation of
+.I ped
+is split between host and terminal.
+When a file is first read, it is kept on
+the host;
+.L bring in
+gets it to the 5620.
+.PP
+Option
+.B -f
+causes
+.I ped
+to display all text in one size to save time and space.
+.PP
+Some of the actions on permanent menus (switched by button 3)
+are described below.
+The last action is usually remembered and may be
+executed repeatedly
+until another is selected.
+Thus, for example, one can fill many polygons with
+one button click per polygon.
+Actions marked
+.L (t)
+in the menu toggle on and off.
+.PP
+.B basic
+menu
+.RS
+.TF rotate
+.TP
+.B blitblt
+Copy part of the screen to file
+.FR BLITBLT ,
+see
+.IR blitblt (9.1).
+.TP
+.B exit
+Leave
+.IR ped ,
+requires a confirming push of button 3.
+.TP
+.B markers
+Make visible the defining points of objects;
+these are the only points sensitive to selection by button 1.
+.RE
+.TP
+.B type comm
+Take input from the keyboard.
+.RS
+.TF rotate
+.TP
+.BI e " file"
+Begin editing
+.IR file,
+remember its name, as in
+.IR ed (1).
+Commands
+.B f
+(file name),
+.B r
+(read),
+.B w
+(write),
+behave similarly.
+.TP
+.B qq
+Same as
+.B exit
+in
+.B basic
+menu; altered files will be saved in
+.FR ped.save .
+.TP
+.B cd
+Change working directory.
+.TP
+.B pwd
+Print working directory.
+.TP
+newline
+Reactivate mouse.
+.TP
+.BI u " string"
+Remember
+.I string
+as a shell command for the selection
+.L user oper
+in menu
+.LR refine.
+.PD
+.RE
+.TP
+.B ch size
+.PD0
+.RS
+.TF rotate
+.TP
+.B rotate
+displays a vector from the center (of the bounding box) of an object to the
+selected point.
+The object is rotated and scaled to bring that point to
+a second selected position.
+.TP
+.B h-elong
+Change aspect ratio.
+The inverse is
+.BR v-elong .
+.RE
+.PD
+.TP
+.B move
+Button 3 cancels a move or copy.
+To help untangle overlapping objects, the cancellation
+does not take place until returning to the basic menu.
+.RS
+.PD0
+.TF rotate
+.TP
+.B attach
+Move an open polygon (a broken line)
+and hook it to the end of another.
+.TP
+.B join
+Connect the ends of two polygons with a new line.
+.TP
+.B link
+Cause multiple polygons to move and be filled as one
+(useful for making holes).
+Linked polygons must all be open or all be closed.
+.TP
+.B match
+Move objects to bring selected points together.
+.TP
+.B center
+Move objects to bring their centers together.
+.TP
+.B family/pt
+Select objects to be moved or deleted together.
+.RE
+.PD
+.TP
+.B draw
+Button 1 fixes a point;
+button 3 terminates an object.
+.PD0
+.RS
+.TF rotate
+.TP
+.B text
+Type one or more lines terminated by an empty line.
+.TP
+.B grid
+Snap points to locations on
+a grid, which indexes through settings FMC (fine, medium, coarse, none).
+.TP
+.B fix sz
+Set option
+.BR -f .
+.TP
+.B family/bx
+Sweep a box around objects to be moved or deleted together.
+.RE
+.PD
+.TP
+.B reshape
+.RS
+.TF rotate
+.TP
+.B formal
+Adjust nearly rectangular lines to be perfectly so.
+.TP
+.B spline
+A piecewise parabolic fit tangent to the midpoints of
+a broken line.
+.TP
+.B corner
+Make a guiding point of a spline to be multiple \- a corner
+in an otherwise smooth curve.
+.PD
+.RE
+.TP
+.B refine
+.RS
+.TF rotate
+.TP
+.B adj t
+Left-justify, right-justify, or center text.
+.TP
+.B edit text
+Display text at the top, where button 1 selects a
+position for inserting by typing or deleting by backspacing.
+Button 3 concludes the editing.
+.RE
+.PD
+.TP
+.B shade
+Assign textures for filling polygons, circles, or spline-bounded regions.
+Curves are filled schematically on the 5620, but accurately on
+the host.
+.TP
+.B color
+Assign colors for display on other devices.
+.TP
+.B remote
+Perform all editing on the host using the terminal
+as a display device only.
+.PP
+.I Tped
+converts files of graphic information produced by
+.I ped
+into typesetting requests for
+.IR troff (1).
+The options are:
+.TP
+.BI -T dev
+Prepare output for particular devices known to
+.IR troff :
+.B -Taps
+or
+.BR -T202 .
+.PD 0
+.TP
+.B -b
+Place a box around each picture.
+.PD
+.PP
+The input may be straight
+.I ped
+output or may be arbitrary text files with
+.I ped
+output embedded between
+pairs of delimiting lines:
+.PD0
+.IP
+.BI .GS " \fR[\fI size \fR]\fI"
+ped file
+\&. . .
+.B .GE
+.LP
+or in another file:
+.IP
+.BI .GS " \fR[\fI size \fR]\fI pedfilename"
+.PD
+.PP
+The optional size gives width or height:
+.BI w= inches
+or
+.BI h= inches.
+.SH FILES
+.F .pederr
+.br
+.F ped.save
+.SH SEE ALSO
+.IR cip (9.1),
+.IR paint (9.1),
+.IR brush (9.1),
+.IR graphdraw (9.1),
+.IR pic (1),
+.IR ideal (1),
+.IR blitblt (9.1)
+.br
+T. Pavlidis,
+`PED Users Manual',
+this manual, Volume 2
+.SH DIAGNOSTICS
+Error messages from the host
+are placed in file
+.BR .pederr .
+.SH BUGS
+Pictures may spill into the menu or message areas.
+.br
+Some experimentation with
+.I tped
+printout parameters
+may be needed to
+obtain satisfactory results.
diff --git a/static/v10/man9/pengo.9 b/static/v10/man9/pengo.9
new file mode 100644
index 00000000..3d594795
--- /dev/null
+++ b/static/v10/man9/pengo.9
@@ -0,0 +1,72 @@
+.TH PENGO 9.6
+.CT 1 games
+.SH NAME
+pengo \- squash the sno-bees
+.SH SYNOPSIS
+.B demo pengo
+.PP
+.SH DESCRIPTION
+.I Pengo
+plays the video game.
+Any button replaces the penguin picture by the game.
+.PP
+The mouse
+controls the movement of the penguin.
+(The usual
+.L hjkl
+keys also move the penguin, with the
+space bar stopping movement.)
+.PP
+.nf
+Button 1: Stop the penguin at the next block boundary.
+Button 2: Push (or break) a block, or splash the water boundary.
+Button 3: Display a menu to control aspects of the game.
+.fi
+.PP
+The penguin moves in one
+direction at constant speed unless acted upon by an outside force:
+moving the mouse or encountering a wall or border.
+If button 2 is pressed when a block is encountered then the block is
+pushed.
+If another block (or a wall) is behind the first then the block
+will shatter, scoring 30 points.
+Similarly breaking
+an egg scores 500.
+An unobstructed block will
+slide until it hits an obstacle, sweeping along any
+sno-bees in its path and crushing them.
+Getting one sno-bee with a block scores 400 points, two 1600,
+three 3200, four 6400.
+.PP
+Lining up the three blocks that bear crosses
+is worth 5000 points if they are lined against a wall, 10000 otherwise.
+Bonus penguins are given out every so often.
+.PP
+Pushing on the border
+causes ripples to propagate along it, stunning any sno-bees that
+are touching it.
+A penguin may crush a stunned
+sno-bee underfoot for 100 points.
+.PP
+Button 3 gets a menu with entries
+.BR Pause ,
+.BR Stats ,
+.BR "New Game" ,
+.BR Quit .
+All require another click of button 3 to complete.
+.B Stats
+presents three sliders controlled by button 1:
+.TP
+.B C
+Change
+(% of time that the sno-bees change direction)
+.TP
+.B R
+Random
+(% of time that a random direction is chosen
+when changing)
+.TP
+.B B
+Break
+% of time that a sno-bee will break a block
+that is blocking its way).
diff --git a/static/v10/man9/pi.9 b/static/v10/man9/pi.9
new file mode 100644
index 00000000..f67d3868
--- /dev/null
+++ b/static/v10/man9/pi.9
@@ -0,0 +1,397 @@
+.TH PI 9.1
+.CT 1 debug_tune
+.SH NAME
+pi, 3pi \- process inspector
+.SH SYNOPSIS
+.B pi
+[
+.B -t
+.I corefile objectfile
+]
+.PP
+.B 3pi
+[
+.B -p
+.I person
+]
+.SH DESCRIPTION
+.I Pi
+is a C debugger that
+is bound dynamically to multiple subject processes or core dumps.
+It works better for programs compiled
+.I cc
+.IR \-g .
+.I Pi
+uses the
+.IR Pads (9.5)
+multi-window user interface.
+There are three types of windows:
+debugger control windows,
+which access the global state of the debugger;
+process control windows (exactly one per process),
+which start and stop processes and connect to process-specific functions;
+and process inspection windows,
+which include viewers for source text and memory, formatted various ways.
+.PP
+The most important debugger control window is the
+.I pi
+window itself.
+Each line within the
+.I pi
+window refers to a specific process.
+These lines may be introduced to the window by running
+.IR ps (1)
+from the button 3 menu;
+by typing a file name, either a
+.IR proc (4)
+name, or the name of a core image followed by the name of the binary that created
+the core;
+or by typing a command, prefixed by an exclamation
+.LR ! ,
+to be executed as a child of
+.IR pi .
+There are several ways to access a process (using the button 2 menu),
+each of which generates a process control window:
+.TF hang\ &\ take\ over
+.TP
+.B open process
+Attach to a running process, often one started with
+.IR hang (1).
+.PD0
+.TP
+.B open core
+Attach to a core image.
+.TP
+.B open child
+Attach to a process forked by a process being debugged by the current
+.IR pi.
+.TP
+.B take over
+Rebind an existing process window hierarchy (pointed to with the mouse)
+to the named process,
+which must be an instance of the identical program.
+.TP
+.B hang & open proc
+Execute a command afresh, beginning it in the
+stopped state, and redirecting IO to
+.FR /dev/null .
+.TP
+.B hang & take over
+Same, also binding to an existing process window.
+.PD
+.PP
+The process window indicates the process's state,
+shows the call stack traceback
+and connects to windows that access source text,
+local variables within a stack frame,
+raw memory, and so on.
+These windows are cross-connected, so, for example,
+an instruction in a process's assembly language window can
+be inspected in hexadecimal in the raw memory window.
+Closing the process control window closes all the windows under it.
+.PP
+The following menu functions are provided by
+the various window types in
+.IR pi .
+Initially there are these windows available:
+.TP 0.5i
+.B Help
+Reminder of user interface mechanics.
+.TP
+.B Pi
+Overall control of processes, core dumps and programs.
+A process is identified by its pathname or command line.
+Process symbols are found in the executable file from which the process was loaded,
+but may be overridden.
+Symbols for core dumps must be supplied explicitly, after the core filename.
+\fBSynopsis\fP:
+Identify and open process or core dump;
+run a program as
+.I Pi's
+child;
+take over a process with the debugging environment of a different one.
+.TP
+.B Pwd/cd
+change the working directory of the debugger.
+.SS Process Window
+Selecting and opening a process from the Pi window creates a new
+window with overall control of that process.
+It shows the process state, and a traceback if the process is halted or dead.
+States are:
+.TF EVENT\ PENDING
+.TP
+.SM
+.B ACTIVE
+running normally
+.TP
+.SM
+.B HALTED
+halted asynchronously by a debugger
+.TP
+.SM
+.B BREAKPOINT
+halted on reaching breakpoint
+.TP
+.SM
+.B STMT STEPPED
+halted after executing C source statement(s)
+.TP
+.SM
+.B INSTR STEPPED
+halted after executing machine instruction(s)
+.TP
+.SM
+.B EVENT PENDING
+halted about to receive a signal being traced
+.TP
+.SM
+.B ERROR STATE
+the process has probably exited
+.PD
+.LP
+The menu operations on the process are:
+.TF EVENT\ PENDING
+.TP
+.B go
+let the process run
+.PD 0
+.TP
+.B stop
+stop the process
+.TP
+.B kill
+send
+.B SIGKILL
+to the process; see
+.IR signal (2)
+.TP
+.B src text
+open source text window(s)
+.TP
+.B Signals
+open window for sending and trapping signals
+.TP
+.B Globals
+open window for evaluating expression in global scope
+.TP
+.B RawMemory
+open window for editing uninterpreted memory
+.TP
+.B Assembler
+open window for disassembler
+.PD
+.LP
+Each line of the call stack traceback describes one function.
+Each function in the traceback can open an expression evaluator window
+or display its current source line.
+.SS Globals and Stack Frame Windows
+.PP
+These windows evaluate expressions with respect to global scope,
+and scope in a function, respectively.
+A stack frame window is opened from a line in the call stack traceback or
+from a line of source text.
+A stack frame can find its active source line in a source window or the stack
+frame window of its caller.
+.LP
+C expressions can be entered by the keyboard or mouse.
+The unary operators
+.I fabs
+and
+.I sizeof
+are supported; the only assignment operator is
+.LR = .
+Functions from the user program may be called.
+New expressions can be derived from old ones by the keyboard or mouse.
+In menus and the keyboard,
+.B $
+means the expression in the current line.
+The VAX registers are called
+.B $r0
+to
+.BR $r15 ;
+the address of a register is
+the location at which it was saved.
+The format in which values are displayed can be changed.
+The raw memory editor may be entered using an expression's value as address.
+.PP
+An expression may be made a
+.IR spy .
+The value of a spy expression is evaluated and displayed
+each time the debugger looks at the process.
+If the value of a spy changes the process is halted
+at the next instruction, statement or breakpoint.
+.LP
+The comma operator is useful in conditional breakpoints because the values
+of its subexpressions are displayed.
+E.g. x, y, x==y traces the values of x and y when the condition fails;
+x, y, 0 just traces.
+.LP
+To cross scope boundaries, the environment (a function identifier)
+in which an expression is to be evaluated may be specified as:
+{ expr } function.
+From the source directory window, file static variables can be promoted
+to appear in the menu of global variables.
+.SS Source Text Windows
+The source file directory window lists all the source files, if there are
+two or more.
+A textual prefix, entered from the keyboard, points to a source directory,
+without changing the working directory.
+Each source file is in a separate window, opened when needed.
+The source file's pathname as given to
+.I cc
+can be overridden from the keyboard.
+If things go wrong, use
+.B reopen
+to open the file afresh.
+\fBSynopsis\fP:
+set/clear (conditional) breakpoint;
+single-step source statements;
+step into (rather than over) a function;
+go the process;
+show the statement for the current PC;
+open a stack frame window for a source line's function;
+evaluate expression;
+disassemble first instruction of source statement;
+context search for string.
+.SS Breakpoints Window
+Lists all the active source and assembler breakpoints and related errors.
+\fBSynopsis\fP:
+show source or assembler for a breakpoint;
+clear breakpoint;
+clear all breakpoints.
+.SS Signals Window
+Lists all signal types, showing which ones are traced.
+\fBSynopsis\fP:
+Change which signals are traced;
+send a signal to the subject process;
+clear pending signal;
+stop process on
+.I exec.
+.SS Raw Memory Window
+In this window
+memory is a viewed as a sequence of 1-, 2-, 4- or 8-byte cells.
+\fBSynopsis\fP:
+set cell address;
+change cell size;
+change display format;
+display cells above and below;
+indirect to cell;
+change cell value;
+spy on memory cell;
+disassemble instruction at cell.
+.SS (Dis)assembler Window
+In this window memory is viewed as a sequence of instructions.
+\fBSynopsis\fP:
+set instruction address;
+display more instructions;
+change display format;
+display instruction as cell in raw memory window;
+set/clear breakpoint on instruction;
+open stack frame window for instruction's function;
+display instruction at current PC;
+single step instruction(s);
+step over a function call instead of into the function.
+.SS Exec and Fork
+If a process controlled by
+.I pi
+does an
+.IR exec ()
+and an exec break is set in the Signals window,
+the process is suspended as if started by
+.IR hang (1).
+To debug the process after the
+.IR exec ,
+close the original process window and re-open it.
+When re-opened it will get the new symbol tables.
+.PP
+To debug a child process: (i) set a breakpoint in code that will be executed
+in the child after the fork; (ii) execute the fork
+.I at full speed
+(the child inherits the parent's breakpoints, which aren't there if the
+parent is stepped);
+(iii)
+.I before altering any breakpoints,
+get a fresh
+.I ps
+in the Pi window and apply
+.B open child
+to the child.
+The child should be stopped on the inherited breakpoint, but it and all other
+breakpoints should have been cleared.
+.SS Kernel
+The state of kernel variables associated with a process may be examined
+by giving their name or virtual address.
+The
+.B UNIX
+environment variable specifies the file from which the system was
+loaded; the default is
+.IR /unix .
+Kernel dumps may be examined by opening the
+`kernel pi' window.
+.SS Just A Traceback
+With the
+.B -t
+option
+.I pi
+writes a traceback on its standard output and quits.
+.SS 3pi
+.I 3pi
+is a variant of
+.I pi
+for debugging 5620 programs running under
+.IR mux (9.1).
+It creates two terminal processes: one for its access to terminal memory
+and graphics and a second for its
+.IR Pads (9.5)
+interface.
+.SS Remote Debugging
+With the
+.B -p
+option
+.I 3pi
+loads its first process, but not
+.IR Pads .
+Instead, it mails a
+.I 3pi
+command to
+.IR person ,
+to be executed on any host in the local network.
+That
+.I 3pi
+command loads
+.I Pads
+on
+.IR person 's
+terminal, and connects to the originator's terminal.
+If separate hosts are involved and the versions of critical files differ,
+be careful with pathnames.
+.SS 3pi Graphics
+Points, rectangles, textures and bitmaps can be displayed graphically.
+.SS 3pi - pi
+Most differences come from obvious differences in the hardware and
+software architectures.
+Also, in
+.I 3pi
+function calls are executed by a debugger process on its own call stack.
+.SH SEE ALSO
+T. A. Cargill,
+`The Feel of Pi',
+this manual, Volume 2
+.br
+.IR hang (1),
+.IR proc (4),
+.IR adb (1),
+.IR cin (1),
+.IR nm (1),
+.IR pads (9.5)
+.SH BUGS
+In switch statements there is no boundary between the last case
+and the branch code; the program
+.I appears
+to jump to the last case (but is really in the branch)
+and then to the real case.
+.br
+A changed spy only stops the process at a breakpoint or while stepping.
+An expression can be cast only by menu.
+.br
+Functions may only be called when the process is stopped and not in a system call.
diff --git a/static/v10/man9/proof.9 b/static/v10/man9/proof.9
new file mode 100644
index 00000000..260171df
--- /dev/null
+++ b/static/v10/man9/proof.9
@@ -0,0 +1,124 @@
+.TH PROOF 9.1
+.CT 1 writing_output
+.SH NAME
+proof \- troff output interpreter for 5620
+.SH SYNOPSIS
+.B proof
+[
+.BI -f fonts
+]
+[
+.I file
+]
+.SH DESCRIPTION
+.I Proof
+reads
+.IR troff (1)
+intermediate language from
+.I file
+or standard input
+and simulates the resulting pages on the screen.
+If no file name is given and standard input is a terminal,
+proof terminates immediately leaving a `proof layer'.
+By invoking
+.I proof
+in a proof layer you can avoid download time.
+.PP
+Fonts are loaded as required.
+The usual
+.IR mux (9.1)
+font,
+.BR defont ,
+is used for unknown fonts.
+Option
+.B -f
+preloads fonts.
+Names are given relative to
+.F /usr/jerq/font
+and are separated by commas.
+The most-used fonts are
+.LR -fR.10,I.10,B.10,S.10 .
+.PP
+After a layer's worth of text is displayed,
+.I proof
+pauses for a command from keyboard or mouse button 3.
+The typed versions of commands are:
+.TP \w'newline\ 'u
+newline
+Go on to next portion of text.
+(Button 3 equivalent:
+.LR more .)
+.TP
+.B q
+Quit, leaving a proof layer.
+.TP
+.B x
+Exit and restart the regular terminal program.
+(Equivalent to
+.L q
+followed by
+.LR "term mux" ;
+see
+.IR term (9.1)).
+.TP
+.BI p n
+Print page
+.I n.
+An out-of-bounds page number means the end nearer to that number;
+a missing number means page 0;
+a signed number means an offset to the current page.
+.PP
+Button 1 gets a scroll box, which represents a full page of text.
+An interior rectangle shows what part of the page is now visible.
+The interior rectangle moves with the mouse, causing the layer to
+scroll both vertically and horizontally.
+Button 2 gets a speedometer.
+The bar of the speedometer moves with the mouse
+to control the rate at which new information is displayed.
+.SH EXAMPLES
+.TP
+.L
+troff -ms memo | proof
+Format a memo and display it.
+.TP
+.L
+(eqn memo | troff -ms) 2>diags | proof
+Display a memo with equations.
+Avoid sending diagnostics to the screen; see
+.SM BUGS.
+.SH FILES
+.TF /usr/jerq/font/.missing
+.TP
+.F /usr/jerq/font/*
+fonts
+.TP
+.F /usr/jerq/font/.missing
+list of referenced but unconverted fonts
+.SH SEE ALSO
+.IR lp (1),
+.IR font (6),
+.IR reader (9.7),
+.IR psi (9.1)
+.br
+Brian W. Kernighan,
+.I A Typesetter-independent Troff
+.SH BUGS
+.I Proof
+breaks if other messages are directed to its layer.
+In particular, unredirected
+.I troff
+diagnostics will break the pipeline
+.LR "troff | proof" .
+.br
+Windowing can get confused if the
+.I troff
+output is not approximately
+sorted in ascending
+.IR y -order.
+.br
+A proof layer imitates
+.LR "term 33" ,
+not
+.IR mux .
+Among other difficulties, it will not be reusable if downloaded
+across the network.
diff --git a/static/v10/man9/psi.9 b/static/v10/man9/psi.9
new file mode 100644
index 00000000..2887d009
--- /dev/null
+++ b/static/v10/man9/psi.9
@@ -0,0 +1,142 @@
+.TH PSI 9.1
+.CT 1 writing_output
+.SH NAME
+psi \- postscript interpreter
+.SH SYNOPSIS
+.B psi
+[
+.I option ...
+] [
+.I file
+]
+.SH DESCRIPTION
+.I Psi
+reads Postscript input from
+.I file
+or from standard input
+and simulates the resulting pages in a
+.IR mux (9.1)
+layer.
+The program remains in the layer at exit; further invocations of
+.I psi
+in that layer avoid download time.
+.PP
+The options are
+.TP
+.BI -p n
+Display page
+.IR n ,
+where
+.I n
+is determined from the
+.B %%Page
+comments in the file.
+If these are not present, page selection will not work.
+.TP
+.B -R
+Pages in the file are in reverse order. This flag must be used on such files
+for the
+.I -p
+option to work.
+.TP
+.B -r
+Display the image at full scale, with the bottom left
+corner positioned at the bottom left corner of the window.
+(By default, the image is scaled to fit the window, maintaining
+the aspect ratio of a printer.)
+.HP
+.B -a
+.I x y
+.br
+Display the image at full scale with position
+.I x,y
+of the image placed at the bottom left corner of the window.
+.PP
+.I Psi
+works on either a Teletype 5620, 630 or 730 terminal
+as determined by the environment variable
+.BR TERM .
+.PP
+Fonts are implemented with size-24 bitmap fonts.
+Those available are
+Symbol, Courier, Times-Roman, Times-Italic, Times-Bold, Times-BoldItalic, Helvetica,
+Helvetica-Oblique, Helvetica-Bold, Helvetica-BoldOblique.
+Fonts
+Courier-Bold,
+Courier-Oblique,
+and
+Courier-BoldOblique
+are mapped to
+Courier.
+Other postscript fonts, including type1, may be used if
+they are supplied before they're referenced.
+.PP
+When the `cherries' icon is displayed, use mouse button 3
+to move forward
+.RB ( more ),
+to a particular page
+.RB ( page ),
+or quit
+.RB ( done ).
+Button 2 exits the program completely.
+.SH EXAMPLES
+.TP
+.L
+troff -ms memo | lp -dstdout -H | psi
+.br
+.ns
+.TP
+.L
+troff -ms memo | dpost | psi
+Two equivalent ways to format a memo, convert it to PostScript,
+and display it.
+.PP
+For best results with TeX documents, use
+.B dvips
+with the
+.BR -Tjerq ,
+.BR -Tgnot ,
+or
+.B "-D 100"
+option to get fonts of the proper resolution and run
+.I psi
+with the
+.I -r
+or
+.I -a
+flag to prevent
+.I psi
+from scaling.
+.SH FILES
+.TF psi.err
+.TP
+.F psi.err
+error messages
+.SH SEE ALSO
+.IR lp (1),
+.IR dvips (1),
+.IR postscript (8),
+.IR proof (9.1),
+.IR psifile (1),
+.IR psix (1)
+.SH DIAGNOSTICS
+A `dead mouse' icon signals an error;
+error comments are placed on file
+.FR psi.err .
+.PP
+Symbols that lack bitmaps are replaced by `?'
+and an error is reported.
+.SH BUGS
+A psi layer imitates
+.LR "term 33" ,
+not
+.IR mux .
+Among other difficulties, it will not be reusable if downloaded
+across the network.
+.br
+Unimplemented PostScript features are rotated images and
+half tone screens.
+Imagemasks may only be rotated by multiples of 90 degrees, not
+by arbitrary angles.
+.br
+Skipping pages may cause operators to be undefined.
diff --git a/static/v10/man9/reader.9 b/static/v10/man9/reader.9
new file mode 100644
index 00000000..f5216b28
--- /dev/null
+++ b/static/v10/man9/reader.9
@@ -0,0 +1,72 @@
+.TH READER 9.7
+.CT 1 writing_output inst_info
+.SH NAME
+reader \- electronic retrieval of typeset documents
+.SH SYNOPSIS
+.B reader
+.I name
+.SH DESCRIPTION
+.I Reader
+presents the named paper on a 5620 terminal in a form designed
+for readability, not for similarity to the printed version.
+The
+.I name
+is a pathname for a manuscript in the
+.IR papers (7)
+database with
+any final
+.L .d
+elided) or the name of a
+.IR troff (1)
+input file.
+Mouse button 1 selects subheads;
+button 3 moves forward (`more') or backward (`less').
+The program exits completely on button 2, or tentatively (to avoid
+downloading upon reexecution) on button 3 (`done').
+.PP
+When the text in a screen overlaps text in a previous screen, a tick mark
+in the bar (not a scroll bar) at the left of the screen shows where
+new material begins.
+.PP
+Fully installed papers in the database, which appear as directories suffixed
+.LR .d ,
+have been preprocessed so that
+.I reader
+can present figures and complex equations.
+In
+.I troff
+input, it understands straightforward text and
+.IR eqn (1),
+the macro packages
+.IR ms (6),
+.I mm,
+and
+.I me,
+but cannot handle arbitrary motions such as appear in figures and
+complex equations.
+.SH FILES
+.TF /n/bowell/pap/Titles
+.TP
+.F /n/bowell/pap/Titles
+titles, authors and installation dates
+.TP
+.F /n/bowell/pap/*org
+membership list
+.TP
+.BI /n/bowell/pap/ center / department / author\f5/\fIpapername\fR[\f5.d\fR]
+.SH SEE ALSO
+.IR troff (1),
+.IR proof (9.1),
+.IR docsubmit (1),
+.IR papers (7)
+.SH BUGS
+Button 1 knows only already-read subheads unless the paper has been preprocessed.
+.br
+.I Reader
+can only handle papers written in
+.I troff
+with standard
+.RB ( -ms ,
+.BR -mm ,
+.BR -me )
+macro packages.
diff --git a/static/v10/man9/rebecca.9 b/static/v10/man9/rebecca.9
new file mode 100644
index 00000000..8f2854b2
--- /dev/null
+++ b/static/v10/man9/rebecca.9
@@ -0,0 +1,123 @@
+.TH REBECCA 9.1
+.CT 1 editor graphics
+.SH NAME
+rebecca \- graphics touch-up editor
+.SH SYNOPSIS
+.B rebecca
+.I file
+.SH DESCRIPTION
+.I Rebecca
+is an interactive retouching tool for digitized grey-scale images.
+The
+.I file
+must be a headerless 512\(mu512 black-and-white digitized image.
+Example (read only) files are
+in directory
+.FR /n/kwee/t0/face/512x512x8 .
+.LP
+`Floating instruments' for editing
+can be dragged with button 2 to different locations.
+.LP
+.I Resolution.
+The tick mark on the long bar
+can be moved up or down with button 1.
+Printed
+to the right of the bar is the current resolution\(em
+a power of 2 representing the number
+of file pixels across the screen image.
+.LP
+.I Grid.
+Click button 1 at the circular button to toggle the grid.
+Turning on the grid is useful sometimes to see how
+fast a screen update is proceeding: it eats away the grid.
+.LP
+.I Write.
+Write the file on the host by clicking button 1 at the box labeled
+.LR write .
+The write box has a
+.L *
+if a change was made to
+the file since it was last written.
+.LP
+.I Runlength encoding.
+Clicking button 1 at this box toggles the mode of data transmission
+between host and terminal.
+.LP
+.I Reopen.
+This instrument cancels any changes made to the file
+since the last time it was written.
+.LP
+.I Move/Pan.
+Click button 1 at one of the 5 areas of the diamond.
+The middle resets the display to a
+full size picture.
+Left, right, up, or down will move (pan) 1/4 screen in the
+corresponding direction
+(useful only on zoomed pictures).
+.LP
+.I Zoom/Unzoom.
+Click button 1 at
+.L Z
+(zoom) or
+.L U
+(unzoom).
+.L Z
+prompts with a square box to be positioned on the area
+of the picture to be inspected at full resolution.
+If you click button 1 before you confirm, the sides
+of the box are halved.
+Clicking button 2 doubles them.
+Any combination of two buttons cancels the zoom;
+button 3 confirms it.
+.LP
+.I Paint.
+Click button 1 at the box labeled
+.LR "+ = -" .
+Painting with
+.L +
+adds grey values to pixels;
+.L =
+assigns values;
+.L "-"
+subtracts values.
+Click button 1 at a pixel location to apply the paint.
+Click button 3 to sweep a rectangle to paint all pixels within it.
+Pick a paint value (default is white) by
+clicking button 2 at the grey scale at the bottom
+or at any pixel in the image.
+Click button 2 at the paint box to cancel the paint mode.
+.LP
+.I Smear.
+Pointing at a pixel with both buttons
+1 and 2 down averages it with its
+8 neighbors (most useful when zoomed in to pixel level).
+Typical usage: apply some white or black paint with the paint box,
+then smear it.
+.LP
+.I Probe.
+Click button 1 at the probe box
+.LR P: .
+Point at a pixel in the image.
+The
+.I x-y
+coordinates and the greyscale value of the pixel will be printed.
+.LP
+.I Contrast.
+Move the ends of the line under the
+grey scale bar to expand or compress the grey scale.
+.LP
+.I Rubber Sheet.
+The box named
+.L sheet
+prompts for a rectangle.
+Sweep out the rectangle over an
+area you want to manipulate, then reposition the corners
+by dragging them to new locations with button 1.
+Confirm the selection with button 3.
+Other instruments
+are usable while the update proceeds.
+.SH "SEE ALSO"
+.IR pico (1),
+.IR flicks (9.1),
+.IR picfile (5),
+.IR flickfile (9.5)
diff --git a/static/v10/man9/request.9 b/static/v10/man9/request.9
new file mode 100644
index 00000000..931eda28
--- /dev/null
+++ b/static/v10/man9/request.9
@@ -0,0 +1,238 @@
+.TH REQUEST 9.2
+.CT 2 comm_term time_man proc_man
+.SH NAME
+request, own, wait, alarm, sleep, nap, kbdchar, rcvchar, realtime, sendchar, sendnchars, kill, exit \- 5620 input/output requests
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B void request(r) int r;
+.PP
+.B int own(r) int r;
+.PP
+.B int wait(r) int r;
+.PP
+.B void alarm(t) unsigned t;
+.PP
+.B void sleep(t) unsigned t;
+.PP
+.B void nap(t) unsigned t;
+.PP
+.B long realtime();
+.PP
+.B int kbdchar();
+.PP
+.B int rcvchar();
+.PP
+.B void sendchar(c) int c;
+.PP
+.B "void sendnchars(n, cp) int n; char *cp;"
+.PP
+.B void kill(s)
+.B int s;
+.PP
+.B void exit();
+.SH DESCRIPTION
+.I Request
+announces a program's intent to use I/O devices and resources,
+and is usually called once early in a program.
+The bit vector
+.I r
+indicates which resources are to be used by
+OR'ing together one or more of the elements
+.B KBD
+(keyboard),
+.BR MOUSE ,
+.B RCV
+(characters received by terminal from Unix),
+.B SEND
+(characters sent from terminal to Unix)
+and
+.BR ALARM .
+For example,
+.B request(MOUSE|KBD)
+indicates that the process
+wants to use the mouse and keyboard.
+If the keyboard is not requested,
+characters typed will be sent to the standard input of the Unix process.
+If the mouse is not requested,
+mouse events in the process's layer will be interpreted by the
+system rather than passed to the process.
+.B SEND
+and
+.B CPU
+(see
+.B wait
+below) are always implicitly
+requested.
+.I Request
+sleeps for one clock tick to synchronize mouse control with the kernel.
+.PP
+.I Own
+returns a bit vector
+of which I/O resources have data available.
+For example,
+.BR own()&KBD
+indicates
+whether a character is available to be read by
+.I kbdchar
+(see below),
+.B own()&MOUSE
+tells if the process's
+.B mouse
+structure (see
+.IR button (9.2))
+is current, and
+.B own()&ALARM
+indicates whether the alarm timer has fired.
+.PP
+.IR Wait 's
+argument
+.I r
+is a bit vector composed as for
+.IR request .
+.I Wait
+suspends the process,
+enabling others,
+until at least one of the requested resources is available.
+The return value is a bit vector indicating which of the requested resources
+are available \(em the same as
+.BR own()&r .
+.PP
+Processes wishing to give up the processor to enable other processes to run
+may call
+.BR wait(CPU) ;
+it will return as soon as all other active processes have had a chance to run.
+.B CPU
+is a fake resource which is always
+requested.
+The
+.B SEND
+pseudo-resource is unused;
+.B wait(SEND)
+always succeeds.
+.PP
+.I Alarm
+starts a timer which will fire
+.I t
+ticks (60ths of a second) into the future.
+A pseudo-resource
+.B ALARM
+can be used to check the status of the timer with
+.I own
+or
+.IR wait .
+Calling
+.I alarm
+implicitly requests the
+.B ALARM
+pseudo-resource.
+.PP
+.I Nap
+busy loops for
+.I t
+ticks of the 60Hz internal clock.
+To avoid beating with the display, programs drawing rapidly changing scenes
+should
+.I nap
+for two ticks
+between updates, to synchronize the display and memory.
+.I Nap
+busy loops until the time is up;
+.I sleep
+is identical except that it
+gives up the processor for the interval.
+Except when unwilling to give up
+the mouse, a program should call
+.I sleep
+in preference to
+.IR nap .
+.I Sleep
+does not interfere with
+.IR alarm ,
+and vice versa.
+.PP
+.I Realtime
+returns the number of 60Hz clock ticks since
+.I mux
+started.
+.PP
+.I Kbdchar
+returns the next keyboard character typed to the process.
+If no characters have been typed, or
+.B KBD
+has not been
+.IR request ed,
+.I kbdchar
+returns
+\-1.
+.PP
+.I Rcvchar
+returns the next character received from the host,
+typically written on the standard output of a Unix process.
+If there are no characters available, or
+.B RCV
+has not been
+.IR request ed,
+.I rcvchar
+returns
+\-1.
+.PP
+.I Sendchar
+sends a single byte to the host,
+which will normally be read on the standard input of the Unix process.
+.I Sendnchars
+sends to the host
+.I n
+characters pointed to by
+.IR p .
+.PP
+.I Kill
+sends the associated Unix process the signal
+.IR s ;
+see
+.IR signal (2).
+.PP
+.I Exit
+terminates the process.
+Unlike on Unix,
+.I exit
+does not return an exit status to a parent.
+Calling
+.I exit
+replaces the running process by the default terminal program.
+Any associated Unix process must arrange for its own demise;
+.I exit
+is a purely local function.
+When a process calls
+.IR exit ,
+all local resources: keyboard, mouse, storage, etc.,
+are deallocated automatically.
+.PP
+.I Realtime
+returns the number of sixtieths of a second elapsed since
+.IR mux (9.1)
+was started.
+.SH EXAMPLES
+.EX
+request(KBD|RCV);
+for(;;){
+ r=wait(KBD|RCV);
+ if(r&KBD)
+ keyboard(kbdchar());
+ if(r&RCV)
+ receive(rcvchar());
+}
+.EE
+.PD0
+.IP
+Take input from either the keyboard or the host.
+.PD
+.SH SEE ALSO
+.IR button (9.2)
+.SH BUGS
+.B own()&MOUSE
+does not guarantee that you own the mouse.
+The correct test is
+.EX
+ (own()&MOUSE) && ptinrect(mouse.xy, Drect)
+.EE
diff --git a/static/v10/man9/ruler.9 b/static/v10/man9/ruler.9
new file mode 100644
index 00000000..c0a49c01
--- /dev/null
+++ b/static/v10/man9/ruler.9
@@ -0,0 +1,46 @@
+.TH RULER 9.1
+.CT 1 comm_term
+.SH NAME
+ruler \- measure things on the screen
+.SH SYNOPSIS
+.B ruler
+.SH DESCRIPTION
+.I Ruler
+measures things on a
+.IR mux (9.1)
+screen.
+Press button 1 to sweep out a rectangle anywhere on the screen.
+For each rectangle swept,
+.I ruler
+displays the coordinates of the rectangle's corners (labeled
+.B down
+and
+.BR up ),
+the size
+of the rectangle and length of its diagonal.
+.LP
+There is
+a menu on button 3.
+The
+.B pixels
+and
+.B chars
+items control whether the size and diagonal are measured
+in units of pixels or characters;
+.B stop
+deactivates
+.I ruler
+without exiting;
+.B measure
+reactivates
+.IR ruler .
+.SH BUGS
+Character units are arbitrarily defined as the width and height of a
+.L 0
+in the
+.I ruler
+layer.
+This may have nothing to do with character sizes in other layers.
+.br
+Ruler's menu must pop up in its own layer, perhaps far
+away from the cursor.
diff --git a/static/v10/man9/sam.9 b/static/v10/man9/sam.9
new file mode 100644
index 00000000..314a1250
--- /dev/null
+++ b/static/v10/man9/sam.9
@@ -0,0 +1,888 @@
+.ds a \fR*\ \fP
+.TH SAM 9.1
+.CT 1 editor
+.SH NAME
+sam \- screen editor with structural regular expressions
+.SH SYNOPSIS
+.B sam
+[
+.I option ...
+] [
+.I files
+]
+.PP
+.I sam
+.B -r
+.I machine
+.PP
+.B sam.save
+.SH DESCRIPTION
+.I Sam
+is a multi-file editor.
+It modifies a local copy of a Unix file.
+The copy is here called a
+.IR file ;
+a Unix file is distinguished by the trademarked
+adjective.
+The files are listed in a menu available through mouse button 3
+or the
+.B n
+command.
+Each file has an associated name, usually the name of the
+Unix file from which it was read, and a `modified' bit that indicates whether
+the editor's file agrees with the Unix file.
+The Unix file is not read into
+the editor's file until it first becomes the current file\(emthat to
+which editing commands apply\(emwhereupon its menu entry is printed.
+The options are
+.TP
+.B -d
+Do not download the terminal part of
+.I sam.
+Editing will be done with the command language only, as in
+.IR ed (1).
+.TP
+.BI -r " machine
+Run the host part remotely
+on the specified machine, the terminal part locally.
+This extends graphic editing to files on machines that
+don't ordinarily support it or across
+.RI non- nfs (8)
+connections.
+.SS Regular expressions
+Regular expressions are as in
+.IR egrep
+(see
+.IR gre (1)),
+with the addition of
+.B @
+and
+.BR \en .
+A regular expression may never contain a literal newline character.
+The elements of regular expressions are:
+.TP
+.B .
+Match any character except newline.
+.TP
+.B \en
+Match newline.
+.TP
+.B \ex
+For any character except
+.B n
+match the character (here
+.BR x ).
+.TP
+.B @
+Match any character.
+.TP
+.B [abc]
+Match any character in the square brackets.
+.B \en
+may be mentioned.
+.TP
+.B [^abc]
+Match any character not in the square brackets, but never a newline.
+Both these forms accept a range of
+.SM ASCII
+characters indicated by
+a dash, as in
+.BR a-z .
+.TP
+.B ^
+Match the null string immediately after a newline.
+.TP
+.B $
+Match the null string immediately before a newline.
+.PP
+Any other character except newline matches itself.
+.PP
+In the following,
+.I r1
+and
+.I r2
+are regular expressions.
+.TP
+.BI ( r1 )
+Match what
+.I r1
+matches.
+.TP
+.IB r1 | r2
+Match what
+.I r1
+or what
+.IR r2
+matches.
+.TP
+.IB r1 *
+Match zero or more adjacent matches
+of
+.IR r1 .
+.TP
+.IB r1 +
+Match one or more adjacent matches of
+.IR r1 .
+.TP
+.IB r1 ?
+Match zero or one matches of
+.IR r1 .
+.PP
+The operators
+.BR * ,
+.B +
+and
+.B ?
+are highest precedence, then catenation, then
+.B |
+is lowest.
+The empty
+regular expression stands for the last complete expression encountered.
+A regular expression in
+.I sam
+matches the longest leftmost substring formally
+matched by the expression.
+Searching in the reverse direction is equivalent
+to searching backwards with the catenation operations reversed in
+the expression.
+.SS Addresses
+An address identifies a substring in a file.
+In the following, `character
+.IR n '
+means the null string
+after the
+.IR n -th
+character in the file, with 1 the
+first character in the file.
+`Line
+.IR n '
+means the
+.IR n -th
+match,
+starting at the beginning of the file, of the regular expression
+.L .*\en? .
+(The peculiar properties of a last line without a newline are
+temporarily undefined.)
+All files always have a current substring, called dot,
+that is the default address.
+.SS Simple Addresses
+.TP
+.BI # n
+The empty string after character
+.IR n ;
+.B #0
+is the beginning of the file.
+.TP
+.I n
+Line
+.IR n .
+.TP
+.BI / regexp /
+.PD0
+.TP
+.BI ? regexp ?
+The substring that matches the regular expression,
+found by looking toward the end
+.RB ( / )
+or beginning
+.RB ( ? )
+of the file,
+and if necessary continuing the search from the other end to the
+starting point of the search.
+The matched substring may straddle
+the starting point.
+.PD
+.TP
+.B 0
+The string before the first full line.
+This is not necessarily
+the null string; see
+.B +
+and
+.B -
+below.
+.TP
+.B $
+The null string at the end of the file.
+.TP
+.B .
+Dot.
+.TP
+.B \&'
+The mark in the file (see the
+.B k
+command below).
+.TP
+\f(CW"\f2regexp\f(CW"\f1\f1
+Preceding a simple address (default
+.BR . ),
+refers to the address evaluated in the unique file whose menu line
+matches the regular expression.
+.SS Compound Addresses
+In the following,
+.I a1
+and
+.I a2
+are addresses.
+.TP
+.IB a1 + a2
+The address
+.I a2
+evaluated starting at the end of
+.IR a1 .
+.TP
+.IB a1 - a2
+The address
+.I a2
+evaluated looking in the reverse direction
+starting at the beginning of
+.IR a1 .
+.TP
+.IB a1 , a2
+The substring from the beginning of
+.I a1
+to the end of
+.IR a2 .
+If
+.I a1
+is missing,
+.B 0
+is substituted
+If
+.I a2
+is missing,
+.B $
+is substituted.
+.TP
+.IB a1 ; a2
+Like
+.IB a1 , a2,
+but with
+.I a2
+evaluated at the end of, and dot set to,
+.IR a1 .
+.PP
+The operators
+.B +
+and
+.B -
+are high precedence, while
+.B ,
+and
+.B ;
+are low precedence.
+.PP
+In both
+.B +
+and
+.B -
+forms, if
+.I a2
+is a line or character address with a missing
+number, the number defaults to 1.
+If
+.I a1
+is missing,
+.L .
+is substituted.
+If both
+.I a1
+and
+.I a2
+are present and distinguishable,
+.B +
+may be elided.
+.I a2
+may be a regular
+expression; if it is delimited by
+.LR ? 's,
+the effect of the
+.B +
+or
+.B -
+is reversed.
+.PP
+It is an error for a compound address to represent a malformed substring.
+Some useful idioms:
+.IB a1 +-
+.RI ( a1 \&\f5-+\fP )
+selects the line containing
+the end (beginning) of a1.
+.BI 0/ regexp /
+locates the first match of the expression in the file.
+(The form
+.B 0;//
+sets dot unnecessarily.)
+.BI ./ regexp ///
+finds the second following occurrence of the expression,
+and
+.BI .,/ regexp /
+extends dot.
+.SS Commands
+In the following, text demarcated by slashes represents text delimited
+by any printable
+.SM ASCII
+character except alphanumerics.
+Any number of
+trailing delimiters may be elided, with multiple elisions then representing
+null strings, but the first delimiter must always
+be present.
+In any delimited text,
+newline may not appear literally;
+.B \en
+may be typed for newline; and
+.B \e/
+quotes the delimiter, here
+.LR / .
+Backslash is otherwise interpreted literally, except in
+.B s
+commands.
+.PP
+Most commands may be prefixed by an address to indicate their range
+of operation.
+Those that may not are marked with a
+.L *
+below.
+If a command takes
+an address and none is supplied, dot is used.
+The sole exception is
+the
+.B w
+command, which defaults to
+.BR 0,$ .
+In the description, `range' is used
+to represent whatever address is supplied.
+Many commands set the
+value of dot as a side effect.
+If so, it is always set to the `result'
+of the change: the empty string for a deletion, the new text for an
+insertion, etc. (but see the
+.B s
+and
+.B e
+commands).
+.br
+.ne 1.2i
+.SS Text commands
+.PD0
+.TP
+.BI a/ text /
+.TP
+or
+.TP
+.B a
+.TP
+.I lines of text
+.TP
+.B .
+Insert the text into the file after the range.
+Set dot.
+.TP
+.B c\fP
+.br
+.ns
+.TP
+.B i\fP
+Same as
+.BR a ,
+but
+.B c
+replaces the text, while
+.B i
+inserts
+.I before
+the range.
+.TP
+.B d
+Delete the text in the range.
+Set dot.
+.TP
+.BI s/ regexp / text /
+Substitute
+.I text
+for the first match to the regular expression in the range.
+Set dot to the modified range.
+In
+.I text
+the character
+.B &
+stands for the string
+that matched the expression.
+Backslash behaves as usual unless followed by
+a digit:
+.BI \e d
+stands for the string that matched the
+subexpression begun by the
+.IR d -th
+left parenthesis.
+If
+.I s
+is followed immediately by a
+number
+.IR n ,
+as in
+.BR s2/x/y/ ,
+the
+.IR n -th
+match in the range is substituted.
+If the
+command is followed by a
+.BR g ,
+as in
+.BR s/x/y/g ,
+all matches in the range
+are substituted.
+.TP
+.BI m " a1
+.br
+.ns
+.TP
+.BI t " a1
+Move the range to after
+.I a1
+.RB ( m ),
+or copy it
+.RB ( t ).
+Set dot.
+.SS Display commands
+.TP
+.B p
+Print the text in the range.
+Set dot.
+.TP
+.B =
+Print the line address and character address of the range.
+.TP
+.B =#
+Print just the character address of the range.
+.SS File commands
+In these commands a
+.I file-list
+may be expressed
+.BI < Unix-command
+in which case the file names are taken as words (in the shell sense)
+generated by the Unix command.
+.TP
+.BI \*ab " file-list
+Set the current file to the first file named in the list
+that
+.I sam
+also has in its menu.
+.TP
+.BI \*aB " file-list
+Same as
+.BR b ,
+except that file names not in the menu are entered there,
+and all file names in the list are examined.
+.TP
+.B \*an
+Print a menu of files.
+The format is:
+.RS
+.TP \w'\ \ or\ blank\ \'u
+.BR ' " or blank
+indicating the file is modified or clean,
+.TP
+.BR - " or \&" +
+indicating the the file is unread or has been read
+(in the terminal,
+.B *
+means more than one window is open),
+.TP
+.BR . " or blank
+indicating the current file,
+.TP
+a blank,
+.TP
+and the file name.
+.RE
+.TP 0
+.BI \*aD " file-list
+Delete the named files from the menu.
+If no files are named, the current file is deleted.
+It is an error to
+.B D
+a modified file, but a subsequent
+.B D
+will delete such a file.
+.SS I/O Commands
+.TP
+.BI \*ae " filename
+Replace the file by the contents of the named Unix file.
+Set dot to the beginning of the file.
+.TP
+.BI r " filename
+Replace the text in the range by the contents of the named Unix file.
+Set dot.
+.TP
+.BI w " filename
+Write the range (default
+.BR 0,$ )
+to the named Unix file.
+.TP
+.BI \*af " filename
+Set the file name and print the resulting menu entry.
+.PP
+If the file name is absent from any of these, the current file name is used.
+.B e
+always sets the file name,
+.B r
+and
+.B w
+do so if the file has no name.
+.TP
+.BI < " Unix-command
+Replace the range by the standard output of the
+Unix command.
+.TP
+.BI > " Unix-command
+Sends the range to the standard input of the
+Unix command.
+.TP
+.BI | " Unix-command
+Send the range to the standard input, and replace it by
+the standard output, of the
+Unix command.
+.TP
+.BI \*a! " Unix-command
+Run the
+Unix command.
+.TP
+.BI \*acd " directory
+Change working directory.
+If no directory is specified,
+.B $HOME
+is used.
+.PP
+In any of
+.BR < ,
+.BR > ,
+.B |
+or
+.BR ! ,
+if the
+.I Unix command
+is omitted the last
+.I Unix command
+(of any type) is substituted.
+If
+.I sam
+is downloaded,
+.B !
+sets standard input to
+.FR /dev/null ,
+and otherwise
+unassigned output
+.RB ( stdout
+for
+.B !
+and
+.BR > ,
+.B stderr
+for all) is placed in
+.F $HOME/sam.err
+and the first few lines are printed.
+.SS Loops and Conditionals
+.TP
+.BI x/ regexp / " command
+For each match of the regular expression in the range, run the command
+with dot set to the match.
+Set dot to the last match.
+If the regular
+expression and its slashes are omitted,
+.L /.*\en/
+is assumed.
+Null string matches potentially occur before every character
+of the range and at the end of the range.
+.TP
+.BI y/ regexp / " command
+Like
+.B x,
+but run the command for each substring that lies before, between,
+or after
+the matches that would be generated by
+.BR x .
+There is no default behavior.
+Null substrings potentially occur before every character
+in the range.
+.TP
+.BI \*aX/ regexp / " command
+For each file whose menu entry matches the regular expression,
+run the command.
+If the expression is omitted, the command is run
+in every file.
+.TP
+.BI \*aY/ regexp / " command
+Same as
+.BR X ,
+but for files that do not match the regular expression,
+and the expression is required.
+.TP
+.BI g/ regexp / " command
+.br
+.ns
+.TP
+.BI v/ regexp / " command
+If the range contains
+.RB ( g )
+or does not contain
+.RB ( v )
+a match for the expression,
+set dot to the range and run the command.
+.PP
+These may be nested arbitrarily deeply, but only one instance of either
+.B X
+or
+.B Y
+may appear in a \%single command.
+An empty command in an
+.B x
+or
+.B y
+defaults to
+.BR p ;
+an empty command in
+.B X
+or
+.B Y
+defaults to
+.BR f .
+.B g
+and
+.B v
+do not have defaults.
+.SS Miscellany
+.TP
+.B k
+Set the current file's mark to the range. Does not set dot.
+.TP
+.B \*aq
+Quit.
+It is an error to quit with modified files, but a second
+.B q
+will succeed.
+.TP
+.BI \*au " n
+Undo the last
+.I n
+(default 1)
+top-level commands that changed the contents or name of the
+current file, and any other file whose most recent change was simultaneous
+with the current file's change.
+Successive
+.BR u 's
+move further back in time.
+The only commands for which u is ineffective are
+.BR cd ,
+.BR u ,
+.BR q ,
+.B w
+and
+.BR D .
+.TP
+(empty)
+If the range is explicit, set dot to the range.
+If
+.I sam
+is downloaded, the resulting dot is selected on the screen;
+otherwise it is printed.
+If no address is specified (the
+command is a newline) dot is extended in either direction to
+line boundaries and printed.
+If dot is thereby unchanged, it is set to
+.B .+1
+and printed.
+.PD
+.SS Grouping and multiple changes
+Commands may be grouped by enclosing them in braces
+.BR {} .
+Commands within the braces must appear on separate lines (no backslashes are
+required between commands).
+Semantically, an opening brace is like a command:
+it takes an (optional) address and sets dot for each sub-command.
+Commands within the braces are executed sequentially, but changes made
+by one command are not visible to other commands (see the next section
+of this manual).
+Braces may be nested arbitrarily.
+.PP
+When a command makes a number of changes to a file, as in
+.BR x/re/c/text/ ,
+the addresses of all changes to the file are computed in the original file.
+If the changes are in sequence,
+they are applied to the file.
+Successive insertions at the same address are catenated into a single
+insertion composed of the several insertions in the order applied.
+.SS The terminal
+What follows refers to behavior of
+.I sam
+when downloaded, that is, when
+operating as a display editor on a bitmap display.
+This is the default
+behavior; invoking
+.I sam
+with the
+.B -d
+(no download) option provides access
+to the command language only.
+.PP
+Each file may have zero or more windows open.
+Each window is equivalent
+and is updated simultaneously with changes in other windows on the same file.
+Each window has an independent value of dot, indicated by a highlighted
+substring on the display.
+Dot may be in a region not within
+the window.
+There is usually a `current window',
+marked with a dark border, to which typed text and editing
+commands apply.
+Text may be typed and edited as in
+.IR mux (9.1);
+also the escape key (ESC) selects (sets dot to) text typed
+since the last mouse button hit.
+.PP
+The button 3 menu controls window operations.
+The top of the menu
+provides the following operators, each of which prompts with one or
+more
+.IR mux -like
+cursors to prompt for selection of a window or sweeping
+of a rectangle.
+`Sweeping' a null rectangle gets a large window, disjoint
+from the command window or the whole screen, depending on
+where the null rectangle is.
+.TF reshape
+.TP
+.B new
+Create a new, empty file.
+.TP
+.B xerox
+Create a copy of an existing window.
+.TP
+.B reshape
+As in
+.I mux.
+.TP
+.B close
+Delete the window.
+In the last window of a file,
+.B close
+is equivalent to a
+.B D
+for the file.
+.TP
+.B write
+Equivalent to a
+.B w
+for the file.
+.PD
+.PP
+Below these operators is a list of available files, starting with
+.BR ~~sam~~ ,
+the command window.
+Selecting a file from the list makes the most recently
+used window on that file current, unless it is already current, in which
+case selections cycle through the open windows.
+If no windows are open
+on the file, the user is prompted to open one.
+Files other than
+.B ~~sam~~
+are marked with one of the characters
+.B -+*
+according as zero, one, or more windows
+are open on the file.
+A further mark
+.L .
+appears on the file in the current window and
+a single quote,
+.BR ' ,
+on a file modified since last write.
+.PP
+Nothing can be done without a command window, for which
+.I sam
+prompts initially.
+The command window is an ordinary window except that text typed to it
+is interpreted as commands for the editor rather than passive text,
+and text printed by editor commands appears in it.
+The behavior is like
+.I mux,
+with a `command point' that separates commands being typed from
+previous output.
+Commands typed in the command window apply to the
+current open file\(emthe file in the most recently
+current window.
+.SS Manipulating text
+Button 1 changes selection, much like
+.I mux.
+Pointing to a non-current window with button 1 makes it current;
+within the current window, button 1 selects text, thus setting dot.
+Double-clicking selects text to the boundaries of words, lines,
+quoted strings or bracketed strings, depending on the text at the click.
+.PP
+Button 2 provides a menu of editing commands:
+.PD0
+.TP
+.B cut
+Delete dot and save the deleted text in the snarf buffer.
+.TP
+.B paste
+Replace the text in dot by the contents of the snarf buffer.
+.TP
+.B snarf
+Save the text in dot in the snarf buffer.
+.TP
+.B look
+Search forward for the next occurrence of the literal text in dot.
+If dot is the null string, the text in the snarf buffer is
+used.
+The snarf buffer is unaffected.
+.TP
+.B <mux>
+Exchange snarf buffers with
+.IR mux.
+.TP
+.BI / regexp
+Search forward for the next match of the last regular expression
+typed in a command.
+(Not in command window.)
+.TP
+.B send
+Send the text in dot, or the snarf buffer if
+dot is the null string, as if it were typed to the command window.
+Saves the sent text in the snarf buffer.
+(Command window only.)
+.TP
+.B scroll
+.TP
+.B noscroll
+Select whether to reveal automatically text
+that appears off the end of the command window.
+(Command window only.)
+.PD
+.SS Abnormal termination
+If
+.I sam
+terminates other than by a
+.B q
+command (by hangup, deleting its layer, etc.), modified
+files are saved in an
+executable file,
+.FR $HOME/sam.save .
+This program, when executed, asks whether to write
+each file back to a Unix file.
+The answer
+.L y
+causes writing; anything else skips the file.
+.SH FILES
+.F $HOME/sam.save
+.br
+.F $HOME/sam.err
+.SH SEE ALSO
+.IR ed (1),
+.IR sed (1),
+.IR vi (1),
+.IR gre (1)
+.SH BUGS
+The
+.B u
+command undoes characters\(emand backspaces\(emtyped directly
+into a file window in unpredictable increments.
diff --git a/static/v10/man9/samuel.9 b/static/v10/man9/samuel.9
new file mode 100644
index 00000000..5129b631
--- /dev/null
+++ b/static/v10/man9/samuel.9
@@ -0,0 +1,420 @@
+.TH SAMUEL 9.1
+.SH NAME
+samuel \(mi text editor and C browser
+.SH SYNOPSIS
+.B samuel
+[
+.I options
+] [ files ]
+.SH DESCRIPTION
+.I Samuel
+is the editor
+.IR sam (9.1)
+with additional features, including a browser for C and C++ programs.
+Most new features
+are available from the button 3 menu or commands typed in the
+command window.
+The new menu entries are
+.BR unopen ,
+.BR smudge ,
+.BR advisor ,
+.BR browser ,
+and
+.BR interpreter .
+.SS Unopen
+.B Unopen
+closes a window or file without removing the file name from the
+menu.
+.SS Smudge
+.B Smudge
+associates a descriptive tag with a window and places the
+tag in the
+.B smudge
+submenu.
+The tag may be hit like a file name to switch to the window.
+.SS Advisor
+.B Advisor
+gives information about the selected library function name or
+C keyword.
+.SS Browser
+.PP
+When
+.B browser
+is first hit, the browser's data base is initialized
+for the currently active
+files.
+A submenu then shows browsing functions.
+.TF definition
+.TP
+.B reference
+Find all references to the selected C symbol.
+`Selected' means either highlighted
+with button 1 or contained in the snarf buffer.
+.TP
+.B definition
+Find the definition of the selected function name, #define
+symbol, structure, union, class or typedef name.
+.TP
+.B called\ by
+Find all functions called by the selected function name.
+.TP
+.B calls\ to
+Find all calls to the selected function name.
+.TP
+.B find
+Find all instances of the selected pattern.
+.TP
+.B egrep
+Find all instances of the selected pattern, interpreted as in
+.IR egrep (1).
+.TP
+.B all\ defs
+Find definitions of all functions.
+.TP
+.B files
+List files currently in browser data base.
+.TP
+.B rebuild
+Rebuild the data base with the current list of files.
+.TP
+.B exit
+Exit the browser.
+.TP
+.B \~\~samuel\~\~
+Replace the contents of dot with the results of the last search.
+.PD
+.PP
+Search results are placed in a
+.B browser
+submenu labeled with the search string.
+Hitting an item in a
+search submenu closes the currently active window
+(unless that would lose data) and opens
+a window of the same size for the file containing the item, with the
+window positioned at the item.
+.SS Interpreter
+.PP
+When
+.B interpreter
+is first hit, the interpreter is initialized for interactive use, and
+a submenu then shows interpreting functions.
+.TF interrupt
+.TP
+.B \~\~cin\~\~
+Toggle the use of the command window. The first hit allows the user to send information to
+the interpreter from the command window. The second hit returns the command window to the
+editor. This interface will change in the near future.
+.TP
+.B doit
+Send the selected text to the interpreter.
+`Selected' means either highlighted
+with button 1 or contained in the snarf buffer.
+.TP
+.B load
+Load a file into the interpreter. The user selects the window to load when the `bullseye'
+prompt is presented. The
+.B load
+submenu provides functions to
+.B load
+a single file,
+.B loadall
+files in the editor,
+or load the
+.B function
+that contains dot (the edit point).
+.TP
+.B view
+Sets the current view. The
+.B view
+submenu provides functions to set the current
+.BR view ,
+a list of all
+.BR views ,
+describe
+.B whatis
+the selected identifier, and
+.B where
+the execution stopped in the interpreter.
+.TP
+.B return
+Returns from a breakpoint. The
+.B return
+submenu provides functions to
+.B return
+from a breakpoint, set a
+breakpoint
+.RL ( break ),
+and clear a breakpoint
+.RL ( unbreak ).
+.TP
+.B interrupt
+Interrupt the interpreter.
+.TP
+.B eof
+Sends an EOF to the interpreter. Useful when the user program expects to see a
+.BR <control-d> .
+.TP
+.B exit
+Exit the interpreter.
+.PD
+.SS Other features
+.I Help.
+Press button 1 simultaneously with button 2 or 3 to see
+a short description of the button 2 or 3 item.
+In a search submenu, the information includes file name,
+line number and, where appropriate, function name;
+for a smudge submenu, the file name associated with the tag.
+.PP
+.I File menu.
+When too many files appear in the button 3 menu, they are moved
+to a submenu.
+.PP
+.I Font.
+On the 630 MTG Terminal, the button 2 menu includes a
+.L font
+item with a submenu that lists fonts in the terminal's cache.
+The font may be set independently in each window.
+New windows and menus use the last font selected.
+.SS Commands
+.PD 0
+.TP .5i
+.BI z
+Make
+.I samuel
+menu items visible; see
+.B \-v
+below.
+Start the browser unless
+it is already running.
+.TP
+.BI z-
+Make
+.I samuel
+menu items invisible.
+.TP
+.BI zF " dbfile
+If
+.I dbfile
+is specified, start, or restart, the browser with
+.I dbfile
+as a read-only data base file; see options
+.B -f
+and
+.B -F
+below.
+Otherwise display the current
+database file.
+.TP
+.BI zA " advisordb
+If
+.I advisordb
+is specified, set the
+.B ADVISOR
+environment variable.
+Otherwise display the value of
+.BR ADVISOR .
+.TP
+.BI za " keyword
+Search for
+.I keyword
+in the advisor database.
+.TP
+.BI zu " file-list
+Unopen the named files. If no files are named, the current file is unopened. It is an
+error to
+.B zu
+a modified file, but a subsequent
+.B zu
+will unopen such a file.
+.TP
+.B zc
+Delete dot and save the deleted text in the snarf buffer.
+.TP
+.B zp
+Replace the text in dot by the contents of the snarf buffer.
+.TP
+.B zs
+Save the text in dot in the snarf buffer.
+.I keyword
+in the advisor database.
+.PD
+.SS Options
+.PD 0
+.TP .5i
+.BI -f " file.db
+Create the data base in the named file.
+If the file
+already exists and any files
+have been modified since the last build, update the data base.
+.TP
+.BI -F " file.db
+The data base already exists in the named
+file.
+The file is read-only; rebuilds are not allowed.
+.TP
+.BI -i " filenames
+Use the named files in creating the data base.
+.TP
+.BI -I " includedir
+Search directory
+.I includedir
+for included files.
+This option may appear more than once.
+.TP
+.BI -s " sourcedir
+Search directory
+.I sourcedir
+for referenced function definitions.
+This option may appear more than once.
+.TP
+.BI -D name=def
+.TP
+.BI -D name
+Define the
+.I name
+to
+.I cin ,
+as if by
+.BR #define .
+If no definition is given, the name is defined as 1.
+.TP
+.BI -U name
+Remove any initial definition of
+.IR name .
+.TP
+.BI -l x
+This option is an abbreviation for the library name
+.BI /lib/lib x .a ,
+where
+.I x
+is a string. If that does not exist,
+.I cin
+tries
+.BI /usr/lib/lib x .a .
+A library is searched when its name is encountered, so the placement of a
+.B -l
+is significant.
+.TP
+.BI -u name
+Enters
+.I name
+as undefined into
+.IR cin 's
+symbol table. This is useful for loading wholly from a library, since initially
+the symbol table is empty and an unresolved reference is needed to force the loading
+of the first routine.
+.TP
+.BI -V func:n
+Declare function
+.I func
+to have a variable number of arguments, the first
+.I n
+of which are to be type checked.
+.PD
+.TP
+.B -c
+If the terminal is a 630 MTG, cache the terminal portion of
+.IR samuel ;
+later invocations will be executed from the cache without downloading.
+.TP
+.B -v
+Make
+.I samuel
+behave like
+.IR sam ;
+use the
+.L z
+command to restore
+.I samuel.
+.PD
+.SS Environment Variables
+.TF SAMUEL
+.TP
+.B INCLUDEDIRS
+Colon-separated list of directories to search for
+.B #include
+files.
+.TP
+.B SOURCEDIRS
+Colon-separated list of directories to search for additional source files.
+.TP
+.B SAMUEL
+Directory containing samuel utilities.
+Overrides the default locations listed below.
+.TP
+.B TMPDIR
+Directory used to create temporary files,
+.F/tmp
+by default.
+.TP
+.B ADVISOR
+Colon-separated list of advisor data base files.
+These are searched in
+specified order followed by the standard samuel data base file.
+.TP
+.B DMD
+Directory for standard dmd software,
+.F /usr/jerq/lib
+by default.
+.PD
+.SH FILES
+.TF $DMD/samuel/samuel.ca.dat
+.TP
+.F $HOME/sam.err
+saved diagnostic output from Unix commands
+.TP
+.F $HOME/sam.save
+bundled files on unexpected exit
+.TP
+.F $DMD/samuel/samuel.m
+terminal support program for samuel
+.TP
+.F $DMD/samuel/samuel.cs
+C browser support program for samuel
+.TP
+.F $DMD/samuel/samuel.ca
+C advisor support program
+.TP
+.F $DMD/samuel/samuel.ca.dat
+C advisor data base
+.TP
+.F $DMD/samuel/samuel.st
+samuel statistics gathering program
+.TP
+.F $TMPDIR/cscope*.0
+default data base file
+.TP
+.F $TMPDIR/cscope*.1
+results of last search
+.TP
+.F $TMPDIR/cscope*.2
+temporary
+.SH SEE ALSO
+sam(9.1)
+.br
+J. J. Puttress,
+.I "The C Browser"
+(11229-861017-19TMS).
+.br
+J. J. Puttress,
+.I "The C Browser: Examples"
+(11229-861014-18TMS).
+.br
+T. J. Kowalski, H. H. Goguen, J. J. Puttress,
+.I "The C Interpreter: A Tutorial for Cin Version 0.18"
+(11229-880606-07TMS).
+.br
+R. Pike,
+.I "The Text Editor Sam"
+(11271-870423-06TMS).
+.br
+R. Pike,
+.I "A Tutorial for the SAM Command Language"
+(11271-860924-07TMS).
+.br
+J. L. Steffen, Interactive Examination of a C Program with Cscope.
+.IR "USENIX Winter Conference Proceedings Dallas 1985" ,
+170-175.
+.SH BUGS
+.I Samuel
+will not correctly browse C source with syntax errors.
diff --git a/static/v10/man9/string.9 b/static/v10/man9/string.9
new file mode 100644
index 00000000..4fbca467
--- /dev/null
+++ b/static/v10/man9/string.9
@@ -0,0 +1,102 @@
+.TH STRING 9.3
+.CT 2 comm_term
+.SH NAME
+string, defont, strwidth, infont, outfont, getfont \- text and font operations
+.SH SYNOPSIS
+.B #include <jerq.h>
+.br
+.B #include <font.h>
+.PP
+.B Point string(ft, s, b, p, f)
+.B "Font *ft; char *s; Bitmap *b; Point p; Code f;
+.PP
+.B extern Font defont;
+.PP
+.B "int strwidth(ft, s) Font *ft; char *s;
+.PP
+.B "Font *infont(inch) int (*inch)();
+.PP
+.B "int outfont(ft, ouch) Font *ft; int (*ouch)();
+.PP
+.B void ffree(ft) Font *ft;
+.PP
+.B #include <jerqio.h>
+.PP
+.B "Font *getfont(file) char *file;
+.SH DESCRIPTION
+.I String
+draws the null-terminated string
+.I s
+using characters from font
+.I ft
+in Bitmap
+.I b
+at Point
+.IR p ,
+with Code
+.IR f .
+The return value is the location of the first character
+.I after
+.IR s ;
+passed to another call to
+.IR string ,
+the two strings will be concatenated.
+The characters are drawn such that the
+.B origin
+point of the bounding rectangle of a maximum height character
+lies at
+.IR p .
+Therefore, a character drawn on the screen at (0,0)
+will occupy the upper-leftmost character position on the screen.
+.I String
+draws characters as they are in the font.
+No special action is taken for control characters such as tabs or newlines.
+.PP
+The global
+.I defont
+is the name of the standard font (not a pointer to it).
+.PP
+.I Strwidth
+returns the width in pixels
+of the null-terminated string
+.IR s ,
+interpreted in the Font
+.IR *ft .
+The height of a character string is simply
+.BI ft ->height.
+.PP
+.I Infont
+creates a font by reading the byte-wise binary representation
+returned by successive calls to
+.IR inch .
+It returns 0
+on error.
+.I Inch
+must return successive bytes of the Unix file representation of the font,
+and \-1
+at end-of-file.
+.I Outfont
+calls the routine
+.I ouch
+to write successive bytes of the binary representation of font
+.IR ft .
+It returns
+\-1
+on error, as must
+.I ouch .
+For programs running under
+.IR jx ,
+.I getfont
+returns a pointer to a font read from the named
+.IR file ,
+essentially by calling
+.I infont
+with argument routine
+.IR getc .
+It returns 0
+on error.
+.I Ffree
+frees a font allocated by
+.I infont
+or
+.IR getfont .
diff --git a/static/v10/man9/term.9 b/static/v10/man9/term.9
new file mode 100644
index 00000000..c0420ed8
--- /dev/null
+++ b/static/v10/man9/term.9
@@ -0,0 +1,50 @@
+.TH TERM 9.1
+.CT 1 comm_term
+.SH NAME
+term \- terminal emulators for mux
+.SH SYNOPSIS
+.B exec
+.B term
+.I termtype
+.SH DESCRIPTION
+.I Term
+replaces the program in the layer on its standard output with
+an emulator for the terminal type specified by
+.IR termtype .
+In the resulting layer, environment variable TERM is set appropriately.
+Known types are
+.TP
+.B 2621
+Hewlett-Packard 2621
+.TP
+.B 2621c
+Same, with data compression between host and terminal;
+useful at line speeds of 2400 baud and lower.
+.TP
+.B 4014
+Tektronix 4014
+.TP
+.B 5620
+Teletype DMD 5620 stand-alone terminal.
+.TP
+.B 5620c
+Same, with data compression.
+.TP
+.B 33
+Teletype Model 33 (actually closer to 35).
+.PP
+Also,
+.I termtype
+.B mux
+restores and initializes a standard
+.IR mux (9.1)
+terminal program.
+.SH BUGS
+Nonstandard terminal emulators do not work across
+.IR dcon,
+but usually do across
+.IR ndcon
+connections; see
+.IR dcon (1).
+.br
+Unexported shell parameters and functions are lost.
diff --git a/static/v10/man9/thinkblt.9 b/static/v10/man9/thinkblt.9
new file mode 100644
index 00000000..e9e56296
--- /dev/null
+++ b/static/v10/man9/thinkblt.9
@@ -0,0 +1,108 @@
+.TH THINKBLT 9.1
+.CT 1 comm_dev
+.SH NAME
+thinkblt, think \- print on thinkjet
+.SH SYNOPSIS
+.BI thinkblt
+[
+.I stream
+]
+.LP
+.B think
+[
+.B -o
+.I stream
+]
+[
+.I file ...
+]
+.LP
+.B nroff
+.B -Tthink
+.I \&...
+.B | think
+[
+.B -o
+.I stream
+]
+.SH DESCRIPTION
+.I Thinkblt
+downloads an interrupt driver for the
+HP ThinkJet printer, provides a menu of
+operations for printing various data residing in the terminal, and
+sets up a
+.I stream
+.RF ( $HOME/.THINK
+by default) on which
+.I think
+can print data from the host.
+It is intended to be down-loaded
+once per terminal session.
+Most of the menu items are identical to
+those of
+.IR blitblt (9.1).
+The remaining ones are:
+.nr xx \w'\f5print mux buffer\f1'u+2n/1n
+.TP \n(xx
+.B print bitmap
+Print whatever bitmap is currently selected, in analogy to
+.IR blitblt (9.1).
+The widest printable bitmap is 640 pixels across.
+.TP
+.B print mux buffer
+Print the
+.I mux
+`snarf' buffer.
+.TP
+.B reset printer
+Sends
+.RB ESC- E .
+.PP
+While the printer is operating, a different menu
+allows one to abort or pause the print operation.
+The
+printer has a fairly large internal buffer, so response may be
+slow.
+.PP
+Files on the host may be printed by giving them as arguments or standard input to
+.IR think .
+When used with
+.IR nroff ,
+names like
+.B \e('e
+may be used to access the special characters
+provided by the hardware; the
+.I nroff
+terminal driving file has a complete list; see
+.IR troff (1).
+Both
+.I nroff
+and
+.IR pr (1)
+will paginate properly if top-of-form is set so that the paper tear is aligned
+flush with the top of the metal clip which holds the absorber.
+.SH FILES
+.F $HOME/.THINK
+.br
+.F /usr/lib/term/tab.think
+nroff descriptor file
+.SH SEE ALSO
+.IR troff (1),
+.IR pr (1),
+.IR blitblt (9.1)
+.SH BUGS
+The 5620 ROM program is unable to cope with interrupts from the printer;
+it is therefore necessary to download
+.IR mux (9.1)
+before turning on the printer.
+.br
+.I Thinkblt
+substitutes its own interrupt routine for the (trivial) one provided by
+.IR mux (9.1).
+The latter is restored upon exit, but havoc may result if the
+.I thinkblt
+layer is simply deleted.
+.br
+The special
+.I nroff
+character names are not currently supported by any other device.
diff --git a/static/v10/man9/thinkclient.9 b/static/v10/man9/thinkclient.9
new file mode 100644
index 00000000..f75cf8c4
--- /dev/null
+++ b/static/v10/man9/thinkclient.9
@@ -0,0 +1,46 @@
+.TH THINKCLIENT 9.3
+.CT 2 file_io
+.SH NAME
+thinkchar, thinknchars, thinkflush, thinkmap, thinkabort \- ThinkJet routines
+.SH SYNOPSIS
+.B #include <jerq.h>
+.br
+.B #include <thinkclient.h>
+.PP
+.B int thinkchar(c)
+.B int c;
+.PP
+.B int thinknchars(n, p)
+.B int n; char *p;
+.PP
+.B int thinkflush()
+.PP
+.B int thinkmap(b, r)
+.B Bitmap *b; Rectangle r;
+.PP
+.B int thinkabort()
+.SH DESCRIPTION
+These macros provide access to the routines used internally by
+.IR thinkblt (9.1).
+.I Thinkchar
+and
+.I thinknchars
+send characters to the printer; characters are buffered so that
+.I thinkflush
+must be called after the last transmission.
+.I Thinkmap
+sends all or part of a bitmap (it calls
+.I thinkflush
+automatically).
+.I Thinkabort
+stops transmission as quickly as possible, throwing away any characters
+that may be queued up.
+.SH "SEE ALSO"
+.IR thinkblt (9.1),
+.IR newproc (9.2),
+.IR types (9.5)
+.SH DIAGNOSTICS
+The routines return zero on success, a positive value on failure, and a
+negative value if
+.IR thinkblt (9.1)
+is not loaded.
diff --git a/static/v10/man9/twid.9 b/static/v10/man9/twid.9
new file mode 100644
index 00000000..c1025856
--- /dev/null
+++ b/static/v10/man9/twid.9
@@ -0,0 +1,90 @@
+.TH TWID 9.6
+.CT 1 games
+.SH NAME
+twid, pen \- doodle on the screen
+.SH SYNOPSIS
+.B twid
+.PP
+.B pen
+.SH DESCRIPTION
+.I Twid
+is a beginner's `oil paint' program; serious artists will use
+.IR paint (9.1).
+Button 3 gets a palette (menus of paints
+are unappetizing), and
+buttons 1 and 2 apply paint.
+.PP
+The palette has a list of names of subpalettes.
+After making a selection, depress button 3 again to display
+the subpalette.
+The palette names are:
+.TF texture
+.TP
+.B style
+Choose drawing style:
+.B ink
+(Rembrandt),
+.B point
+(Seurat),
+.B line
+(Mondrian),
+.B curve
+(Matisse)
+and
+.B disk
+(Disney).
+.PD
+.TP
+.B texture
+selects a texture (paint) to be applied with the brush.
+The default set of textures is sufficient for Lichtenstein.
+Use the
+.B <new>
+button to create new ones:
+use button 1 (2) to select the area under the
+cursor (its bitwise complement),
+and type a name for
+.I twid
+to call it.
+.TP
+.B brush
+selects the brush size and shape.
+Predefined brushes are square, for effects ranging
+from Dali to Van Gogh;
+to be more modern use
+.B <new>
+(again, you must name the new brush).
+.TP
+.B buttons
+By default, button 1 puts paint down and button 2
+picks it up again.
+This palette lets you change that behavior.
+.TP
+.B copy
+provides commands for moving and rotating sections
+of the picture.
+.TP
+.B unix
+offers commands for reading and writing files, and exiting.
+.PP
+The current style, texture and brush are
+indicated in their palettes by an asterisk
+.LR * .
+.PP
+.I Pen
+writes on the screen with smooth strokes.
+It can scribble on layers or on
+the background, even while other programs are running.
+It can be used to make drawings, annotations, highlights,
+or graffiti.
+.PP
+To write, hold button 1 while moving the mouse.
+Button 3 gets
+a menu to stop drawing and return to normal fettered activity,
+resume drawing,
+clean up, or exit the program.
+.SH BUGS
+If the pen layer where the ink is kept is too small,
+furious writing can cause the pen to run dry.
+When this happens, release
+button 1 and press it again.
diff --git a/static/v10/man9/types.9 b/static/v10/man9/types.9
new file mode 100644
index 00000000..9313c0ae
--- /dev/null
+++ b/static/v10/man9/types.9
@@ -0,0 +1,147 @@
+.TH TYPES 9.5
+.CT 2 graphics
+.SH NAME
+Word, Point, Rectangle, Bitmap, Texture, Pt, Rect, Rpt, display, Drect, Jrect \- graphics data types
+.SH SYNOPSIS
+.B #include <jerq.h>
+.PP
+.B typedef int Word;
+.br
+.B typedef struct Point Point;
+.br
+.B typedef struct Rectangle Rectangle;
+.br
+.B typedef struct Bitmap Bitmap;
+.br
+.B typedef struct Texture Texture;
+.PP
+.B extern Bitmap display;
+.br
+.B extern Rectangle Drect, Jrect;
+.PP
+.B Point Pt(x, y)
+.B int x, y;
+.PP
+.B Rectangle Rect(x0, y0, x1, y1)
+.B int x0, y0, x1, y1;
+.PP
+.B Rectangle Rpt()
+.B Point p0, p1;
+.SH DESCRIPTION
+A
+.B Word
+is a 32-bit integer, and is the unit of storage used in the graphics software.
+.PP
+A
+.B Point
+is a location in a Bitmap
+(see below),
+such as the display, and is defined as:
+.IP
+.EX
+typedef struct Point {
+ short x;
+ short y;
+} Point;
+.EE
+.PP
+The coordinate system has
+.I x
+increasing to the right and
+.I y
+increasing down.
+All objects and operators in the graphics world live in the same coordinate space\(emthat of the display bitmap.
+.PP
+A
+.B Rectangle
+is a rectangular area in a Bitmap.
+.EX
+.IP
+typedef struct Rectangle {
+ Point origin; /* upper left */
+ Point corner; /* lower right */
+} Rectangle;
+.EE
+.PP
+By definition,
+.B origin.x <= corner.x
+and
+.BR "origin.y <= corner.y" .
+By convention, the right (maximum
+.IR x )
+and bottom (maximum
+.IR y )
+edges are
+excluded from the represented rectangle, so abutting rectangles have no
+points in common.
+Thus,
+.B corner
+contains the coordinates of the first point beyond the rectangle.
+The image on the display is contained in the Rectangle
+.BR "{0, 0, XMAX, YMAX}" ,
+where
+.BR XMAX =800
+and
+.BR YMAX =1024.
+.PP
+A
+.B Bitmap
+holds a rectangular image, stored in contiguous memory starting at
+.IR base .
+.EX
+.IP
+typedef struct Bitmap {
+ Word *base; /* pointer to start of data */
+ unsigned width; /* width in Words of total data area */
+ Rectangle rect; /* rectangle in data area, screen coords */
+} Bitmap;
+.EE
+.PP
+Each
+.B width
+Words of memory form a scan-line of the image, and
+.B rect
+defines the coordinate system inside the
+.BR Bitmap :
+.B rect.origin
+is the location in the Bitmap
+of the upper-leftmost point in the image.
+The coordinate system is arranged so
+.I x
+positions equal to 0 mod 32
+are in the leftmost bit of a Word.
+.PP
+A
+.B Texture
+is a 16\(mu16 dot bit pattern.
+.IP
+.EX
+typedef struct {
+ Word bits[16];
+} Texture;
+.EE
+.PP
+Textures
+are aligned to absolute display positions,
+so adjacent areas colored with the same Texture
+mesh smoothly.
+.PP
+The functions
+.IR Pt ,
+.I Rect
+and
+.I Rpt
+construct geometrical data types from their components.
+Since they are implemented as macros, they only work
+in function argument lists.
+.PP
+The global
+.I display
+is a Bitmap
+describing the display area of the process.
+.I Drect
+is a Rectangle defining, in screen coordinates,
+the display area available to the program (inside the layer's border).
+.I Jrect
+is the Rectangle
+.BR "{0, 0, XMAX, YMAX}" .
diff --git a/static/v10/man9/vismon.9 b/static/v10/man9/vismon.9
new file mode 100644
index 00000000..7988cb9d
--- /dev/null
+++ b/static/v10/man9/vismon.9
@@ -0,0 +1,116 @@
+.TH VISMON 9.1
+.CT 1 sa_mortals comm_users
+.SH NAME
+vismon, sysmon, vwhois \- system statistics and mail notification
+.SH SYNOPSIS
+.B vismon
+[
+.BI - n
+]
+[
+.B -m
+]
+[
+.I system ...
+]
+.PP
+.B sysmon
+[
+.BI - n
+]
+[
+.B -m
+]
+[
+.I system ...
+]
+.PP
+.B vwhois
+.I person
+.SH DESCRIPTION
+.I Vismon
+monitors use of one or more Unix
+.I systems.
+It displays time of day, announcements,
+and CPU usage statistics.
+.PP
+CPU usage is reported as a numerical load average (average number
+of runnable processes) and its change in the last
+minute, and a bar graph showing, left-to-right, the
+proportion of CPU time spent in: default-priority user processes,
+low priority (nice) processes, system kernel, stream I/O, and idle time.
+.PP
+Arrival of mail or communications via
+.IR wall (8)
+or
+.IR write (1)
+is announced.
+Mail announcements include an icon of the sender.
+Communications appear in a shell
+.RI ( sh (1))
+layer superimposed on
+.I vismon's
+layer.
+This layer may be used for reply.
+.PP
+The options are:
+.TP
+.BI - n
+Update the bar graph every
+.I n
+seconds.
+.RI ( n =5
+by default.)
+.TP
+.BI -m
+Do not monitor CPU usage on other systems.
+.PP
+Button 2 selectively toggles the monitoring of other systems.
+The list of systems is obtained from one of the following:
+a file named in the VISMON enviroment variable,
+.FR $HOME/lib/vismon ,
+or
+.FR /usr/jerq/lib/vismon .
+.PP
+.I Sysmon
+is the same as
+.I vismon
+without icons.
+.PP
+.I Vwhois
+causes a dummy mail announcement from
+.I person
+to appear in
+.I vismon
+layers.
+.SH FILES
+.TF /usr/spool/mail/mail.log
+.TP
+.F /usr/jerq/mbin/sysmon.m
+terminal program
+.TP
+.F /usr/jerq/lib/sysdaemon
+remote monitoring program
+.TP
+.F /usr/jerq/lib/sysdaemon
+responder for remote monitoring
+.TP
+.F /usr/spool/mail
+.TP
+.F /usr/spool/mail/mail.log
+.TP
+.F /n/face/*
+vismon pictures
+.TP
+.F /usr/jerq/lib/vismon
+.TP
+.F $HOME/lib/vismon
+menu of machines
+.SH SEE ALSO
+.IR face (9.7),
+.IR faced (9.5)
+.SH DIAGNOSTICS
+`Can't open comm window' means a shell layer cannot be created.
+To receive any further communications, delete some layer.
+.SH BUGS
+There's more to system performance than meets the eye.
diff --git a/static/v10/man9/windows.9 b/static/v10/man9/windows.9
new file mode 100644
index 00000000..ff83e498
--- /dev/null
+++ b/static/v10/man9/windows.9
@@ -0,0 +1,90 @@
+.TH WINDOWS 9.1
+.CT 1 comm_term
+.SH NAME
+windows, jps, reshape \- create and initialize windows
+.SH SYNOPSIS
+.B windows
+[
+.I ox oy cx cy command ...
+]
+.PP
+.B jps
+.PP
+.B reshape
+[
+.B -r
+]
+.I x y
+.SH DESCRIPTION
+For each set of arguments,
+.I windows
+makes a
+.IR mux (9.1)
+layer with rectangle
+.RI "Rect(" "ox, oy, cx, cy" ")"
+(see
+.IR types (9.5)),
+then executes the
+.I command
+therein.
+The
+.I command
+may be null ("").
+Any number of layers may be specified; each
+.I command
+and its arguments must be given
+as a single argument to
+.I windows.
+.PP
+In windows that are not expected to be reused and do not need a
+shell, it is good practice to invoke the
+.I command
+with
+.BR exec ;
+see
+.IR sh (1).
+.PP
+.I Jps
+prints the rectangle coordinates of each window and the arguments (if
+any) with which it was down-loaded,
+to help set up the
+.IR windows
+command.
+.PP
+.I Reshape
+adjusts its layer so that the display
+rectangle inside the border is
+.I x
+by
+.I y
+pixels.
+Under option
+.B -r
+it adjusts the width/height ratio to
+.I x/y,
+with the new shape as large as will fit inside the old.
+.SH SEE ALSO
+.IR mux (9.1),
+.IR ruler (9.1)
+.SH DIAGNOSTICS
+.I Windows
+may adjust rectangles to a minimum size or to stay within
+the usual layer bounds (8 pixels inside the screen edge).
+.br
+Layer creation can fail if there
+are no process slots or memory left in the terminal.
+.br
+.I Reshape
+clips a layer that is too big
+and does nothing if the layer is too small
+or if there is not enough memory.
+.SH BUGS
+.I Jps
+reports what has been downloaded to the 5620; usually this
+is not the same as the command that must be used in
+.I windows
+to cause the download.
+.br
+.I Reshape
+destroys the contents of the
+layer; it should work elsewhere.