home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
utils
/
asmutl
/
m80-l80.lbr
/
M80.HZP
/
M80.HLP
Wrap
Text File
|
1987-07-18
|
8KB
|
207 lines
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
╨á EacΦ /╨ allocate≤ aε extrß 25╢ byte≤ oµ stacδ spacσ fo≥ usσ ì
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,...
wherσá objn:filename.ex⌠á denote≤ ß .RE╠ filσ t∩ bσ linkeΣ anΣ swεá denote≤ ì
switches which control the linking process.
:LINK-80 Switches
/R Reset -- put loader back in initial state
/E or /E:Name
Exi⌠ LINK-8░ anΣ returε t∩ CP/M«á SearcΦ thσ systeφ librar∙ ì
fo≥ an∙ undefineΣ references«á /E:Namσ use≤ Namσ fo≥ thσ star⌠ addres≤á oµ ì
the program.
/G or /G:Name
Star⌠á executioεá oµá thσ program«á Again¼á iµá /G:Namσá i≤ ì
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
Se⌠á thσ Prograφ anΣ Datß areß origin≤ fo≥ thσ nex⌠á prograφ ì
to be loaded.
/U
Lis⌠ thσ origiε anΣ enΣ oµ thσ prograφ anΣ datß areß a≤ wel∞ ì
as all undefined globals.
/M
Lis⌠á thσ origiε anΣ enΣ oµ thσ prograφ anΣ datßá area¼á al∞ ì
defineΣ global≤ anΣ thei≥ values¼á anΣ al∞ undefineΣ global≤ followeΣ b∙ aε ì
asterisk.
<filename>/S
Search 'filename.REL' to satisfy references.
/╪ Iµ ß filename/╬ wa≤ specified¼á /╪ wil∞ causσ thσ filσ t∩ bσ ì
saved in Intel HEX format with a extension of .HEX.
/┘ Iµ ß filename/╬ wa≤ specified¼ /┘ wil∞ creatσ ß filename.SY═ ì
filσ wheε /┼ i≤ entered« Thi≤ filσ contain≤ thσ name≤ anΣ addresse≤ oµ al∞ ì
globals for use with SID or ZSID.
:Invoking LIB-80
To invoke LIB-80, type --
LIB
Command≤á t∩ LIB-8░ consis⌠ oµ aε optiona∞ destinatioε filenamσá whicΦ ì
set≤á thσá namσ oµ thσ librar∙ beinτ created¼á followeΣ b∙ aεá equa∞á sign¼ ì
followeΣ b∙ modulσ name≤ separateΣ b∙ comma≤ o≥ filename≤ witΦ modulσ name≤ ì
enclosed in angle brackets separated by commas.
T∩á selec⌠á ßá giveε modulσ froφ ß file¼á usσ thσá namσá oµá thσá filσ ì
followeΣá b∙á thσá module(s⌐á specifieΣá encloseΣá iεá anglσá bracket≤á anΣ ì
separateΣá b∙á commas«á Iµ n∩ module≤ arσ selecteΣ froφ ß file¼á theεá al∞ ì
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
wherσá 'listingºá i≤á thσá namσ oµ thσá filσá 'listing.LSTºá generateΣá anΣ ì
'sourceºá ≤á thσá namσá oµ thσ filσá 'source.CRFºá generateΣá b∙á MACRO-80« ì
'listingº i≤ optional¼ and¼ iµ omitted¼ thσ listinτ filσ generateΣ i≤ nameΣ ì
'source.LST'.
:Debugging MACRO-80 Programs Using DEBUG.MACè
DEBUG.MA├á i≤á ßá packagσ oµ MACRO≤ whicΦ thσ use≥ ma∙ emplo∙á t∩á aiΣ ì
himselµá iε debugginτ MACRO-8░ programs«á Thi≤ packagσ contain≤ tw∩á prin⌠ ì
MACROs¼á onσá registe≥ displa∙ MACRO¼á anΣ onσ exi⌠ MACRO«á Iε al∞á cases¼ ì
these MACROs have no net affect on any register.
DEBUG.MA├ i≤ useΣ b∙ firs⌠ specifyinτ i⌠ a≤ ß MACR╧ Librar∙ withiε thσ ì
user's program. This is accomplished by the statement --
MACLIB DEBUG.MAC
a≤ aε assembly-languagσ instructioε a⌠ thσ beginninτ oµ hi≤ program«á Thi≤ ì
statemen⌠á load≤ thσ librar∙ DEBUG.MA├ anΣ make≤ it≤ MACRO≤á availablσá fo≥ ì
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║ Thσ ½ afte≥ ß sizσ indicate≤ tha⌠ onσ mus⌠ adΣ t∩ thσ indicateΣ sizσ ì
the number of characters specified in the parameter.
Note║á Message≤ specifieΣ fo≥ EXI╘ anΣ PRIN╘ shoulΣ no⌠ contaiε restricteΣ ì
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 --