]> Shamusworld >> Repos - rmac/blobdiff - docs/rmac.rst
Fix a small buglet in the last patch. :-)
[rmac] / docs / rmac.rst
index 78d94f55c410c3ee6f65161e997c0f300e656437..0a2e73768365ac08d968fa36619caa83dfb71e7c 100644 (file)
@@ -4,7 +4,7 @@ RMAC
 =====================
 Reference Manual
 ================
-version 2.0.0
+version 2.0.8
 =============
 
 © and notes
@@ -123,6 +123,7 @@ Switch               Description
 -fa                  ALCYON output object file format (implied when **-ps** is enabled).
 -fb                  BSD COFF output object file format.
 -fe                  ELF output object file format.
+-fr                  Absolute address. Source code is required to have one .org statement.
 -fx                  Atari 800 com/exe/xex output object file format.
 -i\ *path*           Set include-file directory search path.
 -l\ *[file[prn]]*    Construct and direct assembly listing to the specified file.
@@ -153,8 +154,8 @@ Switch               Description
 
                       -o\ *file[.o]*       Direct object code output to the specified file.
 +/~oall              Turn all optimisations on/off
-+o\ *0-7*            Enable specific optimisation
-~o\ *0-7*            Disable specific optimisation
++o\ *0-9*            Enable specific optimisation
+~o\ *0-9*            Disable specific optimisation
 
                       `0: Absolute long adddresses to word`
                       
@@ -171,6 +172,10 @@ Switch               Description
                       `6: Convert null short branches to NOP`
 
                       `7: Convert clr.l Dn to moveq #0,Dn`
+
+                      `8: Convert adda.w/l #x,Dy to addq.w/l #x,Dy`
+
+                      `9: Convert adda.w/l #x,Dy to lea x(Dy),Dy`
 -p                   Produce an executable (**.prg**) output file.
 -ps                  Produce an executable (**.prg**) output file with symbols.
 -px                  Produce an executable (**.prg**) output file with extended symbols.
@@ -621,9 +626,15 @@ and may not be used as symbols (e.g. labels, equates, or the names of macros):
       r0 r1 r2 r3 r4 r5 r6 r7
       r8 r9 r10 r11 r12 rl3 r14 ri5
       6502:
-      **TODO**
+      x y a
       DSP56001:
-      **TODO**
+      x x0 x1 x2 y y0 y1 y2
+      a a0 a1 a2 b b0 b1 b2 ab ba
+      mr omr la lc ssh ssl ss
+      n0 n1 n2 n3 n4 n5 n6 n7
+      m0 m1 m2 m3 m4 m5 m6 m7
+      r0 r1 r2 r3 r4 r5 r6 r7
+      
 
 `Constants`_
 ''''''''''''
@@ -994,6 +1005,13 @@ described in the chapter on `6502 Support`_.
 
    Switch to Motorola DSP56001 mode.
 
+**.org** *location* [*X:*/*Y:*/*P:*/*L:*]
+   This directive sets the value of the location counter (or **pc**) to location, an
+   expression that must be defined and absolute. It is legal to use the directive in
+   the following modes: 6502, Tom, Jerry, OP, 56001 and 680x0 (only with -fr switch).
+   Especially for the 56001 mode the *location* field **must** be prefixed with the
+   intended section (*X:*, *Y:*, *P:* or *L:*).
+   
 **.abs** [*location*]
 
    Start an absolute section, beginning with the specified location (or zero, if
@@ -1894,15 +1912,23 @@ Atari Falcon XBIOS) and *.p56* (binary equivalent of *.lod*)
 `Differences from Motorola's assembler`_
 ''''''''''''''''''''''''''''''''''''''''
 
-- and #xxx,reg alias with andi
-- move/movec/movep/movem alias
-- local labels
-- macros
-- macros + local labels
-- x: x:r r:y x:y rigidness
-- no dsm support - it sucks
-- in l: dc cannot be 12 digits, split them in two and in the same line, separated by :
-- Rigid syntax - no reordering allowed
+- Motorola's assembler aliases **and #xxx,reg** with **andi #xxx,reg** and can
+  distinguish between the two. rmac needs the user to be explicit and will
+  generate an error if the programmer tries to use syntax from one instruction
+  to the other.
+- Similarly Motorola's assembler can alias **move** with **movec**, **movep** 
+  and **movem**. rmac also not accept such aliasing and generate an error.
+- Motorola's assembler uses the underscore character (*_*) to define local
+  labels. In order for rmac to maintain a uniform syntax across all platforms,
+  such labels will not be treated as local.
+- Macros syntax is different from Motorola's assembler. This includes local
+  labels inside macros. The user is encouraged to study the `Macros`_ section
+  and compare syntactical differences.
+- Motorola's assembler allows reordering of addressing modes **x:**, **x:r**,
+  **r:y**, **x:y**. rmac will only accept syntax as is defined on the reference
+  manual.
+- In **L:** section a dc value cannot be 12 hex digits like Motorola's assmebler.
+  Instead, the value needs to be split into two parts separated by **:**.
 
 `6502 Support`_
 ===============
@@ -1954,7 +1980,7 @@ y,\ *expr*     indexed Y
    This directive leaves the 6502 segment and returns to the 68000's text segment.
    68000 instructions may be assembled as normal.
 **.org** *location*
-   This directive is only legal in the 6502 section. It sets the value of the location
+   This directive sets the value of the location
    counter (or **pc**) to location, an expression that must be defined, absolute, and
    less than $10000.
 
@@ -2072,10 +2098,6 @@ order, along with a short description of what may have caused the problem.
 
     You tried to use ``.init`` in the BSS or ABS section.
 
-**.org permitted only in .6502 section**
-
-    You tried to use ``.org`` in a 68000 section.
-
 **Cannot create:** *filename*
 
     The assembler could not create the indicated filename.