Apricot Bits

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.