S100 Computers

Home S-100 Boards History New Boards Software Boards For Sale
Forum Other Web Sites News Index    
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:-


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

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