home *** CD-ROM | disk | FTP | other *** search
- A86 assembler package V2.18 (V2.16 XREF and EXMAC) November 16,1986
- The entire package is Copyright (C)1986 Eric Isaacson. All rights reserved.
-
- For easier bulletin-board distribution, I have split this package into two
- ARC files, A86A.ARC and A86B.ARC. The first half contains enough to get you
- started; you can evaluate the package and then download the second half later
- on.
-
-
- 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 this entire package, and give it 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. 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 $40 US to:
-
- Eric Isaacson
- 416 E. University Street
- Bloomington, IN 47401
-
- Registered users may order update-diskettes (5.25 inch, double density)
- for $10 US, plus enough to cover extra postage if you are overseas. (In
- other words, send $50 if you want to register and get an immediate
- update-diskette.) Once you register for this package, you are entitled to a
- life-time of updates of this package, at $10 each, as long is I am in
- business and willing to cash your $10 checks. (Well, let's make that 10
- 1986-dollars. If rampant inflation sets in, I reserve the right to raise
- prices accordingly.) Indiana residents add sales tax.
-
- I have a combination offer for the A86 and D86 packages. Instead of
- $40 + $40 = $80, I charge $70 for both.
-
- 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. You may not sell this package to anyone. If you distribute this package
- on a diskette, any fees you collect must be specified as materials/handling,
- and may not exceed $10 for the diskette.
-
- 4. You are 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. You must be a registered user to 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 liable for triple registration fees for every machine
- they own capable of running my assembler (plus any legal and court costs).
-
- 6. This assembler uses a code-generation "footprint" that will enable me to
- tell, and to demonstrate in a court of law, if a non-trivial object file has
- been produced by my assembler. 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.
-
- *** NOTE: If you have the impression that the "footprint" adds bytes to your
- program file, you are wrong. You retain complete control over the object
- code generated. A86 takes advantage of situations in which more than one
- set of object codes can be generated for a given instruction: the
- "footprint" consists of a complicated mix of choices in such situations.
-
-
- 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; or (2) 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 world's finest assembler. Some of A86's most notable
- features are:
-
- * A86 is blazingly fast. Don't believe the advertisements of that other, big
- company. THIS is the fastest MSDOS macro assembler, bar none. On an 8MHz AT
- with hard disk drives, A86 assembles a large program 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 is a .COM file, ready to execute immediately. You
- don't have to go through a linker. (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 happily ignore them.)
-
- * In spite of its simplicity, A86 encourages modular programming, 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).
-
- * 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 31 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 world's finest assembler macro facility. 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. (Fear not: your original source is preserved in *.OLD if you want
- it.) You can remove the messages yourself, or A86 will remove them for you
- when it reassembles the file.
-
- * A86 provides a full complement of assembly-time expression arithmetic
- operators, compatible with Intel/IBM assemblers.
-
- * A86 assembles the floating-point instruction set of the 8087/287.
-
- * A86 assembles the extended instruction set of the 186/286/NEC series, except
- for those 286 instructions designed to support protected-mode operating
- systems.
-
- * A86 works with an associated symbolic debugger, D86, to make the finest
- development environment available for the PC. See the D86 package, available
- now, for the details of its wonderful features.
-
- To give you a balanced view of A86, I shall now list some of its current
- limitations. I don't consider any of these limitations inordinately difficult
- for me to overcome; I just haven't gotten to implementing these features yet:
-
- * Full support of floating-point processing is not complete-- I still need
- to add the ability to initialize arbitrary floating-point constants.
-
- * A86 does not yet support the protected operating-system instructions of the
- 286.
-
- * A86 does not yet produce .OBJ files that can be linked to high-level-
- language programs. Don't worry, I won't take away your direct-.COM-
- production; OBJ will just be an option.
-
- * I intend to implement feature whereby A86 would, if it has undefined symbols,
- attempt to find those symbols in a library of source files, whose directory
- could be determined by an environment-variable. This would give A86
- programming an ability like that of the "C" language, to effortlessly
- access library functions. It's not there yet, but look for it Real Soon Now.
-
-
- Who IS That Guy?
-
- For those of you who wish to know what credentials I have for producing
- programs that meet the above claims, let me tell you who I am. I am
- an independent software consultant. 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 implemeted the first ASM86 assembler. I am one of the
- world's leading authorities on the entire 86-family of microcomputers, having
- completed numerous major projects involving the 8086, and 80186, and the
- 80286. I am currently under contract with Wiley and Sons, publishers, to
- write a book on the 386/387 architecture.
-
- A86 and D86 themselves are mature, solid programs. They have been in existence
- for 3 years, running first under my own, proprietary operating system; then
- later under the Xenix operating system on Altos computers, used by myself and
- my clients.
-
- Although I have been unknown to the world of the IBM-PC until now, I intend
- to change all that in the next couple of years. Peter Norton, watch out.
- (By the way, Peter, you can't use DX as an indexing register. And the use
- of DXAX to hold a 4-byte return result is not such a strange choice; DXAX
- is the 4-byte quantity used in the 16-bit multiply and divide instructions.
- Nits aside, you wrote a great book; thanks from all of us PC programmers for
- writing it!)
-
-
-
- Support Your Local Bulletin Board
-
- Bob Breedlove, a BBS Sysop in California, sent me a suggestion with his
- registration: that I do something to support Sysops, since they are distributing
- my software for me. Good point, Bob. Let me try this experiment (but I reserve
- the legal right to cancel this offer at any time, without notice): if anybody
- who registers wishes to support the BBS from which they obtained my program,
- they should tell me the name and phone number of the BBS when they register.
- They should also leave a message to the Sysop that they have done so, so the
- Sysop can contact me with his/her address. If I receive 5 registrations naming
- a particular BBS, I'll award a free registration to the Sysop-- the Sysop can
- designate who the registration is for; or (if the Sysop has already paid for a
- registration) he/she can elect to receive a cash refund. For each subsequent 5
- registrations, I'll send the Sysop a cash rebate equal to one half the
- registration fee. Sorry, no bonuses for less than 5 registrations; I don't want
- to be swamped with paperwork.
-
-
- How to Get in Touch With Me
-
- I would love to hear about what you think of my products. But please remember
- that telephone support takes time; and I don't have the money to hire a support
- staff. The most obvious way for you to communicate to me is to include your
- comments with your registration. Another way to communicate with me is to leave
- a message, addressed to me, on the Bloomington PC-Link Central bulletin board,
- at (812)824-7990; or Indiana On-Line, at (812)332-7227. I'll try to promptly
- answer the questions of any REGISTERED users, either via the bulletin board, or
- by return mail if you send me a self-addressed, stamped envelope.
-
-
- What to Read Next
-
- Read the file CONTENTS.DOC for an description of all the files in this package.
- I have two batch files for printing the documentation: FLOPLIST.BAT if you
- are keeping this package on a floppy, and HARDLIST.BAT if you have copied the
- package to a hard disk, and extracted all the files using HEXTRACT.BAT.
-
- The file DEMO.DOC will tell you how to assemble the A86 source programs
- included in the package; following the directions there will give you a working
- knowledge of operation of the assembler program.
-