perm filename PUBHDR.PUB[TH,ROB] blob
sn#486129 filedate 1979-11-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .<< PUB DECLARATIONS >>
C00016 00003 .<< DEFINITIONS AND MACROS FOR BIT TABLES >>
C00019 00004 .<< TITLE PAGE >> BLANK PAGE
C00025 ENDMK
C⊗;
.<< PUB DECLARATIONS >>
.DEVICE TTY;
.PUBLISH←TRUE;<< set to TRUE to get different headings for even/odd pages >>
.
.<< UUO.PUB[CSP,DOC] was used as a source for most of the macros and formatting
. general style. >>
.
.<< The following assignments are to avoid ill-formed
. expressions when PUBbing only part of the manual. >>
.CARPAG←0;
.DSKPAG←0;
.DTAPAG←0;
.ELFPAG←0;
.IMPPAG←0;
.LPTPAG←0;
.MTAPAG←0;
.PLTPAG←0;
.PTPPAG←0;
.PTRPAG←0;
.SIXPAG←0;
.TTYPAG←0;
.TVPAG←0;
.UDPPAG←0;
.XGPPAG←0;
.DDPAG←0;
.DMPAG←0;
.DIALERPAG←0;
.IIIPAG←0;
.
.<< THESE ARE LEFT ON/OFF OVER THE WHOLE MANUSCRIPT FOR CONVENIENCE! >>
.TURN ON "{#%α"
.TURN OFF "-" << Too many minus signs would be mistaken for hyphens. >>
.
.
. FONT 5 "BASB30" << BOLD FONT FOR HEADINGS/TITLES >>
. FONT 4 "FIX20" << SOME EXAMPLES: SMALL FIXED WIDTH FONT >>
. FONT 3 "GACS25" << PREFORMATTED STUFF: FIXED WIDTH FONT >>
. FONT 2 "BASI30" << ITALICS (UNDERLINED WORDS) >>
. FONT 1 "BASL30" << NORMAL FONT: VARIABLE WIDTH >>
.
.IF XCRIBL THEN START
.
. !XGPLFTMAR ← 216;
. AT "⊗∪" STUFF "∩" ⊂
%2{}STUFF{}%*{ ⊃
.AT "ffi" ⊂ IF THISFONT ≤ 2 OR THISFONT = 5 THEN "≠" ELSE "fαfαi" ⊃;
.AT "ffl" ⊂ IF THISFONT ≤ 2 OR THISFONT = 5 THEN "∞" ELSE "fαfαl" ⊃;
.AT "ff" ⊂ IF THISFONT ≤ 2 OR THISFONT = 5 THEN "≥" ELSE "fαf" ⊃;
.AT "fi" ⊂ IF THISFONT ≤ 2 OR THISFONT = 5 THEN "≡" ELSE "fαi" ⊃;
.AT "fl" ⊂ IF THISFONT ≤ 2 OR THISFONT = 5 THEN "∨" ELSE "fαl" ⊃;
.AT "--" ⊂ IF THISFONT ≤ 2 OR THISFONT = 5 THEN "¬" ELSE "-α-" ⊃;
.LN←4; RN←4; << Many tables in the manual are NARROW LN,RN; >>
. END
.
. ELSE START
. AT "⊗∪" STUFF "∩" ⊂
.STU←↑"STUFF";
{STU}{ ⊃
.LN←4; RN←4;
. END
.
.
.HLINES← IF XCRIBL THEN 55 ELSE 999; << NUMBER OF LINES/PAGE >>
.WCHARS← IF XCRIBL THEN 81 ELSE 80; << NUMBER OF CHARS/LINE >>
.PAGE FRAME HLINES HIGH WCHARS WIDE;
.IF XCRIBL THEN TITLE AREA HEADING LINES 1 TO 3 CHARS 1 TO WCHARS;
.TOP←IF XCRIBL THEN 4 ELSE 1;
.AREA TEXTER LINES TOP TO HLINES CHARS 1 TO WCHARS;
.PLACE TEXTER;
.VARIABLE SECNAME, SSNAME, SSNUMBER;
.<< COUNT PAGE TO 999; this is now done in TITLE.PUB >>
.COUNT SECTION;
.COUNT SUBSECTION IN SECTION PRINTING "!.1";
.COUNT APPENDIX;
.MACRO SEC(NAME,ABBREV,PHRASE,LABEL) ⊂
.SKIP TO COLUMN 1; IF XCRIBL AND ODD PAGE AND PAGE>1 THEN SKIPPAGE;
. SSNAME ← SECNAME ← IF "ABBREV"≠NULL THEN "ABBREV" ELSE "NAME";
. SSNUMBER ← (SECTION+1)&"."
. LABEL NEXT SECTION!;
. BEGIN
. CENTER
%5SECTION {!}
. SKIP
.NAM←↑"NAME";
{NAM}%*
. SKIP 3;
. CAT("PHRASE","NAME");
. SEND CONTENTS ⊂ SKIP 2;
∂4{SECTION!}∂8{NAM}→{PAGE!}{SKIP;⊃
. END ⊃
.MACRO SS(NAME,PHRASE,LABEL) ⊂
. SSNUMBER←SECTION!&"."&(SUBSECTION+1);
. SSNAME←"NAME";
. IF LINES≤9 OR ¬XCRIBL THEN SKIP TO COLUMN 1;
. LABEL NEXT SUBSECTION!;
. BEGIN
. SKIP 3
. CAT("PHRASE","NAME");
.IF XCRIBL THEN SEND CONTENTS ⊂
∂(13){!}∂(19)NAME\∞∀∂(WCHARS-2)→{PAGE!}
. ⊃
.ELSE SEND CONTENTS ⊂
∂(13){!}∂(19)NAME\∞ ∞.∞ →{PAGE!}
. ⊃;
. CENTER
%5{!}##NAME%*{ SKIP;
. END ⊃
.MACRO SSP(NAME,PHRASE,LABEL,SIDE) ⊂
. SKIP TO COLUMN 1
. IF "SIDE"≠NULL THEN IF XCRIBL AND NOT SIDE PAGE THEN SKIPPAGE;
.SS("NAME","PHRASE","LABEL") ⊃
.MACRO SSG(NAME,PHRASE,LABEL) ⊂
.BEGIN "SSG"; GROUP;
.SS("NAME","PHRASE","LABEL") ⊃
.MACRO CAT(PHRASE,NAME) ⊂IF "PHRASE"≠NULL THEN SEND INDEX ⊂}<{PAGE}≤PHRASE≥{⊃ ⊃
.MACRO REFREF(A,B) ⊂ SEND INDEX ⊂}<⊗∪see∩ B≤A≥{⊃ ⊃
.MACRO SPECIALREF(A,B) ⊂ SEND INDEX ⊂}<⊗∪see B∩≤A≥{⊃ ⊃
.AT "⊗→" SPECIFIC "↔" GENERIC "←" ⊂
.IF "GENERIC"≠NULL THEN
. START SEND INDEX ⊂}<{PAGE}≤GENERIC, SPECIFIC≥{⊃; "SPECIFIC GENERIC"; END
.ELSE START SEND INDEX ⊂}<{PAGE}≤SPECIFIC≥{⊃; "SPECIFIC"; END ⊃
.RECURSIVE MACRO STANDARD BACK ⊂
. IF (PUBLISH AND XCRIBL) THEN START
. ODD HEADING(,,%5{SSNAME} {PAGE}%*);
. EVEN HEADING(%5{PAGE} {SECNAME}%*,,);
. END ELSE IF XCRIBL THEN EVERY HEADING(,,%5{SSNAME} {PAGE}%*);
.SSNAME ← "INDEX"; SECNAME ← SSNUMBER ← NULL
. BEGIN FILL NOJUST INDENT 0,3; PREFACE 0;
. AREA TEXTER LINES 4 TO HLINES IN 2 COLUMNS 3 APART;
. PORTION INDEX;
.<< IF XCRIBL AND EVEN PAGE THEN SKIPPAGE; >>
. PLACE TEXTER;
. SECNAME ← "INDEX";
. WASWORD ← WASPG ← NULL ;
. AT "<" PGNO "≤" PHRASE "≥" ⊂
. IF "PHRASE" ≠ WASWORD THEN START BREAK }PHRASE PGNO{ END
. ELSE IF "PGNO" ≠ WASPG THEN }, PGNO{ ;
. WASPG ← "PGNO" ; WASWORD ← "PHRASE" ; ⊃
%5INDEX%1
.SKIP
. RECEIVE "≤≥"
. END;
.SECNAME ← SSNAME ← "CONTENTS"
.SSNUMBER ← NULL
.COUNT PAGE PRINTING "i"
.PORTION CONTENTS
.AREA TEXTER LINES 4 TO HLINES CHARS 1 TO WCHARS;
.PLACE TEXTER;
.<< FILL NOJUST CRBREAK TURN ON "←→∂\∞" >>
.NOFILL; TURN ON "←→∂\∞";
.TABS 18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75;
←%5T A B L E O F C O N T E N T S
.SKIP 3
SECTION→PAGE%1
.SKIP;
.RECEIVE
.IF XCRIBL THEN
. BEGIN
. PAGE FRAME 100 HIGH WCHARS+7 WIDE;
. NOFILL;
. TITLE AREA HEADING LINE 1 CHARS 1 TO WCHARS+1;
. AREA TITLS LINE 3 IN 4 COLUMNS 0 APART;
. AREA TEXTER LINES 4 TO 100 IN 4 COLUMNS 0 APART;
. EVERY HEADING(,%5Bit Tables%*,)
. PORTION BITINDEX;
. PLACE TITLS;
. SELECT 4;
. TABS 5,13;
. TURN ON "\∞";
Bit∞.\Octal∞.\Name....
.SKIP TO COLUMN 2;
Bit∞.\Octal∞.\Name....
.SKIP TO COLUMN 3;
Bit∞.\Octal∞.\Name....
.SKIP TO COLUMN 4;
Bit∞.\Octal∞.\Name....
. PLACE TEXTER;
. SELECT 4;
. TABS 5,13;
. TURN ON "\";
. AT "`" ⊂ IF LINE≥59 THEN SKIP TO COLUMN (COLUMN+1); ⊃
. AT "≤" PHRASE "≥" ⊂
.}PHRASE
. ⊃
. RECEIVE
.SKIP
Octal values of all bits
.BN←0
.REPEAT ⊂}{BN}\{EVAL("BIT"&BN)}{BN←BN+1}
.IF BN≥36 THEN DONE ⊃
. END;
.⊃
.MACRO APP(NAME,ABBREV,PHRASE,LABEL,SIDE) ⊂
. IF "SIDE"≠NULL THEN IF XCRIBL AND NOT SIDE PAGE THEN SKIPPAGE;
. SSNAME ← IF "ABBREV"≠NULL THEN "ABBREV" ELSE "NAME";
. SSNUMBER ← NULL;
. SECNAME ← "Appendix "&(APPENDIX+1);
.SKIP TO COLUMN 1;
.<< IF XCRIBL AND EVEN PAGE THEN SKIPPAGE; >>
. LABEL NEXT APPENDIX!;
. BEGIN
. CENTER
%5APPENDIX {!}
. SKIP
.NAM←↑"NAME"
{NAM}%*
. SKIP 3
. CAT("PHRASE","NAME");
.IF XCRIBL THEN SEND CONTENTS ⊂
∂4{APPENDIX!}∂8{NAM}\∞∀∂(WCHARS-2)→{PAGE!}
. ⊃
.ELSE SEND CONTENTS ⊂
∂4{APPENDIX!}∂8{NAM}\∞ ∞.∞ →{PAGE!}
. ⊃;
. END ⊃
.MACRO CENT (NAME,PHRASE) ⊂IF ((LINES ≤ 9) OR ¬XCRIBL) THEN SKIP TO COLUMN 1;;
.CAT("PHRASE","NAME");
.BEGIN CENTER SKIP 3
%5NAME%*
.SKIP; END
.⊃
.MACRO CENTP (NAME,PHRASE) ⊂ SKIP TO COLUMN 1;;
.CAT("PHRASE","NAME");
.BEGIN CENTER
%5NAME%*
.SKIP; END
.⊃
.MACRO CENTG (NAME,PHRASE) ⊂
.BEGIN "CENTG"; GROUP;
.CENT("NAME","PHRASE") ⊃
.<< Force headings to be put out on an otherwise blank page >>
.MACRO SKIPPAGE ⊂ START;}#{NEXT PAGE; END ⊃
.MACRO UUO (NAME,OPCODE,OP2,DEV,NOSKIP) ⊂
.IF XCRIBL THEN SKIP 3 ELSE IF "NOSKIP"=NULL THEN SKIP TO COLUMN 1;
.BEGIN NOFILL GROUP; TABS 17; TURN ON "\";
%5NAME%3\{IF "OPCODE"="CALLI" THEN
. START; "[OP=047, ADR=OP2] CALLI OP2"; CAT "NAME UUO (CALLI OP2)";
.IF XCRIBL THEN SEND NAMETABLE ⊂}<NAME≤CALLI OP2≥{PAGE}>{⊃; END
.XTDUUO(TTYUUO,051,OPCODE,OP2,NAME)
.XTDUUO(PTYUUO,711,OPCODE,OP2,NAME)
.XTDUUO(PPIOT,702,OPCODE,OP2,NAME)
.XTDUUO(PGIOT,715,OPCODE,OP2,NAME)
.XTDUUO(INTUUO,723,OPCODE,OP2,NAME)
.XTDUUO(MAIL,710,OPCODE,OP2,NAME)
.ELSE START; "[OP=OPCODE]"; CAT "NAME UUO (UUO OPCODE)";
.IF XCRIBL THEN
.IF "DEV"=NULL THEN SEND NAMETABLE ⊂}<NAME≤OPCODE≥{PAGE}>{⊃
. ELSE SEND NAMETABLE ⊂}<NAME≤OPCODE DEV≥{PAGE}>{⊃; END
.TURN OFF; VERBATIM
--------------------------------------------------
.⊃
.MACRO XTDUUO(GROUPNAME,OPCODE,NAME,ACFIELD,SPECUUO)⊂ELSE IF "NAME"="GROUPNAME" THEN
.START; "[OP=OPCODE, AC=ACFIELD] GROUPNAME ACFIELD,";
. CAT "SPECUUO UUO (GROUPNAME ACFIELD,)"
.IF XCRIBL THEN SEND NAMETABLE ⊂}<SPECUUO≤GROUPNAME ACFIELD,≥{PAGE}>{⊃; END ⊃
.MACRO UUOX(RET) ⊂BEGIN SKIP 3; GROUP SVERBATIM
--------------------------------------------------
MTAPE <channel number>,ADR
.IF "RET"≠NULL THEN START
RET
.END;
.⊃
.MACRO OLDUUO (NAME,OPCODE,OP2) ⊂
.BEGIN NOFILL;TABS 17;TURN ON "\";
%5NAME%*\{IF "OPCODE"="CALLI" THEN
. START; "[OP=047, ADR=OP2] CALLI OP2"; CAT "NAME UUO (CALLI OP2)"; END
.ELSE "[OP=OPCODE]";
.END
.⊃
.MACRO REPUUO (NAME,OPCODE,OP2) ⊂
.BEGIN NOFILL;TABS 17;TURN ON "\";
%5NAME%*\formerly {IF "OPCODE"="CALLI" THEN
. START; "[OP=047, ADR=OP2] CALLI OP2"; CAT "NAME UUO (formerly CALLI OP2)"; END
.ELSE "[OP=OPCODE]";
.END
.⊃
.MACRO UEND ⊂SKIP; IF LINES > 3 THEN APART; FILL; SELECT 1;⊃
.MACRO VBEGIN ⊂BEGIN SKIP 1; GROUP; SVERBATIM; NARROW 8;⊃
.MACRO VEND ⊂WIDEN; IF LINES > 3 THEN APART; FILL; SELECT 1;⊃
.MACRO SVERBATIM ⊂VERBATIM; SELECT 3; ⊃
.NBRXTDUUOS←"six" << the number of extended UUOs, which see in INTRODUCTION >>
.MACRO YON (LABEL) ⊂"page ";PAGE! LABEL⊃
.MACRO YONAPP (LABEL) ⊂"Appendix ";APPENDIX! LABEL⊃
.MACRO YONSEC (LABEL) ⊂"Section ";SECTION! LABEL⊃
.MACRO YONSS (LABEL) ⊂"Section ";SUBSECTION! LABEL⊃
.<< DEFINITIONS AND MACROS FOR BIT TABLES >>
.<< HERE IS A SAMPLE MULTIPLE-BIT TABLE ENTRY:
. "30:35\0,,77\" END OF COMMENT >>
.BIT0 ← "400000,,0"
.BIT1 ← "200000,,0"
.BIT2 ← "100000,,0"
.BIT3 ← "40000,,0"
.BIT4 ← "20000,,0"
.BIT5 ← "10000,,0"
.BIT6 ← "4000,,0"
.BIT7 ← "2000,,0"
.BIT8 ← "1000,,0"
.BIT9 ← "400,,0"
.BIT10 ← "200,,0"
.BIT11 ← "100,,0"
.BIT12 ← "40,,0"
.BIT13 ← "20,,0"
.BIT14 ← "10,,0"
.BIT15 ← "4,,0"
.BIT16 ← "2,,0"
.BIT17 ← "1,,0"
.BIT18 ← "0,,400000"
.BIT19 ← "0,,200000"
.BIT20 ← "0,,100000"
.BIT21 ← "0,,40000"
.BIT22 ← "0,,20000"
.BIT23 ← "0,,10000"
.BIT24 ← "0,,4000"
.BIT25 ← "0,,2000"
.BIT26 ← "0,,1000"
.BIT27 ← "0,,400"
.BIT28 ← "0,,200"
.BIT29 ← "0,,100"
.BIT30 ← "0,,40"
.BIT31 ← "0,,20"
.BIT32 ← "0,,10"
.BIT33 ← "0,,4"
.BIT34 ← "0,,2"
.BIT35 ← "0,,1"
.MACRO BITSTABLE(NM,TITLE,BFLAG)⊂BEGIN
. NARROW LN; GROUP; TABS 8,22,32; TURN ON "\";
. NAMING←"NM";
. BNAMING←"BFLAG";
. IF "NM"=NULL THEN TABLEINDENT←21 ELSE TABLEINDENT←31;
. INDENT 0,TABLEINDENT;
.IF XCRIBL THEN BEGIN
⊗∪Bits\Octal\{IF "NM"≠NULL THEN "Name\"}TITLE∩
.TBLNAM←↑"NM"[1]&"NM"[2 TO ∞];
.IF "NM"≠NULL AND "NM"≠"NAME" AND BNAMING=NULL
. THEN SEND BITINDEX ⊂SKIP;}`≤{TBLNAM}, p. {PAGE}≥{⊃
.END ELSE BEGIN TIT←↑"TITLE";
BITS\OCTAL\{IF "NM"≠NULL THEN "NAME\"}{TIT}
.END
. BREAK ⊃
.MACRO EVAL(εX) ⊂ X ⊃
.MACRO B(NBR,NAME,EXTRA) ⊂"NBR\";(BVALUE←EVAL("BIT"&"NBR"));"\";
.IF NAMING≠NULL THEN START
.IF "EXTRA"="*" THEN "* ";
NAME\{
.IF "NAME"≠NULL THEN START SEND INDEX ⊂}<{PAGE}≤NAME bit ({BVALUE}--{NAMING})≥{⊃;
. IF XCRIBL AND BNAMING=NULL THEN SEND BITINDEX ⊂}≤NBR\{BVALUE}\NAME≥{⊃;
. END;
.END ⊃
.<< TITLE PAGE >> BLANK PAGE
.
.IF XCRIBL THEN BEGIN; INSERT NAMETABLE; END;
.IF XCRIBL THEN BEGIN; INSERT BITINDEX; END;
.IF XCRIBL THEN BEGIN; INSERT NUMBERTABLE; END;
.PORTION TITLEPAGE
.
.NOFILL; TURN ON "→";
.INSTANT ← IF (PUBLISH OR ¬XCRIBL) THEN NULL ELSE TIME&" "&DAY&" ";
.IF PUBLISH AND XCRIBL THEN START <<For front cover over the picture>>
%5STANFORD ARTIFICIAL INTELLIGENCE LABORATORY→{MONTH} {YEAR}
OPERATING NOTE 55.5
.NEXT PAGE
.END
%5STANFORD ARTIFICIAL INTELLIGENCE LABORATORY→{INSTANT}{MONTH} {YEAR}
OPERATING NOTE 55.5
.TURN OFF; SKIP 12; CENTER;
U U O M A N U A L
(Third Edition)
.SKIP 3
by
.SKIP 2
Martin Frost
.FILL; SKIP 10;
%5ABSTRACT
%1This document describes the UUOs (monitor calls) available
to users of the Stanford Artificial Intelligence Laboratory timesharing system.
Additional information relevant to the use of the UUOs is contained
in the introductory section and in the appendices.
.IF XCRIBL THEN START
The inside and outside covers hold some tables for quick reference.
.END;
This manual supersedes SAILON 55.4.
This manual is on-line at SU-AI as UUO.ME[S,DOC]. The file UUO.UPD[S,DOC]
contains up to date corrections to this manual.
.SKIP 2;
This work was supported by the Defense Advanced Research Projects Agency,
the National Science Foundation, the National Aeronautics and Space
Administration, and the National Endowment for the Arts.
.IF XCRIBL THEN SKIP TO LINE 20 ELSE SKIP 4;
%5ACKNOWLEDGEMENTS
%1I want to thank all of the following people who have contributed
significantly to the preparation of this manual: Ralph Gorin who wrote
{YONSS XGPDEV} on the XGP, Ted Panofsky who wrote {YONSS IIISS} and
{YONSS DDSS} on the III and Data Disc display systems (both sections
taken from Panofsky's ⊗∪Facility Manual∩, SAILON 56), Andy Moorer who
wrote {YONSS IMPDEV} on the IMP and {YONSS SIXDEV} on device SIX (P3),
Bo Eross who wrote {YONSS ELFSS} on the
PDP-11 interface, Hans Moravec who wrote {YONSS CARSS} on the cart
transmitter, Mark Crispin who updated {YONSS IMPDEV} on the IMP,
and Ken Shoemake who helped in the adapting of {YONSS SIXDEV} on device
SIX (P3) to this manual.
Further thanks go to Larry Tesler for his PUB program and its
many features without which this manual could not have been printed so
well on the XGP and to Brian Harvey for writing the ⊗∪Monitor Command
Manual∩ (SAILON 54.5), for creating the very popular Baskerville fonts,
and for working with me in getting our two manuals through PUB. Final
thanks go to Jeff Rubin and Ralph Gorin for putting up with me while
they helped me debug this manual and some of the system.
.SECNAME ← SSNUMBER ← SSNAME ← NULL
.IF (PUBLISH AND XCRIBL) THEN START
. ODD HEADING(%5{SSNUMBER},,{SSNAME} {PAGE}%*);
. EVEN HEADING(%5{PAGE} {SECNAME},,{SSNUMBER}%*);
.END ELSE
.IF XCRIBL THEN EVERY HEADING(%5{SSNUMBER} {SECNAME},,{SSNAME} {PAGE}%*);
.
.INSERT CONTENTS
.COUNT PAGE TO 999;
.PORTION MAINPORTION
.NEXT PAGE
.IF ¬XCRIBL THEN NEXT PAGE;