asm89 8089 assembler
asm89 is a compiler for the Intel 8089 Input/Output
Processor. It produces OMF files
that can be linked with contemporary 80s tooling like Microsoft LINK or
Borland Turbo Link. The goal is to provide an straightforward way to
generate 8089 code that is linked into MS-DOS executables for the ACT
Apricot.
asm89 is a work in progress. While it assembles many opcodes, it does
not yet assemble them all correctly (like LPDI). It also does not
yet support EXTRN directives.
asm89 has only gotten as far as it has because of the work of Eric
Smith's i89, an assembler and
disassembler for the 8089. It was developed for working with ROMs for
the iSBC 215/220 disk controllers, so it works directly with HEX files
instead of linkable objects. I used disi89 to test that I was
generating the right output, because the only other thing that possibly
could was Intel's own ASM89 assembler for their ISIS-II development
system. And that doesn't seem to exist anymore.
You can find the repo at my git site.
Building
asm89 is written in Pascal and compiles with FreePascal. It is intended
that it can also compile in Borland Turbo Pascal but this is not yet the
case.
To compile with FreePascal, run
make -f Makefile.fp
It should produce an asm89 binary.
Usage
asm89 <input.asm> [output.obj]
asm89 expects one assembly language file, and it produces on object
file. The object file can be specified, but if it is not, the output is
the input file name with the extension changed to .OBJ.
The input assembly format is the Intel format described in the 8089
Assembler User's
Guide.