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 somebody). Gunther Nikl, Veli Nuutimäki, Eric Augustine, Laura Mahoney, Marco Nelissen. 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.