This entire diskette is Copyright 1986,1987,1988,1989,1990 Eric Isaacson.
All rights reserved.
See the individual packages for permissions/restrictions.

This diskette contains new releases for the A86 assembler and 
D86 debugger.  Everything except the file REG_ONLY.ZIP (if you 
have it) can be copied and distributed.  Please upload the other 
ZIP files to bulletin boards, and give them to user groups, 
computer departments in schools, and anyone else you think might 
be interested in an assembler or a debugger package for the
IBM-PC. 

REG_ONLY.ZIP is the file containing materials available only to 
registered users.  If you don't see it on this disk, you need to 
register to get it.  If you do see it, it is for your use only.  
You may NOT distribute it.  Please support my products by 
honoring this restriction. 

You need to read the manuals to use these programs -- they're
just too complex to be self-explanatory.  Chapter 2 of each
manual takes you through a trial demonstration.


What's New

I've added the AFIX package, a set of machine-readable
specifications for modifying 61 .ASM files from PC Magazine's
utilities, so they they will assemble under A86.  This means
that there are now over 2 megabytes of publicly-available
source code for A86.

Version 3.22 adds support for the additional instructions of
the IIT-2C87 and the 80387 floating-point coprocessors.  I have
also made a large number of minor fixes to increase A86's
compatibility with programs written for MASM.

I have also fixed a couple of nasty bugs that were introduced with
V3.20.  You may now once again use the PROC and LABEL directives,
and you may code DB 100 DUP (' STACK');.

With V3.20 I introduced a few small incompatibilities to watch out for:

   * Formerly the DATA SEGMENT would start at offset 0 if
     no ORG statement was given.  I hope to change this
     in a future version, to start at the end of a COM
     program.  So for a transition, A86 now outlaws an
     ORGless first DATA SEGMENT.  You should explicitly
     give an ORG 0 if that is what you want.

   * To prevent mistakenly-overlapping local labels, A86
     now outlaws the following sequence:
       L1:
         JMP >L1
         JMP L1
       L1:

     If the operand to the second JMP is intended to be
     the second L1 (which is what the previous versions
     of A86 silently assumed), you now need to provide
     a > before that L1.  If it is intended to be the
     first L1, you need to rename one of the two labels.

   * A86 now accepts a wider class of forward references, 
     including byte-sized immediate values, and (in OBJ mode) 
     the loading of named segments and groups into registers, 
     without having to provide an explicit SEG operator.  But
     there was one case in which I thought A86 was too lax:
     
         MOV FOO W,09090  ; replace JMP with NOPs
         ;....
         CALL FOO
         ;....
       FOO:
         JMP >L1
         ; code executed after above JMP is NOPed out
       L1:

     In the above sequence of (phew!) self-modifying code,
     previous versions of A86 had assumed (correctly in this
     sequence) that FOO would be a simple label, and not a
     word variable.  This was inconsistent with A86's behavior
     in other contexts, which is to assume from the MOV usage
     that FOO is a word variable, and generate a word-indirect
     form for CALL FOO.  The current version now generates the
     indirect form, and then issues an error at FOO: when it 
     sees it was wrong.  You need to code CALL NEAR FOO   .


How to Get Everything

The packages consist of many files, packed tightly into a few 
files with the ZIP extension.  I have provided the batch file 
UNPACK.BAT that unpacks everything except the manual  to the 
current drive and directory.  You should either go to a new 
subdirectory on your hard drive, or to a blank, formatted floppy 
on your B floppy drive.  Then issue the command A:UNPACK to the 
DOS prompt. 

Among the unpacked files will be more .BAT files, used for 
unpacking the manual (all the .DOC files).  The files 
UNPACKA.BAT and UNPACKD.BAT will unpack the A86 and D86 manuals, 
respectively, to your current drive and directory.  The manuals 
are huge, so there won't be room for both on a 360K floppy.  The 
files PRINTA86.BAT and PRINTD86.BAT will use PKUNZIP's print 
feature to print the DOC files directly from the ZIP files on 
the A drive, without cluttering up your disk with the unpacked 
versions.

Finally, the command A:PKUNZIP A:AFIX* will unpack the AFIX
conversion toolkit to the current drive and directory.

