changeset 146:88ae6ed51be6

More splitups.
author roug
date Sun, 07 Jul 2002 09:54:04 +0000
parents 099333bc912e
children e49fb6ad1be8
files docs/nitros9guide/chap6.chapter docs/nitros9guide/chap7.chapter docs/nitros9guide/display.appendix docs/nitros9guide/errorcodes.appendix docs/nitros9guide/go51.appendix docs/nitros9guide/keys.appendix
diffstat 6 files changed, 1499 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/chap6.chapter	Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,270 @@
+<chapter>
+<title>Use of the System Disk</title>
+<para>
+Disk-based OS-9 systems use a system disk to load many parts of
+the operating system during the system startup and to provide files
+frequently used during normal system operations. Therefore, the
+system disk is generally kept in disk drive zero (&quot;/D0&quot;) when the
+system is running.
+</para>
+<para>
+Two files used during the system startup operation, &quot;OS9Boot&quot; and
+&quot;startup&quot; <emphasis>must</emphasis>
+reside in the system disk's root directory. Other
+files are organized into three directories: CMDS (commands), DEFS
+(system-wide definitions), and SYS (other system files). Other files
+and directories created by the system manager and/or users may also
+reside on the system disk. These frequently include each user s
+initial data directory.
+</para>
+
+<section>
+<title>The OS9BOOT File</title>
+
+<para>
+The file called &quot;OS9Boot&quot; loaded into RAM memory by the
+&quot;bootstrap&quot; routine located in the OS-9 firmware. It includes file
+managers, device drivers and descriptors, and any other modules
+which are permanently resident in memory. A typical Microware OS-9
+distribution disk's &quot;OS9Boot&quot; file contains the following modules:
+</para>
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="1.5in">
+<colspec colwidth="3.5in">
+<tbody>
+  <row>
+    <entry>IOMAN</entry>
+    <entry>OS-9 Input/Output Manager</entry>
+  </row>
+  <row>
+    <entry>RBF</entry>
+    <entry>Random Block (disk) File Manager</entry>
+  </row>
+  <row>
+    <entry>SCF</entry>
+    <entry>Sequential Character (terminal) File Manager</entry>
+  </row>
+  <row>
+    <entry>Pipeman</entry>
+    <entry>Pipeline File Manager</entry>
+  </row>
+  <row>
+    <entry>Piper</entry>
+    <entry>Pipeline Driver</entry>
+  </row>
+  <row>
+    <entry>Pipe</entry>
+    <entry>Pipeline Device Descriptor</entry>
+  </row>
+  <row>
+    <entry>KBDVID</entry>
+    <entry>Keyboard/video/Graphics Device Driver</entry>
+  </row>
+  <row>
+    <entry>PRINTER</entry>
+    <entry>Printer Device Driver</entry>
+  </row>
+  <row>
+    <entry>DDISK</entry>
+    <entry>Disk Driver</entry>
+  </row>
+  <row>
+    <entry>D0, D1</entry>
+    <entry>Disk Device Descriptor</entry>
+  </row>
+  <row>
+    <entry>TERM</entry>
+    <entry>Terminal Device Descriptor</entry>
+  </row>
+  <row>
+    <entry>P</entry>
+    <entry>Printer Device Descriptor</entry>
+  </row>
+  <row>
+    <entry>CLOCK</entry>
+    <entry>Real-Time Clock Module</entry>
+  </row>
+  <row>
+    <entry>SYSGO</entry>
+    <entry>System Startup Process</entry>
+  </row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>
+Users may create new bootstrap files which may include additional
+modules (see &quot;OS9Gen&quot; command). Any module loaded as part of the
+bootstrap cannot be unlinked and is stored in memory with a minimum
+of fragmentation. It may be advantageous to include in the OS9Boot
+file any module used constantly during normal system operation.
+This can be done with the OS9GEN command.
+</para>
+</section>
+
+<section>
+<title>The SYS Directory</title>
+
+<para>
+The directory &quot;/d0/SYS&quot; contains two important files:
+</para>
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="1in">
+<colspec colwidth="4in">
+<tbody>
+  <row>
+<entry>password</entry>
+<entry>the system password file (see &quot;login&quot; command)</entry>
+  </row>
+  <row>
+<entry>errmsg</entry>
+<entry>the error message file (see 4.7)</entry>
+  </row>
+</tbody>
+</tgroup>
+</informaltable>
+<para>
+These files (and the SYS directory itself) are not absolutely
+required to boot OS-9, they are needed if &quot;login&quot;, &quot;tsmon&quot;, or
+&quot;printerr&quot; will be used. Users may add other system-wide files of
+similar nature if desired.
+</para>
+</section>
+
+<section>
+<title>The Startup File</title>
+
+<para>
+The file &quot;/d0/startup&quot; is a shell procedure file (see 4.6) which
+is automatically processed immediately after system startup. The
+user may include in &quot;startup&quot; any legal shell command line. Often
+this will include &quot;setime&quot; to start the system clock. If this file
+is not present the system will still start correctly but the user
+must run the SETIME command manually.
+</para>
+</section>
+
+<section>
+<title>The CMDS Directory</title>
+
+<para>
+The directory &quot;/d0/CMDS&quot; is the system-wide command object code
+directory, which is normally shared by all users as their working
+execution directory (see 3.7). If &quot;shell&quot; is not part of the
+&quot;OS9Boot&quot; file, it must be present in this directory. The system
+startup process &quot;sysgo&quot; makes CMDS the initial execution directory.
+</para>
+</section>
+
+<section>
+<title>The DEFS Directory</title>
+
+<para>
+The directory &quot;/d0/DEFS&quot; is a directory that contains assembly
+language source code files which contain common system-wide symbolic
+definitions, and are normally included in assembly language programs
+by means of the OS-9 Assembler &quot;use&quot; directive. The presence and
+use of this directory is optional, but highly recommended for any
+system used for assembly language programs. The files commonly
+contained in this directory are:
+</para>
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="1in">
+<colspec colwidth="4in">
+<tbody>
+  <row>
+<entry>OS9Defs</entry>
+<entry>main system-wide definition file</entry>
+  </row>
+  <row>
+<entry>RBFDefs</entry>
+<entry>RBF file manager definition file</entry>
+  </row>
+  <row>
+<entry>SCFDefs</entry>
+<entry>SCF file manager definition file</entry>
+  </row>
+  <row>
+<entry>Systype</entry>
+<entry>System types definition file</entry>
+  </row>
+</tbody>
+</tgroup>
+</informaltable>
+
+</section>
+
+<section>
+<title>Changing System Disks</title>
+
+<para>
+The system disk is not usually removed while the system is running, especially
+on multiuser systems. If it is, the &quot;chx&quot; and
+&quot;chd&quot; (if the working data directory was on the system disk)
+commands should be executed to reset the working directory pointers
+because the directories may be at different addresses on the new
+disk, for example:
+</para>
+
+<screen>
+chx /d0/cmds
+chd /d0
+</screen>
+
+<para>
+In general, it is unwise to remove a disk and replace it with
+another if any paths are open to files resident on the disk. It is
+<emphasis>dangerous</emphasis> to exchange <emphasis>any</emphasis>
+disk if any files on it are open in WRITE or UPDATE modes.
+</para>
+
+
+</section>
+
+<section>
+<title>Making New System Disks</title>
+
+<para>
+To make a system disk, the following steps must be performed:
+
+<orderedlist  numeration="arabic">
+<listitem><para>
+The new disk must be formatted.
+</para></listitem>
+
+<listitem><para>
+The &quot;OS9Boot&quot; file must be created and linked by the &quot;OS9Gen&quot; or
+&quot;Cobbler&quot; commands.
+</para></listitem>
+
+<listitem><para>
+The &quot;startup&quot; file must be created or copied.
+</para></listitem>
+
+<listitem><para>
+The CMDS and SYS directories and the files they contain must be
+copied.
+</para></listitem>
+</orderedlist>
+
+Steps 2 through 4 may be performed manually, or automatically by any
+of the following methods:
+<orderedlist  numeration="arabic">
+<listitem><para>
+By a shell procedure file created by the user.
+</para></listitem>
+
+<listitem><para>
+By a shell procedure file generated by the &quot;dsave&quot; command
+</para></listitem>
+
+<listitem><para>
+By the &quot;backup&quot; command
+</para></listitem>
+</orderedlist>
+</para>
+</section>
+</chapter>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/chap7.chapter	Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,129 @@
+<chapter>
+<title>System Command Descriptions</title>
+<para>
+This section contains descriptions for each of the command
+programs that are supplied with OS-9. These programs are usually
+called using the shell, but can be called from most other OS-9
+family programs such as BASIC09, Interactive Debugger, Macro Text
+Editor, etc. Unless otherwise noted, these programs are designed to
+run as individual processes.
+</para>
+<para>
+<emphasis>WARNING</emphasis>
+- ALTHOUGH MANY OS-9 COMMANDS MAY WORK ON LEVEL ONE OR LEVEL
+TWO SYSTEMS, THERE ARE DIFFERENCES. TAKE CARE NOT TO MIX COMMAND
+FILES FROM LEVEL ONE SYSTEMS ON LEVEL TWO, OR THE REVERSE.
+</para>
+<section>
+<title>Formal Syntax Notation</title>
+<para>
+Each command description includes a syntax definition which
+describes how the  command sentence can be constructed. These are
+symbolic descriptions that use the following notation:
+</para>
+
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="1in">
+<colspec colwidth="4in">
+<tbody>
+<row>
+    <entry>[ ]</entry>
+    <entry>= Brackets indicate that the enclosed item(s) are optional.</entry>
+</row>
+<row>
+    <entry>&repeatst; &repeaten;</entry>
+    <entry>= Braces indicate that the enclosed item(s) can be
+    either omitted or repeated multiple times.</entry>
+</row>
+<row>
+    <entry>&replstart;path&replend;</entry>
+    <entry>= Represents any legal pathlist.</entry>
+</row>
+<row>
+    <entry>&replstart;devname&replend;</entry>
+    <entry>= Represents any legal device name.</entry>
+</row>
+<row>
+    <entry>&replstart;nodname&replend;</entry>
+    <entry>= Represents any legal memory module name.</entry>
+</row>
+<row>
+    <entry>&replstart;procID&replend;</entry>
+    <entry>= Represents a process number.</entry>
+</row>
+<row>
+    <entry>&replstart;opts&replend;</entry>
+    <entry>= One or more options defined in the command description.</entry>
+</row>
+<row>
+    <entry>&replstart;arglist&replend;</entry>
+    <entry>= a list of arguments (parameters).</entry>
+</row>
+<row>
+    <entry>&replstart;text&replend;</entry>
+    <entry>= a character string terminated by end-of-line.</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>
+NOTE: The syntax of the commands given does not include the shell's
+built in options such as alternate memory size, I/O redirection,
+etc. This is because the shell will filter its options out of the
+command line before it is passed to the program being called.
+</para>
+</section>
+
+<section>
+<title>Commands</title>
+
+&attrref;
+&backupref;
+&binexref;
+&buildref;
+&chdref;
+&cmpref;
+&cobblerref;
+&copyref;
+&dateref;
+&dcheckref;
+&delref;
+&deldirref;
+&dirref;
+&displayref;
+&dsaveref;
+&dumpref;
+&echoref;
+&exref;
+&formatref;
+&freeref;
+&identref;
+&killref;
+&linkref;
+&listref;
+&loadref;
+&loginref;
+&makdirref;
+&mdirref;
+&mergeref;
+&mfreeref;
+&os9genref;
+&printerrref;
+&procsref;
+&pwdref;
+&renameref;
+&saveref;
+&setimeref;
+&setprref;
+&shellref;
+&sleepref;
+&teeref;
+&tmoderef;
+&tsmonref;
+&unlinkref;
+&verifyref;
+&xmoderef;
+</section>
+</chapter>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/display.appendix	Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,661 @@
+<appendix>
+<title>Display System Functions</title>
+
+<section>
+<title>The Video Display</title>
+<para>
+Dragon Data OS-9 allows  the video display to be used in
+alphanumeric, semigraphic, and graphics modes. There are many
+built-in functions to control the display, which are activated by
+used of various ASCII control character. Thus, these functions are
+available for use by software written in any language using standard
+output statements (such as &quot;PRINT&quot; in BASIC). The Dragon's Basic09
+language has a Graphics Interface Module that can automatically
+generate these codes using Basic09 RUN statements.
+</para>
+<para>
+The display system has two display modes: Alphanumeric
+(&quot;Alpha&quot;) mode and Graphics mode. The Alphanumeric mode also
+includes &quot;semigraphic&quot; box-graphics. The Dragon Computer's display
+system uses a separate - memory area for each display mode so
+operations on the Alpha display do not affect the Graphics display,
+and visa-versa. Either display can be selected under software
+control.
+</para>
+<para>
+8-bit characters sent to the display system are interpreted
+according to their numerical value, as shown in the chart below.
+</para>
+
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="2in">
+<colspec colwidth="3in">
+<thead>
+<row>
+<entry>Character Range (Hex)</entry>
+<entry>Mode/Used For</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>00 - 0E</entry>
+<entry>Alpha Mode - cursor and screen control</entry>
+</row>
+<row>
+<entry>0F - 1B</entry>
+<entry>Graphics Mode - drawing and screen control</entry>
+</row>
+<row>
+<entry>1C - 20</entry>
+<entry>Not used</entry>
+</row>
+<row>
+<entry>20 - SF</entry>
+<entry>Alpha Mode - upper case characters</entry>
+</row>
+<row>
+<entry>60 - 7F</entry>
+<entry>Alpha Mode - lower case characters</entry>
+</row>
+<row>
+<entry>80 - FF</entry>
+<entry>Alpha Mode - Semigraphic patterns</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+
+<para>
+The graphics and alphanumeric functions are handled by the OS-9
+device driver module called &quot;CCIO&quot;.
+</para>
+</section>
+<section>
+<title>Alpha Mode Display</title>
+<para>
+This is the &quot;standard&quot; operational mode. It is used to display
+alphanumeric characters and semigraphic box graphics, and simulates
+the operation of a typical computer terminal with functions for
+scrolling, cursor positioning, clear screen, line delete, etc.
+</para>
+<para>
+Each 8-bit character is assumed to be an ASCII character and is
+displayed if its high order bit (sign bit) is cleared. Lower case
+letters are displayed in reverse video. If the high order bit of
+the character is set it is assumed to be a &quot;Semigraphic 6&quot; graphics
+box. See the Dragon manual for an explanation of semigraphics
+functions.
+</para>
+
+<table frame="none">
+<title>Alpha Mode Command Codes</title>
+<tgroup cols="2">
+<colspec colwidth="0.6in">
+<colspec colwidth="4in">
+<thead>
+<row rowsep=1>
+<entry>Control Code</entry>
+<entry>Name/Function</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>01</entry>
+<entry>HOME - return cursor to upper left hand corner of screen</entry>
+</row>
+<row>
+<entry>02</entry>
+<entry>CURSOR XY - move cursor to character X of line Y. The
+binary value minus 32 of the two characters following 
+the control character are used as the X and Y 
+coordinates. For example, to position the cursor at character 5 of line 10,
+you must give X=37 and Y42</entry>
+</row>
+<row>
+<entry>03</entry>
+<entry>ERASE LINE - erases all characters on the cursor's line.</entry>
+</row>
+<row>
+<entry>06</entry>
+<entry>CURSOR RIGHT - move cursor right one character position</entry>
+</row>
+<row>
+<entry>08</entry>
+<entry>CURSOR LEFT - move cursor left one character position</entry>
+</row>
+<row>
+<entry>09</entry>
+<entry>CURSOR UP - move cursor up one line</entry>
+</row>
+<row>
+<entry>10</entry>
+<entry>CURSOR DOWN (linefeed) move cursor down one line</entry>
+</row>
+<row>
+<entry>12</entry>
+<entry>CLEAR SCREEN - erase entire screen and home cursor</entry>
+</row>
+<row>
+<entry>13</entry>
+<entry>RETURN - return cursor to leftmost character of line</entry>
+</row>
+<row>
+
+<entry>14</entry>
+<entry>DISPLAY ALPHA - switch screen from graphic mode to alpha
+numeric mode</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+</section>
+<section>
+<title>Graphics Mode Display</title>
+<para>
+This mode is used to display high-resolution 2- or 4-color
+graphics, and it includes commands to: set color; plot and erase
+individual points; draw and erase lines; position the graphics
+cursor; and draw circles.
+</para>
+<para>
+The DISPLAY GRAPHICS command must be executed before any other
+graphics mode command is used. It causes the graphics screen to be
+displayed and sets a current display format and color. The Li.u.t
+time the DISPLAY GRAPHICS command is given, a 6144 byte display
+memory is allocated by OS-9, so there must be at least this much
+continuous free memory available (the OS-9 &quot;MFREE&quot; command can be
+used to check free memory). This memory is retained until the END
+GRAPHICS command is given, even if the program that initiated
+Graphics mode finishes, so it important that the END GRAPHICS
+command be used to give up the display memory when Graphics mode is
+no longer needed.
+</para>
+<para>
+Graphics mode supports two basic formats: Two-Color which has
+256 horizontal by 192 vertical points (G6R mode); and Four Color
+which has 128 horizontal by 192 vertical points (G6C mode). Two
+color sets are available in either mode. Regardless of the
+resolution of the format selected, all Graphics mode commands use a
+256 by 192 point coordinate system. The X and Y coordinates are
+always positive numbers which assume that point 0,0 is the lower
+lefthand corner of the screen.
+</para>
+<para>
+An invisible Graphics Cursor is used by many command to reduce
+the amount of output required to generate graphics. This cursor can
+be explicitly set to any point using the SET GRAPHICS CURSOR
+command. Also, all other commands that include X,Y coordinates
+(such as SET POINT) move the graphics cursor to the specified
+position.
+</para>
+<table frame="none">
+<title>Graphics Mode Selection Codes</title>
+<tgroup cols="2">
+<colspec colwidth="1in">
+<colspec colwidth="3in">
+<thead>
+<row rowsep=1>
+<entry>Code</entry>
+<entry>Format</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>00</entry>
+<entry>256 x 192 two-color graphics</entry>
+</row>
+<row>
+<entry>01</entry>
+<entry>128 x 192 four-color graphics</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+
+<table frame="none">
+ <title>Color Set and Current Foreground Color Selection Codes</title>
+<tgroup cols="6">
+<colspec colname="c1" colwidth="0.5in">
+<colspec colname="c2" colwidth="0.4in">
+<colspec colname="c3" colwidth="1in">
+<colspec colname="c4" colwidth="1in">
+<colspec colname="c5" colwidth="1in">
+<colspec colname="c6" colwidth="1in">
+<thead>
+<row>
+<entry align="center" namest="c3" nameend="c4">Two Color Format</entry>
+<entry align="center" namest="c5" nameend="c6">Four Color Format</entry>
+</row>
+<row>
+<entry align="center" namest="c2">Char</entry>
+<entry namest="c3">Background</entry>
+<entry namest="c4">Foreground</entry>
+<entry namest="c5">Background</entry>
+<entry namest="c6">Foreground</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry morerows=3 valign=middle>Color Set 1</entry>
+<entry align="center">00</entry>
+<entry align="left">Black</entry>
+<entry align="left">Black</entry>
+<entry align="left">Green</entry>
+<entry align="left">Green</entry>
+</row>
+<row>
+<entry align="center">01</entry>
+<entry align="left">Black</entry>
+<entry align="left">Green</entry>
+<entry align="left">Green</entry>
+<entry align="left">Yellow</entry>
+</row>
+<row>
+<entry align="center">02</entry>
+<entry namest="c5" align="left">Green</entry>
+<entry align="left">Blue</entry>
+</row>
+<row rowsep=1>
+<entry align="center">03</entry>
+<entry namest="c5" align="left">Green</entry>
+<entry align="left">Red</entry>
+</row>
+<row>
+<entry morerows=3 valign=middle>Color Set 2</entry>
+<entry align="center">04</entry>
+<entry align="left">Black</entry>
+<entry align="left">Black</entry>
+<entry align="left">Buff</entry>
+<entry align="left">Buff</entry>
+</row>
+<row>
+<entry align="center" namest="c2">05</entry>
+<entry align="left">Black</entry>
+<entry align="left">Buff</entry>
+<entry align="left">Buff</entry>
+<entry align="left">Cyan</entry>
+</row>
+<row>
+<entry align="center" namest="c2">06</entry>
+<entry namest="c5" align="left">Buff</entry>
+<entry align="left">Magenta</entry>
+</row>
+<row rowsep=1>
+<entry align="center" namest="c2">07</entry>
+<entry namest="c5" align="left">Buff</entry>
+<entry align="left">Orange</entry>
+</row>
+<row>
+<entry morerows=3 valign=middle>Color Set 3*</entry>
+<entry align="center">08</entry>
+<entry namest="c5" align="left">Black</entry>
+<entry align="left">Black</entry>
+</row>
+<row>
+<entry align="center" namest="c2">09</entry>
+<entry namest="c5" align="left">Black</entry>
+<entry align="left">Dark Green</entry>
+</row>
+<row>
+<entry align="center" namest="c2">10</entry>
+<entry namest="c5" align="left">Black</entry>
+<entry align="left">Med. Green</entry>
+</row>
+<row rowsep=1>
+<entry align="center" namest="c2">11</entry>
+<entry namest="c5" align="left">Black</entry>
+<entry align="left">Light Green</entry>
+</row>
+<row>
+<entry morerows=3 valign=middle>Color Set 4*</entry>
+<entry align="center">12</entry>
+<entry namest="c5" align="left">Black</entry>
+<entry align="left">Black</entry>
+</row>
+<row>
+<entry align="center" namest="c2">13</entry>
+<entry namest="c5" align="left">Black</entry>
+<entry align="left">Green</entry>
+</row>
+<row>
+<entry align="center" namest="c2">14</entry>
+<entry namest="c5" align="left">Black</entry>
+<entry align="left">Red</entry>
+</row>
+<row>
+<entry align="center" namest="c2">15</entry>
+<entry namest="c5" align="left">Black</entry>
+<entry align="left">Buff</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+<para>
+* Color sets 3 and 4 not available on PAL video system (European)
+models. These color sets work only with NTSC (U.S., Canada, Japan)
+models.
+</para>
+
+<table frame="none">
+ <title>Graphics Mode Control Commands</title>
+<tgroup cols="2">
+<colspec colname="c1" colwidth="0.8in">
+<colspec colname="c1" colwidth="4in">
+<thead>
+<row rowsep="1">
+<entry>Control Code</entry>
+<entry>Name/Function</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>15</entry>
+<entry>DISPLAY GRAPHICS - switches screen to graphics mode.
+This command must be given before any other
+graphics commands are used. The first time this command
+is given, a 6K byte display buffer is assigned. If 6K of
+contiguous memory is not available an error is returned.
+This command is followed by two characters which specify
+the graphics mode and current color/color set, respectively.</entry>
+</row>
+<row>
+<entry>16</entry>
+<entry>PRESET SCREEN - presets entire screen to color code
+passed in next character.</entry>
+</row>
+<row>
+<entry>17</entry>
+<entry>SET COLOR - selects foreground color (and color set)
+passed in next character, but does not change graphics
+mode.</entry>
+</row>
+<row>
+<entry>18</entry>
+<entry>QUIT GRAPHICS - disables graphics mode and returns the
+6K byte graphics memory area to OS-9 for other use, and
+switches to alpha mode.</entry>
+</row>
+<row>
+<entry>19</entry>
+<entry>ERASE GRAPHICS - erases all points to background color
+and homes graphics cursor to the desired position.</entry>
+</row>
+<row>
+<entry>20</entry>
+<entry>HOME GRAPHICS CURSOR - moves graphics cursor to coordinates
+0,0 (lower left hand corner).</entry>
+</row>
+<row>
+<entry>21</entry>
+<entry>SET GRAPHICS CURSOR - moves graphics cursor to given
+coordinates X,Y. The binary value of the two characters that immediately
+follow are used as the X and Y values, respectively.</entry>
+</row>
+<row>
+<entry>22</entry>
+<entry>DRAW LINE - draws a line of the current foreground
+color from the current graphics cursor position to the
+given X,Y coordinates. The binary value of the two
+characters that immediately follow are used as the X
+and Y values, respectively. The graphics cursor is
+moved to the end point of the line.</entry>
+</row>
+<row>
+<entry>23</entry>
+<entry>ERASE LINE - same as DRAW LINE except the line is
+&quot;drawn&quot; in the current background color, thus erasing
+the line.</entry>
+</row>
+<row>
+<entry>24</entry>
+<entry>SET POINT - sets the pixel-at point X,Y to the current
+foreground color. The binary value of the two
+characters that immediately follow are used as the x
+and Y values, respectively. The graphics cursor is
+moved to the point Set.</entry>
+</row>
+<row>
+<entry>25</entry>
+<entry>ERASE POINT - same as DRAW POINT except the point is
+&quot;drawn&quot; in the current background color, thus erasing
+the point.</entry>
+</row>
+<row>
+<entry>26</entry>
+<entry>DRAW CIRCLE - draws a circle of the current foreground
+color with its center at the current graphics cursor
+position using a radius R which is obtained using the
+binary value of the next character. The graphics
+cursor position is not affected by this command.</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+</section>
+<section>
+<title>Get Status Commands</title>
+<para>
+The Dragon Computer I/O driver includes OS-9 Get Status
+commands that return the display status and joystick values,
+respectively. These are accessable via the Basic09 Graphics
+Interface Module, or by the assembly language  system calls listed
+below:
+</para>
+<para>
+GET DISPLAY STATUS:
+</para>
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="2in">
+<colspec colwidth="3in">
+<tbody>
+<row>
+<entry>Calling Format</entry>
+<entry><literallayout class="Monospaced">lda #1        (path number)
+ldb #SS.DStat (Getstat code $12)
+os9 I$GSTT     call OS-9</literallayout></entry>
+</row>
+<row>
+<entry>Passed</entry>
+<entry>nothing</entry>
+</row>
+<row>
+<entry>Returns</entry>
+<entry><literallayout>X = address of graphics display memory
+Y = graphics cursor address x=MSB y =LSB
+A = color code of pixel at cursor address</literallayout></entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+<para>
+GET JOYSTICK VALUES:
+</para>
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="2in">
+<colspec colwidth="3in">
+<tbody>
+<row>
+<entry>Calling Format</entry>
+<entry><literallayout class="Monospaced">lda #1        (path number)
+ldb #SS.Joy   (Getstat code $13)
+os9 I$GSTT     call OS-9</literallayout></entry>
+</row>
+<row>
+<entry>Passed</entry>
+<entry>X = 0 for right joystick; 1 for left joystick</entry>
+</row>
+<row>
+<entry>Returns</entry>
+<entry><literallayout>X = selected joystick x value (0-63)
+Y = selected joystick y value (0-63)
+A = $FF if fire button on; $00 if off</literallayout></entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<table frame="none">
+<title>Display Control Codes Condensed Summary</title>
+<tgroup cols="4">
+<colspec colwidth="0.9in">
+<colspec colwidth="0.9in">
+<colspec colwidth="0.9in">
+<colspec colwidth="2.5in">
+<thead>
+<row rowsep="1">
+<entry>1st Byte</entry>
+<entry>2nd Byte</entry>
+<entry>3rd Byte</entry>
+<entry>Function</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>00</entry>
+<entry></entry>
+<entry></entry>
+<entry>Null</entry>
+</row>
+<row>
+<entry>01</entry>
+<entry></entry>
+<entry></entry>
+<entry>Home Alpha Cursor</entry>
+</row>
+<row>
+<entry>02</entry>
+<entry>Column+32</entry>
+<entry>Row+32</entry>
+<entry>Position Alpha Cursor</entry>
+</row>
+<row>
+<entry>03</entry>
+<entry></entry>
+<entry></entry>
+<entry>Erase Line</entry>
+</row>
+<row>
+<entry>06</entry>
+<entry></entry>
+<entry></entry>
+<entry>Cursor Right</entry>
+</row>
+<row>
+<entry>08</entry>
+<entry></entry>
+<entry></entry>
+<entry>Cursor Left</entry>
+</row>
+<row>
+<entry>09</entry>
+<entry></entry>
+<entry></entry>
+<entry>Cursor Up</entry>
+</row>
+<row>
+<entry>10</entry>
+<entry></entry>
+<entry></entry>
+<entry>Cursor Down</entry>
+</row>
+<row>
+<entry>12</entry>
+<entry></entry>
+<entry></entry>
+<entry>Clear Screen</entry>
+</row>
+<row>
+<entry>13</entry>
+<entry></entry>
+<entry></entry>
+<entry>Carriage Return</entry>
+</row>
+<row>
+<entry>14</entry>
+<entry></entry>
+<entry></entry>
+<entry>Select Alpha Mode</entry>
+</row>
+<row>
+<entry>15</entry>
+<entry>Mode</entry>
+<entry>Color Code</entry>
+<entry>Select Graphics Mode</entry>
+</row>
+<row>
+<entry>16</entry>
+<entry>Color Code</entry>
+<entry></entry>
+<entry>Preset Screen</entry>
+</row>
+<row>
+<entry>17</entry>
+<entry>Color Code</entry>
+<entry></entry>
+<entry>Select Color</entry>
+</row>
+<row>
+<entry>18</entry>
+<entry></entry>
+<entry>Quit Graphics Mode</entry>
+</row>
+<row>
+<entry>19</entry>
+<entry></entry>
+<entry>Erase Screen</entry>
+</row>
+<row>
+<entry>20</entry>
+<entry></entry>
+<entry>Home Graphics Cursor</entry>
+</row>
+<row>
+<entry>21</entry>
+<entry>X Coord</entry>
+<entry>Y Coord</entry>
+<entry>Move Graphics Cursor</entry>
+</row>
+<row>
+<entry>22</entry>
+<entry>X Coord</entry>
+<entry>Y Coord</entry>
+<entry>Draw Line to X/Y</entry>
+</row>
+<row>
+<entry>23</entry>
+<entry>X Coord</entry>
+<entry>Y Coord</entry>
+<entry>Erase Line to X/Y</entry>
+</row>
+<row>
+<entry>24</entry>
+<entry>X Coord</entry>
+<entry>Y Coord</entry>
+<entry>Set Point at X/Y</entry>
+</row>
+<row>
+<entry>25</entry>
+<entry>X Coord</entry>
+<entry>Y Coord</entry>
+<entry>Clear Point at X/Y</entry>
+</row>
+<row>
+<entry>26</entry>
+<entry>Radius</entry>
+<entry></entry>
+<entry>Draw Circle</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+</section>
+</appendix>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/errorcodes.appendix	Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,267 @@
+<appendix>
+<title>OS-9 Error Codes</title>
+<para>
+The error codes are shown in both hexadecimal (first column) and
+decimal (second column). Error codes other than those listed are
+generated by programming languages or user programs.
+</para>
+
+<informaltable frame="none">
+<tgroup cols="3">
+<colspec colwidth="0.6in">
+<colspec colwidth="0.6in">
+<colspec colwidth="3.8in">
+<thead>
+<row>
+<entry rowsep="1">HEX</entry>
+<entry rowsep="1">DEC</entry>
+<entry rowsep="0"></entry>
+</row>
+</thead>
+<tbody>
+<row>
+ <entry>$C8</entry>
+ <entry>200</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 - Number too large or for non-existant path.</entry></row>
+<row>
+ <entry>$CA</entry>
+ <entry>202</entry>
+ <entry>INTERRUPT POLLING TABLE FULL</entry></row>
+<row>
+ <entry>$CB</entry>
+ <entry>203</entry>
+ <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>
+ <entry>DEVICE TABLE FULL - Can't add another device</entry></row>
+<row>
+ <entry>$CD</entry>
+ <entry>205</entry>
+ <entry>ILLEGAL MODULE HEADER - module not loaded because its
+ sync code, header parity, or CRC is incorrect.</entry></row>
+<row>
+ <entry>$CE</entry>
+ <entry>206</entry>
+ <entry>MODULE DIRECTORY FULL - Can't add another module</entry></row>
+<row>
+ <entry>$CF</entry>
+ <entry>207</entry>
+ <entry>MEMORY FULL - Level One: not enough contiquous RAM free.
+ Level Two: process address space full</entry></row>
+<row>
+ <entry>$D0</entry>
+ <entry>208</entry>
+ <entry>ILLEGAL SERVICE REQUEST - System call had an illegal code number.</entry></row>
+<row>
+ <entry>$D1</entry>
+ <entry>209</entry>
+ <entry>MODULE BUSY - non-sharable module is in use by another process.</entry></row>
+<row>
+ <entry>$D2</entry>
+ <entry>210</entry>
+ <entry>BOUNDARY ERROR - Memory allocation or deallocation request not on a page boundary.</entry></row>
+<row>
+ <entry>$D3</entry>
+ <entry>211</entry>
+ <entry>END OF FILE - End of file encountered on read.</entry></row>
+<row>
+ <entry>$D4</entry>
+ <entry>212</entry>
+ <entry>RETURNING NON-ALLOCATED MEMORY - 
+attempted to deallocate memory not previously assigned.</entry></row>
+<row>
+ <entry>$D5</entry>
+ <entry>213</entry>
+ <entry>NON-EXISTING SEGMENT - device has damaged file structure.</entry></row>
+<row>
+ <entry>$D6</entry>
+ <entry>214</entry>
+ <entry>NO PERMISSION - file attributes do not permit access requested.</entry></row>
+<row>
+ <entry>$D7</entry>
+ <entry>215</entry>
+ <entry>BAD PATH NAME - syntax error in pathlist (illegal character, etc.).</entry></row>
+<row>
+ <entry>$D8</entry>
+ <entry>216</entry>
+ <entry>PATH NAME NOT FOUND - can't find pathlist specified.</entry></row>
+<row>
+ <entry>$D9</entry>
+ <entry>217</entry>
+ <entry>SEGMENT LIST FULL - file is too fragmented to be expanded further.</entry></row>
+<row>
+ <entry>$DA</entry>
+ <entry>218</entry>
+ <entry>FILE ALREADY EXISTS - file name already appears in current directory.</entry></row>
+<row>
+ <entry>$DB</entry>
+ <entry>219</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>$DD</entry>
+ <entry>221</entry>
+ <entry>MODULE NOT FOUND - request for link to module not found in directory.</entry></row>
+ <row>
+ <entry>$DE</entry>
+ <entry>222</entry>
+ <entry>SECTOR OUT OF RANGE - device file structure damaged or
+incorrectly formatted.</entry></row>
+<row>
+ <entry>$DF</entry>
+ <entry>223</entry>
+ <entry>SUICIDE ATTEMPT - request to return memory where your stack is located.</entry></row>
+<row>
+ <entry>$E0</entry>
+ <entry>224</entry>
+ <entry>ILLEGAL PROCESS NUMBER - no such process exists.</entry></row>
+<row>
+ <entry>$E2</entry>
+ <entry>226</entry>
+ <entry>NO CHILDREN - can't wait because process has no children.</entry></row>
+<row>
+ <entry>$E3</entry>
+ <entry>227</entry>
+ <entry>ILLEGAL SWI CODE - must be 1 to 3.</entry></row>
+<row>
+ <entry>$E4</entry>
+ <entry>228</entry>
+ <entry>PROCESS ABORTED - process aborted by signal code 2.</entry></row>
+<row>
+ <entry>$E5</entry>
+ <entry>229</entry>
+ <entry>PROCESS TABLE FULL - can't fork now.</entry></row>
+<row>
+ <entry>$E6</entry>
+ <entry>230</entry>
+ <entry>ILLEGAL PARAMETER AREA - high and low bounds passed in fork call are incorrect.</entry></row>
+<row>
+ <entry>$E7</entry>
+ <entry>231</entry>
+ <entry>KNOWN MODULE - for internal use only.</entry></row>
+<row>
+ <entry>$E8</entry>
+ <entry>232</entry>
+ <entry>INCORRECT MODULE CRC - module has bad CRC value.</entry></row>
+<row>
+ <entry>$E9</entry>
+ <entry>233</entry>
+ <entry>SIGNAL ERROR - receiving process has previous
+unprocessed signal pending.</entry></row>
+<row>
+ <entry>$EA</entry>
+ <entry>234</entry>
+ <entry>NON-EXISTENT MODULE - unable to locate module.</entry></row>
+<row>
+ <entry>$EB</entry>
+ <entry>235</entry>
+ <entry>BAD NAME - illegal name syntax</entry></row>
+<row>
+ <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 - no free system RAM available at this time</entry></row>
+<row>
+ <entry>$EE</entry>
+ <entry>238</entry>
+ <entry>UNKNOWN PROCESS ID - incorrect process ID number</entry></row>
+<row>
+ <entry>$EF</entry>
+ <entry>239</entry>
+ <entry>NO TASK NUMBER AVAILABLE - all task numbers in use</entry></row>
+</tbody>
+</tgroup>
+</informaltable>
+
+
+<section>
+<title>Device Driver Errors</title>
+<para>
+The following error codes are generated by I/O device drivers, and
+are somewhat hardware dependent. Consult manufacturer's hardware
+manual for more details.
+</para>
+
+<informaltable frame="none">
+<tgroup cols="3">
+<colspec colwidth="0.6in">
+<colspec colwidth="0.6in">
+<colspec colwidth="3.8in">
+<tbody>
+<row>
+ <entry>$F0</entry>
+ <entry>240</entry>
+ <entry>UNIT ERROR - device unit does not exist.</entry></row>
+<row>
+ <entry>$F1</entry>
+ <entry>241</entry>
+ <entry>SECTOR ERROR - sector number is out of range.</entry></row>
+<row>
+ <entry>$F2</entry>
+ <entry>242</entry>
+ <entry>WRITE PROTECT - device is write protected.</entry></row>
+<row>
+ <entry>$F3</entry>
+ <entry>243</entry>
+ <entry>CRC ERROR - CRC error on read or write verify.</entry></row>
+<row>
+ <entry>$F4</entry>
+ <entry>244</entry>
+ <entry>READ ERROR - Data transfer error during disk read
+ operation, or SCF (terminal) input buffer overrun.</entry></row>
+<row>
+ <entry>$F5</entry>
+ <entry>245</entry>
+ <entry>WRITE ERROR - hardware error during disk write operation.</entry></row>
+<row>
+ <entry>$F6</entry>
+ <entry>246</entry>
+ <entry>NOT READY - device has "not ready" status.</entry></row>
+<row>
+ <entry>$F7</entry>
+ <entry>247</entry>
+ <entry>SEEK ERROR - physical seek to non-existant sector.</entry></row>
+<row>
+ <entry>$F8</entry>
+ <entry>248</entry>
+ <entry>MEDIA FULL - insufficient free space on media.</entry></row>
+<row>
+ <entry>$F9</entry>
+ <entry>249</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 - non-sharable device is in use</entry></row>
+<row>
+ <entry>$FB</entry>
+ <entry>251</entry>
+ <entry>DISK ID CHANGE - Media was changed with files open</entry></row>
+<row>
+ <entry>$FC</entry>
+ <entry>252</entry>
+ <entry>RECORD IS LOCKED-OUT - Another process is accessing the 
+requested record.</entry></row>
+<row>
+ <entry>$FD</entry>
+ <entry>253</entry>
+ <entry>NON-SHARABLE FILE BUSY - Another process is accessing the
+requested file.</entry></row>
+</tbody>
+</tgroup>
+</informaltable>
+</section>
+</appendix>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/go51.appendix	Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,136 @@
+<appendix>
+<title>GO51...The 51 Column by 24 Line Video Display</title>
+<para>
+An alternative video screen device driver, which provides a 51
+column by 24 line display with upper and lower case character sets,
+can be incorporated into OS-9 with the command:
+<screen>
+GO51
+</screen>
+This command replaces the normal text screen driver with one that
+uses high resolution graphics to &quot;draw&quot; the characters. As there
+are fever pixels (dots) per character in this mode more characters
+can be displayed on the screen, albeit with some loss of character
+definition.
+</para>
+<para>
+Note, however, that the use of a high resolution graphics page
+means that an extra 6K bytes will be needed in this mode. This
+extra memory requirement is not normally a problem but in memory-critical
+applications, such as the C and Pascal compilers, the user
+can simply avoid the use of GO51.
+</para>
+<para>
+This mode of display has a set of <emphasis>escape sequences</emphasis>
+(commands) to
+emulate commercial data terminals. In addition to the video screen
+driver, GO51 provides a new keyboard driver which features auto-repeat.
+The keyboard code allocation is the same as described in
+section 2.4.3 and Appendix D.
+</para>
+<section>
+<title>The GO51 Display Functions</title>
+<para>
+Like the normal 32 by 16 video display functions described in
+Appendix C the 51 by 24 mode provides many built in facilities to
+control the display. These functions are activated by the use of
+the various escape sequences and control characters described below:
+</para>
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="1.5in">
+<colspec colwidth="3.5in">
+<thead>
+<row>
+<entry>Escape Sequence (Hex)</entry>
+<entry>Name/Function</entry>
+</row>
+</thead>
+
+<tbody>
+<row>
+<entry>1B 41 X Y</entry>
+<entry>CURSOR XY - move cursor to column X(0-50)
+and Y(0-23) where X and Y are single byte values.</entry>
+</row>
+<row>
+<entry>1B 42</entry>
+<entry>CLEAR EOL - clear from cursor to the end of
+line. Cursor position remains unchanged.</entry>
+</row>
+<row>
+<entry>1B 43</entry>
+<entry>CURSOR RIGHT - move cursor right by one character position.</entry>
+</row>
+<row>
+<entry>1B 44</entry>
+<entry>CURSOR UP - move cursor up by one line.</entry>
+</row>
+<row>
+<entry>1B 45</entry>
+<entry>CURSOR DOWN - move cursor down one line.</entry>
+</row>
+<row>
+<entry>1B 46</entry>
+<entry>REVERSE ON - turn reverse field on.</entry>
+</row>
+<row>
+<entry>1B 47</entry>
+<entry>REVERSE OFF - turn reverse field off.</entry>
+</row>
+<row>
+<entry>1B 48</entry>
+<entry>UNDERLINE ON - turn underline on.</entry>
+</row>
+<row>
+<entry>1B 49</entry>
+<entry>UNDERLINE OFF - turn underline off.</entry>
+</row>
+<row>
+<entry>1B 4A</entry>
+<entry>CLEAR EOS - clear from cursor to end of
+screen. Cursor position remains unchanged.</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+
+
+
+<informaltable frame="none">
+<tgroup cols="2">
+<colspec colwidth="1.5in">
+<colspec colwidth="3.5in">
+<thead>
+<row>
+<entry>Control Character (Hex)</entry>
+<entry>Name/Function</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>07</entry>
+<entry>BELL - generates a short audible tone.</entry>
+</row>
+<row>
+<entry>08</entry>
+<entry>BACKSPACE (CURSOR LEFT) - moves cursor left one character position.</entry>
+</row>
+<row>
+<entry>0A</entry>
+<entry>LINE FEED - move cursor down by one line.</entry>
+</row>
+<row>
+<entry>0B</entry>
+<entry>CURSOR HOME - move cursor to home position 0,0 (top left).</entry>
+</row>
+<row>
+<entry>0C</entry>
+<entry>CLEAR SCREEN - clears the screen and home cursor.</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+</section>
+</appendix>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/nitros9guide/keys.appendix	Sun Jul 07 09:54:04 2002 +0000
@@ -0,0 +1,36 @@
+<appendix>
+<title>Key Definitions With Hexadecimal Values</title>
+<literallayout class="Monospaced">
+NORM  SHFT   CTRL     NORM  SHFT   CTRL     NORM  SHFT   CTRL
+----  ----  ------    ----  ----  ------    ----  ----  ------
+0 30  0 30      --    @ 40  ' 60  NUL 00    P 50  p 70  DLE 10
+1 31  1 21  |   7C    A 41  a 61  SOH 01    Q 51  q 71  DC1 11
+2 32  &quot; 22      00    B 42  b 62  STX 02    R 52  r 72  DC2 12
+3 33  # 23  -   7E    C 43  c 63  ETX O3    S 53  s 73  DC3 13
+4 34  $ 24      00    0 44  d 64  EOT 04    T 54  t 74  DC4 14
+5 35  % 25      00    E 45  e 65  END O5    U 55  u 75  NAK 15
+6 36  &amp; 26      00    F 46  f 66  ACK 06    V 56  V 76  SYN 16
+7 37  ' 27      5E    G 47  g 67  BEL O7    W 57  w 77  ETB 17
+8 38  ( 28  [   5B    H 48  h 68  BSP 08    X 58  x 78  CAN 18
+9 39  ) 29  ]   5D    I 49  i 69  HT  O9    Y 59  y 79  EM  19
+: 3A  * 2A      00    J 4A  j 6A  LF  CA    Z 5A  z 7A  SUM 1A
+; 3B  + 2B      00    K 4B  k 6B  VT  OB
+, 2C  &lt; 3C  {   7B    L 4C  l 6C  FF  0C
+- 2D  = 3D  -   5F    M 4D  m 6D  CR  00
+. 2E  &gt; 3E  }   7D    N 4E  n 6E  CO  CE
+/ 2F  ? 3F  \   5C    O 4F  o 6F  CI  OF
+
+
+        FUNCTION KEYS
+
+        NORM  SHFT  CTRL
+        ----  ----  ----
+ BREAK   05    03    1B
+ ENTER   0D    0D    0D
+ SPACE   20    20    20
+  &lt;-     08    18    10
+  -&gt;     09    19    11
+  v      0A    1A    12
+  ^      0C    1C    13
+</literallayout>
+</appendix>