
        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.


    VNEXT
        o BSS sections didn't honor mem type bits.
        o Sometimes pc-relative addressing modes allowed small data references.
          (if small data references were allowed).
        o RTM was coded badly.
        o Forcing Base Displacement to word or long didn't work always.
        o  " macro <macroname>" finally works.

    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 <file>, 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 <ea> 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 "<something>" 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,<ea> set always <ea> 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 <devicename:filepath> 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.
