X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=docs%2Frmac.rst;h=a562e85ff139a8fb2efaaf5b4db69380de8a313b;hp=36dc5e0ade2a63e047efd01898483c644560dfe0;hb=HEAD;hpb=526716329c31d18f0ecc0e23698fa6381628409c diff --git a/docs/rmac.rst b/docs/rmac.rst index 36dc5e0..0c7c5ff 100644 --- a/docs/rmac.rst +++ b/docs/rmac.rst @@ -11,18 +11,16 @@ version 2.0.23 =========== *NOTE: Every effort has been made to ensure the accuracy and robustness of this -manual and the associated software. However, because Reboot is constantly improving -and updating its computer software, it is unable to guarantee +manual and the associated software. However, the authors are constantly improving +and updating its computer software, we is unable to guarantee the accuracy of printed or duplicated material after the date of publication and disclaims liability for changes, errors or omissions.* -*Copyright © 2011-2020, Reboot* +*Copyright © 2011-2022, the rmac authors* *All rights reserved.* -*Reboot Document number F00000K-001 Rev. A.* - Contents ======== @@ -38,7 +36,7 @@ runs on the any POSIX compatible platform and the Atari ST. It was initially wri at Atari Corporation by programmers who needed a high performance assembler for their work. Then, more than 20 years later, because there was still a need for such an assembler and what was available wasn't up to expectations, Subqmod -and eventually Reboot continued work on the freely released source, adding Jaguar +and eventually the rmac authors continued work on the freely released source, adding Jaguar extensions and fixing bugs. Over time the assembler has been extended by adding support for Motorola's 68020/30/40/60, 68881/2, DSP56001 CPUs as well as Atari's Object Processor (OP) found on the Atari Jaguar. @@ -122,6 +120,7 @@ Switch Description -e\ *[file[.err]]* Direct error messages to the specified file. -fa ALCYON output object file format (implied when **-ps** is enabled). -fb BSD COFF output object file format. +-fb Commodore 64 PRG 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. @@ -158,11 +157,11 @@ Switch Description +o\ *0-30*/*p* Enable specific optimisation ~o\ *0-30*/*p* Disable specific optimisation - `0: Absolute long adddresses to word (on by default)` + `0: Absolute long adddresses to word` - `1: move.l #x,Dn/An to moveq (on by default)` + `1: move.l #x,Dn/An to moveq` - `2: Word branches to short (on by default)` + `2: Word branches to short` `3: Outer displacement 0(An) to (An)` @@ -182,7 +181,7 @@ Switch Description `11: 56001 Auto convert short addressing mode to long (default: on)` - `o30: Enforce PC relative (alternative name: op)` + `30: Enforce PC relative (alternative name: op)` -p Produce an executable (**.prg**) output file. -ps Produce an executable (**.prg**) output file with symbols. @@ -652,7 +651,7 @@ and may not be used as symbols (e.g. labels, equates, or the names of macros): a0 a1 a2 a3 a4 a5 a6 a7 Tom/Jerry: r0 r1 r2 r3 r4 r5 r6 r7 - r8 r9 r10 r11 r12 rl3 r14 r15 + r8 r9 r10 r11 r12 r13 r14 r15 6502: x y a DSP56001: @@ -1037,7 +1036,14 @@ Directives relating to the 6502 are described in the chapter on `6502 Support`_. Therefore, to align GPU/DSP code, align the current section before and after the GPU/DSP code. - **.assert** *expression* [,\ *expression*...] +**.align** *expression* + + A generalised version of the above directives, this will align the program + counter to the boundary of the specified value. Note that there is not much + error checking happening (only values 0 and 1 are rejected). Also note that + in DSP56001 mode the align value is assumed to be in DSP words, i.e. 24 bits. + +**.assert** *expression* [,\ *expression*...] Assert that the conditions are true (non-zero). If any of the comma-seperated expressions evaluates to zero an assembler warning is issued. For example: @@ -2071,6 +2077,9 @@ As the 6502 object code is not linkable (currently there is no linker) external references may not be made. (Nevertheless, RMAC may reasonably be used for large assemblies because of its blinding speed.) +Currently there is no support for undocumented opcodes. This will be addressed +in a future release. + `6502 Addressing Modes`_ '''''''''''''''''''''''' All standard 6502 addressing modes are supported, with the exception of the @@ -2147,6 +2156,8 @@ the *.exe* format consists of chunks of this format (one after the other): 04-05 End Address. The last byte to load for this segment 06-.. The actual segment data to load (End Address-Start Address + 1 bytes) +In addition there is the standard output format for Commodore 64 binaries (.PRG). + `Error Messages`_ =================