Date: 16 Nov 82 1:55:22-EST (Tue)
From: Rick Conn
Re:   Assemblers

The CP/M assembler business IS somewhat confusing  with  all  the
similar  names  and different capabilities for the various assem-
blers out there.  Here is a  quick  summary  which  I  hope  will
answer some of your questions:

ASM (I call it ASM2) -- this is the  assembler  that  comes  with
CP/M  2.2;  what  I call ASM is the assembler that came with CP/M
1.4, and the major difference is that with ASM,  quoted  text  is
always  capitalized  while  ASM2  allows lower-case to pass thru;
ASM and ASM2 have no macro capability, but do support conditional
assembly, SET, and a few nice operations in the operand field

MAC -- this is DR's upgrade to ASM and ASM2 (DR=Digital Research,
who wrote CP/M); this is basically the same assembler, but it can
use macros and macro libraries; it still generates just HEX files
as output

M80/L80 -- this is Microsoft's assembler, which is used to assem-
ble  programs  requiring SYSLIB; M80 is the assembler, which sup-
ports nice features found in MAC, such as  macros,  AND  supports
relocatable  libraries (which MAC does not); the output of M80 is
a REL file, NOT a HEX file, and this output  is  then  passed  to
L80; L80 can take a number of REL files and put them together and
generate a HEX or a COM file or both; M80 also supports both  In-
tel  and Zilog mnemonics, while MAC and ASM/ASM2 just support In-
tel mnemonics, altho there is a Z80  macro  library  which  comes
with  MAC  to allow you to assemble for the Z80-specific instruc-
tions, but does not allow Zilog mnemonics

Other assemblers are available, but these are the main ones I use
and  know  about.   I use M80/L80 for most of the ZCPR2 work, but
MAC is required to assemble ZCPR2  itself  (and  ZCPR1  for  that
matter).   A  big difference is that MAC allows longer names than
M80 (M80 is limited to 6 chars in my version).

Hope this helps.
Rick