CHAPTER 15   RELEASE HISTORY OF A86

Virtually all releases of A86 include bug fixes.  If I don't say
anything about a release, then it was essentially only bug fixes.

V2.10  June 1986.  Initial public release of the MSDOS version of
       A86.  The last previous version ran under the Xenix
       operating system on the Altos series of computers. For
       this "public offering", I cleanup up the invocation
       syntax, upgraded the error-reporting facility, and started
       added compatbility features.

V2.11  June 1986.  Added RADIX command.

V2.13  July 1986.  Reduced memory requirements.

V2.15  August 1986.  Implemented COMMENT directive for
       compatibility; added floating point instruction set and DQ
       and DT directives.

V2.16  August 1986.  Made internal changes to accommodate forward
       referencing in D86's patch-memory mode.

V2.18  November 1986.

V2.90  March 1987.  Test release for .OBJ support.

V3.00  April 1987.  Major upgrade:

       * added support for linkable .OBJ files

       * added long constants and floating-point constants

       * added A86LIB library tool and A86LIB support

       * added ability to forward-reference variables, and to add
         to and index forward references

       * added 286 protected-mode and NEC-specific instructions

       * added options not to insert errors in source, long
         forward JMP for local labels, and default decimal

       * added "=" equate compatibility feature

       * added double-quoted strings compatibility feature

       * parentheses no longer required for most DUP right
       operands

V3.01  April 1987.  Minor enhancements:

       * original file had been renamed to no extension, not OLD

       * segment overrides outlawed in 3-operand MOV

       * forward references outlawed in numeric-operand INC/DEC
                                                             15-2

       * add "S" suppress-symtab and "C" case-sensitivity
       switches

V3.02  May 1987.

V3.03  May 1987.

V3.04  May 1987.

V3.05  June 1987.  Added the following features for MASM
       compatibility:

       * recognition of SEGMENT AT in non-OBJ mode

       * ignore END directive in non-OBJ mode

V3.07  July 1987.  Added features necessary for Turbo C support
       (+c, +f, +F switches; ignore DGROUP:). Generalized the
       environment variable to include macro files.  Added the
       ampersand feature.  Made = compatible with MASM.

V3.08  July 1987.

V3.09  August 1987.  Legalized MOV segreg,immediate. Duplicated
       MASM functionality for case sensitive mode (A86's +C
       switch).  Added ability to make aliasing EQU to an
       external name.  Made FAKE.EXE into an honest EXE file,
       instead of a COM masquerading as EXE.

V3.10  September 1987.  Added a printed version of the manual.
       Added +c switch, reinstating case sensitivity during
       assembly, but this time without sensitivity in built-in
       symbols.

V3.11  November 1987.  Added the SEG operator for compatibility
       with Turbo C, and made it possible to define relocatable
       segments called CODE, DATA, or STACK, for compatibility
       with Turbo Pascal.

V3.12  February 1988.  Added features:

       * Changed the format of SYM files, so that they are much
         smaller yet hold more information.  This allows D86,
         XREF, and EXMAC to work better with A86.

       * A86 now allows an aribtrary expression to appear in a
         conditional assembly (#IF) directive.

       * Added macro features, for compatibility: #V value
         operator, #S size operator, #N number operator, #EX exit
         directive, string comparison of operands, and large
         operand numbers (up to 255).

       * To overcome a Turbo C bug, allowed embedded blanks in
         symbols declared via an EXTRN directive.  I dropped this
         feature in V3.13; see below.
                                                             15-3

V3.13  March 1988.  Made memory management more flexible, to
       allow A86 to run with less available memory.  Added a
       small feature to ease Turbo C compatibility: if there is a
       segment override to a forward refernce, the reference is
       assumed to be a variable, not an immediate value.  This
       eliminates the need for the EXTRN kluge of the above
       paragraph, so I dropped that kluge.

V3.14  March 1988.

V3.15  May 1988.  Allowed up-arrow in place of equals-sign in
       invocation equates.  Allowed MOV mem,mem and XCHG of a
       variety of new forms, generating sequences of instructions
       to implement the unavailable forms.

V3.17  June 1988.

V3.18  July 1988.  For compatibility: allowed OFFSET segname, and
       implicitly converted a constant with a segment override
       into a memory type.

V3.19  August 1988.

V3.20  July 1989.  Made internal redesign of handling of size-
       override operators (B, W, D, F, etc.) so they are handled
       more consistently.  Outlawed first DATA SEGMENT without a
       strating ORG statement, forcing an explicit ORG 0 for
       future compatibility.  Allowed more forward references,
       including immediate-byte quantities in all applicable
       instruction forms.

V3.21  August 1989.

V3.22  January 1990.  Added support for additional coprocessors:
       the 80387 and the IIT-2C87.  Made numerous minor changes
       to enhance MASM-compatibility.

