X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=docs%2Frmac.rst;h=0a2e73768365ac08d968fa36619caa83dfb71e7c;hb=ace0b549a94110b69ec61442f825fb421b79799a;hp=78d94f55c410c3ee6f65161e997c0f300e656437;hpb=f733eb133e448318c0f0773882d804eca461f616;p=rmac diff --git a/docs/rmac.rst b/docs/rmac.rst index 78d94f5..0a2e737 100644 --- a/docs/rmac.rst +++ b/docs/rmac.rst @@ -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.