Short: PhxAss V4.37 68xxx Macro Assembler Author: frank@phoenix.owl.de (Frank Wille) Uploader: frank@phoenix.owl.de Type: dev/asm Replaces: dev/asm/PhxAss436* Version: 4.37 Requires: OS2.04 PhxAss V4.37 is a highly optimizing macro assembler for Motorola's 680x0 CPUs, 6888x FPUs and 68851 MMU (of course, the 030, 040 and 060 MMUs are also supported). It requires OS2.04 (V37) and 1 MB RAM as minimum. Most important features: o PhxAss is FREEWARE. o Symbolic and Source Level Debugging. Possibility to enable Source Level Debugging for high level languages too. o Automatic generation of executables (if possible). o Creates relocatable Amiga-DOS objects or absolute code (written into a file (raw or Motorola S-Format), into memory or directly onto disk). o Small Code and Small Data support (also support for __MERGED sections). o Listing file, Cross Reference Listing, Equates file. o Complete floating point support: You can use complex floating point expressions, including float functions (sine, logarithm, square root, power, etc.), everywhere in your source, e.g. defining float EQUates or SETs. o Switches for ten different optimizations. o Locale symbols (xxx$ and .xxx type). o Up to 36 macro parameters. o Support for Motorola's old and new operand style (even in 68000 mode). o locale.library usage (english, german, swedish, norwegian, italian, danish, dutch, hungarian and french ). o Nearly all directives of the most popular assemblers like Seka, DevPac or AS (Aztec) are supported. Example: INCBIN, INCDIR, CODE_C, REPT, RS, RSRESET, EQUR, REG, OFFSET, XDEF, XREF, PUBLIC, OUTPUT ... o PhxAss is able to stay resident in memory. You will find two different versions of PhxAss in this distribution: 1. PhxAss: The standard 680x0,FPU,MMU macro assembler. 2. GigaPhxAss: Identical to PhxAss, but source codes are not limited to 65535 lines. Quite useful for assembling huge Reassembler outputs. CHANGES SINCE PHXASS V4.36 (last Aminet release): Fixed Bugs: o Optimization of CMPI.L #0,d(PC) into TST.L d(PC) generated a wrong displacement. o Sporadic syntax errors on floating point expressions with exponent. o Crashes after "word at odd address" in some situations. o \+, \- and \. didn't work in strings. o Severe problems with the EQU directive, when assigning an address or a distance from addresses from another section. In the first case wrong relocation information was written to the output file and in the second case the distance could get a wrong value. Example: code sym1 equ sym2 data sym2: dc.l 0 o SHOWOPT always displayed "-56 bytes optimized" when optimizations in macros took place. New Features: o By using (s)pecial optimization, unnecessary branches like b label label: can be deleted. o PhxAss is a bit more reassembler friendly now. ADD/SUB #x,Dn will no longer be converted into ADDI/SUBI #x,Dn. o ADDI #0 wille also be optimized to TST (like SUBI #0 and CMPI #0). o New directive SHOWOFFSET displays the current section offset via stdout (console). o Source files which are completely empty, are allowed. PhxAss will generate an an object with a code section containing 0 bytes. o CMPA #0,An is optimized into TST An, (n)ormal optimization and 020 code generation are enabled. o Some "68 Out of range" errors converted into "97 Immediate operand size error". o New directives ENDASM/ASM to comment out multiple lines of a source text (comparable with IF 0/ENDIF). o INITNEAR generates a single LEA base(PC),An if the small data section is identical with the current one. o SF is optimized into CLR.B, if (s)pecial optization is enabled.