home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
ENTERPRS
/
CPM
/
UTILS
/
F
/
M80-L80.LBR
/
M80-L80.DZC
/
M80-L80.DOC
Wrap
Text File
|
2000-06-30
|
5KB
|
104 lines
**********************************************************
* This question and answer were captured on Al Hawley's *
* Ladera Z-Node and should be of assistance to those who *
* are just getting involved with macro assemblers. This *
* file is distributed by Richard Jacobson, Lillipute Z- *
* Node, System 1: 312-649-1730, System 2: 312-664-1730. *
**********************************************************
Msg #426 posted 10/30/86 at 7:20 pm by STEVE BENNETT
To: ALL USERS About: M80/L80 (24 lines)
I've got a few questions regarding the use of M80/L80:
0) What is the difference between L80 and LD80?
1) Why does L80 produce code starting at 103H instead of 100H?
Why does LD80 produce code at 100H?
2) Why does L80 behave again when the /p:100 command is given
on the command line, although when you use ORG 100H it loads
code at 200H?
3) When you use the SYM file generated by L80, the addresses are
off by the 3 bytes. How can you get around this problem when
using a debugger with the SYM file?
4) Where can I get docs on M80 and L80?
5) I am running an SB180 with the 192K ram drive. How do I keep
M80/L80 from accessing drive A: even though they are on M:?
(I realize this might be difficult, I was just hoping the
answer was something simple).
6) As I need a macro-assembler that reads both Zilog and Intel
opcodes, is M80/L80 still the best choice? I don't really
want to use a code converter all the time (ala ZCON for
ZAS/ZLINK) as the pseudo-ops .Z80 AND .8080 are very handy.
As you can see, I have a lot of questions!!!
Comments from all appreciated.
-----
Msg #427 posted 10/30/86 at 9:35 pm by Greg Laskin
To: ALL About: M80/L80 (56 lines)
0) L80 sounds like Microsoft's LINK-80 and LD80 sounds like
Digital Research's LINK-80. I'm guessing about LD80 because DRI
called it LINK.COM when the distributed it. However, if I'm
right, theY differ mainly in the command line syntax and the
fact that Microsoft likes to define new .REL file record types
so DRI's linker can't always handle stuff put out my Microsoft
languages (especially the Basic compiler).
1) L80 wants to put a jump instruction at l00H pointing to the
starting point of your program. In a relocatable environment,
the starting point isn't necessarily at 100H as required by
CP/M, thus the jump instruction there. You specify the starting
point of the program with an address expression after the END
directive in one and only one of the modules being linked
(effectively making that module the MAIN module)., e.g.
END STARTRTN
or
END 1000H (better know what your doing with this one).
Wherever STARTRTN gets put, there will be a jump to it at 100H.
What you observed is what happens with L80 if there is no MAIN
module with a start address after the END directive. In this
case, the first instruction in the first module linked becomes
the first instruction (which is not always what you meant) and
the first instruction ends up at 103H with NOP's at 100-102H.
The Digital Research linker will put a jump at 100H if there is
a defined MAIN module and the entry point is not at 100H.
However, if no main module is defined it simply plots the first
module bring linked at 100H and dispenses with the jump
instruction.
2) When you say p:100 you have given an explicit instruction to
the linker to put the first instruction of the code segment at
100h. This overrides all of the default stuff discussed in 1).
With DRI I think is [Lxxxx] that does the same thing.
3) As far as I know, only the DRI linker emits a .SYM file and
then the only symbols listed are PUBLIC symbols. Therefore, I
assume you mean the SYMBOL TABLE output by the assembler. If I
guessed wrong, forgive me please. The symbols here are relative
to the start of the module being assembled and bear no
relationship to where the linker puts the modules other than
0010' in a module is 10H from 0000' in a module ( the '
indicated a relocatable address in the code segment and " in the
data segment DSEG). If you stick an ASEG at the beginning of
the file, then all addresses are ABSOLUTE (the 's and "s
disappear) and the linker will put everything exactly where you
said and the symbols in the symbol table will reflect ABSOLUTE
addresses.
5) I suspect you are seeing the reaction of your system to a
DISK SYSTEM RESET function call from within the program which
always logs drive A in no matter what.
6) I don't use M80 very often because I prefer what is now the
Phoenix Software assembler PASM (used to be XITAN, then TDL then
CDL) and linker, but they don't understand ZILOG opcodes (they
invented their own). I prefer M80 to MAC or RMAC (from DRI)
because of the Zilog opcodes. There are more than likely other
opinions.
Regards, Greg