changeset 40:3cf41d86d998

Finished I/O service requests and appendix C
author roug
date Wed, 17 Apr 2002 17:59:43 +0000
parents 80cda5c48ea7
children d6fa13b66b87
files docs/os9sysprog/makefile docs/os9sysprog/os9sysprog.docbook
diffstat 2 files changed, 893 insertions(+), 266 deletions(-) [+]
line wrap: on
line diff
--- a/docs/os9sysprog/makefile	Tue Apr 16 20:12:52 2002 +0000
+++ b/docs/os9sysprog/makefile	Wed Apr 17 17:59:43 2002 +0000
@@ -1,19 +1,21 @@
 SRC=os9sysprog
+#STYLESHEET=
 STYLESHEET=docbook-utils.dsl
 
-all: book1.htm
+all: $(SRC).html
 
 $(SRC).pdf: $(SRC).docbook $(STYLESHEET)
 	 docbook2pdf -d $(STYLESHEET) $(SRC).docbook
 
 $(SRC).ps: $(SRC).docbook $(STYLESHEET)
-	 docbook2ps -d $(STYLESHEET) $(SRC).docbook
+	 docbook2ps $(SRC).docbook
+#	 docbook2ps -d $(STYLESHEET) $(SRC).docbook
 
-book1.htm: $(SRC).docbook $(STYLESHEET)
+$(SRC).html: $(SRC).docbook $(STYLESHEET)
 	rm -f *.htm *.html
 #	jade -t sgml -V html-index -d /usr/share/sgml/docbook/dsssl-stylesheets-1.64/html/docbook.dsl $(SRC).docbook
 #	collateindex.pl -p -o index.docbook HTML.index
-	docbook2html -d $(STYLESHEET) $(SRC).docbook
+	docbook2html $(SRC).docbook
 
 print:
 	psnup -2 $(SRC).ps | lpr
--- a/docs/os9sysprog/os9sysprog.docbook	Tue Apr 16 20:12:52 2002 +0000
+++ b/docs/os9sysprog/os9sysprog.docbook	Wed Apr 17 17:59:43 2002 +0000
@@ -1,6 +1,6 @@
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
 <!-- $Id$ -->
-<book id="os9sysman" lang="en">
+<book id="os9sysprog" lang="en">
 <bookinfo>
  <title>OS-9 Operating System</title>
  <subtitle>System Programmer's Manual</subtitle>
@@ -4855,7 +4855,7 @@
 </sect1>
 
 <sect1>
-<title>GET ID Get process ID / user ID</title>
+<title>GET ID Get process ID / user ID F$ID</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
@@ -4895,7 +4895,7 @@
 </sect1>
 
 <sect1>
-<title>LINK: Link to memory module. F $LINK</title>
+<title>LINK Link to memory module. F$LINK</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
@@ -5760,39 +5760,27 @@
 <sect1>
 <title>A64 Allocate a 64 byte memory block F$A64</title>
 
-<para>ASSEMBLER CALL: OS9 F$A64 
-</para>
-
-<para>MACHINE CODE: 103F 30
-</para>
-
-<para>INPUT: (X) = Base address of page table (zero if the page table
-has not yet been allocated)</para>
-
-<para>OUTPUT: (X) Block number</para>
-
-<para>(N) = Base address of page table</para>
-
-<para>(Y) = Address of block</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$A64</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
-</row>
-<row>
-	<entry>INPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>103F 30</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry>(X) = Base address of page table (zero if the page table
+has not yet been allocated).</entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry><literallayout>(X) Block number
+(X) = Base address of page table
+(Y) = Address of block.</literallayout></entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -5807,14 +5795,13 @@
 64 byte blocks of memory by splitting whole pages (256 byte) into
 tour sections. The first 64 bytes of the base page are used as a
 &quot;page table&quot;, which contains the MSB of all pages in the
-memory structure. Passing a value of zero in the N register will
+memory structure. Passing a value of zero in the X register will
 cause the F$A64 service request to allocate a new base page and the
 first 64 byte memory block. Whenever a new page is needed, an F$SRQM
 service request will automatically be executed. The first byte of
 each block contains the block number; routines using this service
 request should not alter it. Below is a diagram to show how 7 blocks
 might be allocated:</para>
-
 <screen>
                    ANY 256 BYTE            ANY 256 BYTE
                    MEMORY PAGE             MEMORY PAGE
@@ -5843,87 +5830,68 @@
 <sect1>
 <title>APRC Insert process in active process queue F$APRC</title>
 
-<para>ASSEMBLER CALL: OS9 F$APRC 
-</para>
-
-<para>MACHINE CODE: 103F 2C 
-</para>
-
-<para>INPUT: (N) = Address of process descriptor</para>
-
-<para>OUTPUT: None</para>
+<informaltable frame="none">
+<tgroup cols="2">
+<tbody>
+<row>
+	<entry>ASSEMBLER CALL:</entry>
+	<entry>OS9  F$APRC</entry>
+</row>
+<row>
+	<entry>MACHINE CODE:</entry>
+	<entry>103F 2C</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry>(X) = Address of process descriptor.</entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>None.</entry>
+</row>
+<row>
+	<entry>ERROR OUTPUT:</entry>
+	<entry><literallayout>(CC) = C bit set.
+(B) = Appropriate error code.</literallayout></entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>This system mode service request inserts a process into the active
+process queue so that it may be scheduled for execution.</para>
+
+<para>All processes already in the active process queue are aged, and
+the age of the specified process is set to its priority. If the
+process is in system state, it is inserted after any other process's
+also in system state, but before any process in user state. If the
+process is in user state, it is inserted according to its age.</para>
+
+<para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
+</sect1>
+
+<sect1>
+<title>FIND-64 Find a 64 byte memory block F$F64</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$F64</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
-</row>
-<row>
-	<entry>INPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>OUTPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>ERROR OUTPUT:</entry>
-	<entry><literallayout>(CC) = C bit set.
-(B) = Appropriate error code.</literallayout></entry>
-</row>
-</tbody>
-</tgroup>
-</informaltable>
-
-<para>Tbie system mode service request inserts a process into the active
-process queue so that it may be scheduled for execution</para>
-
-<para>All processes already in the active process queue are aged, and
-the age of the specified process is set to its priority If the
-process is in system state, it is inserted after any other process's
-also in system state, but before any process in user state. If the
-process is in user state, it is inserted according to its age</para>
-
-<para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
-</sect1>
-
-<sect1>
-<title>FIND-64 Find a 64 byte memory block F$F64</title>
-
-<para>ASSEMBLER CALL: OS9 F$F64</para>
-
-<para>MACHINE CODE: 103F 2F
-</para>
-
-<para>INPUT: (K) = Add ess o base page, (A) = Block number.
-</para>
-
-<para>OUTPUT: (Y) = Address of block</para>
-
-<informaltable frame="none">
-<tgroup cols="2">
-<tbody>
-<row>
-	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
-</row>
-<row>
-	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
-</row>
-<row>
-	<entry>INPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>103F 2F</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry><literallayout>(X) = Address of base page.
+(A) = Block number.</literallayout></entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>(Y) = Address of block.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -5939,42 +5907,32 @@
 used this service request to find process descriptors and path
 descriptors when given their number.</para>
 
-<para>Block numbers range from 1,.N</para>
-
-<para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST 
-</para>
+<para>Block numbers range from 1..N</para>
+
+<para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
 
 <sect1>
 <title>IODEL Delete I/O device from system F$IODL</title>
 
-<para>ASSEMBLER CALL: OS9 F$IODL 
-</para>
-
-<para>MACHINE CODE: 103F 33</para>
-
-<para>INPUT: (K) = Address of an I/O module, (see description)</para>
-
-<para>OUTPUT: None</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$IODL</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
-</row>
-<row>
-	<entry>INPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>103F 33</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry>(X) = Address of an I/O module, (see description).</entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>None.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -5986,48 +5944,39 @@
 </informaltable>
 
 <para>This system mode service request is used to determine whether or
-not an I/O module is being used. The N register passes the address of
+not an I/O module is being used. The X register passes the address of
 a device descriptor module, device driver module, or file manager
-module. The address .is used to search the device table, and if found
+module. The address is used to search the device table, and if found
 the use count is checked to see if it is zero. If it is not zero, an
-error condition is returned</para>
+error condition is returned.</para>
 
 <para>This service request is used primarily by IOMAN and may be of
 limited or no use for other applications</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>
 <title>IOQUEUE Enter I/O queue F$IOQU</title>
 
-<para>ASSEMBLER CALL: OS9 F$IQQU</para>
-
-<para>MACHINE CODE: 103F 2B</para>
-
-<para>INPUT: (A) = Process Number.</para>
-
-<para>OUTPUT: None.</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$IOQU</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
-</row>
-<row>
-	<entry>INPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>103F 2B</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry>(A) = Process Number.</entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>None.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -6049,54 +5998,32 @@
 <sect1>
 <title>SETIRQ Add or remove device from IRQ table. F$IRQ</title>
 
-<para>ASSEMBLER CALL: OS9 F$IRQ 
-</para>
-
-<para>MACHINE CODE: 103F 2A 
-</para>
-
-<para>INPUT: (X) = Zero to remove device from table, or the address of a
-packet as defined below to add a device to 
-</para>
-
-<para>the IRQ polling table: 
-</para>
-
-<para>(xl = flip byte 
-</para>
-
-<para>(X+1l = mask byte
-</para>
-
-<para>(X+21 - priority
-</para>
-
-<para>(U) = Address of service routine's static Storage area</para>
-
-<para>(Y) = Device IRQ service routine address</para>
-
-<para>(D) = Address of the device status register</para>
-
-<para>OUTPUT: None</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$IRQ</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
-</row>
-<row>
-	<entry>INPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>103F 2A</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry><literallayout>(X) = Zero to remove device from table, or the address of a
+packet as defined below to add a device to the IRQ polling table:
+
+        [x] = flip byte
+        [X+1] = mask byte
+        [X+2] = priority
+(U) = Address of service routine's static storage area.
+(Y) = Device IRQ service routine address.
+(D) = Address of the device status register.</literallayout></entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>None.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -6109,10 +6036,10 @@
 
 <para>This service request is used to add a device to or remove a device
 from the IRQ polling table. To remove a device from the table the
-input should be (X)-0, (U)- Addr of service routine's static storage.
+input should be (X)=0, (U)= Addr of service routine's static storage.
 This service request is primarily used by device driver routines. See
 the text of this manual for a complete discussion of the interrupt
-polling system</para>
+polling system.</para>
 
 <para>PACKET DEFINITIONS:</para>
 
@@ -6149,17 +6076,32 @@
 <sect1>
 <title>NXTPRCS Start next process F$NPRC</title>
 
-<para>ASSEMBLER CALL: OS9 F$NPRC</para>
-
-<para>MACHINE CODE: 103F 2D</para>
-
-<para>INPUT:  None.</para>
-
-<para>OUTPUT: Control does not return to caller.</para>
+<informaltable frame="none">
+<tgroup cols="2">
+<tbody>
+<row>
+	<entry>ASSEMBLER CALL:</entry>
+	<entry>OS9  F$NPRC</entry>
+</row>
+<row>
+	<entry>MACHINE CODE:</entry>
+	<entry>103F 2D</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry>None.</entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>Control does not return to caller.</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
 
 <para>This system mode service request takes the next process out of the
 Active Process Queue and initiates its execution. If there is no
-proess in the queue. OS-9 waits for an interrupt, and then checks the
+process in the queue, OS-9 waits for an interrupt, and then checks the
 active process queue again.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
@@ -6168,36 +6110,25 @@
 <sect1>
 <title>R64 Deallocate a 64 byte memory block F$R64</title>
 
-<para>ASSEMBLER CALL: OS9 F$R64 
-</para>
-
-<para>MACHINE CODE: 103F 31 
-</para>
-
-<para>INPUT: (K) = Address of the base page.</para>
-
-<para>(A) = Block number.</para>
-
-<para>OUTPUT: None</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$R64</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
-</row>
-<row>
-	<entry>INPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>103F 31</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry><literallayout>(X) = Address of the base page.
+(A) = Block number.</literallayout></entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>None.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -6209,7 +6140,7 @@
 </informaltable>
 
 <para>This system mode service request deallocates a 64 byte block of
-memory as described in the F$A64 service request</para>
+memory as described in the F$A64 service request.</para>
 
 <para>NOTE: THIS IS A PRIVILEGED SYSTEM MODE SERVICE REQUEST</para>
 </sect1>
@@ -6217,32 +6148,24 @@
 <sect1>
 <title>SRQMEM System memory request F$SRQM</title>
 
-<para>ASSEMBLER CALL: OS9 F$SRQM</para>
-
-<para>MACHINE CODE: 103F 28</para>
-
-<para>INPUT: (D) = Byte count.</para>
-
-<para>OUTPUT: (U) = Beginning address ,of memory area</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$SRQM</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
-</row>
-<row>
-	<entry>INPUT:</entry>
-	<entry></entry>
-</row>
-<row>
-	<entry>OUTPUT:</entry>
-	<entry></entry>
+	<entry>103F 28</entry>
+</row>
+<row>
+	<entry>INPUT:</entry>
+	<entry>(D) = Byte count.</entry>
+</row>
+<row>
+	<entry>OUTPUT:</entry>
+	<entry>(U) = Beginning address of memory area.</entry>
 </row>
 <row>
 	<entry>ERROR OUTPUT:</entry>
@@ -6263,20 +6186,16 @@
 <sect1>
 <title>SRTMEM System memory request F$SRTMEM</title>
 
-<para>ASSEMBLER CALL: OS9 F$SRTM</para>
-
-<para>MACHINE CODE: 103F 29</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$SRTMEM</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
+	<entry>103F 29</entry>
 </row>
 <row>
 	<entry>INPUT:</entry>
@@ -6301,18 +6220,16 @@
 <sect1>
 <title>VMODULE Validate module F$VMODUL</title>
 
-<para>ASSEMBLER CALL: OS9</para>
-
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
 <row>
 	<entry>ASSEMBLER CALL:</entry>
-	<entry>OS9  F$</entry>
+	<entry>OS9  F$VMODUL</entry>
 </row>
 <row>
 	<entry>MACHINE CODE:</entry>
-	<entry>103F </entry>
+	<entry>103F 2E</entry>
 </row>
 <row>
 	<entry>INPUT:</entry>
@@ -6962,7 +6879,7 @@
 </sect1>
 
 <sect1>
-<title>MAKDIR Make a new directory</title>
+<title>MAKDIR Make a new directory I$MDIR</title>
 
 <informaltable frame="none">
 <tgroup cols="2">
@@ -7018,7 +6935,7 @@
 </sect1>
 
 <sect1>
-<title>OPEN Open a path to a file or device</title>
+<title>OPEN Open a path to a file or device I$OPEN</title>
 <informaltable frame="none">
 <tgroup cols="2">
 <tbody>
@@ -8151,18 +8068,637 @@
 <appendix>
 <title>Service Request Summary</title>
 
-<para>These did not OCR well</para>
+<table frame="none">
+<title>User Mode Service Requests</title>
+<tgroup cols="4">
+<colspec colwidth="1.2in" colname="c1">
+<colspec colwidth="1.0in" colname="c2">
+<colspec colwidth="3.6in" colname="c3">
+<colspec colwidth="0.6in" colname="c4">
+<thead>
+<row>
+  <entry>Code</entry>
+  <entry>Mnemonic</entry>
+  <entry>Function</entry>
+  <entry>Page</entry>
+</row>
+</thead>
+<tbody>
+<row>
+  <entry>103F 00</entry>
+  <entry>F$LINK</entry>
+  <entry>Link to memory module.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 01</entry>
+  <entry>F$LOAD</entry>
+  <entry>Load module(s) from a file.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 02</entry>
+  <entry>F$UNLK</entry>
+  <entry>Unlink a module.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 03</entry>
+  <entry>F$FORK</entry>
+  <entry>Create a new process.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 04</entry>
+  <entry>F$WAIT</entry>
+  <entry>Wait for child process to die.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 05</entry>
+  <entry>F$CHAN</entry>
+  <entry>Load and execute a new primary module</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 06</entry>
+  <entry>F$EXIT</entry>
+  <entry>Terminate the calling process.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 07</entry>
+  <entry>F$MEM</entry>
+  <entry>Resize data memory area,</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 08</entry>
+  <entry>F$SEND</entry>
+  <entry>Send a signal to another process,</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 09</entry>
+  <entry>F$ICFT</entry>
+  <entry>Set up a signal intercept trap.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 0A</entry>
+  <entry>F$SLEP</entry>
+  <entry>Put calling process to sleep.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 0C</entry>
+  <entry>F$ID</entry>
+  <entry>Get process ID / user ID</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 0D</entry>
+  <entry>F$SPRI</entry>
+  <entry>Set process priority.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 0E</entry>
+  <entry>F$SSWI</entry>
+  <entry>Set SWI vector.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 0F</entry>
+  <entry>F$PERR</entry>
+  <entry>Print error message.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 10</entry>
+  <entry>F$PNAM</entry>
+  <entry>Parse a path name,</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 11</entry>
+  <entry>F$CNAM</entry>
+  <entry>Compare two names</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 12</entry>
+  <entry>F$SBIT</entry>
+  <entry>Search bit map for a free area</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 13</entry>
+  <entry>F$ABIT</entry>
+  <entry>Set bits in an allocation bit map</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 14</entry>
+  <entry>F$DBIT</entry>
+  <entry>Deallocate in a bit map</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 15</entry>
+  <entry>F$TIME</entry>
+  <entry>Get system date and time.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 16</entry>
+  <entry>F$STIM</entry>
+  <entry>Set system date and time.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 17</entry>
+  <entry>F$CRC</entry>
+  <entry>Compute CRC</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 18</entry>
+  <entry>F$GPrDsc</entry>
+  <entry>Get Process Descriptor copy </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 19</entry>
+  <entry>F$GBlkMp</entry>
+  <entry>Get system Block Map copy</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 1A</entry>
+  <entry>F$GModDr</entry>
+  <entry>Get Module Directory copy</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 1B</entry>
+  <entry>F$CpyMem</entry>
+  <entry>Copy external Memory</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 1C</entry>
+  <entry>F$SUser</entry>
+  <entry>Set User ID number</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 1D</entry>
+  <entry>F$UnLoad</entry>
+  <entry>Unlink module by name</entry>
+  <entry></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+
+
+
+
+<table frame="none">
+<title>System Mode Privileged Service Requests</title>
+<tgroup cols="4">
+<colspec colwidth="1.2in" colname="c1">
+<colspec colwidth="1.0in" colname="c2">
+<colspec colwidth="3.6in" colname="c3">
+<colspec colwidth="0.6in" colname="c4">
+<thead>
+<row>
+  <entry>Code</entry>
+  <entry>Mnemonic</entry>
+  <entry>Function</entry>
+  <entry>Page</entry>
+</row>
+</thead>
+<tbody>
+<row>
+  <entry>103F 28</entry>
+  <entry>F$SRQM</entry>
+  <entry>System memory request</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 28</entry>
+  <entry>F$SRqMem</entry>
+  <entry>System Memory Request </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 29</entry>
+  <entry>F$SRTMEM</entry>
+  <entry>System memory request</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 29</entry>
+  <entry>F$SRtMem</entry>
+  <entry>System Memory Return </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 2A</entry>
+  <entry>F$IRQ</entry>
+  <entry>Add or remove device from IRQ table.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 2B</entry>
+  <entry>F$IOQU</entry>
+  <entry>Enter I/O queue</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 2C</entry>
+  <entry>F$APRC</entry>
+  <entry>Insert process in active process queue</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 2D</entry>
+  <entry>F$NPRC</entry>
+  <entry>Start next process</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 2E</entry>
+  <entry>F$VMODUL</entry>
+  <entry>Validate module</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 2F</entry>
+  <entry>F$F64</entry>
+  <entry>Find a 64 byte memory block</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 30</entry>
+  <entry>F$A64</entry>
+  <entry>Allocate a 64 byte memory block</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 31</entry>
+  <entry>F$R64</entry>
+  <entry>Deallocate a 64 byte memory block</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 32</entry>
+  <entry>F$SSVC</entry>
+  <entry>Install function request</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 33</entry>
+  <entry>F$IODL</entry>
+  <entry>Delete I/O device from system</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 34</entry>
+  <entry>F$SLink</entry>
+  <entry>System Link </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 35</entry>
+  <entry>F$Boot</entry>
+  <entry>Bootstrap system</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 36</entry>
+  <entry>F$BtMem</entry>
+  <entry>Bootstrap Memory request</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 37</entry>
+  <entry>F$GProcP</entry>
+  <entry>Get Process Pointer </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 38</entry>
+  <entry>F$Move</entry>
+  <entry>Move data (low bound first)</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 39</entry>
+  <entry>F$AllRAM</entry>
+  <entry>Allocate RAM blocks</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 3A</entry>
+  <entry>F$AllImg</entry>
+  <entry>Allocate Image RAM blocks</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 3B</entry>
+  <entry>F$DelImg</entry>
+  <entry>Deallocate Imaqe RAM blocks</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 3C</entry>
+  <entry>F$SetImg</entry>
+  <entry>Set process DAT Image</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 3D</entry>
+  <entry>F$FreeLB</entry>
+  <entry>get Free Low block </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 3E</entry>
+  <entry>F$FreeHB</entry>
+  <entry>get Free High block </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 3F</entry>
+  <entry>F$AllTsk</entry>
+  <entry>Allocate process Task number</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 40</entry>
+  <entry>F$DelTsk</entry>
+  <entry>Deallocate process Task number</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 41</entry>
+  <entry>F$SetTsk</entry>
+  <entry>Set process Task DAT registers </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 42</entry>
+  <entry>F$ResTsk</entry>
+  <entry>Reserve Task number</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 43</entry>
+  <entry>F$RelTsk</entry>
+  <entry>Release Task number</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 44</entry>
+  <entry>F$DATLog</entry>
+  <entry>Convert DAT block/offset to Logical Addr</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 45</entry>
+  <entry>F$DATTmp</entry>
+  <entry>Make Temporary DAT image</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 46</entry>
+  <entry>F$LDAXY</entry>
+  <entry>Load A [X, [Y] ] </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 47</entry>
+  <entry>F$LDAXYP</entry>
+  <entry>Load A [X+, [Y] ]</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 48</entry>
+  <entry>F$LDDDXY</entry>
+  <entry>Load D [D+X, [Y] ] </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 49</entry>
+  <entry>F$LDABX</entry>
+  <entry>Load A from 0,1 in task B </entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 4A</entry>
+  <entry>F$STABX</entry>
+  <entry>Store A at 0,X in task B</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 4B</entry>
+  <entry>F$AllPrc</entry>
+  <entry>Allocate Process descriptor</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 4C</entry>
+  <entry>F$DelPrc</entry>
+  <entry>Deallocate Process descriptor</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 4D</entry>
+  <entry>F$ELink</entry>
+  <entry>Link using module directory Entry</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 4E</entry>
+  <entry>F$FModul</entry>
+  <entry>Find Module directory entry</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 4F</entry>
+  <entry>F$MapBlk</entry>
+  <entry>Map specific Block</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 50</entry>
+  <entry>F$ClrBlk</entry>
+  <entry>Clear specific Block</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 51</entry>
+  <entry>F$DelRam</entry>
+  <entry>Deallocate RAM blocks</entry>
+  <entry></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+
+
+<table frame="none">
+<title>Input/Output Service Requests</title>
+<tgroup cols="4">
+<colspec colwidth="1.2in" colname="c1">
+<colspec colwidth="1.0in" colname="c2">
+<colspec colwidth="3.6in" colname="c3">
+<colspec colwidth="0.6in" colname="c4">
+<thead>
+<row>
+  <entry>Code</entry>
+  <entry>Mnemonic</entry>
+  <entry>Function</entry>
+  <entry>Page</entry>
+</row>
+</thead>
+<tbody>
+<row>
+  <entry>103F 80</entry>
+  <entry>I$ATCH</entry>
+  <entry>Attach a new device to the system.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 81</entry>
+  <entry>I$DTCH</entry>
+  <entry>Remove a device from the system.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 82</entry>
+  <entry>I$DUP</entry>
+  <entry>Duplicate a path.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 83</entry>
+  <entry>I$CREA</entry>
+  <entry>Create a path to a new file.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 84</entry>
+  <entry>I$Open</entry>
+  <entry>Open a path to a file or device</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 85</entry>
+  <entry>I$MakDir</entry>
+  <entry>Make a new directory</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 86</entry>
+  <entry>I$CDIR</entry>
+  <entry>Change working directory.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 87</entry>
+  <entry>I$DLET</entry>
+  <entry>Delete a file.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 88</entry>
+  <entry>I$SEEK</entry>
+  <entry>Reposition the logical file pointer</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 89</entry>
+  <entry>I$READ</entry>
+  <entry>Read data from a file or device</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 8A</entry>
+  <entry>I$WRITE</entry>
+  <entry>Write Data to File or Device</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 8B</entry>
+  <entry>I$RDLN</entry>
+  <entry>Read a text line with editing.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 8C</entry>
+  <entry>I$WRLN</entry>
+  <entry>Write Line of Text with Editing</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 8D</entry>
+  <entry>I$GSTT</entry>
+  <entry>Get file device status.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 8E</entry>
+  <entry>I$SSTT</entry>
+  <entry>Set file/device status</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 8F</entry>
+  <entry>I$CLOS</entry>
+  <entry>Close a path to a file/device.</entry>
+  <entry></entry>
+</row>
+<row>
+  <entry>103F 90</entry>
+  <entry>I$DeletX</entry>
+  <entry>Delete a file</entry>
+  <entry></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+<table frame="none">
+<title>Standard I/O Paths</title>
+<tgroup cols="1">
+    <tbody>
+    <row>
+	<entry>0 = Standard Input</entry>
+    </row>
+    <row>
+	<entry>1 = Standard Output</entry>
+    </row>
+    <row>
+	<entry>2 = Standard Error Output</entry>
+    </row>
+    </tbody>
+</tgroup>
+</table>
 
 <table frame="none">
 <title>Module Types</title>
 <tgroup cols="2">
-	<thead>
+	<tbody>
 		<row>
 				<entry>$1</entry>
 				<entry>Program</entry>
 		</row>
-	</thead>
-	<tbody>
 		<row>
 				<entry>$2</entry>
 				<entry>Subroutine module</entry>
@@ -8194,6 +8730,95 @@
 	</tbody>
     </tgroup>
 </table>
+
+
+<table frame="none">
+<title>Module Types</title>
+<tgroup cols="2">
+    <tbody>
+	<row>
+	    <entry>READ</entry>
+	    <entry>$01</entry>
+	</row>
+	<row>
+	    <entry>WRITE</entry>
+	    <entry>$02</entry>
+	</row>
+	<row>
+	    <entry>UPDATE</entry>
+	    <entry>READ + WRITE</entry>
+	</row>
+	<row>
+	    <entry>EXEC</entry>
+	    <entry>$04</entry>
+	</row>
+	<row>
+	    <entry>PREAD</entry>
+	    <entry>$08</entry>
+	</row>
+	<row>
+	    <entry>PWRIT</entry>
+	    <entry>$10</entry>
+	</row>
+	<row>
+	    <entry>PEXEC</entry>
+	    <entry>$20</entry>
+	</row>
+	<row>
+	    <entry>SHARE</entry>
+	    <entry>$40</entry>
+	</row>
+	<row>
+	    <entry>DIR</entry>
+	    <entry>$80</entry>
+	</row>
+    </tbody>
+</tgroup>
+</table>
+
+
+<table frame="none">
+<title>Module Languages</title>
+<tgroup cols="2">
+	<tbody>
+		<row>
+				<entry>$0</entry>
+				<entry>Data</entry>
+		</row>
+		<row>
+				<entry>$1</entry>
+				<entry>6809 Object code</entry>
+		</row>
+		<row>
+				<entry>$2</entry>
+				<entry>BASIC09 I-code</entry>
+		</row>
+		<row>
+				<entry>$3</entry>
+				<entry>Pascal P-Code</entry>
+		</row>
+		<row>
+				<entry>$4</entry>
+				<entry>Cobol I-code</entry>
+		</row>
+	</tbody>
+    </tgroup>
+</table>
+
+<table frame="none">
+<title>Module Attributes</title>
+<tgroup cols="2">
+	<tbody>
+		<row>
+				<entry>$8</entry>
+				<entry>Reentrant</entry>
+		</row>
+	</tbody>
+    </tgroup>
+</table>
+
+
+
 </appendix>
 
 
@@ -8218,15 +8843,15 @@
 <row>
  <entry>$C9</entry>
  <entry>201</entry>
- <entry>ILLEGAL PATH NUMBER - </entry></row>
+ <entry>ILLEGAL PATH NUMBER - Number too large or for non-existant path.</entry></row>
 <row>
  <entry>$CA</entry>
  <entry>202</entry>
- <entry>INTERRUPT POLLING TABLE FULL - </entry></row>
+ <entry>INTERRUPT POLLING TABLE FULL</entry></row>
 <row>
  <entry>$CB</entry>
  <entry>203</entry>
- <entry>ILLEGAL MODE - </entry></row>
+ <entry>ILLEGAL MODE - attempt to perform I/O function of which the device or file is incapable.</entry></row>
 <row>
  <entry>$CC</entry>
  <entry>204</entry>
@@ -8258,7 +8883,7 @@
 <row>
  <entry>$D3</entry>
  <entry>211</entry>
- <entry>END OF FILE - </entry></row>
+ <entry>END OF FILE - End of file encountered on read.</entry></row>
 <row>
  <entry>$D4</entry>
  <entry>212</entry>
@@ -8270,7 +8895,7 @@
 <row>
  <entry>$D6</entry>
  <entry>214</entry>
- <entry>NO PERMISSION - </entry></row>
+ <entry>NO PERMISSION - file attributes do not permit access requested.</entry></row>
 <row>
  <entry>$D7</entry>
  <entry>215</entry>
@@ -8278,7 +8903,7 @@
 <row>
  <entry>$D8</entry>
  <entry>216</entry>
- <entry>PATH NAME NOT FOUND - </entry></row>
+ <entry>PATH NAME NOT FOUND - can't find patthlist specified.</entry></row>
 <row>
  <entry>$D9</entry>
  <entry>217</entry>
@@ -9483,7 +10108,7 @@
 </sect1>
 
 <sect1>
-<title>$43* F$RelTsk Ralease Task number F$RelTsk</title>
+<title>$43* F$RelTsk Release Task number F$RelTsk</title>
 
 <informaltable frame="none">
 <tgroup cols="2">