History ~~~~~~~ First, thank you for your bug reports, comments and suggestions. Thanks to the following people (in no particular order): (Sorry, if I have forgotten someone and for misspelled names). Gunther Nikl, Veli Nuutimäki, Eric Augustine, Laura Mahony, Marco Nelissen, Jarkko Vatjus-Anttila, Yambo. V2.00 o (An,Xn) is finally allowed in 68000/010 cpu mode. o tst lab was optimized to tst lab(pc) when only 68000/010 cpu was allowed. o Power ('^^') operator o EOR/XOR ('^') operator ended expression o Bitfield offset and width can now be defined after they use. o Various small bugs fixed o xdef and xref caused crash if operands had illegal chars. o Floating point numbers with exponent were incorrect. o FTENTOX was coded badly. o CNUL, DX and MOVE16 caused snma to guru when generating listing file. o When running out of mem, requester allows retry. o Memory usage for the end message (shell interface). o Pre-defined (commandline & optfile) symbols. o Macros with MEXIT and ENDC won't miss the ENDC. o Immediate data range checking can be turned off and it works for symbols which are declared after use. o Pre-assembled include files, which contain symbol and macro definitions of include files (was in V1.99 but I forget to mention it here). See INCLUDE and Arexx/MAKEGB docs. o ADDGB ARexx command lost main source file symbols after one INCLUDE operation. ADDGB is now a bit slower when there are many symbols, but it works as intended. o Bitfield stuff was broken in V1.99. V1.99 o Relative-relative (difference between labels) symbol was set as relative (ext_def) instead of correct ext_abs when xdef'ed. o Arexx startup now toggles snma on/off. o Some bugs from INCBIN removed. o "=" operator didn't produce FALSE (0) if the operands were not equal. o '040 stuff. MOVE16, CINV, CPUSH, MMU & FPU commands. Special regs. o Object file is no longer deleted if snma is trying to produce executable and there are errors and vice-versa. o Floating point equate file equates were screwed up as well as packed type conversion (nobody seems to use this :). o CASESEN=OFF caused xdefs to fail. o local symbols .l and .w were mixed up with long and word suffix, resulting enforcer hit and garbage expression. o Dcb directive works now like ds directive if it has only one parameter. o Lists with two successive commas are now handled (like x,,y). o Searches include files also from the directory where snma was started from (used to search only from where source file is). V1.97 o Case-insensitive symbol names option. o ELSE directive works now. o Some new directives (types.i stuff mainly). o New expression handler (boolean operators). o IFs were tested even if assembly was toggled off. o Some errenous expressions - like (A)A - don't crash anymore. o Multilevel optimizing. o Macro directive allows macro name as parameter. o DX directive (BSS to code or data hunk). o Absolute+Relative bug fixed (if in different hunks). o divu.l works (argh). o LINE DEBUG HUNK o Octal numbers. V1.95 o ERRCOLOR keyword in template. Highlight error char. o AREXX/REMGB without parameters didn't work (+ fixed one mungwall hit from it). o QUIET startup switch disables only startup message. (You can redirect output to the nil: if you don't want any output). o SNMAOPT M controls now movem optimizing.(It was in Q flag). o End message is now little different in shell mode. o OPT directice changed to SNMAOPT to avoid any confusion. o fmovecr generated also extended immediate data. o Output file naming failed with ".s" extension (ooouups). o Behaves little better when running out of memory. o LABEL INCBIN , LABEL get wrong value. (Veli Nuutimäki). o NULL byte in source ends it (to avoid to assemble binaries). o SELFCHECK arexx command. o Fmove.l #imm,fpcr works. o FBxx works now (Eric Augustine). o shift/rotate to generated spurious code. o INDEX register scale was allowed in 68000/010. o CNOP started to act like maniac if PC was more than 2^16. o addq/subq with undefined (at 1st pass) value, caused snma to begin 'flying high again' actions. (Gunther Nikl). o "'" or '"' works now (Gunther Nikl). o HUNK_RELOC32SHORT (implemented as 1015) to executables. o Produces also executables. (Laura Mahoney). o OPT A (address mode optimizing) was implemented as OPT E. o code_f, data_f, bss_f section types were not recognized. o FO, CLRFO, SETFO directives. o RS, RSRESET. RSSET directives (Marco Nelissen). o 'Old syntax' address mode had problems when base displacement had parenthesis around it. o Allows 99 macro parameters plus "" parameters. V1.91 o if any of cmpa operands had symbol which was relative or not defined in pass1, snma had serious problems. o If macro called another macro, \@ (unique label for one macro call) was different before the another macro call and after it. o Symbols which had only one char were not handled correctly. V1.90 o moveq didn't allow xref'd data. o mc68xxx directives o Command line additions ([-option]) o Object code naming now also checks ".s" and ".a" suffix. o OBJ filename in template was ignored (oh my). o tst with pc-relative was allowed on 68000 mode. o ext_ref symbols with same name were written many times, causing larger object file size (not actual code size). o xdef symbols were written to the all sections. o divu.l wasn't allowed. o Equates with relative components are handled better now. o Minimal WorkBench support o \*VALOF() + other macro 'insert functions'. o abslong to pc-relative optimizing. o DC generated too much data if the 2nd operand of the previous instruction was one which took some space. o REPT/ENDR directives o Global symbol table. o In cases where reloc was needed didn't create it, when symbol referred to equate which type was relative. o Equates with relative components are no longer written to the symbol list. o CHDIR (AREXX) command called FreeVec with wrong argument, causing memory loss (no crash, at least in my system). V1.70 o BTST/BCHG/BSET/BCLR Dn, set always as d0. (uups) o MOVEP didn't allow zero displacement. o ENDC switched assembly on sometimes when it shouldn't. V1.68 o Some minor bug fixes and changes (okay, I forgot them). V1.65 o Address components which started with 'Z' or 'z' were parsed to the totally wrong thing. (Bad one). o IFGT did unsigned test, instead of signed. o Didn't notice all cases when macro was already defined. o Include didn't work. o Expression handler didn't catch all undefined symbols. o AREXX, SET command. o 'TST An' in 020+ mode wasn't allowed. o Destination address mode optimizing in move instruction generated spurious opcodes in some cases. o Movem->move optimizing. V1.60 o AREXX PORT finally added o Several bugs fixed o LONGBRA flag to the template o ZAn no longer required if An omitted in addressing mode. ======================================================================== Probaply I don't remember all the changes and fixed bugs, but I hope all the major ones are here. First released version of SNMA is 1.39.