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. June 1986. July 1986. Added RADIX command. Reduced memory requirements.

V2.11 V2.13 V2.15

August 1986. Implemented COMMENT directive for compatibility; added floating point instruction set and DQ and DT directives. August 1986. Made internal changes to accommodate forward referencing in D86's patch-memory mode. November 1986. March 1987. April 1987. Test release for .OBJ support. Major upgrade:

V2.16 V2.18 V2.90 V3.00

* 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 V3.03 V3.04 V3.05 May 1987. May 1987. May 1987. 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. July 1987. 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. 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. 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. February 1988. Added features:

V3.08 V3.09

V3.10

V3.11

V3.12

* 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. March 1988. 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. June 1988. July 1988. For compatibility: allowed OFFSET segname, and implicitly converted a constant with a segment override into a memory type. August 1988. July 1989. Made internal redesign of handling of sizeoverride 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. August 1989. January 1990. Added support for additional coprocessors: the 80387 and the IIT-2C87. Made numerous minor changes to enhance MASM-compatibility.

V3.14 V3.15

V3.17 V3.18

V3.19 V3.20

V3.21 V3.22