A Collection of CPM and MSDOS based 8080/Z80/8086 Assemblers and Linkers.
Over the years I utilized a number of assemblers and linkers. Each had its own
advantage and quirks. Here is a collection of some of the better ones I
have collected in one spot for easy downloads. In no particular order....
TDL's Z80 Macro Assembler.
This was perhaps the first Z80 assembler utilized by the S-100
community. It utilized Intel 8080 style opcodes and had its own unique opcodes
for Z80 specific instructions. It had relocating code capability and a fairly
decent collection of macros. It actually came out before CPM and operated
initially with TDL's own disk system. I think there may in fact been early
cassette tape versions. Later of course there was a proper CPM version.
Quite a bit of early S-100/CPM software was written for this assembler. It
had its own Linker as well.
The manual for the TDL ZASM Assembler can be obtained
here.
The actual programs can be obtained
here.
Cromemco ZASMB.COM Z80 Assembler.
Again a very early Z80 assembler. This one had more limited macro capability but
it was very fast. It utilized Zilog opcodes. The one annoying issue
with this assembler is that it will not accept names with
the "$" or "_" character. The run time command line synthex is also a little
strange. For example:-
ASMB USERFILE.ABX
will assemble the source file on A: create an object file on drive B: and send
the print listing to the printer. The assembler always produces .REL files
which must then be linked with their Cromemco Loader to produce a .COM file.
The Digital Research LINK or Microsoft Link-80 program (see below) are better
and can be used instead to produce .COM or .HEX files.
The manual for the Cromemco ZASMB Assembler can be obtained
here.
The actual ZASMB.COM programs can be obtained
here.
Digital Research's ASM, MAC, RMAC and LINK
Probably more CPM code has been written with this combination than any other.
Digital Research never really did adapted to the Z80 with its extra opcodes. All
their code was in Intel 8080 style format. They did provide a kludge Z80.LIB
for cases where you could take advantage of the Z80's capability. However it was
just that a kludge. It can be very frustrating looking up the Digital Research
opcode of the equivalent Zilog one. The Zilog mnemonics to me always
seemed more logical. That said, almost all BIOS code is written with
these assemblers and linker. You have no choice! The MAC assembler
was an improvement of the earlier Digital ASM.COM. Same format etc. it just had
macros capability. The more powerful RMAC also allowed the generation or
reloadable code modules. The CPM program HEXCOM is useful for quickly converting
a .HEX file to a .COM file.
MAC filename
produces filename.hex, filename.prn and filename.sym The latter can be
utilized as a symbol table for the Digital Research Symbolic Debugger SID.
The manual for the Digital Research ASM.COM can be obtained
here.
The manual for the Digital Research MAC.COM can be obtained
here.
The manual for the Digital Research LINK(80).COM can be obtained
here.
The actual ASM,MAC, RMAC, LINK, Z80.LIB and HEXCOM programs can be obtained
here
SD Systems ASM and LINK
In the past I used the SD Systems assembler simply
because that's what I started with. It has a slight quirk in that the data
fields "DB", "DW" require "DEFB" and "DEFW". The good news is that strings can
be written with "DEFM". It is a fast stripped down assembler but today
nothing special.
The SD Systems assembler (ZASM.COM) can be obtained
here
The command line assembler options can be
obtained
here
The SD Systems Linker (LINK.COM) can be obtained here
The command line linker options can be obtained
here
Microsoft's M80 and L80
Again a very popular CPM assembler. Very useful if you want to splice things
into other higher languages. However I never really liked it but add it here for
completeness.
The manual for Microsoft's M80.COM can be obtained
here.
The manual for Microsoft's L80.COM can be obtained
here.
The actual M80 and L80 programs can be obtained
here.
P.F. Ridler's ZASMB
This is a really great little Z80 assembler written in 1985 by
a P.F.Ridler, from of all places Zimbabwe.
He called it ZASMB.COM. What's nice about it is it is very fast and spits code
out directly as a .COM file. It uses Zilog syntax but will allow you to also use
terms that are consistent -- like XOR A,A or CP A,05H instead or XOR A and CP
05H. The
only limitation, a rather limited number of ifdef's options. Best of all you can assemble
the assembler source code yourself if you are so inclined.
The manual for
ZASMB can be seen here.
The source code for ZASMB can be obtained
here
The ZASMB.COM can be obtained here
SLR's Z80ASM
While late to the CPM scene this assembler is in my opinion by far the
best. Its lightening fast, produces .COM or .HEX files
directly, it is very efficient and has many options. I have now switched
over to this assembler for all my own Z80 code.
The SLR Z80ASM.com assembler can be obtained
here.
The documentation
can be obtained here.
Later they put out an assembler for the Z180 CPU
The assembler and documentation can be found
here.
Digital Research's DDT, SID and ZSID
These go hand in hand with the above assemblers. For CPM there was really no
other debugger other than those of Digital research. To this day they are model
examples of code debuggers.
The manual for the Digital Research DDT.COM can be obtained
here.
The manual for the Digital Research SID.COM can be obtained
here.
The manual for the Digital Research ZSID.COM can be obtained
here.
The actual DDT, SID and ZSID programs can be obtained
here.
Digital Research CPM86 Assemblers, Linker and Debugger
These are modeled almost exactly after the CPM80 versions. One nice
feature was ASM86.COM which is a CPM80 version of the 8086 ASM86.CMD assembler.
This allows your to work with your BIOS (and other programs) under CPM80 as you
are building up a CPM86 version. Digital Research also supplied a CPM80
XLT-86.COM program that did a decent first pass job of converting your 8080 into
8086 code.
The CPM-86 Programmers Guide & Systems Guide explains how to work with these
programs.
They can be obtained
here and
here.
The manual for the Digital Research XLT-86.COM can be obtained
here.
The actual SID.CMD, RASM86.CMD, LINK86.CMD, ASM86.COM and XLT-86.COM programs can be obtained
here.
Microsoft's MASM Assembler, Linker and Debugger
These are probably more 8086+ programs assembled with MASM than all othere 8086
assemblers combined. It is not a particular friendly assembler, but can handle
almost any demand made upon it. The Assembler, Linker and Debugger can be
downloaded from here.
The NASM MSDOS/Windows Assembler.
This is an alternative to MASM (see above). In my
opinion it is a far superior assembler. The syntax is very simple (all memory
data addressing is in "[ ]" brackets, any references to labels etc are just
entered as text). So code like:-
MOV AL,[ES:BX], MOV AX,[ES:BX] , MOV
AX, [BX] and MOV AX,label are all quite clear.
NASM outputs files in a number of formats including .BIN, .HEX, .COM, .OBJ.
It will also handle opcoded for all the more recent 8086 "family" of chips,
Pentium etc. It is very fast too. Currently it is the only assembler
I use for 8086 code. There is an active public web site that supports this
assembler, see http://www.nasm.us/.
The NASM assembler manual can be obtained
here.
The NASM assembler can be obtained here.
(Normally you only use NASM.EXE)
The Easy68K Assembler.
There are many good assemblers for the 68000 family of CPU's. I have been using
a fantastic package written some time ago by Tim Larson, Paul McKee and Chuck
Kelly called "Easy68K". It runs as its own self contained IDE in windows.
Not only does it have a complete assembler but it has a self contained Run and
Debug interface. The only catch is that all console IO goes through the 68k
software interrupt Trap #15. Using this debugger you can quickly write and test
code before programming an EEPROM. The only change for your final hardware
setup being you replace Trap #15 with an output to your Console I/O port.
The Easy68K assembler IDE can be downloaded from
here.
The Telemark TASM Assembler.
The Telemark Assembler (TASM) is a table driven cross assembler for the MS-DOS
(and LINUX) environments. Assembly source code, written in the appropriate
dialect (generally very close to the manufacturers assembly language), can be
assembled with TASM, and the resulting object code transferred to the target
microprocessor system via PROM or other mechanisms. It was written by Thomas N.
Anderson of Squak Valley Software. I use it here for all my 6502 assembly code.
However it can be used for other CPU's as well. See
here for
more information
The TASM assembler itself can be downloaded from
here.
Z80 to 8080 Opcode Translator.
This is a very flexable table driven translator. Unfortunately I cannot recall
where I obtained it from. It can be downloaded from
here
This page was last modified
on
05/07/2023