History | People | Library | Sites | About

Table of Contents for Multics Programmer's Manual: Reference Guide (AG91-04)

This table of contents gives an idea of the features of Multics and the topics that were important to explain to programmers using the system. This version of the manual came out after MR11.0, sometime around 1984. An earlier version of the manual, AG91-01, dated December 1975, has been scanned and put online by Al Kossow.

(Links are to the Multics Glossary.)

Section 1 Multics Concepts and Characteristics 1-1
System Concepts1-1
System Characteristics1-2
Virtual Memory1-3
Selective Sharing1-5
Access Control List1-6
Access Isolation Mechanism1-6
Ring Structure1-6
System Administration1-7
User Interfaces1-7
Environment Shaping1-7
System Software1-8
Communications Software1-9
GCOS Environment Simulator1-10
Multics Graphics System1-10
Multics Data Base Manager1-10
Multics Report Program Generator1-10
Logical Inquiry and Update System1-10
Word Processing1-10
Extended Mail Facility1-10
Executive Mail1-11
Executive Forum1-11
Transaction Processing Tools1-11
The FAST/DFAST Facility1-11
Menu Creation Facilities1-11
Inter-Multics File Transfer Facility1-11
Report Writer1-11
File Transfer To and From Personal Computers1-11
Other Support Facilities and Tools1-12
Access to the System1-12
Service to Large and Small Users1-13
System Design1-13
Continuous Operation1-13
System Reliability1-13
Glossary of Multics Terms1-14
Section 2Multics Storage System2-i
Segment References2-1
Logical Volumes2-2
Logical Volume Attachment2-4
Master Directories2-4
Storage System Entry Types2-6
Multisegment File2-6
Data Management File2-6
Extended Entry Types2-7
Entry Attributes2-7
System Directories2-13
Section 3Naming, Command Language, and Terminal Usage3-1
Constructing and Interpreting Names3-1
Archive Component Pathnames3-4
Star Names3-5
Constructing Star Names3-5
Interpreting Star Names3-5
Equal Names3-7
Constructing Equal Names3-7
Interpreting Equal Names3-8
Archive Component Pathnames and Equal Names.3-12
Reference Names3-14
Entry Point Names3-15
Command, Subroutine, Condition, and I/O Switch Names3-16
Request IDs3-16
Date/Time Names3-17
Date/Time Input Values3-17
          Time Strings (DT Values)3-17
Date/Time Output Values3-23
Time Format3-23
List of Format Keywords3-23
Command Language3-31
Command Environment3-32
Simple Command Line3-32
Compound Command Line3-33
Reserved Characters and Quoted Strings3-34
Active Strings3-36
Typing Conventions3-40
Canonical Form3-41
Column Assignment3-44
Overstrike Canonicalization3-44
Overstrike Canonicalization Examples3-45
Replacement Canonicalization3-45
Replacement Canonicalization Examples3-47
Erase and Kill Characters3-48
Examples of Erase and Kill Processing3-50
Escape Sequences3-51
Typing Convention Examples3-52
Column Canonicalization Examples3-53
Erase, Kill, and Escape Examples3-53
Terminal Output3-56
Carriage Motion3-56
Output Escape Sequences3-58
Continuation Lines3-58
End-of-Page Processing3-58
Escape Conventions on Various Terminals3-58
Selectric Devices3-59
Upper-Case-Only Devices3-60
Execuport 3003-60
CDI Model 10303-61
Flow Control3-61
Input Flow Control3-61
Output Flow Control3-62
Block Transfer3-62
Section 4Multics Programming Environment4-1
Program Preparation4-1
Programming Languages4-1
Creating and Editing the Source Segment4-2
Creating an Object Segment4-3
Object-Segment Format4-4
Debugging Facilities4-5
Writing a Command4-5
Writing an Active Function4-7
Address Space Management4-9
Dynamic Linking4-9
Search Rules4-10
Making a Segment Known4-12
Address Space Management Subroutines4-13
Multics Stack Segments4-14
Stack Header4-14
Stack Frames4-14
Combined Linkage Region4-14
Clock Services4-14
Access to System Clocks4-15
Facilities for Timed Wakeups4-16
Writing a Process Overseer4-16
Process Initialization4-17
Process Overseer Functions4-19
Some Notes on Writing a Process Overseer4-21
Direct Process Overseers4-21
Handling of Quit Signals4-21
Creating an Extended Entry4-22
Interactive Subsystem Programming Environment4-27
Subsystem Invocations4-27
Use of sci_ptr and info_ptr in Interactive Subsystems4-28
Stand-Alone Invocations4-28
Monitoring Subsystem Usage4-29
The Subsystem Environment4-29
Subsystem Request Loop4-30
Subsystem Request Language4-30
Modifying the Standard Request Processor4-32
The rp_options Structure4-33
Defining a Request Language4-34
Abbreviation Processing4-37
Writing Subsystem Requests4-38
Argument Processing4-38
Error Handling4-39
The Apply Request4-39
Subsystem Requests and Multics Commands4-40
Subsystem Areas and Temporary Segments4-43
Using exec_coms in Subsystems4-43
Tailoring the Subsystem Environment4-44
Replaceable Procedures for cpescape and unknown_request4-45
Request Loop Replaceable Procedures4-46
Other Replaceable Procedures4-47
Subsystem Documentation Facilities4-47
Subsystem Info Segments and Directories4-48
Using the Standard Requests Info Segments4-49
Subsystem Debugging Facilities4-50
Subsystem Request Tables4-50
Standard Requests and Standard Request Tables4-51
Using Standard Requests4-51
Defining Request Tables4-52
Using the Request Macros4-52
The request Macro4-53
The set_default_flags Macro4-55
The unknown_request Macro4-55
The multics_request Macro4-56
The set_default_multics_flags Macro4-57
The set_default_Multics_doc Macro4-58
Section 5Input and Output Facilities5-1
Multics Input/Output System5-1
System Input/Output Modules5-2
How to Perform Input/Output5-4
Input/Output Switches5-7
Attaching a Switch5-7
Opening a Switch5-8
Closing a Switch5-9
Detaching a Switch5-9
Synonym Attachments5-10
Standard Input/Output Switches5-14
Initialization of External Pointer Variables5-14
Interrupted Input/Output Operations5-14
Programming Language Input/Output Facilities5-15
File Input/Output5-15
Unstructured Files5-16
Sequential Files5-16
Blocked Files5-17
Indexed Files5-18
File Opening5-20
File Closing5-22
File Position Designators5-22
Terminal Input/Output5-24
tty_ Support5-24
window_io_ Support (the Video System)5-24
What is a Window5-24
Window Capabilities5-25
Positioning the Cursor5-25
Selective Erasure5-26
Selective Alteration5-26
Real-Time Editing5-27
The Erase Character5-27
The Kill Character5-27
The Line Editor5-27
Moving the Cursor5-28
Deleting Characters and Words5-28
Retrieving Deleted Text5-28
Other Editor Requests5-30
Writing Editor Extensions5-31
Line Editor Routines5-32
Window Editor Utilities5-35
End-Of-Window Processing5-37
More Processing5-37
Output Buffering5-38
Structure of the Video System5-38
I/O Modules5-38
Using the Video System5-39
Attaching the Video System5-39
Detaching the Video System5-42
Design Requirements for Windows5-43
Create Window Operation5-44
Important Window Requests5-44
Change Window Operation5-47
Destroy Window Operation5-47
Clear Window Operation5-49
Magnetic Tape Input/Output5-49
Magnetic Tape Input/Output in Releases Previous to MR 11.05-49
Magnetic Tape Input/Output in MR 11.05-50
Bulk Input and Output5-50
Printed Output5-50
Vertical Format Control5-51
Punched-Card Output5-53
Punched-Card Input5-53
Access Required for Card Input5-54
Card Input Registration and Password5-54
Card Input Access Control Segment5-55
Station Access Control Segment5-56
Control Card Information5-56
Bulk Data Input5-57
Control Card Format of a Card Deck for Bulk Data Input5-57
Remote Job Entry5-58
Format of a Card Deck for Remote Job Entry5-58
Remote Job Entry with Foreign Computer Systems5-59
Submitting Card Decks to a Remote System5-59
Receiving Output from a Remote System5-59
Format of an output File Transmitted to Multics for Online Perusal5-60
Implementation Of Input/Output Modules5-61
I/O Control Blocks5-62
I/O Control Block Structure5-63
Attach Pointers5-64
Open Pointers5-64
Entry Variables5-65
Writing an I/O Module5-66
Design Considerations5-67
Implementation Rules5-68
Attach Operation5-69
Open Operation5-71
Close Operation5-73
Detach Operation5-74
Modes and Control Operations5-75
Performing Control Operations From Command Level5-75
Other Operations5-78
Outer Modules5-78
Resource Control Package5-79
Relationship of RCP to Other I/O Facilities5-80
Summary of RCP Actions5-82
Reservation, Assignment, and Attachment5-82
Resource Reservation5-84
Device Assignment5-84
Device Attachment5-85
Device Limits5-86
Resource Naming Conventions5-86
Device Names5-87
Volume Names5-87
I/O Workspaces5-87
Resource Management Facility5-88
Summary of Resource Management Facility Actions5-89
Acquiring Resources5-89
Naming Rules for Attributes5-90
Access Control Interface with RCP and Resource Management5-91
Access Control Segments5-91
Access Class Ranges5-92
RCP Effective Access5-93
Manipulating RCP Effective Access5-94
Section 6Multics Security6-1
User Names and Passwords6-1
Access Control Lists6-2
Objects Subject to Access Control6-2
Access Identifier6-2
Access Modes6-3
Access Modes on Entries in the Storage System6-3
Access Modes on Resources Protected by RCP6-5
Access Modes on Communications Channels6-6
Access Modes on Daemon Source Names6-6
Creating, Modifying, Listing, and Deleting Items in an Access Control List6-6
Granting Access to Groups of Individuals6-7
Using the Asterisk Character6-7
Missing Components6-8
Calculating Access Rights6-8
Initial ACL's6-9
SysDaemon Entries6-10
ACL Entry for the Creating User6-10
User-Defined Initial ACL's6-11
Access Control Segments6-11
Access Control Segments for RCP Resources6-11
Access Control Segments for Communications Channels6-12
Access Control Segments for Daemon Source Names6-12
Access Isolation Mechanism6-12
AIM Classification System6-12
Policy Rules and Objectives6-13
Relationships Between AIM Attributes6-13
Setting AIM Attributes6-14
Enabling AIM6-14
Marking of Data6-15
Message Segment6-16
Marking of Users6-17
Marking of RCP Resources6-18
Marking of Communication Channels6-19
AIM Access Rules6-19
Message Segments6-20
Interprocess Communication6-20
Inter-System AIM6-20
The Ring Mechanism6-22
Advantages of the Ring Mechanism6-22
Ring Attributes and Access Control6-22
Ring Brackets6-23
Write Bracket6-23
Read Bracket6-23
Execute Bracket6-23
Gate Bracket6-24
Null Access6-24
Using the Ring Mechanism6-24
Implementing Ring Protection6-28
Setting Segment Ring Brackets6-28
Modifying Segment Ring Brackets6-29
Directory Ring Bracket Validation Level and Access Rights6-29
Validation Level6-30
Directory Ring Bracket Access Rights6-30
Setting Directory Ring Brackets6-31
Modifying Directory Ring Brackets6-31
User Ring Brackets6-31
Trusted Path6-32
Section 7Handling Unusual Occurrences7-1
Printed Messages7-1
Status Codes7-2
Creation of Status Code Tables7-3
List of System Status Codes and Meanings7-4
Multics Condition Mechanism7-26
Example of the Condition Mechanism7-28
On Unit Activated by All Conditions7-30
Continuation of Search7-30
Interaction with the Multics Ring Structure7-32
Nonstandard Location of On Unit for Special Conditions7-32
Action Taken by the Default Handler7-32
System Condition Wall7-33
Signalling Conditions in a User Program7-33
Obtaining Additional Information About a Condition7-33
Machine Condition Data Structure7-34
Information Header Format7-37
PL/I Condition Data Structure7-38
System Conditions and Default Handler7-40
List of System Conditions7-42
Nonlocal Transfers and Cleanup Procedures7-83
Epilogue Handling7-84
Simulated Faults7-84
Null Pointer7-85
Process Termination Fault7-85
Undefined Pointer Fault7-85
Section 8Backup8-1
Incremental Dumps8-2
Consolidated Dumps8-2
Complete Dumps8-3
Section 9Administrative Controls9-1
Administrative Hierarchy9-i
System Administrators9-2
Project Administrators9-2
Administrative Capabilities9-4
Interactive And Foreground Absentee Usage9-4
Background Absentee Usage9-4
I/O Daemon Usage9-5
Other Charges9-5
Apportioning System Capacity9-5
Load-Control Groups9-5
Work Classes9-5
Access Control9-6
Gate Access9-6
Device Access9-6
Volume Access9-6
Absentee and Daemon Queues9-6
Storage Quota9-7
Section 10Multics Data Management10-1
Features and Benefits of Multics Data Management10-2
Data Management Files10-3
Creating Data Management Files10-4
Data Management Files as Protected Entities10-4
Accessing Data Management Files10-4
Manipulating Data Management Files10-5
Using MRDS with Data Management10-6
Building an MRDS Data Management Database.10-7
Using MRDS Applications with DM Files10-7
Data Storage and Retrieval Services10-8
Relation Manager10-9
The Relation Manager and MRDS Databas Requests10-9
Relations and Data Management Files10-9
Record Manager10-10
Index Manager10-10
Collection Manager10-10
File Manager10-11
File Manager and DM File Manipulation10-12
File Manager and Integrity Services10-12
File Manager as a Direct Interface10-13
Integrity Services10-13
Transactions and Database Consistency10-14
Defining Transactions10-15
Building Transactions in Existing MRDS Applications10-16
Transaction Definition Table10-17
Concurrent Access Control10-18
Locking Conventions10-18
Deadlock Detection and Resolution10-19
Recovery Procedures10-20
Transaction Failure10-21
Process Failure10-21
Role of the Daemon10-22
Abandoning a Transaction10-22
Crash Recovery10-23
Conventions and Use of Before Journals10-24
Creating and Opening Before Journals10-25
Manipulating Before Journals in the File System10-26
DMS Initialization10-26
DMS Shutdown10-28
DMS Shutdown as Part of a Multics Shutdown10-28
DMS Shutdown as a Privileged Request10-29
Shutdown Information10-29
User Warning10-30
Begin Shutdown10-30
User Shutdown10-30
User Bump Time10-31
Daemon Logout10-31
Administering Data Management10-31
Installation Considerations10-31
Creating a Data Management System Directory10-31
Shaping the Run-Time Environment10-32
Daemon Registration10-32
AIM Considerations10-33
Monitoring Performance10-33
Command Level Interface to Data Management10-33
User Commands10-33
Administrative Commands10-35
Appendix AMultics Character SetsA-1
ASCII Character SetA-1
Printing Graphic CharactersA-1
Control CharactersA-1
Nonstandard Control CharacterA-4
Unused CharactersA-4
Multics Extended Character SetA-4
Appendix BDefining Terminals and Naming Channels
Within the Multics Communications System
Terminals and ChannelsB-1
Data TransformationB-2
Terminal Type ConceptB-2
Terminal Type and Line TypeB-3
Terminal Type Table and Terminal Type FileB-3
Setting Terminal TypesB-3
Changing Terminal Type DefinitionsB-4
Terminal Type TableB-4
Syntax of the TTFB-6
Generalized Character SpecificationsB-6
Terminal Type EntryB-7
Video Table DefinitionB-14
Modes OperationB-18
Global StatementsB-22
Conversion Table EntryB-23
Translation Table EntryB-24
Function Key Table EntryB-25
Special Characters Table EntryB-26
Default TypesB-28
Answerback TableB-29
Preaccess CommandsB-30
Names of Communications ChannelsB-33
T & D ChannelB-34
Appendix CPunched-Card Input Output and Returned Output Control RecordsC-1
Bulk Data InputC-1
Control Cards for Bulk DataC-2
User Data CardsC-6
Remote Job EntryC-6
Example of Remote Job EntryC-7
Control Cards for Remote Job EntryC-7
++FORMAT and ++INPUTC-10
User Absentee CommandsC-11
Card FormatsC-11
Card Input Conversion ModesC-11
Deck SizeC-12
Punched Card OutputC-12
Card-Output Conversion ModesC-13
Punched-Card CodesC-14
Card-Input Escape PossibilitiesC-23
Returned Output Control RecordsC-24
Appendix DStandard Data TypesD-1
Summary of Data Descriptor TypesD-1
Symbolic Names for Data Descriptor TypesD-2
Other Symbolic NamesD-4
Standard Data Type FormatsD-5
Appendix EList of Names with Special MeaningsE-1
Reserved I/O Switch NamesE-1
Reserved Segment NamesE-2
Reserved Segment-Name SuffixesE-4
Reserved Object-Segment Entry PointE-8
Appendix FMultics Standard Magnetic Tape FormatF-1
Standard Tape FormatF-1
Standard Record FormatF-1
Physical Record HeaderF-2
Physical Record TrailerF-4
Administrative RecordsF-4
Standard Tape Label RecordF-5
Bootable Tape Label RecordF-5
End of Reel RecordF-9
Density and ParityF-9
Data PaddingF-9
Compatibility ConsiderationF-9
Standard ChecksumF-10
Appendix GMultics Standard Object Segment with Symbol Table OrganizationG-1
Format Of An Object SegmentG-1
Structure of the Text SectionG-3
Entry SequenceG-3
Gate Segment Entry Point Transfer VectorG-4
Structure of the Definition SectionG-5
Definition Section HeaderG-7
Expression WordG-11
Type PairG-11
Trap WordG-13
Initialization Structure for Type 5 System and Type 6 LinksG-13
Definition Hash TableG-14
Structure of the Static SectionG-17
Structure of the Linkage SectionG-18
Linkage Section HeaderG-18
Internal Storage AreaG-20
First-Reference TrapG-23
Structure of the Symbol SectionG-24
Symbol Block HeaderG-24
Source MapG-27
Relocation InformationG-28
Structure of the Object MapG-31
Generated Code ConventionsG-33
Text SectionG-33
Entry SequenceG-34
Text Relocation CodesG-34
Definition SectionG-35
Definition Relocation CodesG-35
Implicit DefinitionsG-36
Linkage SectionG-36
Internal StorageG-36
Linkage Relocation CodesG-36
Static SectionG-37
Symbol SectionG-37
Structure of Bound SegmentsG-37
Internal Link ResolutionG-39
Definition SectionG-39
Binder Symbol BlockG-39
Bind MapG-41
Symbol Table OrganizationG-43
The PL/I Symbol BlockG-44
The PL/I Runtime Symbol TableG-46
The Runtime-Token NodeG-47
The Runtime Block NodeG-48
The Entry Info BlockG-51
The Pascal "with" BlockG-51
The Runtime_Symbol NodeG-52
Encoded ValuesG-57
Controlled Variable Control BlockG-60
Picture Information BlockG-60
The Pascal Runtime Symbol NodeG-61
Additional Information About Pascal Symbol NodesG-68
Special Runtime Symbol Data Type CodesG-71
The Statement MapG-72
Appendix HStandard Execution EnvironmentH-1
Standard Stack and Link Area FormatsH-1
Multics StackH-1
Stack HeaderH-1
Multics Stack FrameH-7
Linkage Offset TableH-10
Internal Static Offset TableH-10
Subroutine Calling SequencesH-11
Call OperatorH-12
Entry OperatorH-12
Push OperatorH-13
Return OperatorH-13
Short Return OperatorH-14
Pseudo-op Code SequencesH-14
Register Usage ConventionsH-15
Argument List FormatH-16
Parameter DescriptorsH-22
Appendix IData Base DescriptionsI-1
Appendix JStandard Request Tables And Standard RequestsJ-1
Standard Request TablesJ-1
Standard RequestsJ-2
Figure 1-1.Process Characteristics Per Ring1-5
Figure 2-1.Storage System Hierarchy2-3
Figure 2-2.Relationship of Directories to Logical Volumes2-5
Figure 2-3.Directory Hierarchy2-14
Figure 3-1.Sample Storage Hierarchy3-3
Figure 5-1.Interrelationship between User Code, iox_, RCP, IOI, and the I/O Module5-81
Figure 6-1.Gate Mechanism6-26
Figure 6-2.Logical Flow in Homework Program6-27
Figure 7-1.Simplified Handler Algorithm7-31
Figure 9-1.Multics Administrative Hierarchy9-1
Figure D-1.Single-Precision, Unpacked, Floating-Point Binary-Operand FormatD-6
Figure D-2.Single-Precision, Packed, Floating-Point Binary-Operand FormatD-6
Figure D-3.Double-Precision, Unpacked, Floating-Point Binary-Operand FormatD-7
Figure D-4.Double-Precision, Packed, Floating-Point Binary-Operand FormatD-7
Figure D-5.Typical Type 9 Decimal DatumD-9
Figure D-6.Typical Type 10 Decimal DatumD-9
Figure D-7.ITS Pointer FormatD-10
Figure D-8.Packed Pointer Datum FormatD-11
Figure D-9.Offset Datum FormatD-11
Figure D-10.Typical Type 29 DatumD-13
Figure D-11.Typical Type 30 DatumD-14
Figure D-12.Typical Type 35 DatumD-15
Figure D-13.Typical Type 36 DatumD-16
Figure D-14.Typical Type 38 DatumD-16
Figure D-15.Typical Type 39 DatumD-17
Figure D-16.Typical Type 41 DatumD-17
Figure D-17.Typical Type 42 DatumD-18
Figure D-18.Single-Precision, Unpacked, Floating-Point Hex-Operand FormatD-19
Figure D-19.Single-Precision, Packed, Floating-Point Hex-Operand FormatD-20
Figure D-20.Double-Precision, Unpacked, Floating-Point Hex-Operand FormatD-20
Figure D-21.Double-Precision, Packed, Floating-Point Hex-Operand FormatD-21
Figure D-22.Typical Type 81 DatumD-27
Figure D-23.Typical Type 83 DatumD-28
Figure D-24.Floating-Point Binary Generic FormatD-28
Figure G-1.Sample Definition ListG-6
Figure G-2.Definition Hash TableG-15
Figure G-3.Structure of a LinkG-21
Figure G-4.Structure of a Bound SegmentG-38
Figure H-1.Stack Header FormatH-2
Figure H-2.Stack Frame FormatH-8
Figure H-3.Standard Argument ListH-17
Table 5-1.Opening Modes and Allowed Input/Output Operations5-12
Table 5-2.Opening Modes Supported by I/O Modules5-13
Table 5-3.File Types and Allowed Input/Output Operations5-19
Table 5-4.Compatible File Attachments5-21
Table 5-5.File Position Designators at Open5-23
Table 5-6.Translations of Paper Motion Commands in Output Files5-61
Table 5-7.I/O Workspaces5-88
Table 5-8.RCP Effective Access5-94
Table A-1.ASCII Character Set on MulticsA-2
Table C-1.Correspondence Between ASCII Characters and EBCDIC CharactersC-16
Table C-2.Summary of Extensions to EBCDIC to Obtain Multics Standard CodesC-22
Table C-3.Summary of Differences Between Multics Standard Card Codes
and Proposed ASCII Standard Card Codes
Table D-1.Overpunched Sign EncodingD-14
Table G-1.Contents of Pascal Symbol NodesG-69
Table G-2.Data Type Codes Used by Variables vs. TypesG-71