changeset 35:2e8c642a2e19

Corrected some descriptions in appendix E
author roug
date Thu, 11 Apr 2002 19:34:44 +0000
parents f2d338984847
children 8b423669e5d2
files docs/os9sysprog/os9sysprog.docbook
diffstat 1 files changed, 691 insertions(+), 561 deletions(-) [+]
line wrap: on
line diff
--- a/docs/os9sysprog/os9sysprog.docbook	Tue Apr 09 21:18:38 2002 +0000
+++ b/docs/os9sysprog/os9sysprog.docbook	Thu Apr 11 19:34:44 2002 +0000
@@ -14,6 +14,8 @@
 
 <legalnotice>
 
+<para>All rights reserved.</para>
+
 <para>This manual, the OS-9 Program, and any information  contained
 herein is the copyrighted property of Microware Systems Corporation.
 Reproduction of this manual in part or whole by any means, electrical
@@ -132,8 +134,7 @@
 </sect1>
 
 <sect1>
-<title>SYSTEM HARDWARE REQUIREMENTS 
-</title>
+<title>System Hardware Requirements</title>
 
 <para>The OS-9 Operating system consists of building blocks called
 memory modules, which are automatically located and linked together
@@ -240,7 +241,7 @@
 
 
 <chapter>
-<title>Basic Functions of the KerneL</title>
+<title>Basic Functions of the Kernel</title>
 
 <para>The nucleus of OS-9 is the &quot;kernel&quot;, which serves as the
 system administrator, supervisor, and resource manager. It is about
@@ -271,7 +272,7 @@
 table sizes and system device names.</para>
 
 <sect1>
-<title>KERNEL SERVICE REQUEST PROCESSING</title>
+<title>Kernel Service Request Processing</title>
 
 <para>Service requests (system calls) are used to communicate between
 OS-9 and assembly-language-level. programs for such things as
@@ -315,7 +316,7 @@
 </sect1>
 
 <sect1>
-<title>KERNEL MEMORY MANAGEMENT FUNCTIONS</title>
+<title>Kernel Memory Management Functions</title>
 
 <para>Memory management is an important operating system function. OS-9
 manages both the physical. assignment of memory to programs <emphasis>and</emphasis>
@@ -331,7 +332,7 @@
 </sect1>
 
 <sect1>
-<title>MEMORY UTILIZATION</title>
+<title>Memory Utilization</title>
 
 <para>All usable RAM memory must be contiguous from address 0 upward,
 During the OS-9 start-up sequence the upper bound of RAM is detemined
@@ -420,7 +421,7 @@
 </sect1>
 
 <sect1>
-<title>OVERVIEW OF MULTIPROGRAMMING</title>
+<title>Overview of Multiprogramming</title>
 
 <para>OS-9 is a multiprogramming operating system, which allows several
 independent programs called &quot;processes&quot; can be executed
@@ -438,7 +439,7 @@
 </sect1>
 
 <sect1>
-<title>PROCESS CREATION</title>
+<title>Process Creation</title>
 
 <para>New processes are created when an existing process executes a fork
 service request. Its main argument is the name of the program module
@@ -483,7 +484,7 @@
 </sect1>
 
 <sect1>
-<title>PROCESS STATES</title>
+<title>Process States</title>
 
 <para>At any instant, a process can be in one of three states:</para>
 
@@ -533,7 +534,7 @@
 </sect1>
 
 <sect1>
-<title>EXECUTION SCHEDULING</title>
+<title>Execution Scheduling</title>
 
 <para>The kernel contains a scheduler that is responsible for allocation
 of CPU time to active processes. OS-9 uses a Scheduling algorithm
@@ -568,7 +569,7 @@
 </sect1>
 
 <sect1>
-<title>SIGNALS</title>
+<title>Signals</title>
 
 <para>&quot;Signals&quot; are an asynchronous control mechanism used for
 interprocess communication and control. A signal behaves like a
@@ -626,7 +627,7 @@
 </sect1>
 
 <sect1>
-<title>INTERRUPT PROCESSING</title>
+<title>Interrupt Processing</title>
 
 <para>Interrupt processing is another important function of the kernel,
 All hardware interrupts are vectored to specific processing routines,
@@ -634,17 +635,17 @@
 part of IOMAN) which automatically identifies the source of the
 interrupt and dispatches to the associated user or system defined
 service routine. The real-time clock will generate IRQ interrupts,
-SWI, SWI2, and SWI3 interrupts are vectored to 4ser-definable
+SWI, SWI2, and SWI3 interrupts are vectored to user-definable
 addresses which are &quot;local. to each procedure, except that SWI2
 is normally used for OS-9 service requests calls. The NMI and FIRQ
-interrupts are not normally used and are vectored through a. RAM
-address to sri RTI instruction</para>
+interrupts are not normally used and are vectored through a RAM
+address to an RTI instruction.</para>
 
 <sect2>
-<title>PHYSICAL INTERRUPT PROCESSING</title>
+<title>Physical Interrupt Processing</title>
 
 <para>The OS-9 kernel. ROMs contain the hardware vectors required by the
-6809 MPU at addresses $FFIO through $FFFF. These vectors each
+6809 MPU at addresses $FF10 through $FFFF. These vectors each
 point to jump-extended-indirect instruction which vector the MPU to
 the actual interrupt service routine. A RAM vector table in page zero
 of memory contains the target addresses of the jump instructions as
@@ -705,10 +706,26 @@
 of both the actual. hardware interrupt vector table, and the
 secondary vector table:
 </para>
+<informaltable frame="none">
+<tgroup cols="3">
+    <thead>
+	    <row>
+			    <entry>VECTOR</entry>
+			    <entry>ADDRESS</entry>
+			    <entry></entry>
+	    </row>
+    </thead>
+    <tbody>
+	    <row>
+			    <entry>TICK</entry>
+			    <entry>$FFE0</entry>
+			    <entry>Clock Tick Service Routine</entry>
+	    </row>
+    </tbody>
+</tgroup>
+</informaltable>
 <literallayout>
-VECTOR ADDRESS
-Secondary Vector Table 
-TICK   $FFE0   Clock Tick Service Routine
+Secondary Vector Table
 SWI3 $FFE2
 SWI2 $FFE4
 FIRQ $FFE6
@@ -734,7 +751,7 @@
 </sect2>
 
 <sect2>
-<title>LOGICAL INTERRUPT POLLING SYSTEM</title>
+<title>Logical Interrupt Polling System</title>
 
 <para>In OS-9 systems, most I/O devices use IRQ-type interrupts, so OS-9
 includes a sophisticated polling system that automatically identifies
@@ -749,7 +766,7 @@
 greater importance (i.e., interrupt frequency) are polled before
 those of lesser priority. This is accomplished by keeping the entries
 sorted by priority, which is a number between 0 (lowest) and 255
-(highest). Each entry in the table has 6 variables: 
+(highest). Each entry in the table has 6 variables:
 </para>
 <orderedlist  numeration="arabic">
 	<listitem><para>POLLING ADDRESS: The address of the device's status register,
@@ -807,7 +824,7 @@
 the memory module format and conventions. The memory module concept
 allows OS-9 to manage the logical contents as well. as the physical
 contents of memory. The basic idea is that all programs are
-individual., named objects.</para>
+individual, named objects.</para>
 
 <para>The operating system keeps track of modules which are in memory at
 all times by use of a module directory . It contains the addresses
@@ -838,7 +855,7 @@
 older-style operating systems.</para>
 
 <sect1>
-<title>MEMORY MODULE STRUCTURE</title>
+<title>Memory Module Structure</title>
 
 <para>At the beginning (lowest address) of the module is the module
 header, which can have several. forms depending on the module's
@@ -877,13 +894,15 @@
 </sect1>
 
 <sect1>
-<title>MODULE HEADER DEFINITIONS</title>
+<title>Module Header Definitions</title>
 
 <para>The first nine bytes of all module headers are identical:
 </para>
 
 <informaltable frame="none">
 <tgroup cols="2">
+<colspec colwidth="0.9in">
+<colspec colwidth="5in">
 <thead>
 <row>
 	<entry>MODULE OFFSET</entry>
@@ -993,6 +1012,8 @@
 </para>
 <informaltable frame="none">
 <tgroup cols="2">
+<colspec colwidth="0.9in">
+<colspec colwidth="5in">
 	<thead>
 		<row>
 			<entry>MODULE OFFSET</entry>
@@ -1026,7 +1047,7 @@
 </sect1>
 
 <sect1>
-<title>EXECUTABLE MEMORY MODULE FORMAT</title>
+<title>Executable Memory Module Format</title>
 <literallayout>
 Relative Usage Check Range
 Address
@@ -1084,7 +1105,7 @@
 </sect1>
 
 <sect1>
-<title>ROMED MEMORY MODULES</title>
+<title>ROMed Memory Modules</title>
 
 <para>When OS-9 starts after a system reset, it searches the entire
 memory space for HOMed modules. It detects them by looking for the
@@ -1138,7 +1159,7 @@
 </literallayout>
 
 <sect1>
-<title>THE INPUT/OUTPUT MANAGER (IOMAN)</title>
+<title>The Input/Output Manager (IOMAN)</title>
 
 <para>The Input/output Manager (IOMAN) module provides the first level
 of service for I/O system calls by routing data on I/O paths from
@@ -1156,7 +1177,7 @@
 </sect1>
 
 <sect1>
-<title>FILE MANAGERS</title>
+<title>File Managers</title>
 
 <para>OS-9 systems can have any number of File Manager modules. The
 function of a file manager is to process the raw data stream to or
@@ -1186,7 +1207,7 @@
 </sect1>
 
 <sect1>
-<title>DEVICE DRIVER MODULES</title>
+<title>Device Driver Modules</title>
 
 <para>The device driver modules are subroutine packages that perform
 basic, low-level 1/0 transfers to or from a specific type of I/O
@@ -1220,7 +1241,7 @@
 </sect1>
 
 <sect1>
-<title>DEVICE DESCRIPTOR MODULES</title>
+<title>Device Descriptor Modules</title>
 
 <para>Device descriptor modules are small, non-executable modules that
 provide information that associates a specific I/O device with its
@@ -1237,22 +1258,41 @@
 system and user (i.e. it is the device name given in pathlists}. Its
 format consists of a standard module header that has a type &quot;device
 descriptor&quot; (code $F). The rest of the device descriptor header
-consists of: 
-</para>
-
-<para>$9,$A = File manager name string relative address.</para>
-
-<para>$B,$C = Device driver name string relative address</para>
-
-<para>$D = Mode/Capabilities. (D $ PS PW PR LW R)</para>
-
-<para>$E,$F,$10 = Device controller absolute physical (24-bit) address
-</para>
-
-<para>$11 = Number of bytes ( &quot;n&quot; bytes in intialization
-table)</para>
-
-<para>$12,$12+n = Initialization table</para>
+consists of:</para>
+
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="1.2in">
+<colspec colwidth="5in">
+<tbody>
+<row>
+<entry>$9,$A =</entry>
+<entry>File manager name string relative address.</entry>
+</row>
+<row>
+<entry>$B,$C =</entry>
+<entry>Device driver name string relative address</entry>
+</row>
+<row>
+<entry>$D =</entry>
+<entry>Mode/Capabilities. (D $ PS PW PR LW R)</entry>
+</row>
+<row>
+<entry>$E,$F,$10 =</entry>
+<entry>Device controller absolute physical (24-bit) address</entry>
+</row>
+<row>
+<entry>$11 =</entry>
+<entry>Number of bytes ( &quot;n&quot; bytes in intialization
+table)</entry>
+</row>
+<row>
+<entry>$12,$12+n =</entry>
+<entry>Initialization table</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
 
 <para>The initialization table is copied into the &quot;option section&quot;
 of the path descriptor when a path to the device is opened. The
@@ -1275,7 +1315,7 @@
 </sect1>
 
 <sect1>
-<title>DEVICE DESCRIPTOR MODULE FORMAT</title>
+<title>Device Descriptor Module Format</title>
 <literallayout>
 MODULE
 OFFSET
@@ -1304,7 +1344,7 @@
 </sect1>
 
 <sect1>
-<title>PATH DESCRIPTORS</title>
+<title>Path Descriptors</title>
 
 <para>Every open path is represented by a data structure called a path
 descriptor (&quot;PD&quot;). It contains the information required by
@@ -1322,19 +1362,61 @@
 <para>FDa have three sections: the first 10-byte section is defined
 universally for all file managers and device drivers, as shown below.</para>
 
-<para>Universal Path Descriptor Definitions</para>
-<literallayout>
-Name Addr Size Description
-PD.PD  $00 1 Path number
-PD.MOD $01 1 Access mode: lread 2 wr4te 3-update
-PD.CNT $02 1 Number of paths using this PD
-PD.DEV $03 2 Address of associated device table entry
-PD.CPR $05 user's process ID
-PD.RGS $06 2 Caller's MPU register stack address
-PD.BUF $08 2 Address of 236-byte data buffer (if used)
-PD.FST $0A 22 Defined by file manager
-PD.OPT $20 32 Reserved for GETSTAT/SETSTAT options
-</literallayout>
+<table frame="none">
+<title>Universal Path Descriptor Definitions</title>
+<tgroup cols="4">
+<colspec colwidth="0.8in">
+<colspec colwidth="0.8in">
+<colspec colwidth="0.8in">
+<colspec colwidth="4in">
+<thead>
+<row rowsep="1">
+<entry>Name</entry>
+<entry>Addr</entry>
+<entry>Size</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>PD.PD</entry><entry>$00</entry><entry>1</entry>
+<entry>Path number</entry>
+</row>
+<row>
+<entry>PD.MOD</entry><entry>$01</entry><entry>1</entry>
+<entry>Access mode: 1=read 2=write 3=update</entry>
+</row>
+<row>
+<entry>PD.CNT</entry><entry>$02</entry><entry>1</entry>
+<entry>Number of paths using this PD</entry>
+</row>
+<row>
+<entry>PD.DEV</entry><entry>$03</entry><entry>2</entry>
+<entry>Address of associated device table entry</entry>
+</row>
+<row>
+<entry>PD.CPR</entry><entry>$05</entry><entry>1</entry>
+<entry>Requester's process ID</entry>
+</row>
+<row>
+<entry>PD.RGS</entry><entry>$06</entry><entry>2</entry>
+<entry>Caller's MPU register stack address</entry>
+</row>
+<row>
+<entry>PD.BUF</entry><entry>$08</entry><entry>2</entry>
+<entry>Address of 236-byte data buffer (if used)</entry>
+</row>
+<row>
+<entry>PD.FST</entry><entry>$0A</entry><entry>22</entry>
+<entry>Defined by file manager</entry>
+</row>
+<row>
+<entry>PD.OPT</entry><entry>$20</entry><entry>32</entry>
+<entry>Reserved for GETSTAT/SETSTAT options</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
 
 <para>The 22-byte section called &quot;PD.FST&quot; is reserved for and
 defined by each type of file manager for file pointers, permanent
@@ -1365,15 +1447,15 @@
 for maintaining the logical and physical file structures.
 </para>
 
-<para>Th the course of normal operation, RBFMAN requests allocation and
+<para>In the course of normal operation, RBFMAN requests allocation and
 deallocation of 256-byte data buffers; usually one is required for
 each open file. When physical I/O functions are necessary, RBFMAN
 directly calls the subroutines in the associated device drivers. All
 data transfers are performed using 256-byte data blocks. RRFMAN does
 not directly deal with physical addresses such as tracks, cylinders,
 etc Instead, it passes to device driver modules address parameters
-using a standard address called a logical sector number,
-or WLSNU LSNs ate integers in the range of 0 to n-l, where n is the
+using a standard address called a "logical sector number",
+or "LSN". LSNs are integers in the range of 0 to n-1, where n is the
 maximum number of sectors on the media. The driver is responsible for
 translating the logical sector number to actual cylinder/track/sector
 values.</para>
@@ -1384,11 +1466,11 @@
 media itselfe On disk systems, this information is written on the
 first few sectors of track number zero. The device drivers also use
 this information, particularly the physical parameters stored on
-sector 0. These parameters are written by the *formatrn program that
+sector 0. These parameters are written by the "format" program that
 initializes and tests the media.</para>
 
 <sect1>
-<title>LOGICAL AND PHYSICAL DISK ORGANIZATION</title>
+<title>Logical and Physical Disk Organization</title>
 
 <para>All mass storage volumes (disk media) used by OS-9 utilize the
 first few sectors of the volume to store basic identification,
@@ -1418,6 +1500,7 @@
 <colspec colwidth="1.2in">
 <colspec colwidth="1in">
 <colspec colwidth="1in">
+<colspec colwidth="4in">
 <thead>
 <row rowsep="1">
 <entry>Name</entry>
@@ -1550,17 +1633,52 @@
 <para>The first sector of every file is called a &quot;file descriptor&quot;,
 which contains the logical and physical description of the file.. The
 table below describes the contents of the descriptor</para>
-<literallayout>
-name addr size description
-
-FD.APT $0 1 File Attributes: D S PE PW PR LW R
-FD.OWN $1 2 Owner's User ID
-FD.DAT $3 5 Date Last Modified; Y M D H M
-FD.LNK $8 1 Link Count
-FD.SIZ $9 4 File Size (number of bytes)
-FD.DCR $D 3 Date Created; Y M D
-FD.SEG $10 240 Segment List: see below
-</literallayout>
+<informaltable frame="none">
+<tgroup cols="4">
+<colspec colwidth="1.2in">
+<colspec colwidth="1in">
+<colspec colwidth="1in">
+<colspec colwidth="4in">
+<thead>
+<row rowsep="1">
+<entry>Name</entry>
+<entry>Addr</entry>
+<entry>Size</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+    <entry>FD.ATT</entry><entry>$0</entry><entry>1</entry>
+    <entry>File Attributes: D S PE PW PR E W R</entry>
+</row>
+<row>
+    <entry>FD.OWN</entry><entry>$1</entry><entry>2</entry>
+    <entry>Owner's User ID</entry>
+</row>
+<row>
+    <entry>FD.DAT</entry><entry>$3</entry><entry>5</entry>
+    <entry>Date Last Modified; Y M D H M</entry>
+</row>
+<row>
+    <entry>FD.LNK</entry><entry>$8</entry><entry>1</entry>
+    <entry>Link Count</entry>
+</row>
+<row>
+    <entry>FD.SIZ</entry><entry>$9</entry><entry>4</entry>
+    <entry>File Size (number of bytes)</entry>
+</row>
+<row>
+    <entry>FD.DCR</entry><entry>$D</entry><entry>3</entry>
+    <entry>Date Created: Y M D</entry>
+</row>
+<row>
+    <entry>FD.SEG </entry><entry>$10</entry><entry>240</entry>
+    <entry>Segment List: see below</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
 
 <para>The attribute byte contains the file permission bits. Bit 7 is set
 to indicate a directory file, bit 6 indicates a &quot;sharable&quot;
@@ -1623,8 +1741,8 @@
 <informaltable frame="none">
 <tgroup cols="4">
 <colspec colwidth="1in" colname="c1">
-<colspec colwidth="1in">
-<colspec colwidth="0.8in">
+<colspec colwidth="0.6in">
+<colspec colwidth="0.6in">
 <colspec colwidth="4in" colname="c4">
 <spanspec spanname="all" namest="c1" nameend="c4">
 <thead>
@@ -1865,7 +1983,7 @@
 </sect1>
 
 <sect1>
-<title>RBF DEVICE DESCRIPTOR MODULES</title>
+<title>RBF Device Descriptor Modules</title>
 
 <para>This section describes the definitions and use of the
 initialization table contained in device descriptor modules for
@@ -1873,7 +1991,7 @@
 <literallayout>
 MODULE
 OFFSET
-0-$11 Standard Device Descriptor Module Header
+0-$11        Standard Device Descriptor Module Header
 $12 IT.DTP RNB 1 DEVICE TYPE (0-SCF 1-RBF 2-PIPE 3SBF)
 $13 IT.DRV RMB 1 DRIVE NUMBER
 $14 IT.STP NMB 1 STEP RATE
@@ -1902,7 +2020,7 @@
 popular Western Digital floppy disk controller IC:
 </para>
 <literallayout>
-              FDl77l               FD179X Family
+              FD177l               FD179X Family
 STEP
 CODE
 0
@@ -1940,7 +2058,7 @@
 </sect1>
 
 <sect1>
-<title>RBF-TYPE DEVICE DRIVERS</title>
+<title>RBF-type Device Drivers</title>
 
 <para>An RBF type device driver module contains a package of subroutines
 that perform sector oriented I/O to or from a specific hardware
@@ -2078,7 +2196,7 @@
 </sect1>
 
 <sect1>
-<title>RBFMAN DEVICE DRIVERS</title>
+<title>RBFMAN Device Drivers</title>
 
 <para>As with all device drivers, RBFMAN-type device drivers use a
 standard executable memory module format with a module type of
@@ -2530,17 +2648,17 @@
 by-character basis, such as terminals, printers, modems, etc. SCFMAN
 can handle any number or type of such devices. It is a reentrant
 subroutine package called by IOMAN for I/O service requests to
-sequentia~ character ~oriented devices. It includes the extensive
-input and output e~diting functions typical of line- oriented
+sequential character-oriented devices. It includes the extensive
+input and output editing functions typical of line-oriented
 operat~.on such as: backspace, line delete, repeat line, auto line
 feed. Screen pause, return delay padding, etc</para>
 
 <para>Standard OS-9 systems are supplied with SCFMAN and two SCF-type
 device driver modules: ACIA, which run 6830 serial interfaces, and
-PIA, which drives a 682l-type parallel interface for printers</para>
-
-<sect1>
-<title>SCFMAN LINE EDITING FUNCTIONS</title>
+PIA, which drives a 6821-type parallel interface for printers</para>
+
+<sect1>
+<title>SCFMAN Line Editing Functions</title>
 
 <para>I$READ and I$WRITE service requests (which correspond to Basic09
 GET and PUT statements) to SCFMAN-type devices pass data to/from the
@@ -2551,7 +2669,7 @@
 automatically followed by line feeds or nulls, and the high order
 bits are passed as sent/received</para>
 
-<para>I$RDLN and I$WRLN service requests (which correspond to BasicQ9
+<para>I$RDLN and I$WRLN service requests (which correspond to Basic09
 INPUT, PRINT, READ and WRITE statements) to SCFMAN-type devices
 perform full line editing of all functions enabled for the paYticular
 device. These functions are initialized when the device is first used
@@ -2622,7 +2740,7 @@
 the keyboard interrupt signal code. This location normally is set to
 a control-C character.</para>
 
-<para>If PD.QUT &lt;&gt; 0. and is received on input, a keyboard abort
+<para>If PD.OUT &lt;&gt; 0. and is received on input, a keyboard abort
 signal is sent to the last user of this path. Also it will terminate
 the current I/O request (if any) with an error code identical to the
 keyboard interrrupt signal code. This location is normally set to a
@@ -2663,9 +2781,9 @@
 
 SCFMAN Path Descriptor Definitions
 PD.DVI $0A 2 Device table addr of 2nd (echo) device
-PD.RAW $0C I Edit flag: 0-raw mode, 1-edit mode
+PD.RAW $0C 1 Edit flag: 0-raw mode, 1-edit mode
 PD.MAX $0D 2 Headline maximum character count
-PD.MIN $0F 1. Devices are wininew it cleared
+PD.MIN $0F 1 Devices are wininew it cleared
 PD.STS $10 2 Status routine module address
 PD.STh $12 2 Reserved for status routine 
 
@@ -2675,20 +2793,20 @@
 PD.UPC $21 1 Case (0-BOTH, 1-UPPER ONLY)
 PD.BSO $22 1 Backsp (0-835, 1-835 SP 8SE)
 PD.DLO $23 1 Delete (0 - 855 over line, 1-CR LF)
-PD.EXO $24 I Echo (0-no echo)
+PD.EXO $24 1 Echo (0-no echo)
 PD.AtF $25 1 Auto LF (0-no auto LF)
 PD.NtTL $26 1 End of line null count
 PD.PAU $27 1 Pause (0= no end of page pause)
 PD.PAG $28 1 Lines per page
 PD.HSP $29 1 Backspace character
-PD.DEL $2A I Delete line character
+PD.DEL $2A 1 Delete line character
 PD.EOR $25 1 End of record character (read only)
-PD.EoF $2C I End of file character (read only)
-PD.RPR $2D I Reprint line character
+PD.EoF $2C 1 End of file character (read only)
+PD.RPR $2D 1 Reprint line character
 PD.DUP $25 1 Duplicate last line character
-PD.PSC $2F I Pause character
-PD.INT $30 I Meyboard interrupt character (CTL C)
-PD.QUT $31 1 Eeyboard abort character (CTL 0)
+PD.PSC $2F 1 Pause character
+PD.INT $30 1 Keyboard interrupt character (CTL C)
+PD.QUT $31 1 Keyboard abort character (CTL 0)
 PD.BSE $32 1 Backspace echo character (BSE)
 PD.OVF $33 1 Line overflow character (bell)
 PD.PAR $34 1 Device initialization value (parity)
@@ -2721,41 +2839,65 @@
 address and an initialization table which defines inital values for
 the I/O editing features, as listed below.</para>
 
+<informaltable frame="none">
+<tgroup cols="4">
+<colspec colwidth="0.8in">
+<colspec colwidth="1.1in">
+<colspec colwidth="0.6in">
+<colspec colwidth="5in">
+<thead>
+<row>
+<entry>MODULE OFFSET</entry>
+<entry></entry>
+<entry>ORG $12</entry>
+<entry></entry>
+</row>
+</thead>
+<tbody>
+<row><entry></entry><entry>TABLE</entry><entry>EQU .</entry>
+<entry>BEGINING OF OPTION TABLE</entry></row>
+<row><entry>$12</entry><entry>IT.DVC</entry><entry>RMB 1</entry>
+<entry>DEVICE CLASS (0=SCF 1=RBF 2=PIPE 3=SBF)</entry></row>
+<row><entry>$13</entry><entry>IT.UPC</entry><entry>RMB 1</entry>
+<entry>CASE (0=BOTH, 1=UPPER ONLY)</entry></row>
+<row><entry>$14</entry><entry>IT.BSO</entry><entry>RMB 1</entry>
+<entry>BACK SPACE (0=BSE, 1=BSE,SP,BSE)</entry></row>
+<row><entry>$15</entry><entry>IT.DLO</entry><entry>RMB 1</entry>
+<entry>DELETE (0=BSE OVER LINE, 1=CR)</entry></row>
+<row><entry>$16</entry><entry>IT.EKO</entry><entry>RMB 1</entry>
+<entry>ECHO (0=NO ECHO)</entry></row>
+<row><entry>$17</entry><entry>IT.ALF</entry><entry>RMB 1</entry>
+<entry>AUTO LINE FEED (0= NO AUTO LF)</entry></row>
+<row><entry>$18</entry><entry>IT.NUL</entry><entry>RMB 1</entry>
+<entry>END OF LINE NULL COUNT</entry></row>
+<row><entry>$19</entry><entry>IT.PAU</entry><entry>RMB 1</entry>
+<entry>PAUSE (0= NO END OF PAGE PAUSE)</entry></row>
+<row><entry></entry><entry></entry><entry>RMB 1</entry>
+<entry></entry></row>
+</tbody></tgroup></informaltable>
 <literallayout>
-MODULE
-OFFSET
-ORG $12 TABLE 500 , BEGINING OF OPTION TABLE
-$12 IT.DVC HItS I DEVICE CLASS (0-SCF l-RBF 2-PIPE 3-8512)
-$13 IT.UPC RMB I CASE (0-BOTH, J.UPPER ONLY)
-$14 IT.BSO HItS 1 SACS SPACE (0-855, l BSE,SP.BSE)
-$15 IT.DLO HItS 1 DELETE (0-885 OVER LINE, 1-CR)
-$16 IT.EXO RItE 1 50130 (OWNO ECHO)
-$17 IT.A.LF RItE I. AUTO LINE FEED (0- NO AUTO LF)
-$18 IT.NUL HItS 1 END OF LINE NULL COUNT
-$19 IT.PAU 5103 1 PAUSE (0 NO END OF PAGE PAUSE)
-$1A IT. PAG RItE 1 LINES PER PAGE
-$13 IT. ES? HItS 1 BACXSPACE CHARACTER
-$10 IT.DED HItS 1 DEDETE LINE CHARACTER
-$11 IT.EOR RItE 1 END OF RECORD CHARACTER
-$15 IT.EOF RItE 1 END OF FILE CHARACTER
-$1F IT.R~PR RItE 1 REPRINT LINE CHARACTER
-$20 IT.DUP RItE 1 SUP LAST LINE CHARACTER
+$1A IT.PAG RItE 1 LINES PER PAGE
+$1B IT.BSP HItS 1 BACKSPACE CHARACTER
+$1C IT.DEL HItS 1 DELETE LINE CHARACTER
+$1D IT.EOR RItE 1 END OF RECORD CHARACTER
+$1E IT.EOF RItE 1 END OF FILE CHARACTER
+$1F IT.RPR RItE 1 REPRINT LINE CHARACTER
+$20 IT.DUP RItE 1 DUP LAST LINE CHARACTER
 $21 IT.PSC RItE 1 PAUSE CHARACTER
 $22 IT.INT RItE 1 INTERRUPT CHARACTER
-$23 IT.00T RItE 1 QUIT CHARACTER
+$23 IT.QUT RItE 1 QUIT CHARACTER
 $24 IT.BSE RItE 1 BACKSPACE ECHO CHARACTER
-$25 IT.OVF RItE I LINE OVERFL~ CHARACTER (BELL)
-$26 IT.PAR. RItE 1 INITIALIZATION VALUE (PARITY)
-$27 IT.UAI2 RItE I BAUD RATE
-$28 IT.D2F RItE 2 ATYACEED DEVICE NAME STING O12FSET
-$2A IT.STN RItE 2 OFPSET TO STATUS ROUTINE
-320 IT.ERR RItE 1 INITIAL ERROR STATUS
+$25 IT.OVF RItE I LINE OVERFLOW CHARACTER (BELL)
+$26 IT.PAR RItE 1 INITIALIZATION VALUE (PARITY)
+$27 IT.BAU RItE I BAUD RATE
+$28 IT.D2P RItE 2 ATTACHED DEVICE NAME STRING OFFSET
+$2A IT.STN RItE 2 OFFSET TO STATUS ROUTINE
+$2C IT.ERR RItE 1 INITIAL ERROR STATUS
 </literallayout>
 
-<para>
-NOTES:</para>
-
-<para>8012 editing functions will be ~turned off~ if the corresponding
+<para>NOTES:</para>
+
+<para>8012 editing functions will be "turned off" if the corresponding
 special character is a zero. For example, it IT.EOF was a zero, there
 would be no end of file character.</para>
 
@@ -2767,28 +2909,45 @@
 <title>SCF Device Driver Storage Definitions</title>
 
 <para>An SCFMAN-type device driver module contains a package of
-subroutines that perform raw I/o transfers to or from a specific
+subroutines that perform raw I/O transfers to or from a specific
 hardware controller. These modules are usually reentrant so that one
 copy of the module can simultaneously run several different devices
 that use identical I/O controllers. For each
-~ of the driver,
-IOMAN will allocate a static storage area for that device. The siz7e
-of the storage area is given in the device driver module header. Some
+"incarnation" of the driver, IOMAN will allocate a static storage
+area for that device. The size of the storage area is given in
+the device driver module header. Some
 of this storage area will be used by IOMAN and SCFMAN, the device
 driver is free to use the remainder in any way (typically as
 variables and butters). This static storage is defined as:
 </para>
+<informaltable frame="none">
+<tgroup cols="4">
+<colspec colwidth="0.8in">
+<colspec colwidth="1.1in">
+<colspec colwidth="0.6in">
+<colspec colwidth="5in">
+<thead>
+<row>
+<entry>OFFSET</entry>
+<entry></entry>
+<entry>ORG 0</entry>
+<entry></entry>
+</row>
+</thead>
+<tbody>
+<row><entry>$0</entry><entry>V.PAGE</entry><entry>RMB 1</entry>
+<entry>PORT EXTENDED ADDRESS</entry></row>
+<row><entry></entry><entry></entry><entry>RMB 1</entry>
+<entry></entry></row>
+</tbody></tgroup></informaltable>
 <literallayout>
-OFFSET
-ORG 0
-$0 V.PAGE RItE 1 PORT EXTENDED ADDRESS
 $1 V.PCRT RItE 2 DEVICE BASE ADDRESS
 $3 V.LPRC RItE 1 LAST ACTIVE PROCESS ID
-$4 V.BUSY RItE I ACTIVE PROCESS ID (0 NOT BUSY)
-$5 V. WAKE HItS I PROCESS II) TO REAWAZEN
+$4 V.BUSY RItE 1 ACTIVE PROCESS ID (0 NOT BUSY)
+$5 V. WAKE HItS 1 PROCESS II) TO REAWAZEN
 
 V. USER EQU . END OF OS9 DEFINITIONS
-$6 V.TYPE RItE I DEVICE TYPE OR PARITY
+$6 V.TYPE RItE 1 DEVICE TYPE OR PARITY
 $7 V.LINt RItE 1 LINES LEFT TILL END OF PAGE
 $8 V.PAUS RItE 1 PAUSE REQUEST (0 - NO PAUSE)
 $9 V.DEV2 RItE 2 ATTACHEs DEVICE STATIC STORAGE
@@ -2811,10 +2970,10 @@
 <para>
 V. BUSY This location contains the process ID of the process
 currently using the device (zero if it is not being used). This is
-used by SCFriAN to prevent more than one process from using the
+used by SCFMAN to prevent more than one process from using the
 device at the same moment. Defined by SCFMAN.</para>
 
-<para>V.WAR~ This location contains the process ID of any process that
+<para>V.WAKE This location contains the process ID of any process that
 is waiting for the device to complete I/O (or zero if there is none
 waiting). The interrupt service routine should check this location to
 see if a process is waiting and if so, send it a wake up signal,
@@ -3316,7 +3475,7 @@
 </sect1>
 
 <sect1>
-<title>WRITING INTERRUPT-DRIVEN DEVICE DRIVERS</title>
+<title>Writing Interrupt-driven Device Drivers</title>
 
 <para>OS-9 programs do not use interrupts directly. Any interrupt-driven
 function should be implemented as a device driver module
@@ -3358,7 +3517,7 @@
 </sect1>
 
 <sect1>
-<title>USING STANDARD I/O PATHS</title>
+<title>Using Standard I/O Paths</title>
 
 <para>Programs should be written to use standard I/O paths wherever
 practical. Usually, this involves I/O calls that are intended to
@@ -3388,7 +3547,7 @@
 </sect1>
 
 <sect1>
-<title>A SAMPLE PROGRAM</title>
+<title>A Sample Program</title>
 
 <para>The OS-9 &quot;list&quot; utility command program is shown on this
 and the next page as an example of assembly language programming.</para>
@@ -3487,7 +3646,7 @@
 regarding software licenses</para>
 
 <sect1>
-<title>ADAPTING OS-9 TO DISK-BASED SYSTEMS</title>
+<title>Adapting OS-9 to Disk-based Systems</title>
 
 <para>Usually, most of the work in moving OS-9 to a disk-based target
 system is writing a device driver module for the target system~s disk
@@ -3504,11 +3663,11 @@
 
 <para>A CLOcK module may be adapted from a standard version, or a new
 one may be created. All other component modules, such as IOMAN,
-R~BFMAN, SCFMAN, SHELL, and utilities seldom require modification</para>
-</sect1>
-
-<sect1>
-<title>USING OS-9 IN ROM-BASED SYSTEMS</title>
+RBFMAN, SCFMAN, SHELL, and utilities seldom require modification</para>
+</sect1>
+
+<sect1>
+<title>Using OS-9 in ROM-based Systems</title>
 
 <para>One of OS-9's major features is its ability to reside in ROM
 memory and work effectively with ROMed applications programs written
@@ -3547,7 +3706,7 @@
     or other time-related functions, include a CLOCK module for the
     target system's real-time clock. Also consider how the clock is to
     be started,. You may want to ROM the &quot;Setime&quot; command, or
-    have SYSGQ start the clock.</para></listitem>
+    have SYSGO start the clock.</para></listitem>
 
     <listitem><para>It tne target system will receive commands manually, or if
     any application program uses Shell functions, include the SHELL and
@@ -3557,7 +3716,7 @@
 </sect1>
 
 <sect1>
-<title>ADAPTING THE INITIALIZATION MODULE</title>
+<title>Adapting the Initialization Module</title>
 
 <para>INIT is a module that contains system startup parameters. It ~J be
 in ROM in any OS-9 system (it usually resides in the same ROM as the
@@ -3605,7 +3764,7 @@
 </sect1>
 
 <sect1>
-<title>ADAPTING THE SYSGQ MODULE</title>
+<title>Adapting the SYSGO Module</title>
 
 <para>SYSGO is a program which is the first process started after the
 system start-up sequence. Its function is threefold:</para>
@@ -3712,10 +3871,8 @@
 seven of the last character set, a space character, or an end of line
 cbaracter.</para>
 
-<sect1>
-<title>User Mode Service Requests</title>
-
-<sect2>
+
+<sect1>
 <title>ABIT Set bits in an allocation bit map F$ABIT</title>
 
 <informaltable frame="none">
@@ -3753,10 +3910,10 @@
 
 <para>Bit numbers range from 0.,N-1, where N is the number of bits in
 the allocation bit map.</para>
-</sect2>
-
-<sect2>
-<title>CHAIN Load and execute a new primary module, F$CHAN</title>
+</sect1>
+
+<sect1>
+<title>CHAIN Load and execute a new primary module F$CHAN</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
@@ -3789,7 +3946,7 @@
 </tbody>
 </tgroup>
 </informaltable>
-<para>This system call is similar to FORR, but it does not create a new
+<para>This system call is similar to FORK, but it does not create a new
 process. It effectively uresets~ the calling process' program and
 data memory areas and begins execution of a new primary module. Open
 paths are not closed or otherwise affected</para>
@@ -3859,22 +4016,35 @@
 <para>
 For more information, please see the F$FORK service request
 description.</para>
-</sect2>
-
-<sect2>
-<title>COMPARE NAMES Compare two names, F$CNAM</title>
-
-<para>ASSEMBLER CALL: OS9 F$CNAM 
-</para>
-
-<para>MACHINE CODE: 103F 11 
-</para>
-
-<para>INPUT: (X) = Address of first name,
-(B) = Length of first name,
-(Y) = Address of secorrd name.</para>
-
-<para>OUTPUT: (CC) = C bit clear if the strings match.</para>
+</sect1>
+
+<sect1>
+<title>COMPARE NAMES Compare two names F$CNAM</title>
+
+<informaltable frame="none">
+<tgroup cols="2">
+<tbody>
+<row>
+	<entry>ASSEMBLER CALL:</entry>
+	<entry>OS9  F$CNAM</entry>
+</row>
+<row>
+	<entry>MACHINE CODE:</entry>
+	<entry>103F 11</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry><literallayout>(X) = Address of first name.
+(B) = Length of first name.
+(Y) = Address of secorrd name.</literallayout></entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>(CC) = C bit clear if the strings match.</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
 
 <para>
 Given the address and length of a string, and the address of
@@ -3885,49 +4055,54 @@
 
 <para>The second name must bave the sign bit (bit 7) of the last
 character set.</para>
-</sect2>
-
-<sect2>
-<title>CRC ~. Compute CRC</title>
-
-<para>ASSEMBLER CALL: OS9 F$CRC
-</para>
-
-<para>MACHINE CODE: 103F 17
-</para>
-
-<para>INPUT: (X) m Starting byte address,
-(Y) = Byte count,
-(U) =
-Address of 3 byte CRC accumulator.</para>
-
-<para>OUTPUT: CRC accumulator is updated</para>
-
-<para>ERROR OUTPUT: None</para>
+</sect1>
+
+<sect1>
+<title>CRC Compute CRC F$CRC</title>
+<informaltable frame="none">
+<tgroup cols="2">
+<tbody>
+<row>
+	<entry>ASSEMBLER CALL:</entry>
+	<entry>OS9  F$CRC</entry>
+</row>
+<row>
+	<entry>MACHINE CODE:</entry>
+	<entry>103F 17</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry><literallayout>(X) = Starting byte address.
+(Y) = Byte count.
+(U) = Address of 3 byte CRC accumulator.</literallayout></entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>CRC accumulator is updated.</entry>
+</row>
+<row>
+	<entry>ERROR OUTPUT:</entry>
+	<entry>None.</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
 
 <para>This service request calculates the CRC (cyclic redundancy count)
 for use by compilers, assemblers, or other module generators. The CRC
 is calculated starting at the source address over Wbyte Countu bytes,
 it is not necessary to cover an entire module in one call, since the
-CRC may be accumulated~ over several calls. The CRC accumulator can
+CRC may be "accumulated" over several calls. The CRC accumulator can
 be any three byte memory location and must be initialized to $FFFFFF
-before the first F$CRC call</para>
+before the first F$CRC call.</para>
 
 <para>The last three bytes in the module (where the three CRC bytes will
-be stored) are not included in the CRC generation</para>
-</sect2>
-
-<sect2>
+be stored) are not included in the CRC generation.</para>
+</sect1>
+
+<sect1>
 <title>DBIT Deallocate in a bit map F$DBIT</title>
 
-<para>MACHINE CODE: 103F 14 
-</para>
-
-<para>INPUT: (X) = B e address of an allocation bit map. 
-(D) = Bit number of firs bit to clear.
-(Y) = Bit count (number ~f bits to clear).
-</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
@@ -3937,11 +4112,13 @@
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
+	<entry>103F 14</entry>
 </row>
 <row>
 	<entry>INPUT:</entry>
-	<entry></entry>
+	<entry><literallayout>(X) = Base address of an allocation bit map.
+(D) = Bit number of firs bit to clear.
+(Y) = Bit count (number of bits to clear).</literallayout></entry>
 </row>
 <row>
 	<entry>OUTPUT:</entry>
@@ -3959,11 +4136,11 @@
 <para>This system mode service request is used to clear bits in the
 allocation bit map pointed to by X.</para>
 
-<para>Bit numbers range from 0,,N-l, where N is the number of bits in
+<para>Bit numbers range from 0..N-1, where N is the number of bits in
 the allocation bit map.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>EXIT Terminate the calling process. F$EXIT</title>
 
 <para>ASSEMBLER CALL: OS9 F$EXIT 
@@ -3988,9 +4165,9 @@
 shell assumes this), or can be used to pass a user- defined status
 value. Processes to be called directly by the shell should only
 return an OS-9 error code or zero if no error occutred</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>FORK Create a new process. F$FORK</title>
 
 <para>ASSEMBLER CALL: OS9 F$FORK 
@@ -4053,7 +4230,7 @@
 
 <para>The primary module's module header is used to determine the
 process' initial data area size. OS-9 then attempts to allocate a
-contiguous RAM area equal tQ the required data storage size,
+contiguous RAM area equal to the required data storage size,
 (includes the parameter passing area, which is copied from the parent
 process' data area). The new process' registers are set up as shown
 in the diagram on the next page. The execution offset given in the
@@ -4108,20 +4285,13 @@
 calling a program that uses the F$FORK service request since another
 child may be created with each &quot;incarnation&quot;. This will
 continue until the process table becomes full.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>INTERCEPT Set up a signal intercept trap. F$ICFT</title>
 
-<para>ASSEMBLER CALL: OS9 F$ICPT 
-</para>
-
-<para>MACHINE CODE. 103F 09 
-</para>
-
 <para>INPUT: (X) = Address of the intercept routine.
-(U) = Address of
-the intercept routine local storage.
+(U) = Address of the intercept routine local storage.
 OUTPUT: None.</para>
 
 <informaltable frame="none">
@@ -4129,11 +4299,11 @@
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$ICFT</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
+	<entry>103F 09</entry>
 </row>
 <row>
 	<entry>INPUT:</entry>
@@ -4185,9 +4355,9 @@
 setting a flag in the process' data area. After the signal has been
 processed, the handler routine should terminate with an RTI
 instruction</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>GET ID Get process ID / user ID</title>
 
 <para>ASSEMBLER CALL: OS9 F$ID</para>
@@ -4200,7 +4370,7 @@
 
 <para>OUTPUT:(A) = Process ID.</para>
 
-<para>(Y) &quot; User ID.
+<para>(Y) = User ID.
 </para>
 
 <informaltable frame="none">
@@ -4237,9 +4407,9 @@
 the process. The user ID is defined in the system password file, and
 is used by the file security system and a few other functions,
 Several processes can have the same user ID.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>LINK: Link to memory module. F $LINK</title>
 
 <para>ASSEMBLER CALL: OS9 F$LINK</para>
@@ -4251,13 +4421,10 @@
 type / language byte.</para>
 
 <para>OUTPUT:(X) = Advanced past the module name,
-(Y) = Module entry
-point absolute address.
+(Y) = Module entry point absolute address.
 (U) = Module header absolute address.
-(A)
-- Module type / language.
-(B) = Module attributes / revision
-level.</para>
+(A) = Module type / language.
+(B) = Module attributes / revision level.</para>
 
 <informaltable frame="none">
 <tgroup cols="2">
@@ -4287,7 +4454,7 @@
 </tgroup>
 </informaltable>
 
-<para>This system call causes 08-9 to search the module directory for a
+<para>This system call causes OS-9 to search the module directory for a
 module having a name, language and type as given in the parameters.
 If found, the address of the module's header is returned in U, and
 the absolute address of the module's execution entry point is
@@ -4306,14 +4473,14 @@
 <para>(B) Module busy (not sha:able and in uae)</para>
 
 <para>(C) Incorrect or defective module header</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>LOAD Load module(s) from a file, F$LOAD</title>
 
 <para>ASSEMBLER CALL: OS9 F$LOAD</para>
 
-<para>MACHINE CODE: 103F Dl</para>
+<para>MACHINE CODE: 103F 01</para>
 
 <para>INPUT: (X) = Address of pathlist (file name)
 (A) = Language / type (0 = any language / type) 
@@ -4367,9 +4534,9 @@
 
 <para>Possible errors: module directory full; memory full; plus errors
 that occur on OPEN, READ, CLOSE and LINK system calls.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>MEM Resize data memory area, F$MEM</title>
 
 <para>ASSEMBLER CALL: OS9 F$MEM 
@@ -4429,9 +4596,9 @@
 Two systems do not have this restriction because of the availability
 of hardware for memory relocation, and because each process has its
 own &quot;address space&quot;</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>PRERR Print error message. F$PERR</title>
 
 <para>ASSEMBLER CALL: OS9 F$PERR 
@@ -4484,9 +4651,9 @@
 <para>by default. The error reporting routine is vectored and can be
 replaced with a more elaborate reporting module. To replace this
 routine use the F$SSVC service request</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>PARSENAME Parse a path name, F$PNAM</title>
 
 <para>ASSEMBLER CALL: OS9 F$PNAM 
@@ -4531,9 +4698,9 @@
 
 <para>
 X Y (B)a2</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SBMAP Search bit map for a free area F$SBIT</title>
 
 <para>
@@ -4561,9 +4728,9 @@
 
 <para>If no b o k of the specified size exists, it returns with the
 carry set, beginning bit number and size of the largest block.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SEND Send a signal to another process, F$SEND</title>
 
 <para>ASSEMBLER CALL: OS9 F$SEND 
@@ -4639,9 +4806,9 @@
 
 <para>For related information see the F$ICPT, F$WAIT. and F$SLEP service
 request descriptions</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SLEEP Put calling process to sleep. F$SLEP</title>
 
 <para>ASSEMBLER CALL: OS9 F$SLEP</para>
@@ -4701,9 +4868,9 @@
 process to be inserted into the active process queue after N-l ticks
 occur and will resume execution when it reaches the front of the
 queue</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SETPR Set process priority. F$SPRI</title>
 
 <para>ASSEMBLER CALL: OS9 F$SPRI</para>
@@ -4748,9 +4915,9 @@
 <para>Changes the process' priority to the new value given. $FF is the
 highest possible priority, $00 is the lowest. A process can change
 another process' priority only if it has the same user ID.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SSVC Install function request F$SSVC</title>
 
 <para>ASSEMBLER CALL: OS9 F$SSVC 
@@ -4851,14 +5018,14 @@
 <para>
 Codes $25.,$27, and S70..$7F will not be used by MICROWARE and
 are free for user definition.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SETSWI Set SWI vector, F$SSWI</title>
 
 <para>ASSEMBLER CALL: OS9 F$SSWI</para>
 
-<para>MACHINE CODE: 103F QE</para>
+<para>MACHINE CODE: 103F 0E</para>
 
 <para>INPUT: (A) = SWI type code.</para>
 
@@ -4910,9 +5077,9 @@
 <para>WARNING: Microware-supplied software uses SWI2 to call OS-9. If
 you reset this vector these programs will not work. If you chance all
 three vectors, you will not be able to call OS-9 at all.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SETIME Set system date and time, F$STIM</title>
 
 <para>ASSEMBLER CALL: OS9 F$STIM</para>
@@ -4964,9 +5131,9 @@
 4 minutes
 5 1 seconds
 </para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>TIME Get system date and time. F$TIRE</title>
 
 <para>ASSEMBLER CALL: OS9 F$TIME
@@ -5019,9 +5186,9 @@
 3 1 hours
 4 1 minutes
 5 1 seconds</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>UNLINK Unlink a module. F$UNLK</title>
 
 <para>ASSEMBLER CALL: OS9 F$UNLK 
@@ -5073,9 +5240,9 @@
 <para>oevice driver modules in use or certain system modules cannot he
 unlinked. HOMed iodules can be unlinked but cannot be deleted from
 the module directory</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>WAIT Wait for child process to die. F$WAIT</title>
 
 <para>ASSEMBLER CALL: OS9 F$WAIT 
@@ -5134,13 +5301,10 @@
 children</para>
 
 <para>See the EXIT description for more related information</para>
-</sect2>
-</sect1>
-
-<sect1>
-<title>System Mode Service Requests</title>
-
-<sect2>
+</sect1>
+
+
+<sect1>
 <title>A64 Allocate a 64 byte memory block F$A64</title>
 
 <para>ASSEMBLER CALL: OS9 F$A64 
@@ -5227,9 +5391,9 @@
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST 
 </para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>APRC Insert process in active process queue F$APRC</title>
 
 <para>ASSEMBLER CALL: OS9 F$APRC 
@@ -5280,9 +5444,9 @@
 process is in user state, it is inserted according to its age</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>FIND-64 Find a 64 byte memory block F$F64</title>
 
 <para>ASSEMBLER CALL: OS9 F$F64</para>
@@ -5324,7 +5488,7 @@
 </informaltable>
 
 <para>Thi~ system mode service request will return the address of a 64
-byte memory block as described in the F$A64 service request. 08-9
+byte memory block as described in the F$A64 service request. OS-9
 used this service request to find process descriptors and path
 descriptors when given their number.</para>
 
@@ -5332,9 +5496,9 @@
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST 
 </para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>IODEL Delete I/O device from system F$IODL</title>
 
 <para>ASSEMBLER CALL: OS9 F$IODL 
@@ -5386,9 +5550,9 @@
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST 
 </para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>IOQUEUE Enter I/O queue F$IOQU</title>
 
 <para>ASSEMBLER CALL: OS9 F$IQQU</para>
@@ -5433,9 +5597,9 @@
 will send a wakeup signal to the calling process.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SETIRQ Add or remove device from IRQ table. F$IRQ</title>
 
 <para>ASSEMBLER CALL: OS9 F$IRQ 
@@ -5522,9 +5686,9 @@
 255 = highest</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>NXTPRCS Start next process F$NPRC</title>
 
 <para>ASSEMBLER CALL: OS9 F$NPRC</para>
@@ -5541,9 +5705,9 @@
 active process queue again.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>R64 Deallocate a 64 byte memory block F$R64</title>
 
 <para>ASSEMBLER CALL: OS9 F$R64 
@@ -5590,9 +5754,9 @@
 memory as described in the F$A64 service request</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SRQMEM System memory request F$SRQM</title>
 
 <para>ASSEMBLER CALL: OS9 F$SRQM</para>
@@ -5637,9 +5801,9 @@
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST
 </para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SRTMEM System memory request F$SRTMEM</title>
 
 <para>ASSEMBLER CALL: OS9 F$SRTM</para>
@@ -5674,9 +5838,9 @@
 </tgroup>
 </informaltable>
 
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>VMODULE Validate module F$VMODUL</title>
 
 <para>ASSEMBLER CALL: OS9</para>
@@ -5709,13 +5873,10 @@
 </tgroup>
 </informaltable>
 
-</sect2>
-</sect1>
-
-<sect1>
-<title>I/O Service Requests</title>
-
-<sect2>
+</sect1>
+
+
+<sect1>
 <title>ATTACH Attach a new device to the system. I$ATCH</title>
 
 <informaltable frame="none">
@@ -5780,9 +5941,9 @@
 <para>2 = Write only.</para>
 
 <para>3 = Both read and write.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>CHDIR Change working directory. I$CDIR</title>
 
 <informaltable frame="none">
@@ -5835,9 +5996,9 @@
 <para>If the access mode is read, write, or update the current data
 directory is changed. If the access mode is execute, the current
 execution directory is changed.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>CLOSE Close a path to a file/device. I$CLOS</title>
 
 <informaltable frame="none">
@@ -5880,9 +6041,9 @@
 
 <para>Standard I/O paths are not typically closed except when it is
 desired to change the files/devices they correspond to.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>CREATE Create a path to a new file. I$CREA</title>
 
 <informaltable frame="none">
@@ -5960,9 +6121,9 @@
 as printers, terminals, etc.) work correctly: the CREATE behaves the
 same as OPEN. Create cannot be used to make directory files (see
 MAKDIR).</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>DELETE Delete a file. I$DLET</title>
 
 <informaltable frame="none">
@@ -5997,9 +6158,9 @@
 The file must have write permission attributes (public write if not
 the owner), and reside on a multifile mass storage device. Attempts
 to delete devices will result in an error.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>DETACH Remove a device from the system. I$DTCH</title>
 
 <informaltable frame="none">
@@ -6040,9 +6201,9 @@
 were attached with the I$ATCH service request. Both of these are used
 mainly by IOMAN and are of limited (or no use) to the typical user,
 SCFMAN also uses ATTACH/DETACH to setup its second (echo) device.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>DUP Duplicate a path. I$DUP</title>
 
 <informaltable frame="none">
@@ -6082,9 +6243,9 @@
 NOTE. This only increments the &quot;use count&quot; of a path
 descriptor and returns the synonymous path number. The path
 descriptor is not copied.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>GETSTAT Get file device status. I$GSTT</title>
 <informaltable frame="none">
 <tgroup cols="2">
@@ -6244,7 +6405,7 @@
 	<entry rowsep="1">C bit set</entry></row>
 	<row><entry rowsep="1">(B)</entry>
 	<entry rowsep="1">zero</entry>
-	<entry rowsep="1">$F6 (E$NRDY)</entry>
+	<entry rowsep="1">$F6 (<errorcode>E$NRDY</errorcode>)</entry>
 	<entry rowsep="1">ERROR Code</entry></row>
 	</tbody>
 	</entrytbl>
@@ -6331,7 +6492,7 @@
 	<entry rowsep="1">C bit set</entry></row>
 	<row><entry rowsep="1">(B)</entry>
 	<entry rowsep="1">zero</entry>
-	<entry rowsep="1">$D3 (E$EOF)</entry>
+	<entry rowsep="1">$D3 (<errorcode>E$EOF</errorcode>)</entry>
 	<entry rowsep="1">ERROR Code</entry></row>
 	</tbody>
 	</entrytbl>
@@ -6339,9 +6500,9 @@
 </tbody>
 </tgroup>
 </informaltable>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>MAKDIR Make a new directory</title>
 
 <informaltable frame="none">
@@ -6395,9 +6556,9 @@
 bit 6 = sharable file
 bit 7 = (don't care)
 </literallayout>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>OPEN Open a path to a file or device</title>
 <informaltable frame="none">
 <tgroup cols="2">
@@ -6465,9 +6626,9 @@
 
 <para>Directory files may be read or written if the D bit (bit 7) is set
 in the access mode.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>READ Read data from a file or device I$READ</title>
 
 <informaltable frame="none">
@@ -6524,9 +6685,9 @@
 B. An end-of-record occurs (SCFMAN only)
 C. An error condition occurs.
 </literallayout>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>READLN Read a text line with editing. I$RDLN</title>
 
 <informaltable frame="none">
@@ -6575,9 +6736,9 @@
 request will return an end of file error.</para>
 
 <para>NOTE: For more information on line editing, see 7.1.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SEEK Reposition the logical file pointer I$SEEK</title>
 
 <informaltable frame="none">
@@ -6622,9 +6783,9 @@
 
 <para>Seeks to non-random access devices are usually ignored and return
 without error.</para>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>SETSTAT Set file/device status I$SSTT</title>
 <informaltable frame="none">
 <tgroup cols="2">
@@ -6873,9 +7034,9 @@
 </tbody>
 </tgroup>
 </informaltable>
-</sect2>
-
-<sect2>
+</sect1>
+
+<sect1>
 <title>WRITE Write Data to File or Device I$WRITE</title>
 
 <informaltable frame="none">
@@ -6916,10 +7077,10 @@
 <para>Data is written to the tile or device without processing or
 editing. If data is written past the present end-of-file, the file is
 automatically expanded.</para>
-</sect2>
-
-<sect2>
-<title>WritLn Write Line of Text with Editing I$WRLN</title>
+</sect1>
+
+<sect1>
+<title>WRITELINE Write Line of Text with Editing I$WRLN</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
@@ -6963,7 +7124,6 @@
 appends a line feed and nulls after carriage return characters, these
 extrt bytes are not counted.</para>
 
-</sect2>
 </sect1>
 </chapter>
 
@@ -7382,205 +7542,222 @@
 <table frame="none">
 <title>OS-9 Error Codes</title>
 <tgroup cols="3">
-<tbody>
-<row>
- <entry>$</entry>
+<thead>
+<row>
+<entry rowsep="1">HEX</entry>
+<entry rowsep="1">DEC</entry>
+<entry></entry>
+</row>
+</thead>
+<tbody>
+<row>
+ <entry>$C8</entry>
  <entry>200</entry>
- <entry>PATH TABLE FULL - </entry></row>
-<row>
- <entry>$</entry>
+ <entry>PATH TABLE FULL - The file cannot be opened because
+ the system path table is currently full.</entry></row>
+<row>
+ <entry>$C9</entry>
  <entry>201</entry>
  <entry>ILLEGAL PATH NUMBER - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$CA</entry>
  <entry>202</entry>
  <entry>INTERRUPT POLLING TABLE FULL - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$CB</entry>
  <entry>203</entry>
  <entry>ILLEGAL MODE - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$CC</entry>
  <entry>204</entry>
  <entry>DEVICE TABLE FULL - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$CD</entry>
  <entry>205</entry>
  <entry>ILLEGAL MODULE HEADER - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$CE</entry>
  <entry>206</entry>
  <entry>MODULE DIRECTORY FULL - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$CF</entry>
  <entry>207</entry>
  <entry>MEMORY FULL - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D0</entry>
  <entry>208</entry>
  <entry>ILLEGAL SERVICE REQUEST - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D1</entry>
  <entry>209</entry>
  <entry>MODULE BUSY - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D2</entry>
  <entry>210</entry>
  <entry>BOUNDARY ERROR - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D3</entry>
  <entry>211</entry>
  <entry>END OF FILE - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D4</entry>
  <entry>212</entry>
  <entry>RETURNING NON-ALLOCATED MEMORY - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D5</entry>
  <entry>213</entry>
  <entry>NON-EXISTING SEGMENT - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D6</entry>
  <entry>214</entry>
  <entry>NO PERMISSION - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D7</entry>
  <entry>215</entry>
  <entry>BAD PATH NAME - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D8</entry>
  <entry>216</entry>
  <entry>PATH NAME NOT FOUND - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$D9</entry>
  <entry>217</entry>
  <entry>SEGMENT LIST FULL - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$DA</entry>
  <entry>218</entry>
  <entry>FILE ALREADY EXISTS - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$DB</entry>
  <entry>219</entry>
- <entry>ILLEGAL BLOCK ADDRESS - </entry></row>
-<row>
- <entry>$</entry>
+ <entry>ILLEGAL BLOCK ADDRESS - device's file structure has been damaged.</entry></row>
+<row>
+ <entry>$DC</entry>
+ <entry>220</entry>
+ <entry>ILLEGAL BLOCK SIZE - device's file structure has been damaged.</entry></row>
+<row>
+ <entry>$DE</entry>
  <entry>221</entry>
  <entry>MODULE NOT FOUND - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$DF</entry>
  <entry>223</entry>
  <entry>SUICIDE ATTEMPT - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E0</entry>
  <entry>224</entry>
  <entry>ILLEGAL PROCESS NUMBER - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E2</entry>
  <entry>226</entry>
  <entry>NO CHILDREN - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E3</entry>
  <entry>227</entry>
  <entry>ILLEGAL SWI CODE - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E4</entry>
  <entry>228</entry>
  <entry>PROCESS ABORTED - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E5</entry>
  <entry>229</entry>
  <entry>PROCESS TABLE FULL - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E6</entry>
  <entry>230</entry>
  <entry>ILLEGAL PARAMETER AREA - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E7</entry>
  <entry>231</entry>
  <entry>KNOWN MODULE - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E8</entry>
  <entry>232</entry>
  <entry>INCORRECT MODULE CRC - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$E9</entry>
  <entry>233</entry>
  <entry>SIGNAL ERROR - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$EA</entry>
  <entry>234</entry>
  <entry>NON-EXISTENT MODULE - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$EB</entry>
  <entry>235</entry>
  <entry>BAD NAME - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$EC</entry>
+ <entry>236</entry>
+ <entry>BAD HEADER - module header parity incorrect</entry></row>
+<row>
+ <entry>$ED</entry>
  <entry>237</entry>
  <entry>RAM FULL - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$EE</entry>
  <entry>238</entry>
  <entry>UNKNOWN PROCESS ID - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$EF</entry>
  <entry>239</entry>
  <entry>NO TASK NUMBER AVAILABLE - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F0</entry>
  <entry>240</entry>
  <entry>UNIT ERROR - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F1</entry>
  <entry>241</entry>
  <entry>SECTOR ERROR - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F2</entry>
  <entry>242</entry>
  <entry>WRITE PROTECT - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F3</entry>
  <entry>243</entry>
  <entry>CRC ERROR - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F4</entry>
  <entry>244</entry>
  <entry>READ ERROR - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F5</entry>
  <entry>245</entry>
  <entry>WRITE ERROR - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F6</entry>
  <entry>246</entry>
  <entry>NOT READY - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F7</entry>
  <entry>247</entry>
  <entry>SEEK ERROR - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$F8</entry>
  <entry>248</entry>
- <entry>MEDIA FULL - </entry></row>
-<row>
- <entry>$</entry>
+ <entry>MEDIA FULL - insufficient free space on media.</entry></row>
+<row>
+ <entry>$F9</entry>
  <entry>249</entry>
- <entry>WRONG TYPE - </entry></row>
-<row>
- <entry>$</entry>
+ <entry>WRONG TYPE - attempt to read incompatible media (i.e.
+ attempt to read double-side disk on single-side drive)</entry></row>
+<row>
+ <entry>$FA</entry>
  <entry>250</entry>
- <entry>DEVICE BUSY - </entry></row>
-<row>
- <entry>$</entry>
+ <entry>DEVICE BUSY - non-sharable device is in use</entry></row>
+<row>
+ <entry>$FB</entry>
  <entry>251</entry>
  <entry>DISK ID CHANGE - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$FC</entry>
  <entry>252</entry>
  <entry>RECORD IS LOCKED-OUT - </entry></row>
 <row>
- <entry>$</entry>
+ <entry>$FD</entry>
  <entry>253</entry>
  <entry>NON-SHARABLE FILE BUSY - </entry></row>
 </tbody>
@@ -7598,16 +7775,6 @@
 <sect1>
 <title>$3A* F$AllImg Allocate Image RAM blocks F$AllImg</title>
 
-
-<para>INPUT:  (V B~~g block nu~er 
-</para>
-
-<para>~ OI~ blocks 
-</para>
-
-<para>Process Z~esc:iptor pointer 
-</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
@@ -7621,11 +7788,13 @@
 </row>
 <row>
 	<entry>INPUT:</entry>
-	<entry></entry>
+	<entry><literallayout>(A) = Beginning block number
+(B) = Number of blocks
+(X) = Process Descriptor pointer</literallayout></entry>
 </row>
 <row>
 	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>None.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -7636,40 +7805,33 @@
 </tgroup>
 </informaltable>
 
-<para>ItkM blocks for process OAT ~ The b~~s do ~ ree~ t be cc~tigt~ocs~
-</para>
+<para>Allocates RAM blocks for process DAT image. The blocks do not
+need to be contiguous.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
 
 <sect1>
-<title>V ~ Allocate Process descriptor</title>
-
-<para>ASSEMBLER CALL: OS9 ~AliPrc</para>
-
-<para>MACHINE CODE: 103F 4B</para>
-
-<para>INPUT: 
-</para>
+<title>$4B* F$AllPrc Allocate Process descriptor F$AllPrc</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$AllPrc</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
+	<entry>103F 4B</entry>
 </row>
 <row>
 	<entry>INPUT:</entry>
-	<entry></entry>
+	<entry>none</entry>
 </row>
 <row>
 	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>(U) = Process Descriptor pointer</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -7680,40 +7842,32 @@
 </tgroup>
 </informaltable>
 
-<para>&amp;n~ italizes a ~l2~-bv~te process desc~ptor~
-</para>
+<para>Allocates and initializes a 512-byte process descriptor</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
 
 <sect1>
-<title>Allocate RAM blocks AllRAJ~!</title>
-
-<para>ASSEMBLER CALL: OS9</para>
-
-<para>MACHINE CODE: 103F ~9</para>
-
-<para>U) a Desr~re~ block crocnt a t~eVto~ng PAM block numier 
-</para>
+<title>$39* F$AllRAMAllocate RAM blocks F$AllRAM</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$AllRAM</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
+	<entry>103F 39</entry>
 </row>
 <row>
 	<entry>INPUT:</entry>
-	<entry></entry>
+	<entry>(B) = Desired block count</entry>
 </row>
 <row>
 	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>(D) = Beginning RAM block number</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -7724,16 +7878,15 @@
 </tgroup>
 </informaltable>
 
-<para>z ~ t~e Menor~ Block map for t1~s desired n~ber of ~oo:icuo~ RAM
-blocks
-</para>
+<para>Searches the Memory Block map for the desired number of contuguous
+free RAM blocks.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST
 </para>
 </sect1>
 
 <sect1>
-<title>AlhC ~sk Allocate process Task number</title>
+<title>$3F* F$AllTsk Allocate process Task number F$AllTsk</title>
 
 
 <para>X a Process Descrrptor pointer 
@@ -7767,30 +7920,25 @@
 </tgroup>
 </informaltable>
 
-<para>a Task. ~be: ~or tbe given process
-</para>
+<para>Allocates a Task number for the given process.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST 
 </para>
 </sect1>
 
 <sect1>
-<title>Bootstrap syste~r F$Boot</title>
-
-<para>ASSEMBLER CALL: OS9 F$Boot</para>
-
-<para>MACHINE CODE: 103F</para>
+<title>$35* F$Boot Bootstrap system F$Boot</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$Boot</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
+	<entry>103F 35</entry>
 </row>
 <row>
 	<entry>INPUT:</entry>
@@ -7809,24 +7957,23 @@
 </tgroup>
 </informaltable>
 
-<para>~2~e modble i~aned ~Boet~ or as specified in t,~rt IIIT modblt.
-~ked m~Wle~ and expects tbe return of a po&plusmn;~nter and s~ze of
-
-a ea ~ ~ tbtn se&amp;rclred for fl~ modules</para>
+<para>Links to the module named "Boot" or as specified in the INIT module;
+calls linked module; and expects the return of a pointer and size of
+an area which is then searched for new modules.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
 
 <sect1>
-<title>Bootstrap M~ory request OS9 F$BtMem</title>
+<title>$36* F$BtMem Bootstrap Memory request F$BtMem</title>
 
 <para>ASSEMBLER CALL: OS9</para>
 
 
-<para>U = Byte count reouested~ 
-</para>
-
-<para>U = Byte count cran~ed~ 
+<para>U = Byte count reouested.
+</para>
+
+<para>U = Byte count granted.
 - p~ ~ter to memory sIlo ~ated~
 </para>
 
@@ -7866,7 +8013,7 @@
 </sect1>
 
 <sect1>
-<title>Clear specific Block</title>
+<title>$50* F$ClrBlk Clear specific Block F$ClrBlk</title>
 
 <para>ASSEMBLER CALL: OS9 F$ClrBlk
 </para>
@@ -7913,7 +8060,7 @@
 </sect1>
 
 <sect1>
-<title>Copy external Memory F$CpyMem</title>
+<title>$1B F$CpyMem Copy external Memory F$CpyMem</title>
 
 
 <para>~F V (D)-Start~ng Memory Block number
@@ -7955,9 +8102,7 @@
 </sect1>
 
 <sect1>
-<title>C nvert DAT block/offset to Doqical Addr 0 eq</title>
-
-<para>ASSEMBLER CALL: OS9 Y~ATLcg</para>
+<title>$44* F$DATLog Convert DAT block/offset to Logical Addr F$DATLog</title>
 
 
 <para>P - ~AT xmaqe offset
@@ -7971,7 +8116,7 @@
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$DATLog</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
@@ -8112,7 +8257,7 @@
 </sect1>
 
 <sect1>
-<title>Deallocate RAM blocks</title>
+<title>$51* F$DelRam Deallocate RAM blocks F$DelRam</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
@@ -8519,8 +8664,7 @@
 <para>Von the current process's memory an a system state
 ~Ut Va</para>
 
-<para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST
-</para>
+<para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
 
 <sect1>
@@ -8554,30 +8698,25 @@
 </tgroup>
 </informaltable>
 
-<para>5-c s one data byte in tte memory block specified by the DA~ in a
-( S offset by (I)</para>
-
-<para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST
-</para>
+<para>Returns one data byte in the memory block specified by the DAT image in
+(Y), offset by (X).</para>
+
+<para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
 
 <sect1>
 <title>$47* F$LDAXYP  Load A [X+, [Y] ] F$LDAXYP</title>
 
-<para>ASSEMBLER CALL: OS9 F$LDAXYP</para>
-
-<para>MACHINE CODE: 103F 47</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$LDAXYP</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
+	<entry>103F 47</entry>
 </row>
 <row>
 	<entry>INPUT:</entry>
@@ -8596,11 +8735,9 @@
 </tgroup>
 </informaltable>
 
-<para>~a to the assembly instruction ~I~DA ,xe~', except that (I refers
-&quot;~c an offset in the memory block described by the DA'~'
-at
-7&gt;
-</para>
+<para>Similar to the assembly instruction "LDA ,X+", except that (X) refers
+to an offset in the memory block described by the DAT
+image at (Y).</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
@@ -8636,16 +8773,16 @@
 </tgroup>
 </informaltable>
 
-<para>Loads two tytes from the memory block described by the 73A&gt;~' Lma;e
-
-&quot;so cc b~ (Y). The bytes loaded are at the offset (D'~'X) rz
-&quot;, a rratr~~'r' bloak.</para>
+<para>Loads two bytes from the memory block described by the DAT image
+pointed to by (Y). The bytes loaded are at the offset (D+X) in
+the memory block.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
 
 <sect1>
 <title>$4F* F$MapBlk Map specific Block F$MapBlk</title>
+
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
@@ -8659,11 +8796,12 @@
 </row>
 <row>
 	<entry>INPUT:</entry>
-	<entry></entry>
+	<entry><literallayout>(B) = Number of blocks.
+(X) = Beginning block number.</literallayout></entry>
 </row>
 <row>
 	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>(U) = Address of first block.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -8674,8 +8812,7 @@
 </tgroup>
 </informaltable>
 
-<para>~peo ~ ed block(s) into unallocated blocks of ~ro sea a
-</para>
+<para>Maps specified block(s) into unallocated blocks of process address space.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
@@ -8683,13 +8820,6 @@
 <sect1>
 <title>$38* F$Move Move data (low bound first) F$Move</title>
 
-
-<para>5) = Source Task number
-U = Dsstanataon Task number
-(X) = Source poInter
-7') = Byte count
-= Deatinatior pointer
-</para>
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
@@ -8703,11 +8833,15 @@
 </row>
 <row>
 	<entry>INPUT:</entry>
-	<entry></entry>
+	<entry><literallayout>(A) = Source Task number
+(B) = Destination Task number
+(X) = Source pointer
+(Y) = Byte count
+(U) = Destination pointer</literallayout></entry>
 </row>
 <row>
 	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>None.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -8718,12 +8852,8 @@
 </tgroup>
 </informaltable>
 
-<para>cats bytes from one address space to anotber~ csuully fu~ 75 &quot;ctu
-to Cse&gt;7s, or vice-versa,
-
-
-
-</para>
+<para>Moves data bytes from one address space to anotber, usually from
+System's to User's, or vice-versa.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
@@ -9170,7 +9300,7 @@
 Attempts to delete devices will result in error.</para>
 
 <para>The access mode is used to specify the current working directory
-or me cur erit execution directory (but not both) in the absence of
+or me current execution directory (but not both) in the absence of
 a full pathlist. If the access mode is read, write, or update, the
 current data directory is assumed. If the access mode is
 execute, the current execution directory is assumed. Note that