mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-24 08:54:17 +00:00
57 lines
2.3 KiB
Plaintext
57 lines
2.3 KiB
Plaintext
Assembling CP/M 3
|
|
=================
|
|
|
|
The original CP/M 3 build process seems to have been written for a CP/M 3
|
|
computer; it uses the MAC, RMAC, LINK, GENCOM and HEXCOM tools, which are
|
|
not readily available for other platforms in this day and age.
|
|
|
|
HEXCOM.C (based on LOAD.C in <ftp://oak.oakland.edu/pub/unix-c/> ) serves
|
|
as a suitable replacement for HEXCOM. The command syntax is:
|
|
|
|
HEXCOM comfile <hexfile
|
|
|
|
Similarly, to avoid a chicken-and-egg situation (SID is used to build SID),
|
|
HEXPAT.C has been supplied to overlay a COM file with a HEX file.
|
|
|
|
The other tools are run under emulation rather than being ported. The
|
|
emulator in question is ZXCC (version 0.3 or later); this can be downloaded
|
|
from <http://www.seasip.demon.co.uk/Cpm/software/linux.html>. It will compile
|
|
under DOS with DJGPP.
|
|
Note: Earlier versions of ZXCC cannot use LINK on programs bigger than 8k.
|
|
The latest ZXCC is necessary if you want to link the BDOS.
|
|
|
|
ZXCC is _not_ a full CP/M emulator. It contains a subset of CP/M sufficient
|
|
to run the build tools above. Its command line syntax is:
|
|
|
|
zxcc cpmfile {+}{-}arg1 {+}{-}arg2 ...
|
|
|
|
The arguments arg1, arg2 etc. can be:
|
|
|
|
filename Arguments not starting "-" or "+-" are parsed as filenames.
|
|
This process maps DOS directories to CP/M drives; so you could
|
|
type ZXCC MAC.CPM G:\ASM\DUMP.ASM and DUMP.ASM would be visible
|
|
to MAC.
|
|
+filename Arguments starting "+" are appended to the preceding argument.
|
|
See the LINK example below.
|
|
-text Text starting "-" is copied in verbatim (not even converted to
|
|
upper case).
|
|
+-text The text is appended to the previous argument.
|
|
|
|
The reason for the "+" options is: Filenames must be passed to ZXCC
|
|
surrounded by spaces, but ZXCC may need to pass them to the program in the
|
|
middle of a string of text. In this example, ZXCC requires the filename parts
|
|
to be separated by spaces, but they must be passed to LINK as one word:
|
|
|
|
LINK BDOS3=CPMBDOSX [OS,$SZ]
|
|
|
|
becomes
|
|
|
|
ZXCC LINK.CPM BDOS3 +-= +CPMBDOSX -[OS,$SZ]
|
|
| |
|
|
+------------+---+
|
|
|
|
|
The two + signs are used to remove the spaces either side of the "="; while
|
|
the "-" signs prevent the "=" and the "[OS,$SZ]" from being parsed as
|
|
filenames.
|
|
|