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
Text File  |  2000-06-30  |  5KB  |  104 lines

  1. **********************************************************
  2. * This question and answer were captured on Al Hawley's  *
  3. * Ladera Z-Node and should be of assistance to those who *
  4. * are just getting involved with macro assemblers.  This *
  5. * file is distributed by Richard Jacobson, Lillipute Z-  *
  6. * Node, System 1: 312-649-1730, System 2: 312-664-1730.  *
  7. **********************************************************
  8.  
  9. Msg #426 posted 10/30/86 at  7:20 pm by STEVE BENNETT
  10. To: ALL USERS     About: M80/L80 (24 lines)
  11.  
  12. I've got a few questions regarding the use of M80/L80:
  13. 0)  What is the difference between L80 and LD80?
  14. 1)  Why does L80 produce code starting at 103H instead of 100H?
  15.     Why does LD80 produce code at 100H?
  16. 2)  Why does L80 behave again when the /p:100 command is given
  17.     on the command line, although when you use ORG 100H it loads
  18.     code at 200H?
  19. 3)  When you use the SYM file generated by L80, the addresses are
  20.     off by the 3 bytes. How can you get around this problem when
  21.     using a debugger with the SYM file?
  22. 4)  Where can I get docs on M80 and L80?
  23. 5)  I am running an SB180 with the 192K ram drive. How do I keep
  24.     M80/L80 from accessing drive A: even though they are on M:?
  25.     (I realize this might be difficult, I was just hoping the
  26.     answer was something simple).
  27. 6)  As I need a macro-assembler that reads both Zilog and Intel
  28.     opcodes, is M80/L80 still the best choice?  I don't really
  29.     want to use a code converter all the time (ala ZCON for
  30.     ZAS/ZLINK) as the pseudo-ops .Z80 AND .8080 are very handy.
  31.  
  32. As you can see, I have a lot of questions!!!
  33. Comments from all appreciated.
  34.  
  35. -----
  36.  
  37. Msg #427 posted 10/30/86 at  9:35 pm by Greg Laskin
  38. To: ALL     About: M80/L80 (56 lines)
  39.  
  40. 0) L80 sounds like Microsoft's LINK-80 and LD80 sounds like
  41. Digital Research's LINK-80.  I'm guessing about LD80 because DRI
  42. called it LINK.COM when the distributed it.  However, if I'm
  43. right, theY differ mainly in the command line syntax and the
  44. fact that Microsoft likes to define new .REL file record types
  45. so DRI's linker can't always handle stuff put out my Microsoft
  46. languages (especially the Basic compiler).
  47.  
  48. 1) L80 wants to put a jump instruction at l00H pointing to the
  49. starting point of your program.  In a relocatable environment,
  50. the starting point isn't necessarily at 100H as required by
  51. CP/M, thus the jump instruction there.  You specify the starting
  52. point of the program with an address expression after the END
  53. directive in one and only one of the modules being linked
  54. (effectively making that module the MAIN module)., e.g.
  55.  
  56.    END STARTRTN
  57.    or
  58.    END 1000H     (better know what your doing with this one).
  59.  
  60. Wherever STARTRTN gets put, there will be a jump to it at 100H.
  61. What you observed is what happens with L80 if there is no MAIN
  62. module with a start address after the END directive.  In this
  63. case, the first instruction in the first module linked becomes
  64. the first instruction (which is not always what you meant) and
  65. the first instruction ends up at 103H with NOP's at 100-102H.
  66. The Digital Research linker will put a jump at 100H if there is
  67. a defined MAIN module and the entry point is not at 100H.
  68. However, if no main module is defined it simply plots the first
  69. module bring linked at 100H and dispenses with the jump
  70. instruction.
  71.  
  72. 2) When you say p:100 you have given an explicit instruction to
  73. the linker to put the first instruction of the code segment at
  74. 100h.  This overrides all of the default stuff discussed in 1).
  75. With DRI I think is [Lxxxx] that does the same thing.
  76.  
  77. 3)  As far as I know, only the DRI linker emits a .SYM file and
  78. then the only symbols listed are PUBLIC symbols.  Therefore, I
  79. assume you mean the SYMBOL TABLE output by the assembler.  If I
  80. guessed wrong, forgive me please.  The symbols here are relative
  81. to the start of the module being assembled and bear no
  82. relationship to where the linker puts the modules other than
  83. 0010' in a module is 10H from 0000' in a module ( the '
  84. indicated a relocatable address in the code segment and " in the
  85. data segment DSEG).  If you stick an ASEG at the beginning of
  86. the file, then all addresses are ABSOLUTE (the 's and "s
  87. disappear) and the linker will put everything exactly where you
  88. said and the symbols in the symbol table will reflect ABSOLUTE
  89. addresses.
  90.  
  91. 5) I suspect you are seeing the reaction of your system to a
  92. DISK SYSTEM RESET function call from within the program which
  93. always logs drive A in no matter what.
  94.  
  95. 6) I don't use M80 very often because I prefer what is now the
  96. Phoenix Software assembler PASM (used to be XITAN, then TDL then
  97. CDL) and linker, but they don't understand ZILOG opcodes (they
  98. invented their own).  I prefer M80 to MAC or RMAC (from DRI)
  99. because of the Zilog opcodes.  There are more than likely other
  100. opinions.
  101.  
  102.    Regards, Greg
  103.  
  104.