.IF XCRIBL THEN START
. UNDERLINE ← "";
. FONT 1 "TIMESROMAN10"
. FONT 2 "TIMESROMAN10I"
. FONT 3 "GACHA10"
. FONT 4 "MATH10"
. FONT 5 "TIMESROMAN10B"
. SELECT 1;
.END ELSE UNDERLINE ← " "; ;
.PAGEWIDTH ← IF XCRIBL THEN 79 ELSE 71; PAGEDEPTH ← 67;
.PAGE FRAME PAGEWIDTH WIDE PAGEDEPTH HIGH;
.TITLE AREA PREHEAD LINES 1 TO 2;
.TITLE AREA HEADING LINES 3 TO 7;
.AREA TEXT LINES 8 TO PAGEDEPTH;
.<<TITLE AREA FOOTING LINES PAGEDEPTH-N+1 TO PAGEDEPTH;>>
.PLACE PREHEAD; SELECT 1
.PLACE HEADING; SELECT 1
.PLACE TEXT; SELECT 1
.nofill preface 0; fill preface 1;
.BEFORE PAGE 
.PLACE PREHEAD;
.CENTER
{FORUSE}
.STANDARD TITLES  
.turn on "\↑{%"
.oddleftborder ← evenleftborder ← 1000;
.compact
.at "~" phrase "~"  "phrase" 
.macro indexer 
.at "~" phrase "~"   "phrase"
.turn on "{"
.send index }~phrase~ {page}%{
.turn off
.  
.at "~" phrase "~"  "phrase"   <<for standalone version>>
.next page
.at "[["  begin indent 0,0; nofill; 
.at "]]"  end; continue; 
.at ";;"  begin; nofill;
.end; continue 
.MACRO KEEP(N)  IF LINES LEQ N THEN NEXT PAGE;; 
.MACRO DOSEC(CNT, NSKIPS, NAME, LBL, LEVEL)  BEGIN
.FILL; NOJUST; INDENT INDENT2, INDENT2+5, 15; KEEP 6; SKIP NSKIPS
.NEXT CNT
.IF "LBL" NEQ NULL THEN LBL:
{!}. NAME
.SENDTOC(|{!}.  NAME|, LEVEL)
.END 
.MACRO SEC(NAME, LBL)  DOSEC(SECTION, 2, |NAME|, LBL, 1)
.SKIP 1 
.MACRO SSEC(NAME, LBL)  DOSEC(SSECTION, 1, |NAME|, LBL, 2) 
.MACRO SUBSEC(NAME, LBL)  DOSEC(SSECTION, 1, |NAME|, LBL, 2) 
.MACRO SSSEC(NAME, LBL)  DOSEC(SSSECTION, 1, |NAME|, LBL, 3) 
.COUNT SECTION FROM 1 TO 99;
.COUNT SSECTION FROM 1 TO 99 IN SECTION PRINTING "!.1";
.COUNT SSSECTION FROM 1 TO 99 IN SSECTION PRINTING "!.1"
.MACRO SH(HEAD!)  SUBJECT ← "HEAD!"; 
.MACRO PTS  BEGIN; NARROW 5,0; INDENT 0,2 
.MACRO EPTS  BREAK; END 
.MACRO DEFS  BEGIN; NARROW 5,0; INDENT 0,26; TABS 27,30 
.MACRO EDEFS  BREAK; END 
.MACRO TOC  INSERT CONTENTS; ISTOC←TRUE; PORTION BODY 
.MACRO SENDTOC(ENTRY,LEVEL)  IF ISTOC THEN START
.SEND CONTENTS 
ENTRY{PAGE}
. 
.END 
.MACRO FINISH 
.IF ISTOC THEN START
.PORTION CONTENTS; CENTER
Contents
.SKIP 4; NOFILL; RECEIVE; END 
.ISTOC←FALSE
.MACRO SEE(LBL)  "see page " ; PAGE! LBL 
.expur1←1;expur2←2;expur3←3;
.FORUSE←"For Xerox Internal Use Only -- "&date;
.macro expurgate(r)
.if r="" then rr←1 else rr←r;
.if rr=expur1 or rr=expur2 or rr=expur3 then start 
.macro question 
.tty←"Type 'X' if you want to expurgate.";
.rr←tty;if rr="X" or rr="x" then start
.tty←"Do you wish to expunge PARC material?";
.rr←tty;if rr="Y" or rr="y" then start
.	expur1←0;
.	FORUSE←"For Xerox Internal Use Only -- "&date;
.	end;
.tty←"Do you wish to expunge experimental systems?";
.rr←tty;if rr="Y" or rr="y" then start
.	expur3←0;
.	FORUSE←"For Xerox Internal Use Only -- "&date;
.	end;
.tty←"Do you wish to expunge proprietary material?";
.rr←tty;if rr="Y" or rr="y" then start
.	expur2←0;
.	FORUSE←"Cleared version of "&date;
.	tty←"Is this documentation for University of Rochester?";
.	rr←tty; if rr="Y" or rr="y" then FORUSE←"For use only by University of Rochester";
.	end;
.end
.
.macro copyright 
.if expur2=0 then start
.if XCRIBL then start
%4c%* Xerox Corporation {year}
.end else start
Copyright Xerox Corporation {year}
.end
.end
.
.macro genindex 
.portion index
.EVERY HEADING(|INDEX|,{date},{page})
.SKIP 3
.nofill
.turn on ""
.tabs 21,45
.letter ← phr ← waspg ← null;
.at "~" phrase "~" pgno "%" 
.if ↑letter NEQ ↑"phrase"[1] then skip 1;
.if ↑"phrase" NEQ ↑phr then
.        start
.        break
.        }phrase\ . \pgno{
.        end
.else
.     start
.     if pgno NEQ waspg then
.     start
.     if chars < 4 then
.          start
.          },{
.          break
.          }\\pgno{
.          end
.else  },pgno{;
.     end
.     end
.     phr ← "phrase"; 
.     letter ← "phrase"[1];
.     waspg ← pgno; 
.      
.receive "~~"  
.!und ← "---------------------------------------------------------------"
.
.macro italic(str) 
.turn on "%{";
.if xcribl then start
.  }%2str%*{
.end else start
.  }str{  <<really want to underline but too much confusion>>
.end
.turn off;
. 
.
.at "$&" str "&"  italic(|str|) 

.macro under(str) 
.turn on "{";
.if xcribl then start
. }str{
.end else start
. }str{
.end
.turn off;
. 
.
.at "$←" str "←"  under(|str|) 
.
.macro bolden(str) 
.turn on "%{";
.if xcribl then start
. }%5str%*{
.end else start
. }str{
.end
.turn off;
. 
.
.at "$|" str "|"  bolden(|str|)