331 lines
16 KiB
Plaintext
331 lines
16 KiB
Plaintext
CHAPTER 1 INTRODUCTION AND LEGAL TERMS
|
||
|
||
|
||
Introduction
|
||
|
||
A86 is the finest assembler available, at any cost under any
|
||
terms, for the 86-family of microprocessors (IBM-PC, compatibles,
|
||
and not-so-compatibles). In contrast to software firms who
|
||
attempt to restrict the distribution of their products via
|
||
protection-schemes, I encourage free distribution, and trust that
|
||
those who use my products will pay for them.
|
||
|
||
Please keep in mind the fundamental good spirit of
|
||
free-distribution software as you endure the following barrage of
|
||
legalities. Then evaluate the outstanding value that the A86
|
||
package offers you. I assure you that you will not be
|
||
disappointed.
|
||
|
||
|
||
Legal Terms and Conditions
|
||
|
||
This package is provided to you under the following conditions:
|
||
|
||
1. You may copy the A86Vxxx.ZIP and D86Vxxx.ZIP files, and give
|
||
them to anyone who accepts these terms. The copies you
|
||
distribute must be complete and unmodified. You do not have
|
||
to be registered to distribute this package.
|
||
|
||
2. Even if you have not yet obtained full execution rights, you
|
||
may execute the programs in this package, in order to evaluate
|
||
them. If you decide that any of this package is of use to
|
||
you, you must become a registered user by sending $50 US ($52
|
||
if you are outside North America) to:
|
||
|
||
Eric Isaacson
|
||
416 E. University Ave.
|
||
Bloomington, IN 47401-4739
|
||
|
||
For your convenience, I now accept Visa and MasterCard, by
|
||
telephone. My number is (812)339-1811.
|
||
|
||
For the convenience of users in Great Britain, I have
|
||
authorized the firm Shareware Marketing to collect
|
||
registrations for me. We'll try to keep the prices about the
|
||
same whether you register through me or through them; it's
|
||
your choice. Their address is 87 High Street, Tonbridge, Kent
|
||
TN9 1RX; telephone 0732 771344. They'll send me a list of
|
||
registered users at the end of every month, and I'll send an
|
||
acknowledgement to each user when I get the list. So if you
|
||
haven't heard from me by the end of the month following your
|
||
registration with them, please let me know.
|
||
1-2
|
||
|
||
Your registration includes a single update diskette (5.25
|
||
inch, double density), that also includes the A86LIB tool
|
||
available to registered users only. You may order further
|
||
updates for $10 US, or $12 US if you are overseas. Once you
|
||
register for this package, you are registered for all future
|
||
versions-- you have permanent rights to execute A86 on one
|
||
computer. As long as I'm in business, you can get the latest
|
||
version for just the update fee.
|
||
|
||
I have a combination offer for the A86 and D86 packages.
|
||
Instead of $50 + $50 = $100, I charge $80 ($82 overseas) for
|
||
both.
|
||
|
||
I also offer a printed version of this manual, covering both
|
||
A86 and D86. The manual is printed on sheets 8.5 inches high
|
||
and 7 inches wide, with a plastic ring-style binding so the
|
||
book can lay flat. If you order with your registration the
|
||
manual is an extra $10 to the U.S., $15 overseas. If you've
|
||
already registered and now want the manual, add another $10
|
||
($12 overseas) for the update disk that the manual is bundled
|
||
with. There is a limit of one manual per computer registered
|
||
(except you may reorder when there is a substantial revision
|
||
to the manual).
|
||
|
||
Indiana residents need to add sales tax. At the current rate
|
||
of 5%, the prices for Indiana residents are $52.50 for one
|
||
product, $63 one product with manual, $84 both products,
|
||
$94.50 both products with manual, $21 manual if already
|
||
registered.
|
||
|
||
Educational institutions and training facilities MUST be
|
||
registered in order to use A86 in courses. Contact me for
|
||
special terms.
|
||
|
||
Companies and government agencies MUST be registered in order
|
||
to use A86 for their work. Again, contact me for special
|
||
terms.
|
||
|
||
3. This package may not be sold to anyone. If the package is
|
||
distributed this package on a diskette, any fees collected
|
||
must be specified as materials/handling, and may not exceed
|
||
$10 for the diskette.
|
||
|
||
4. The user is completely responsible for determining the fitness
|
||
or usability of this package. I will not be liable for any
|
||
damages, of any kind, arising from any failure of any programs
|
||
in this package to perform as expected.
|
||
|
||
5. Only permanent registered users can sell or distribute any
|
||
programs that you have written or modified using this
|
||
assembler. If you do sell or distribute such programs, you
|
||
must insure that your registered name (company or individual)
|
||
will always be distributed with the program, so that I can
|
||
verify your registration. Any individual or company found to
|
||
be violating these terms will be liable for triple
|
||
registration fees for every machine they own capable of
|
||
running my assembler (plus any legal and court costs).
|
||
1-3
|
||
|
||
NOTE that the only computers that need to be registered are
|
||
those executing the program A86.COM. The programs produced by
|
||
A86 are entirely yours-- there are no "run-time royalties".
|
||
|
||
6. A86 takes advantage of situations in which more than one set
|
||
of opcodes can be generated for the same instruction. (For
|
||
example, MOV AX,BX can be generated using either an 89 or 8B
|
||
opcode, by reversing fields in the following ModRM byte. Both
|
||
forms are absolutely identical in functionality and execution
|
||
speed.) A86 adopts an unusual mix of choices in such
|
||
situations. This creates a code-generation "footprint" that
|
||
occupies no space in your program file, but will enable me to
|
||
tell, and to demonstrate in a court of law, if a non-trivial
|
||
object file has been produced by A86. The specification for
|
||
this "footprint" is sufficiently obscure and complicated that
|
||
it would be impossible to duplicate by accident. I claim
|
||
exclusive rights to the particular "footprint" I have chosen,
|
||
and prohibit anyone from duplicating it. This has at least
|
||
two specific implications:
|
||
|
||
a. Any assembler that duplicates the "footprint" is mine. If
|
||
it is not identified as mine and issued under these terms,
|
||
then those who sell or distribute the assembler will be
|
||
subject to prosecution.
|
||
|
||
b. Any program marked with the "footprint" has been produced
|
||
by my assembler. It is subject to condition 5 above.
|
||
|
||
|
||
Registration Benefits
|
||
|
||
Thank you for enduring the legalities. They are there to protect
|
||
me, and also to convince you that this is my business, from which
|
||
I expect to make a living. I'll now return to a softer sell, to
|
||
try to make you want to register for my products.
|
||
|
||
There is a certain amount of ambiguity about when you're still
|
||
evaluating A86, and when you're really using A86 and should
|
||
register for it. Some cases are clear (e.g., you're a school
|
||
using A86 to teach a course); but many are not. In practical
|
||
reality, it up to you to decide: you are "on your honor". Also in
|
||
practical reality, most users who ought to register haven't, yet.
|
||
For most, it's not dishonesty but merely procrastination. So I
|
||
have provided some incentives, to prod you into registering.
|
||
|
||
One incentive is the printed manual, which only registered users
|
||
can purchase. I haven't left anything out of the disk version of
|
||
the manual, but the printed version is formatted and bound much
|
||
more nicely than if you print it yourself.
|
||
|
||
Another incentive is the tool A86LIB.COM, that lets you create
|
||
libraries of source files, to be automatically searched by A86
|
||
whenever your program has undefined symbols. This means you can
|
||
effectively add procedures of arbitrary power and complexity to
|
||
A86's language.
|
||
1-4
|
||
|
||
Also, when you register you're on my mailing list. I'll
|
||
occasionally send you notices about what I've added to A86 and
|
||
D86 since the last notice. When I bring out new products, you'll
|
||
hear about them. (I'm working on a library of source files for
|
||
A86, and also a 386 assembler-debugger package.)
|
||
|
||
Finally, there are the intangible incentives. You know you've
|
||
done the right thing. You're letting me know that you appreciate
|
||
what I've done. You're letting the world know that quality
|
||
software can succeed when distributed as shareware.
|
||
|
||
|
||
Overview of A86
|
||
|
||
A86 accepts assembly language source files, and transforms them
|
||
directly into either: (1) .COM files executable under MS-DOS,
|
||
starting at offset 0100 within a code segment; (2) .OBJ files
|
||
suitable for feeding to a linker; or (3) object files starting at
|
||
offset 0, suitable for copying to ROMs. A86 is a full featured,
|
||
professional quality program. I designed A86 to be as closely
|
||
compatible to the standard Intel/IBM assembly language as
|
||
possible, given that I insisted upon making design and language
|
||
enhancements necessary to make A86 the best possible assembler.
|
||
Some of A86's most notable features are:
|
||
|
||
* A86 is blazingly fast-- 4 times as fast as MASM V5.1. In the
|
||
best conditions (large program, 8MHz AT, RAM drive) A86
|
||
assembles at a rate of over a thousand lines per second.
|
||
That's per second. NOT per minute, per second.
|
||
|
||
* A86 is simple to use. You can feed it a program containing
|
||
just machine instructions, without the red tape (NAME, ASSUME,
|
||
SEGMENT PARA PUBLIC, PROC, ENDP, END, PUBLIC, EXTRN, etc. etc.)
|
||
necessary with other assemblers. The output of A86 can be a
|
||
.COM file, ready to execute immediately. You don't have to go
|
||
through a linker. Or, if you want to go through a linker, A86
|
||
will produce a correct .OBJ file even if no red tape directives
|
||
are given-- the default settings are compatible with most
|
||
high-level languages. (If you have programs written for that
|
||
other assembler containing the red tape directives, you may
|
||
leave them in: A86 knows about them, and is programmed to act
|
||
upon them when assembling .OBJ files, and ignore them if
|
||
assembling .COM files.)
|
||
|
||
* In spite of its simplicity, A86 encourages modular programming,
|
||
even in its .COM mode, with separately-developed source files.
|
||
This is because A86 assembles multiple source files in its
|
||
invocation line; and because A86 assembles source files faster
|
||
than other people's linkers can link their object files. You
|
||
get all the advantages of relocation/linkage systems (building
|
||
up libraries of reliable program modules that you can piece
|
||
together), without the disadvantages (excessive,
|
||
time-and-source-code-wasting, confusing red tape).
|
||
1-5
|
||
|
||
* A86 has ample capacity for really large programming projects.
|
||
Its symbol table capacity is approximately 1500 10-letter
|
||
symbols, plus room for 8K bytes of compressed macro definition
|
||
text. (10 letters is an average symbol length; A86 recognizes
|
||
up to 127 letters in a symbol.) Plus, A86's generic local label
|
||
facility effectively doubles your symbol table capacity.
|
||
|
||
* A86 has language extension features that, once you start using,
|
||
you'll never want to do without. These include multiple
|
||
operands to PUSH and POP; conditional returns; MOV from one
|
||
segment register to another; assembly time assertion checking;
|
||
based structures; and IF (flag) (statement).
|
||
|
||
* A86's macro processor is the best, achieving an optimal balance
|
||
between ease of use and raw power. Its looping and text
|
||
concatenation abilities let you define sophisticated macros,
|
||
whose calls look just like the machine instructions that
|
||
surround them; without the clumsy invocation syntax required by
|
||
other macro processors of A86's power.
|
||
|
||
* A86 provides clear, English error messages, given right at the
|
||
point in the source code where A86 detected the error. The
|
||
messages are actually inserted into your source file, where you
|
||
can read them and correct your code at the same time. You can
|
||
remove the messages yourself, or A86 will remove them for you
|
||
when it reassembles the file. (Fear not: your original source
|
||
is preserved in x.OLD if you want it. Or you can disable this
|
||
feature and send error messages to a .ERR file.)
|
||
|
||
* A86 provides a full complement of assembly time expression
|
||
arithmetic operators, compatible with Intel/IBM assemblers. A86
|
||
also provides 4-function floating point arithmetic in assembly
|
||
time expressions used for floating point initializations (an
|
||
A86-exclusive feature).
|
||
|
||
* A86 assembles the floating point instruction set of the
|
||
8087/287/387/IIT coprocessors, and the extended instruction set
|
||
of the 186/286/NEC series, including the NEC-unique
|
||
instructions.
|
||
|
||
* A86 has a built-in source file library feature. Any undefined
|
||
symbols in your program are automatically searched for in a
|
||
special library file A86.LIB, and the associated source files
|
||
are automatically assembled. This makes access to library
|
||
routines as effortless as it is in the "C" programming
|
||
language. A sample A86.LIB file is included in the shareware
|
||
version of the package. Only registered users should have the
|
||
tool A86LIB, with which you can create your own library files.
|
||
|
||
* A86 works with an associated symbolic debugger, D86, to make
|
||
the finest development environment available for the PC. See
|
||
the D86 package for the details of its features.
|
||
1-6
|
||
|
||
About the Author
|
||
|
||
I am a full-time shareware author. I have worked with Intel
|
||
microprocessors since the early days of the 8080. As an employee
|
||
of Intel, I was a part of the two-man team that implemented the
|
||
first ASM86 assembler. Having worked with all the processors of
|
||
the 86 family from the beginning, I know as much as anyone about
|
||
their machine-language architecture. I have written a book, The
|
||
80386/387 Architecture, by Morse, Isaacson, and Albert, published
|
||
by Wiley and Sons, ISBN 0-471-85352-6. Look for it in your
|
||
bookstore (or I'll send you a copy for $20, which is $4.95 off
|
||
the list price.)
|
||
|
||
A86 and D86 themselves are extremely mature, solid programs.
|
||
They have been in existence since 1984, running first under my
|
||
own, proprietary operating system; then later under the Xenix
|
||
operating system on Altos computers, used by myself and my
|
||
clients. I have been making a decent living from A86 and D86 for
|
||
some time now, and with your much-appreciated support, I will
|
||
continue to improve my products, and enhance them with new,
|
||
related offerings.
|
||
|
||
|
||
How to Contact Me
|
||
|
||
I have no plans to move from my present location at least through
|
||
the millennium. So you can write to:
|
||
|
||
Eric Isaacson Software
|
||
416 East University Ave.
|
||
Bloomington, IN 47401-4739
|
||
|
||
or call (812)339-1811.
|
||
|
||
Sorry, I can't guarantee to return everybody's long distance
|
||
calls. If you'd like to be SURE I'll get back to you, please
|
||
invite me to call you back collect, or tell me to charge the cost
|
||
of the call to your credit card.
|
||
|
||
I also accept BBS mail at PC-Link Central, (812)855-7252, which I
|
||
try to check into daily. Type J 3 when you get on that system,
|
||
to reach my conference. Another BBS which I check into about
|
||
twice a week is Indiana On-Line, at (812)332-7227-- type J A86 to
|
||
reach my conference on that BBS. I also check into Compuserve
|
||
every 10 days or so-- my ID number there is 71520,74.
|
||
|
||
PLEASE contact me if you find bugs in my programs; I'll fix them!
|
||
I accept bug reports from anyone, registered or non-registered,
|
||
no questions asked. It's very frustrating to hear about people
|
||
telling each other about bugs, and not telling me. I still await
|
||
Greg Wettstein's bug list.
|
||
|
||
|