Please see end of this list for some notes.

History:
   v00.24.80 - (02 Mar 2001)
    - DD (declare dword) now works correctly
    - fixed the math funtions when spaces were included
    - EQU now allows 32-bit numbers
    - fixed the loadall instruction
    - added the %line macro
    - speed optimizations (2)
    - other bugs/modifications (1)

   v00.24.78 - (26 Feb 2001)
    - ** Now allows 32bit numbers **
      (except as EQUates) (soon)
    - added a few more 32-bit instructions
    - now allows gs and fs on the 'uses' list
    - call far offset,segment now works correctly
    - fixed the bug with the HIGH and LOW directives
    * deleted the CLOCKS count (cycles used count) in the .lst
        file output.  (see 00.24.07 and 00.24.03 below)
        The technique I was using was excelent for the .8086 through
        the .286, but would have returned many wrong counts with
        the .386 and up.     
    - speed optimizations (1)
    - other bugs/modifications (0)

   v00.24.75 - (21 Feb 2001)
    - ** extensive work on the 32-bit instructions **
    - added "most" 32-bit instructions up to the Pentium Pro
      - does not include the CR0 or .mmx registers or instructions (yet)
      - have not added code to allow 32 bit numbers yet (asap)
          (remember that a negative number is a 32 bit number when
            used with a 32 bit register)
      - let me know if you find any instructions that I missed or
          are not working correctly.
    - push/pop fs/gs now working correctly
    - the %error macro now uses a pass cound exactly like the %out macro
    - added the INT3 instruction (actually renamed it from INT)
    - added 'push dword immed32'
        (will push an immediate number on the stack as a dword size)
    - added the 'dword' keyword and "most" of the instructions that
        can use it.  However, I still have not added the code to allow
        immediates to be more than word sized...(Soon I hope)
    * changed the pushb (push immed7) to push (dropped the 'b')
       pushb now used for 'push byte [(e)bx]'
    * deleted optimizer #6.  push immed7 now automatically uses the
        smaller sized opcode.
    * deleted SEG ES: (etc.) -- now just use ES: (etc.)
    - speed optimizations (1)
    - other bugs/modifications (0)

   v00.24.56 - (13 Feb 2001)
    - now ignores the 0 in [bx+0]
    - worked on the library addition code
    - added more library functions
    - speed optimizations (0)
    - other bugs/modifications (0)

   v00.24.55 - (07 Feb 2001)
    - reduced the memory usage by 50k
    - added more 32 bit instructions
    - fixed a bug with EQUates and memory operands
    - added to the library (NBASMC.LIB)
    - speed optimizations (1)
    - other bugs/modifications (1)

   v00.24.50 - (29 Jan 2001)
    - Now have a mailing list.  To subscribe, see readme.txt or
       simply send an empty email to:
          nbasm-subscribe@yahoogroups.com

   v00.24.50 - (25 Jan 2001)
    * source lines can be no longer than 256 bytes (use to be 1024)
    * changed 'push mem/memreg' to 'push word mem/memreg'
       i.e.: now needs the 'word' declaration (push word [bx])
    - added 'smsw word [xxxx]' (needs .286P, .386P, or .486+)
            'smsw reg16'       (needs .286P, .386P, or .486+)
    - added 'alld' and 'alldf' (see documentation)
    - upped the symbol table size
    - added more 32 bit instructions
      ** Remember that not all 32 bit instructions or working properly
          If you use any 32 bit instructions, check assembled binary
          before you execute it to make sure they assembled correctly.
          I hope to have more of the 32 bit instructions fixed ASAP....
    - speed optimizations (2)
    - other bugs/modifications (2)

   v00.24.42 - (11 Jan 2001)
    - fixed a bug with LOOPx and .386
    - added a few more 32 bit instructions
    - speed optimizations (0)
    - other bugs/modifications (1)

   v00.24.40 - (26 Dec 2000)
    - spaces are now allowed in math equations ( 1 + 1 - 3 + 1 )
    - fixed/added the MUL instruction(s)
    - fix: now allows equates as symbols inside memory operans
    - a little more error & syntax checking
    - speed optimizations (1)
    - other bugs/modifications (1)
    - uploaded to SIMTEL (NBASM244.ZIP)

   v00.24.29 - (22 Dec 2000)
    - fixed nasty bug with JMP FAR immed16,immed16
       (would not increment IP correctly)
    - now won't allow the target file (.COM|.NBO) to be the same as the
       source file (.ASM)
    - now won't include a file that is already in the next of include files
    - speed optimizations (1)
    - other bugs/modifications (1)

   v00.24.24 - (13 Dec 2000)
    * changed .OPTOF to .OPTOFF (Simply added another 'F')
    * changed .ALGNW to .EVEN (Align on a word boundry (2 bytes))
    * changed .ALGNP to .PARA (Align on a para boundry (16 bytes))
    - added .PAGE  (Align on a page boundry (512 bytes))
    - worked with IMUL reg16,immed8 (signed)
    - added IMUL reg16,immed16 (signed)
       (please note that IMUL reg16,reg16,immed does not work correctly)
       (please note that IMUL [memreg],immed does not work correctly)
    - other bugs/modifications (1)

   v00.24.20 - (21 Nov 2000)
    - now allows '<char>' inside math operations
       i.e.:  mov  al,('a'+1)
    - fixed bug with using EQUates as DW values
    - if using .exit with no operand in the Destination Field,
       then uses the current value of AL (see documentation for more)
    - other bugs/modifications (0)

   v00.24.17 - (25 Oct 2000)
    - now the 'short' keyword used in .386+ conditional jumps
       use the shorter instruction (2 byte instruction)
    - added another example (DEMO2.ASM)
    - other bugs/modifications (1)

   v00.24.15 - (21 Oct 2000)
    - fixed the error with the processor directives from last release (24.10)
    - worked with the FPU instructions
    - added the /d switch.  (/d tells NBASM not to print Diagnostic errors)
    - other bugs/modifications (2)

   v00.24.10 - (20 Oct 2000)
    - now correctly assembles near and far jmps/calls (see documentation)
    - added some FPU instructions.
    * due to data space, reduced the user symbols from 1300 to 1200
         (sooner or later, I would like to allocate all available memory
          for the symbol space.  But for now, 1200 it is...)
    - other bugs/modifications (0)

   v00.24.08 - (08 Oct 2000)
    - a bug fix in version 24.03 below ([ax], [bx], etc.)
        I didn't fix it correctly and created a larger
        bug with memory operands.
    - other bugs/modifications (2)

   v00.24.07 - (12 Sept 2000)
    ? did some more work on the LIST with the CLOCKS output
        this feature is in development and testing!!!!!!!!!
    - now allows .386+ conditional jumps.  i.e.:  conditional jumps
        longer than 128 bytes.  Once I get NBASM to have 3 passes,
        NBASM will optimize for size and use the two byte version if
        applicable.  For now, if you give a .386 or higher directive,
        NBASM will use the four byte condition jump for all Jcc jumps.
    * due to data space, reduced the user symbols from 1400 to 1300
    - other bugs/modifications (1)
    - speed optimizations (1)

   v00.24.03 - (20 Aug 2000)
    - now allows AAM and AAD to have an operand other than the assumed 0Ah
    - now returns error if [ax], [dx], or [cx] used
    ? have started the 'cycles used' entry in the list file output for
        each line.  Plan to include the cycles used count for each line
        in a future release
    - other bugs/modifications (1)
    - speed optimizations (0)

   v00.24.00 - (29 Apr 2000)
    - now prints "phase error" message on first occurance (ignores the rest)
    - fixed bug so that you can include more symbols (etc.) on a DW line
        after an offset symbol entry
    - added the XLAT [BX] instruction. Same as the XLATB, except allows
        override (xlat cs:[bx]))
    - added more error definations per error returned
    - other bugs/modifications (4)
    - speed optimizations (2)
    - uploaded to SIMTEL (NBASM240.ZIP)

   v00.23.90 - (21 Mar 2000)
    - FINALLY fixed indirect addressing: [bx+symbol] and symbol[bx]
    - added prtint (print unsigned integer) to the library (for debugging)
    - now also allows [index+base].  NBASM will switch it to [base+index].
    - now allows  ORG 00h  at beginning of program
    - fixed the memory reference stuff.
        now allows [symbol+immed] or [symbol+immed-immed] etc.
    - fixed forward references in Math Symbols and DW's. '(forwardsymbol+10h)'
    - now paddes with NOP's instead of nulls when 'moving' with ORG
    - added the %PRINT internal macro
    - now allows jcc short ($+n)
    - fixed bug with math functions and symbols (symbol+10) (phase error)
    - some minor documentation additions/modifications
    - other bugs/modifications (4)
    - speed optimizations (2)

   v00.23.73 - (24 Dec 1999)
    - bug fix: Long Filename with opening lib file using environment string
    - added better error definations per error returned
    - speed optimizations (1)

   v00.23.70 - (23 Dec 1999)
    - added long filename support (see nbasm.doc on the /l and /n switches)
    - added the .LIST directive
    - added the %ver macro
    - added the %title macro
    - added optimizer item #6 (push byte immed7)
    - now allows math  i.e.:   MOV  AX,(1+2|3>1)   (see NBASM.DOC)
    - added DD (Declare Double Word). (You still can't use 32 bit numbers)
    - worked with format of .lst files
    - now checks for CPU flag for external procedures
    - getsint in library now prints negative integers (16 bit)
    - bug fix:  Now can jump/loop to a label with db/dw/dd/dup on it
    - bug fix:  now pushs immed7/immed8 properly
    - other bugs/modifications (7)
    - speed optimizations (3)
    ? I have got most of the small model support done.
       It still does not produce workable .NBO files.
       The linker is almost done.
    * Does not allow nested proc/endp blocks anymore

   v00.23.48 - (12 Sept 1999)
    - added the 'Undefined data' DUP   (See NBASM.DOC)
    * removed the '%' symbol/operand
       (watch out for using undefined data (DUP  xx,?) and .externals)
    - added the undocumented POP CS instruction
    - other bugs/modifications (3)
    ? Coming soon:  LIBMAN.EXE  Allows you to create your own library
                      for use with NBASM and the .external directive.

  v00.23.46 - (29 Aug 1999)
    - fixed the indirect addressing problem  (See NBASM.DOC for more)
    - now allows command line parameters to begin with '-' as well as '/'
    - added error documentation to NBASM.DOC
    - other bugs/modifications (2)
    - optimizations (8)

  v00.23.44 - (21 Aug 1999)
    - modified the /I{} and INCLUDE filename.ext
        Now you can set the INCLUDE= env. var. to point to NBASMC.INC
        (see NBASM.DOC for more information)
    - added conditional assembly with the .if/.else/.endif block form
    - added the HIGH and LOW operators
        (see documentation under Pseudo-Operations)
    - added %error macro (see documentation)
    * removed the _CR  (next line too) feature
    - bug fix:  mov  al,[dx]
    ? modified NBASMC.LIB for testing purposes
    - modified the .EXIT 'macro' to include a RC (see documentation)
    - other bug fixes (2)

  v00.23.35 - (30 Mar 1999)
    - now includes a SMALL tutorial on using NBASM and assembly language
    - now checks for iret, iretd, and retf for 'USES' directive
    - added the /1 parameter.  NBASM does  pass one  only
    - includes 32 bit register/instruction support
      **Does NOT allow 32 bit numbers yet**
      **Does NOT included all 32 bit instructions and/or their variations**
      **Use with caution.  I have not done a lot of testing on it yet**
    - fixed bug if a semicolon was inside a string
    - did a few optimizations for speed and size

  v00.23.29 - (18 Jan 1999)
    - if target file was already there and read/only, then NBasm
        assembled source and did not return an error while leaving
        the target file unchanged.  (no new .com file)
    - xor now works correctly (was swapping dest/src)
    - added the %out macro (see documentation)
    - fixed the and, or, xor, sub, add, cmp, adc, & sbb instructions
        using  -129 > immed < 128   (see v00.22.52 history item)
    - fixed displacement issue with   mov  ax,[bx+immed8]
    ? added 32 bit registers/instructions support
        ****for test only, should be done in next release version****
    - fixed minor bug(s)  (1)
    - added minor item(s) (1)
  v00.23.22 - (23 Dec 1998)
    - added the .EXIT 'macro'
    - added the .X86 directive (see NBASM.DOC)
    - fixed bug where if you had a char in a DB string that was ascii 12
        or less, NBasm would change it to a space.  not anymore, however
        you still can not have a char of 13 in your string.  You must
        give a number of 13, rather than the actual ascii char.
    - now returns error if a string doesn't have a closing quote(s) mark
    - now gives error if a count of 0 in DUP
    - added the use of the underscore (_) at the end of a line.
        see NBASM.DOC for more details
    - added the call [bx]  ; (near)
    - fixed minor bug(s) (1)
  v00.23.14 - (13 Dec 1998)
    % fixed bug created with version 00.23.13 below
  v00.23.13 - (11 Dec 1998)
    * changed xlat to xlatb  (please see note #1 below)
        (the instruction is unchanged except for the 'name')
    - added/fixed the mem referencing by symbol with +/- immed
        mov  ax,[symbol]
        mov  ax,[symbol+100h]
        mov  ax,[symbol-100h]
        mov  ax,[100h+symbol-100h]
        Label1 equ $                 ; equals this location
        Label2 equ [Label1+100h]     ; equals location of label1 + 100h
        (you can have multiple immed's, but only one symbol reference)
        (spaces between symbols and immed's are not allowed)
    - fixed errors with more than one ORG in source file.
    - added the % Pseudo-Operation (see NBASM.DOC for more)
    - fixed minor bug(s) (1)

  v00.23.06 - (03 Dec 1998)
    - added the /B parameter (beep if an error encountered)
    - Now NBasm returnes valid error in ERRORLEVEL
    - fixed so that a hex number must start with 0-9, not A-F
    - changed push immed8 to push byte immed8
    - added div byte [0000]
    - minor bugs/fixes/changes (1)

  v00.23.00 - (01 Nov 1998)
    - fixed bug with strings if no ending delimitor ( ' or " )
    - added strings so that    mov  ax,'AB'   is allowed
    - fixed 'proc far'.  Now you can assemble far proc's.
       (however, you can not call them yet cause the .obj part isn't done)
    - Now allows label on ENDP line so that we can be MASM compatible
    - Now includes the .JUMPS directive (see documentation)

  v00.22.89 - (24 Oct 1998)
    - added the CALL FAR immd16,immd16  (offset,seg)
    - fixed minor bugs (3)

  v00.22.85 - (14 Oct 1998)
    - fixed the RETF instruction
    - gives error if not NEAR or FAR after PROC and before USES
    - now will search path(s) denoted in the LIB= environment variable
        for NBASMC.LIB
    - fixed so that if more than one RET in a proc block and 'USES' used,
       NBASM now properly pops registers for each RET

  v00.22.81 - (07 Oct 1998)
    - if didn't use .external, now doesn't try to add lib stuff
      (no noticable error unless nbasmc.lib not found)

  v00.22.80 - (01 Oct 1998)
    - added the ALL and ALLF keywords to the USES keyword
    - added code to optimizer #1 and #2 for EQU symbols that = 0
    - added file i/o error checking for the lib stuff
    - modified the start up code to nbasm.exe to allow a 'full' data segment
    - now will allow more than one external symbol given on one line
       (.external symbol1, symbol2, symbol3)

  v00.22.75 - (29 Sept 1998)
    - now allows use of the library (NBASMC.LIB)
         Library also included (see nbasm.doc and nbasmc.doc for usage)
    - now allows reverse long jumps
    - fixed bug in reverse short jumps
    - cleaned up the symbol table dump in .lst file
    - revised error checking a little
    - removed the optimizer item for xchg reg16,accum16
         (does it automatically now)
    - fixed bug so that you can 'push offset var1'
    - added
       mul  reg   (8086)
       imul reg   (8086)
       div  reg   (8086)
       idiv reg   (8086)
       imul reg16,immd (186)
       imul reg16,reg/mem (386)

  v00.22.52 - (13 Sept 1998)
    - fixed bug that didn't allow:
        mov  reg,[immd]   (mov  ax,[0000])
    % added the code to create smaller code for:
        add  reg16,immd7
        (add, adc, sub, sbb, cmp)
        (reg16 above does not include ax)

  v00.22.50 - (02 Sept 1998)
    - now allows indirection to be within backets:
      - before  --->        mov ax,02[bx]
      - now will allow      mov ax,[bx+02]
    - added  shl/r  mem/reg,immd8
             rcl/r  mem/reg,immd8
             rol/r  mem/reg,immd8
             sal/r  mem/reg,immd8
    - fixed bug if a tab was in source file
    - improved the .start directive
      (read nbasm.doc for more info on .start, .stack, and
       the RET instruction)

  v00.22.38 - (25 Aug 1998)
    - fixed code to allow up to ten nested include files
    - fixed some bugs with the create .LST file code
    - modified the code for 386 opcode prefix's
    - fixed .x86/x87 directive attributes
    - added .x87 co-processor directives
    - added .x86P processor directives
    - added the fs: and gs: segment override
    - added code to allow .386+ instructions (no 32-bit registers yet)
    - added the following instructions:
       LFS, LGS, LSS (386+)
       MOVSX, MOVSZ  (386+)
       CWDE, CDQ     (386+)
         (somewhere I read that the following instructions were for 8086+.)
         (I found out different but elected to leave them in anyway)
       CMOVcc        (Pentium Pro/II)
    - fixed other minor bugs

  v00.22.22 - (22 Aug 1998)
    - add optimization software
       read NBASM.DOC for the 6 items that NBasm will
       optimize for if '/o' is on the command line
       or .OPTON is in your code
      I hope to add more optimizations in later
       (beta) versions
    - made NBasm a little faster by optimizing a 'select case'
       structure

  v00.22.11 - (12 Aug 1998)
    - added the BYTE and WORD type specifiers
       example:
         movb [bx],00       ; is the same as
         mov  byte [bx],00  ; this line
    - fixed bug if a count of 0 (zero) was given in
       a DUP declaration line:
         TEMP  dup 0,1    ; now is the same as
         TEMP  equ $      ; this line
    - added the code to allow RET as the 'exit to DOS'
      code in .COM files and gives an error in .OBJ files
    - added the undocumented instruction SALC
    - modified code so NBasm only needs a 80186+ processor and
       only needs DOS version 2.0 and up
    - NBasm now checks to see if running on a 186+ with DOS 2.0+

  v00.22.06 - (11 Aug 1998) - Original Beta release
    

Notes:
1. An item starts with one of the following chars, means:
    -   = normal item.
    *   = makes some previous source files not work with this addition.
    %   = newer version contains a fix for this item
           (known or unknown bug at this items version)
    ?   = undocumented item (for test only) (may stay, may go)
           (no support for) (use with caution) (you get the idea!)
