Introduction Executing MAC XMAC Assembly Control Parameters Assembler Pseudo-Ops Inline Error Messages Console Error Messages :Introduction MAC is the CP/M Standard Macro Assembler; it is upward-compatable with ASM, the CP/M Standard Assembler. The facilities of MAC include assembly of Intel 8080 microcomputer mnemonics, along with assembly-time expressions, conditional assembly, page formatting features, and a macro processor which is compatable with the standard Intel definition (MAC implements the mid-1977 revision of Intel's definition). MAC requires approximately 12K of machine code and table space, along with an additional 2.5K of I/O buffer space. :Executing MAC MAC is invoked by the following command -- MAC d:filename $parms Only 'filename' is required, and it represents a file named 'filename.ASM'. MAC may then generate up to 3 other files -- filename.HEX (the Intel Hex Format File), filename.PRN (the Print or Listing file), and filename.SYM (a file containing a sorted list of the symbols used in the program). MACRO Library files may be referenced by the program; these files are named 'filename.LIB'. $parms represents the optional assembly control parameters which are discussed in the next section. MAC may be executed by employing the SUBMIT file MAC.SUB. MAC.SUB assembles the specified MAC .ASM file, converts it into a .COM file via LOAD, and erases the .HEX file. MAC.SUB is invoked by -- SUBMIT MAC filename where 'filename' is the name of the MAC file 'filename.ASM'. :XMAC XMAC is a version of MAC which does NOT recognize the intrinsic Intel 8080 assembler language mnemonics. XMAC is intended to be used for Cross- Assembly using .LIB files which contain the assembler mnemonics for the target machine. XMAC is invoked in exactly the same way MAC is (except that no SUBMIT file is available), and it recognizes the same pseudo-ops and control parameters. The patch file XMAC.ASM contains the patches used to convert MAC into XMAC. The library files MAC40.LIB and XMAC40.LIB contain the macros necessary to assemble code for the Intel 4040 microprocessor, for example. MAC40.LIB renames the 4040 mnemonics for ADD, SUB, etc., to ADD4, SUB4, etc., so that it will not conflict with MAC. XMAC40.LIB does not rename these, since XMAC does not recognize these in the first place. :Assembly Control Parameters The control parameter list is preceded by a $, and may contain any of the following in any order -- A - controls the source disk for the .ASM file H - controls the destination of the .HEX machine code file L - controls the source disk for the .LIB files M - controls MACRO listing in the .PRN file P - controls the destination of the .PRN listing file Q - controls the listing of LOCAL symbols S - controls the generation and destination of the .SYM file 1 - controls pass 1 listing In the case of the A, H, L, P, and S parameters, they may be followed by the drive name from which to obtain or to which to send data, where -- A,B,C,D -- designates that particular drive P -- designates the LST: device X -- designates the user console (CON:) Z -- designates a null file (no output) For example, $PB AA HB SX sends the .PRN file to drive B:, gets the .ASM file from drive A:, sends the .HEX file to drive B:, and sends the .SYM file to CON:. The parameters L, S, M, Q, and 1 may be preceded by either + or - to enable or disable their respective functions -- +L - list the input lines read from the MACRO library -L - suppress listing of the MACRO library (default) +S - append the .SYM output to the end of the .PRN file (default) -S - suppress the generation of the sorted symbol table +M - list all MACRO lines as they are processed (default) -M - suppress all MACRO lines as they are processed *M - list only HEX code generated by macro expansions in listing +Q - list all LOCAL symbols in the symbol list -Q - suppress all LOCAL symbols in the symbol list (default) +1 - produce a listing file on the first pass (for MACRO debugging) -1 - suppress listing on pass 1 (default) The programmer can intersperse controls throughout the assembly language source or library files. Interspersed controls are denoted by a "$" in the first column of the input line followed immediately by a parameter. :Assembler Pseudo-Ops The following Pseudo-Ops are supported -- DB defines data bytes or strings of data DS reserves storage areas DW defines words of storage ELSE alternate to IF END terminates the physical program ENDIF marks the end of conditional assembly ENDM marks the end of a MACRO EQU performs a numeric "equate" EXITM abort expansion of the current MACRO level IF begins conditional assembly IRP INLINE MACRO with string substitution IRPC INLINE MACRO with character substitution LOCAL define LOCAL variables unique to each MACRO repetition MACLIB specify MACRO Library to load MACRO defines beginning of a MACRO ORG sets the program or data origin PAGE defines the listing page size for output REPT defines the beginning of a INLINE MACRO SET performs a numeric "set" or assignment TITLE enables page titles and options :Inline Error Messages B - Balance error: MACRO doesn't terminate properly or conditional assembly is ill-formed C - Comma error: expression was encountered but not delimited properly from the next item by a comma D - Date error: element in a data statement (DB,DW) cannot be placed in the specified data area E - Expression error: expression is ill-formed and cannot be computed I - Invalid character: a non-graphic character has been found L - Label error: label cannot appear in this context M - MACRO overflow error: internal MACRO expansion table overflow N - Not implemented error: unimplemented feature used O - Overflow error: expression is too complicated or the number of LOCAL labels has exceeded 9999 P - Phase error: labels does not have same value on both passes (multiple label) R - Register error: value specified for a register is not compatable with op code S - Statement/Syntax error: statement is ill-formed V - Value error: operand is improperly formed or out of range :Console Error Messages NO SOURCE FILE PRESENT - .ASM file not found NO DIRECTORY SPACE - Directory is full SOURCE FILE NAME ERROR - The form of the source file name is invalid; note that MAC is invoked by 'MAC filename', and the .ASM file type is NOT specified. SOURCE FILE READ ERROR - Error in reading source file OUTPUT FILE WRITE ERROR - Error in writing output file CANNOT CLOSE FILE - An output file cannot be closed. UNBALANCED MACRO LIBRARY - No ENDM encountered for a MACRO definition INVALID PARAMETER - Invalid assembly parameter was found in the input line.