Invoking MACRO-80
MACRO-80 Switches
MACRO-80 Pseudo-Ops
MACRO-80 In-Line Error Messages
MACRO-80 Console Error Messages
Invoking LINK-80
LINK-80 Switches
Invoking LIB-80
LIB-80 Switches
Invoking CREF-80
Debugging MACRO-80 Programs Using DEBUG.MAC
:Invoking MACRO-80

     MACRO-80 is invoked by the following command --

          M80 obj:fn1.ext,lst:fn2.ext=src:fn3.ext

where
     obj:fn1.ext  is the device/filename for the object program
     lst:fn2.ext  is the device/filename for the listing
     src:fn3.ext  is the device/filename for the source

:MACRO-80 Switches

     The following switches may be specified in the command line --

          O    Print all listing addresses in octal
          H    Print all listing addresses in hexadecimal

          R    Force generation of an object file
          L    Force generation of a listing file
          C    Force generation of a cross reference file

          Z    Assemble Zilog (Z80) mnemonics
          I    Assemble Intel (8080) mnemonics

          P     Each /P allocates an extra 256 bytes of stack space for use 
during assembly.  Use /P if stack overflow errors occur during assembly.
:MACRO-80 Pseudo-Ops

     The following are the pseudo-ops recognized by MACRO-80 --

          ASEG      COMMON    CSEG      DB        DC
          DS        DSEG      DW        END       ENTRY
          PUBLIC    EQU       EXT       EXTRN     NAME
          ORG       PAGE      SET       SUBTTL    TITLE
          .COMMENT  .PRINTX   .RADIX    .REQUEST  .Z80
          .8080     IF        IFT       IFE       IFF
          IF1       IF2       IFDEF     IFNDEF    IFB
          IFNB      ENDIF     .LIST     .XLIST    .CREF
          .XCREF    REPT      ENDM      MACRO     IRP
          IRPC      EXITM     LOCAL     COND      ENDC
          *EJECT    DEFB      DEFS      DEFW      DEFM
          DEFL      GLOBAL    EXTERNAL  INCLUDE   MACLIB
          ELSE      .LALL     .SALL     .XALL
:MACRO-80 In-Line Error Messages

     A    Argument Error           O    Bad opcode or objectionable syntax
     C    Conditional nesting err  P    Phase error
     D    Double Defined Symbol    Q    Questionable
     E    External error           R    Relocation
     M    Multiply Defined Symbol  U    Undefined symbol
     N    Number error             V    Value error
:MACRO-80 Console Error Messages

     No end statement encountered in input file
          -- no END statement

     Unterminated conditional
          -- at least one conditional is unterminated

     Unterminated REPT/IRP/IRPC/MACRO
          -- at least one block is unterminated

     [xx] [No] Fatal error(s) [,xx warnings]
          -- the number of fatal errors and warnings
:Invoking LINK-80

     LINK-80 is invoked by typing --

          L80 obj1:filename.ext/sw1,obj2:filename.ext/sw2,...

where  objn:filename.ext  denotes a .REL file to be linked and swn  denotes 
switches which control the linking process.
:LINK-80 Switches

     /R        Reset -- put loader back in initial state

     /E or /E:Name
               Exit LINK-80 and return to CP/M.   Search the system library 
for any undefined references.   /E:Name uses Name for the start address  of 
the program.

     /G or /G:Name
               Start  execution  of  the program.   Again,  if  /G:Name  is 
specified, Name defines the start address of execution.

     <filename>/N
               Save the binary on disk under the name 'filename.COM'.

     /P:adr and /D:adr
               Set  the Program and Data area origins for the next  program 
to be loaded.


     /U
               List the origin and end of the program and data area as well 
as all undefined globals.

     /M
               List  the origin and end of the program and data  area,  all 
defined globals and their values,  and all undefined globals followed by an 
asterisk.

     <filename>/S
               Search 'filename.REL' to satisfy references.

     /X        If a filename/N was specified,  /X will cause the file to be 
saved in Intel HEX format with a extension of .HEX.

     /Y        If a filename/N was specified, /Y will create a filename.SYM 
file when /E is entered.  This file contains the names and addresses of all 
globals for use with SID or ZSID.
:Invoking LIB-80

     To invoke LIB-80, type --

          LIB

     Commands  to LIB-80 consist of an optional destination filename  which 
sets  the  name of the library being created,  followed by an  equal  sign, 
followed by module names separated by commas or filenames with module names 
enclosed in angle brackets separated by commas.

     To  select  a  given module from a file,  use the  name  of  the  file 
followed  by  the  module(s)  specified  enclosed  in  angle  brackets  and 
separated  by  commas.   If no modules are selected from a file,  then  all 
modules are selected.

:LIB-80 Switches

     /O   Set listing radix to Octal
     /H   Set listing radix to Hexadecimal
     /U   List undefineds
     /L   List cross reference
     /C   Create -- start LIB over
     /E   Exit -- rename .LIB to .REL and exit
     /R   Rename -- rename .LIB to .REL
:Invoking CREF-80

     CREF-80 is invoked by typing --

          CREF80 listing=source

where  'listing'  is  the  name of the  file  'listing.LST'  generated  and 
'source'  s  the  name  of the file  'source.CRF'  generated  by  MACRO-80.  
'listing' is optional, and, if omitted, the listing file generated is named 
'source.LST'.
:Debugging MACRO-80 Programs Using DEBUG.MAC

     DEBUG.MAC  is  a  package of MACROs which the user may employ  to  aid 
himself  in debugging MACRO-80 programs.   This package contains two  print 
MACROs,  one  register display MACRO,  and one exit MACRO.   In all  cases, 
these MACROs have no net affect on any register.

     DEBUG.MAC is used by first specifying it as a MACRO Library within the 
user's program.  This is accomplished by the statement --

          MACLIB    DEBUG.MAC

as an assembly-language instruction at the beginning of his program.   This 
statement  loads the library DEBUG.MAC and makes its MACROs  available  for 
use.  These MACROs are --


 Name  # Args  Size (Bytes)   Function                 Example
 ----  ------  ------------   --------                 -------

 EXIT    0/1   275 or 263+    Print an exit message,   EXIT
                              print the contents of    EXIT <Exit Cond 1>
                              all registers, and warm
                              boot CP/M
 PRINT     1   19+            Print a message on CON:  PRINT <Message>
 PRINTC    1   17+            Print a char string on   PRINTC <'M1',0DH>
                              CON:
 REGS      0   241            Print the contents of    REGS
                              all registers on CON:

Note:  The + after a size indicates that one must add to the indicated size 
the number of characters specified in the parameter.

Note:   Messages specified for EXIT and PRINT should not contain restricted 
MACRO-80 symbols (such as !) or an error message will result.

     An example of the use of these MACROs follows --

          MACLIB    DEBUG.MAC
          -- code --
          REGS                ; print all register values at this point
          -- code --
          PRINT     <Ck Pt 1> ; got to check point 1
          -- code --
          EXIT      <Exit error 1> ; should not have taken this path
          -- code --
          PRINT     <Ck Pt 2> ; got to check point 2
          -- code --
          EXIT                ; normal exit
          -- code --