Dec 062017
 
Fixes that allow most PC-Mag ASM code to be compiled by A86.
File AFIXV100.ZIP from The Programmer’s Corner in
Category Assembly Language
Fixes that allow most PC-Mag ASM code to be compiled by A86.
File Name File Size Zip Size Zip Type
AFIX.COM 2930 2201 deflated
AFIX.DOC 7036 3077 deflated
ALLKEYS.FIX 132 115 deflated
ANSI.FIX 121 112 deflated
ASPRN.FIX 227 183 deflated
BATCHMAN.FIX 222 172 deflated
BCOPY.FIX 326 223 deflated
CALC.FIX 121 112 deflated
CAPTURE.FIX 200 160 deflated
CARDFILE.FIX 521 293 deflated
CO.FIX 172 153 deflated
COMPARE.FIX 130 115 deflated
CONVERT.FIX 130 115 deflated
CTRLCAP.FIX 130 115 deflated
CTYPE.FIX 154 132 deflated
DEBUGSCR.FIX 133 116 deflated
DIMMER.FIX 235 196 deflated
DIRMATCH.FIX 492 311 deflated
DIRNOTES.FIX 144 126 deflated
DOSKEY.FIX 592 306 deflated
DR.FIX 141 132 deflated
ENETBIOS.FIX 141 124 deflated
ENVELOPE.FIX 133 116 deflated
FONTEDIT.FIX 226 192 deflated
HELP.FIX 121 112 deflated
INSTALL.FIX 137 122 deflated
KBTEST.FIX 130 117 deflated
KBX.FIX 198 148 deflated
LASERLST.FIX 221 178 deflated
LITES.FIX 124 113 deflated
LOG.FIX 133 121 deflated
MAKEBAR.FIX 130 115 deflated
MAKEBAS.FIX 130 115 deflated
MEM512.FIX 230 198 deflated
MENU.FIX 1018 328 deflated
MONO.FIX 121 111 deflated
MOUSECTL.FIX 133 116 deflated
NETCLOCK.FIX 133 116 deflated
NEWNODE.FIX 130 115 deflated
PCMAP.FIX 124 112 deflated
PCREMOTE.FIX 264 208 deflated
PRN2FILE.FIX 257 216 deflated
RECORDER.FIX 338 238 deflated
REMINDER.FIX 161 134 deflated
REMOVE.FIX 170 139 deflated
REPEATS.FIX 130 115 deflated
RN.FIX 161 154 deflated
RUN.FIX 118 111 deflated
SAFARI.FIX 132 119 deflated
SETMODE.FIX 130 115 deflated
SETUP2.FIX 206 153 deflated
SLASHBAR.FIX 184 146 deflated
SLICE.FIX 148 133 deflated
SMOOTH.FIX 203 172 deflated
SPECTRUM.FIX 160 135 deflated
SPLIT.FIX 148 133 deflated
SRVCLOCK.FIX 168 144 deflated
STAYDOWN.FIX 141 124 deflated
STICK.FIX 132 121 deflated
SYSINT.FIX 332 235 deflated
TED.FIX 1563 578 deflated
TPCREAD.ME 199 165 deflated
XPANBOSS.FIX 133 116 deflated
ZCOPY.FIX 351 256 deflated

Download File AFIXV100.ZIP Here

Contents of the AFIX.DOC file


AFIX conversion tool, V1.0 February 18, 1990
Copyright 1990 Eric Isaacson. All rights reserved.

Eric Isaacson
416 E. University Ave.
Bloomington, IN 47401-4739
(812)339-1811

The AFIX package consists of this AFIX.DOC file, the program
AFIX.COM, and the set of files with the .FIX extension, that
are fed to the AFIX program.

I consider the legal status of the AFIX package to be the same
as that of the free-distribution parts of my A86 package: I
grant permission for anyone to copy the complete, unmodified
package and use it to try out A86. There is no separate
registration fee for AFIX: if you register for A86, that covers
the usage of AFIX. See the A86 package (V3.22 or later) for
details of my copying permissions/restrictions, including my
reservation of the right to inform specific parties that they
may not distribute some or all of my software.


Overview of AFIX

In an effort to expand the test base for my A86 assembler, I
recently converted 61 assembly-language source files, published
by PC Magazine during the past 3 years. These files were
written for various versions of the inferior but more widely-
distributed MASM assembler by Microsoft. I made the minimum
modifications necessary so that A86 would assemble the source
files directly to COM files that are functionally equivalent to
the files produced by MASM, LINK, and EXE2BIN. I would like to
make the modified files as widely available as the original MASM
files; but simply distributing them would violate their
copyright.

AFIX was written to solve this legal problem. For each modified
source file, I am publishing a special file with the extension
.FIX, that contains the specifications for modifying the
original PC Magazine source file. The FIX files contain
absolutely nothing from the original .ASM files; so they are
entirely mine and I can copyright and distribute them as I
please.

To run AFIX, you must place AFIX.COM, the original .ASM file,
and the corresponding .FIX file into your current directory, and
type AFIX followed by the file name to the DOS prompt. AFIX
will verify that the .ASM file has the same size and 16-bit
checksum as the file I have. If it does, AFIX will produce an
A86-compatible file, with the extension .8. A comment line is
inserted at the top of the file, giving the A86 invocation line
that will assemble the program. If the original file was more
than 64K in size, the output will be split into multiple files,
with names ending in _1, _2, etc.

You do not need to run AFIX for each individual source file:
AFIX will accept wildcards in the program name. In fact, if you
simply type AFIX to the DOS prompt, with no arguments, then
*.FIX is assumed, and AFIX will convert all programs for which a
.FIX file and the correct .ASM file both exist. If you do this,
you might want to redirect standard output to a disk file, so
that you can review the status messages at the end:

AFIX >AFIX.LOG

If you get AFIX from a disk you have purchased from me or from a
shareware distribution house, the disk will not contain the .ASM
files you need-- they are copyrighted and cannot be sold.
You'll need to download them from a BBS, or from the utilities
forum of PCMagnet.


What AFIX Doesn't Do

AFIX is not a general-purpose MASM-to-A86 translation tool-- you
**cannot** apply it to files you have created. AFIX is merely a
tool that allows me to communicate, in a machine-readable
format, the changes that I manually made to the copyrighted
source files. It works only with the .FIX files that I have
supplied. I do hope to write a MASM-to-A86 tool that will
assist you in converting any program; but there are other
improvements I would like to make to A86 first. Meanwhile, this
present effort makes over 2 megabytes of A86 source code
publicly available. That should be enough to keep you busy for
awhile!


Some Comments About the Converted Programs

This conversion effort has substantially improved both the
reliability and compatibility of A86. I made several dozen
changes for the V3.22 release, to minimize the changes needed
for the successful conversion. I added a new switch, +L8, that
changes assumptions made about untyped forward references,
reducing the number of B and W type-specifiers needed. The +D
switch already made the syntax of numeric constants MASM-
compatible. Thus, for maximum compatibility, the converted
files are assembled with the +DL8 switch setting.

Chapter 12 of the A86 manual goes into detail about what needs
to be done to convert files from MASM to A86. All 61 source
files assemble to complete .COM programs. The changes made to
these files fell into five categories:

1. Most of the changes comprised the addition of explicit
segment-override operators to memory references. MASM
inserts such overrides behind the programmer's back, as
controlled by the confusing and misunderstood ASSUME
directive. These overrides appear primarily in the
handlers for interrupts taken over by memory-resident
(TSR) programs. For simple, non-resident COM programs,
all segment registers point to the program segment,
so that overrides aren't needed.

2. Two of the 61 source files contained macros. A86's
macro definition syntax is different, so the definitions
had to be converted. These were the only two files
that did not retain MASM-compatibility after conversion.

3. There were some forward-reference symbols whose type
needed to be specified, usually with the OFFSET operator.

4. There were a few expressions involving forward references
that A86 couldn't handle. The expressions were moved into
EQU directives placed below the symbols referenced.

5. There were a couple of built-in mnemonics, such as WAIT, that
doubled as user symbols. MASM allows this; A86 doesn't. The
symbols were modified by appending an underscore character.

I verified the correctness of the converted files by generating a
proprietary version of A86 that mimicked as closely as possible
the (mostly inferior) code generation of MASM. This reduced the
number of discrepancies in the resulting .COM files to a small
enough number that I could manually verify their functional
equivalency. I did not attempt to test the execution of the
programs themselves.

The total size of changes was minuscule in proportion to the
total size of the source files. In fact, the one-line comments
appended to the top of each program totalled more bytes than the
code changes made! Without those comments, the total changes
(moved bytes plus inserted bytes plus deleted bytes) for the 59
non-macro files were 3363 out of 2231783 bytes. I can thus
claim that for COM programs not containing macros, A86 is 99.83%
MASM-compatible. Twenty of the files required no changes
whatever.



 December 6, 2017  Add comments

Leave a Reply