changeset 237:dca5938a64aa

Updated documentation to reflect recent udates to LWASM
author lost
date Fri, 14 Aug 2009 04:20:15 +0000
parents a58f49a77441
children a9a14e6b4bc8
files doc/manual.docbook.sgml
diffstat 1 files changed, 129 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/doc/manual.docbook.sgml	Fri Aug 14 03:22:26 2009 +0000
+++ b/doc/manual.docbook.sgml	Fri Aug 14 04:20:15 2009 +0000
@@ -92,6 +92,35 @@
 </section>
 
 <section>
+<title>OS9 Modules</title>
+<para>
+
+Since version 2.5, LWASM is able to generate OS9 modules. The syntax is
+basically the same as for other assemblers.  A module starts with the MOD
+directive and ends with the EMOD directive.  The OS9 directive is provided
+as a shortcut for writing system calls.
+
+</para>
+
+<para>
+
+LWASM does NOT provide an OS9Defs file. You must provide your own. Also note
+that the common practice of using "ifp1" around the inclusion of the OS9Defs
+file is discouraged as it is pointless and can lead to unintentional
+problems and phasing errors.  Because LWASM reads each file exactly once,
+there is no benefit to restricting the inclusion to the first assembly pass.
+
+</para>
+
+<para>
+
+LWLINK does not, yet, have the ability to create OS9 modules from object
+files.
+
+</para>
+</section>
+
+<section>
 <title>Object Files</title>
 <para>LWASM supports generating a proprietary object file format which is
 described in <xref linkend="objchap">. LWLINK is then used to link these
@@ -184,9 +213,10 @@
 <term><option>-f type</option></term>
 <listitem>
 <para>
-Select the output format. Valid values are <option>obj</option> for the object
-file target, <option>decb</option> for the DECB LOADM format, and <option>raw</option>
-for a raw binary.
+Select the output format. Valid values are <option>obj</option> for the
+object file target, <option>decb</option> for the DECB LOADM format,
+<option>os9</option> for creating OS9 modules, and <option>raw</option> for
+a raw binary.
 </para>
 </listitem>
 </varlistentry>
@@ -383,6 +413,14 @@
 a local symbol is restricted to the block of code it is defined within.
 </para>
 
+<para>
+By default, unless assembling to the os9 target, a "$" in the symbol will
+also make it local.  This can be controlled by the "dollarlocal" and
+"nodollarlocal" pragmas.  In the absence of a pragma to the contrary, For
+the os9 target, a "$" in the symbol will not make it considered local while
+for all other targets it will.
+</para>
+
 </section>
 
 <section>
@@ -792,6 +830,60 @@
 </section>
 
 <section>
+<title>OS9 Target Directives</title>
+
+<para>This section includes directives that apply solely to the OS9
+target.</para>
+
+<variablelist>
+
+<varlistentry>
+<term>OS9 <parameter>syscall</parameter></term>
+<listitem>
+<para>
+
+This directive generates a call to the specified system call. <parameter>syscall</parameter> may be an arbitrary expression.
+
+</para>
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>MOD <parameter>size</parameter>,<parameter>name</parameter>,<parameter>type</parameter>,<parameter>flags</parameter>,<parameter>execoff</parameter>,<parameter>datasize</parameter></term>
+<listitem>
+<para>
+
+This tells LWASM that the beginning of the actual module is here. It will
+generate a module header based on the parameters specified.  It will also
+begin calcuating the module CRC.
+
+</para>
+
+<para>
+
+The precise meaning of the various parameters is beyond the scope of this
+document since it is not a tutorial on OS9 module programming.
+
+</para>
+
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>EMOD</term>
+<listitem>
+<para>
+
+This marks the end of a module and causes LWASM to emit the calculated CRC
+for the module.
+
+</para>
+</varlistentry>
+
+</variablelist>
+</section>
+
+<section>
 <title>Miscelaneous Directives</title>
 
 <para>This section includes directives that do not fit into the other
@@ -801,12 +893,18 @@
 
 <varlistentry>
 <term>INCLUDE <parameter>filename</parameter></term>
-<listitem>
+<term>USE <parameter>filename</parameter></term>
+
+<listitem> <para> Include the contents of <parameter>filename</parameter> at
+this point in the assembly as though it were a part of the file currently
+being processed.  Note that if whitespace appears in the name of the file,
+you must enclose <parameter>filename</parameter> in quotes.
+</para>
+
 <para>
-Include the contents of <parameter>filename</parameter> at this point in
-the assembly as though it were a part of the file currently being processed.
-Note that whitespace cannot appear in the name of the file.
-</para>
+Note that the USE variation is provided only for compatibility with other
+assemblers. It is recommended to use the INCLUDE variation.</para>
+
 </listitem>
 </varlistentry>
 
@@ -1217,6 +1315,29 @@
 </para>
 </listitem>
 </varlistentry>
+
+<varlistentry>
+<term>dollarlocal</term>
+<listitem>
+
+<para>When set, a "$" in a symbol makes it local. When not set, "$" does not
+cause a symbol to be local.  It is set by default except when using the OS9
+target.</para>
+
+</listitem>
+</varlistentry>
+
+<varlistentry>
+<term>dollarnotlocal</term>
+<listitem>
+
+<para> This is the same as the "dollarlocal" pragma except its sense is
+reversed.  That is, "dollarlocal" and "nodollarnotlocal" are equivalent and
+"nodollarlocal" and "dollarnotlocal" are equivalent.  </para>
+
+</listitem>
+</varlistentry>
+
 </variablelist>
 
 </section>