Short: PhxAss V4.33 68xxx Macro Assembler Author: frank@phoenix.owl.de (Frank Wille) Uploader: frank@phoenix.owl.de Type: dev/asm Replaces: dev/asm/PhxAss432* Distribution: No CD Version: 4.33 Requires: OS2.04 PhxAss V4.33 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, 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.32 (last Aminet release): Fixed Bugs: o Negation of floating point functions was impossible (Example: -sin(x)). o Infinite loop on unknown section type or BSS_F. o "section blah,code,chip" and "section blah,code,fast" were coalesced by PhxAss by using the MemFlags of the first definition. They're differentiated now. o __RS got the value of the last RS-offset instead of the RS-counter. o Crash on generation of an absolute file by using the FILE directive. The bug existed since the implementation of buffered I/O routines in v4.31. o Setting new optimization flags in source text by using OPT, only caused an addition of the specified flags instead of a complete redefinition. o There were still some problems with CNOP, where a short-branch over a CNOP could get out of range in some situations. o Empty sections, which were referenced by code of another section, are no longer deleted. Instead a section with size 0 will be created in the object file or the executable. o According to Motorola's 6888x User's Manual, only .b, .w, .l and .s are allowed as an extension for FMOVE.? Dm,FPn and FMOVE.? FPm,Dn. o IFD/IFND didn't work if the symbol has a value of zero. o If DS does an automatic alignment, a label in the same line was not affected. o The bitfield instructions BFxxx {x:y}, caused a syntax error, when the addressing mode was absolute short/long. New Features: o New, bigger hash tables for symbols and mnemonics shorten the compilation time by approx. 10-30%. The size of those hash tables may be modified by GLOBHASHTAB/K/N, LOCHASHTAB/K/N and MNEMOHASHTAB/K/N. o The new SET symbol CARG can select a specific macro parameter by its value. \. selects the macro parameter with the number of CARG. A post incrementation and decrementation of CARG is supplied by \+ and \- . o __CPU contains the current CPU type, selected by MACHINE. __FPU contains the current FPU id., selected by MACHINE and FPU. __MMU shows, whether PMMU code generation is allowed. o The command line parameter TO allows a directory as destination. An object file with the name of the source text and ".o" extension will be created. o New command line parameter SHOWOPT/S enables listing of all optimized source lines together with the number of bytes gained. o A0 and A1 are additionally allowed for small data base register. o The small data base register may be changed by NEAR An multiple times in a source text. o Macro parameter \0 (extension) may be used in strings too. o Implemented FEQUR directive (EQUR for FPU registers). o <...> can be used in macros to indicate an indivisible term. Examples: or <"Test",0>. o All undefined XDEF symbols will be listed when assembly has finished.