Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Original linker LINK.COM from CP/M-80 Digital Research lost!!!!!

557 views
Skip to first unread message

Plo

unread,
Apr 4, 2023, 9:36:46 AM4/4/23
to
Hi everyone,
some time ago I found on the internet an original LINK.COM version of CP/M-80 by Digital Research whose manual described between the various switches /../../ one which performed a dynamic linking between the various .REL and Libraries, allowing to dynamically load into memory (within the limit of 64k), obviously to the detriment of execution speed, the various program segments whose sum is greater than 64k... Something similar to PLINK86 in a PC DOS environment... Now I can't find either the LINK.COM file or the relative manual in PDF format. Do any of you have them or know about them?
Thanks

fridtjof.ma...@gmail.com

unread,
Apr 4, 2023, 9:55:51 AM4/4/23
to
Here you go...

http://cpmarchives.classiccmp.org/cpm/Software/rlee/D/DIGITAL%20RESEARCH/MAC-RMAC/

My preference is Microsoft M80 and L80. L80 is compatible with LINK. But the BEST linker (in my opinion) was PLINK-II -- that did REL files, Whitesmiths object files and others. Would link just about ANYTHING. And, did overlays. That was used to give Microsoft FORTRAN and M80 overlay capabilities "back in the day". If you are
interested, I can supply the software and a manual. Let me know... (as a PS, I haven't tried... but PLINK-II may be
able to give Propero FORTRAN overlays as well).

fridtjof.ma...@gmail.com

unread,
Apr 4, 2023, 9:57:34 AM4/4/23
to
And I note... you are already familiar with PLINK86... so you know the story already.

Plo

unread,
Apr 4, 2023, 10:30:23 AM4/4/23
to
Hi Fred,
thank you so much for the link!!!... Yes, when I was "young" I programmed in Clipper and I used PLINK86 for overlays..so I know it well...I don't know PLINK-II and I'd like to play with it to try it out. ..also and especially with Prospero Fortran!... I'm subscribed to your GitHub so you can pass me your link and I'll be happy to use it (together with the manual...)

Thank-you!!

Douglas Miller

unread,
Apr 4, 2023, 10:43:41 AM4/4/23
to
If by "dynamically load into memory" you mean the "page relocatable" format (PRL, SPR, etc), then you must use DRI's LINK.COM - L80 will not do it. And if you are using DRI's LINK.COM then you cannot use M80 as it will produce REL extensions that are incompatible. The LINK switches you want are "OP" for PRL, "OS" for SPR, and "B,OS" for BNKBIOS3.SPR format. For creating RSXs on CP/M Plus (v3.1) you use the "OP" option. For creating various system files for MP/M, I believe you also want the "OS" option. For example, to create a PRL program for use with MP/M or CP/M 3, use:

link myprog=myprog[op]

Douglas Miller

unread,
Apr 4, 2023, 10:53:53 AM4/4/23
to
I have a copy of LINK.COM here: https://github.com/durgadas311/MmsCpm3/blob/master/dist/bin/link.com

A good copy of the manual is hard to find. I have a badly-OCRed copy of the CP/M Plus (v3) Command Summary manual that has some information on LINK.COM - if you have decipher the OCR mistakes. I believe there are better copies out there.

Udo Munk

unread,
Apr 4, 2023, 11:25:22 AM4/4/23
to

Douglas Miller

unread,
Apr 4, 2023, 11:35:12 AM4/4/23
to
On Tuesday, April 4, 2023 at 10:25:22 AM UTC-5, Udo Munk wrote:
> https://www.autometer.de/unix4fun/z80pack/ftp/manuals/DRI/cpm-3/

The "Programmer's Utilities Guide" is the one you want for LINK, "Section 15 LINK-80".

Plo

unread,
Apr 4, 2023, 11:47:15 AM4/4/23
to
Thank's a lot!!!! Douglas,Udo
I have a lot of meat to put on the fire !!!!!!!!!!!!!!!!

Mark Ogden

unread,
Apr 5, 2023, 12:53:05 PM4/5/23
to
I have put a scanned copy of the link80 manual on my website at https://mark-ogden.uk/files/LINK-80_Operators_Guide_Dec80.pdf
My reverse engineering efforts for link80 back to PLM source can be found in the cpmsrc directory of https://github.com/ogdenpm/intel80tools

Mark

Douglas Miller

unread,
Apr 5, 2023, 1:00:55 PM4/5/23
to
On Wednesday, April 5, 2023 at 11:53:05 AM UTC-5, Mark Ogden wrote:
> I have put a scanned copy of the link80 manual on my website at https://mark-ogden.uk/files/LINK-80_Operators_Guide_Dec80.pdf
> My reverse engineering efforts for link80 back to PLM source can be found in the cpmsrc directory of https://github.com/ogdenpm/intel80tools
>
> Mark
Note, that is a rather old version of LINK-80 described in that manual. It does not show the OS, OR, or B switches. Nor the '$' switches.

Mark Lougheed

unread,
Apr 5, 2023, 9:27:47 PM4/5/23
to
If it hasn't already been mentioned, there is a decent PDF of the DRI LINK-80 manual on archive.org
https://archive.org/details/bitsavers_digitalRestorsGuideDec80_4642080/mode/2up

Douglas Miller

unread,
Apr 5, 2023, 9:38:48 PM4/5/23
to
On Wednesday, April 5, 2023 at 8:27:47 PM UTC-5, Mark Lougheed wrote:
> If it hasn't already been mentioned, there is a decent PDF of the DRI LINK-80 manual on archive.org
> https://archive.org/details/bitsavers_digitalRestorsGuideDec80_4642080/mode/2up

That's the same, out of date, version that Mark Ogden posted. It may have good information in it, but does not have the new switches and associated features.

Mark Ogden

unread,
Apr 6, 2023, 4:27:54 AM4/6/23
to
The decompiled version does include the switches.

The CPM3 programmers utilities manual (page 237 onwards) shows the link flags
15.4.2 The BIOS Link (B) Switch
The B switch is used to link a BIOS in a banked CP/M 3 system. LINK-80 aligns
the data segment on a page boundary, puts the length of the code segment in the
header, and defaults to the SPR filetype
15.4.11 The Output RSP File (OR) Switch
The OR switch outputs RSP (Resident System Process) files for execution under MP/M.
15.4.12 The Output SPR File (OS) Switch
The OS switch outputs SPR (System Page Relocatable) files for execution under MP/M.
15.5 The $ Switch
The $ switch controls the source and destination devices. The $ switch takes the general form:
$td
where t is a type, and d is a drive specification.
LINK-80 recognizes five types:
• C-Console
• I - Intermediate
• L - Library
.O-Object
• S -Symbol
The drive specification can be a letter in the range A through P corresponding to one of sixteen logical drives, or one of the following special characters:
• X- Console
• Y - Printer
• Z - Byte bucket
15.5.1 $Cd - Console
LINK-80 usually sends messages to the console, but messages can be directed to the list device by using $CY, or they can be suppressed by using $CZ. Once $CY or
$CZ has been specified, $CX can be used subsequently in the command line to redirect messages to the console device.
15.5.2 $Id - Intermediate
LINK-80 usually places the intermediate files it generates on the default drive. The $I switch allows you to specify another drive for intermediate files.
15.5.3 $Ld - Library
LINK-80 usually searches on the default drive for library files that are automatically linked because of a request item in a REL file. The $L switch instructs
LINK-80 to search the specified drive for these library files.
15.5.4 $Od - Object
LINK-80 usually generates an object file on the same drive as the first REL file in the command line, unless an output file with an explicit drive is included in the
command. The $O switch instructs LINK-80 to place the object file on the drive specified by the character following the $O, or to suppress the generation of an
object file if the character following the $O is a Z.
15.5.5 $Sd - Symbol
LINK-80 usually generates a symbol file on the same drive as the first REL file in the command line, unless an output file with an explicit drive is included in the
command. The $S switch instructs LINK-80 to place the symbol file on the drive specified by the character following the $S, or to suppress the generation of a symbol
file if the character following the $S is a Z
15.5.6 Command Line Specification
The td character pairs following a $ switch must not be separated by commas. The entire group of $ switches must be set off from any other switches by a comma. For
example, the three command lines shown below are equivalent:
A>link partl[$sz,$od,$lb,q],partZ
A>link partl[$szodlb,Q],partZ
A>link partl[$sz od Ib],partZ[Q]
The $1 switch specifies the drive to be used for intermediate files during the entire link operation, but the other $ switches can be changed in the command line. The
value of a $ switch remains in effect until it is changed as LINK-SO processes the command line from left to right. This is especially useful when linking overlays. (See
Section 16.) For example, the command
A>link root (ovl[$szcz])(ovZ)(ov3)(ov4[$sacx])
suppresses the SYM files and console output generated when OV1, OV2 and OV3 are linked. When OV4 is linked, LINK-80 places the SYM file on drive A and sends
any messages to the console device.

Hope the above helps
Mark

Plo

unread,
Apr 6, 2023, 7:21:42 AM4/6/23
to
Gorgeous, complete and accurate description Mark!!!!!!!
Thank you very much

Douglas Miller

unread,
Apr 6, 2023, 7:35:09 PM4/6/23
to
On Tuesday, April 4, 2023 at 10:25:22 AM UTC-5, Udo Munk wrote:
> https://www.autometer.de/unix4fun/z80pack/ftp/manuals/DRI/cpm-3/
Disappointed to find that there are 17 pages missing from the Programmer's Utilities Guide (end of section 16 through Appendix C). Did not check any others, just noticed this while looking for a good LIB-80 document (which was section 17, of course).

Plo

unread,
Apr 6, 2023, 10:26:26 PM4/6/23
to
It's a pity...Hope you can find the complete documentation...

Douglas Miller

unread,
Apr 6, 2023, 10:40:22 PM4/6/23
to
I have an original hard-copy. Just had to go to the back room and dig it out.

Plo

unread,
Apr 8, 2023, 7:45:10 AM4/8/23
to
You have an email from me..

Douglas Miller

unread,
Apr 8, 2023, 8:52:49 AM4/8/23
to
You're best source for RMAC/LINK documentation is the URL that Udo provided, specifically this document: https://www.autometer.de/unix4fun/z80pack/ftp/manuals/DRI/cpm-3/CPM_Programmers_Utilities_Guide_Sep82.pdf - even though it has missing pages.

I have scanned the missing pages from my hardcopy, however note that while being the same edition it was printed in a different form-factor so the page numbers do not match up. It is the same content, though. I've posted these missing pages here:

http://sebhc.durgadas.com/CPM_Programmers_Utilities_Guide_missing.pdf

These missing pages are probably not of interest to most users. It includes the last couple pages of the section on overlays, the LIB-80 chapter, and some appendices that describe error messages (probably the most important part).

Douglas Miller

unread,
Apr 8, 2023, 1:43:54 PM4/8/23
to
Ran into a minor bug in RMAC, related to module names in the REL files. If your are using MACLIB, the default module name becomes that of the last maclib seen. To get around this, you need to explicitly name the module using the NAME directive, *before* any MACLIB directives.

Douglas Miller

unread,
Apr 8, 2023, 1:45:02 PM4/8/23
to
On Saturday, April 8, 2023 at 12:43:54 PM UTC-5, Douglas Miller wrote:
> Ran into a minor bug in RMAC, related to module names in the REL files. If your are using MACLIB, the default module name becomes that of the last maclib seen. To get around this, you need to explicitly name the module using the NAME directive, *before* any MACLIB directives.

Note that this becomes important if you are using LIB.COM to create libraries.

Dennis Boone

unread,
Apr 8, 2023, 7:57:45 PM4/8/23
to
> I have scanned the missing pages from my hardcopy, however note that
> while being the same edition it was printed in a different form-factor
> so the page numbers do not match up. It is the same content, though.
> I've posted these missing pages here:

I'm looking at my original early-mid 80s "DR Assembler Plus Tools"
manuals. They're in the smaller format (6.5"x8.5"). The binder
contains the following items:

Digital Research Programmer's Utilities Guide for the CP/M
family of operating systems [first edition, September, 1982]

Digital Research Symbolic Instruction Debugger Reference Manual
for the CP/M-80 family of operating systems [(C) 1978 and 1981,
fourth printing January 1982]

CP/M SID Symbolic Instruction Debugger User's Guide Release Note
[(C) 1983, "summarizes SID Version 3.0"]

Are these something not already (entirely) available, that I should scan
and place online?

De

Plo

unread,
Apr 9, 2023, 7:51:51 AM4/9/23
to
If you scan it and publish it you would be doing me and surely many others a big favor...

Dennis Boone

unread,
Apr 9, 2023, 5:53:59 PM4/9/23
to
> > Are these something not already (entirely) available, that I should scan
> > and place online?

> If you scan it and publish it you would be doing me and surely many
> others a big favor...

Here's the Programmer's Utilities Guide:

https://sysovl.info/pages/blobs/dr/dr_pug_1ed_1982.pdf

I'll do the SID manual and addendum soon, but the manual is
perfect-bound so I'll have to get someone to excise the spine from it
before it's scannable.

Enjoy!

De

Plo

unread,
Apr 10, 2023, 12:37:51 AM4/10/23
to
Thanks a lot!!!!!!!!!!! Dennis
very very good!!!!!!!!!

dxforth

unread,
Apr 10, 2023, 4:14:02 AM4/10/23
to
On 10/04/2023 7:53 am, Dennis Boone wrote:
> > > Are these something not already (entirely) available, that I should scan
> > > and place online?
>
> > If you scan it and publish it you would be doing me and surely many
> > others a big favor...
>
> Here's the Programmer's Utilities Guide:
>
> https://sysovl.info/pages/blobs/dr/dr_pug_1ed_1982.pdf

Also one here:

https://archive.org/details/h42_Digital_Research_Programmers_Utilities_Guide_for_the_CP-M_Family_of_Operating_Sy/mode/2up

Searching archive.org using "CPM" then clicking on 'texts' reveals other manuals.

Plo

unread,
Apr 10, 2023, 3:03:11 PM4/10/23
to
Thank-You!!!!

Dennis Boone

unread,
Apr 12, 2023, 1:40:01 AM4/12/23
to
> I'll do the SID manual and addendum soon, but the manual is
> perfect-bound so I'll have to get someone to excise the spine from it
> before it's scannable.

Here are the SID manual and the 3.0 addendum:

https://sysovl.info/pages/blobs/dr/dr_sidref_1982.pdf
https://sysovl.info/pages/blobs/dr/dr_sidaddendum_1983.pdf

De

Plo

unread,
Apr 12, 2023, 7:00:02 AM4/12/23
to
Great work!!!! Dennis
Thank-you very much....

dott.Piergiorgio

unread,
Jul 20, 2023, 7:21:07 AM7/20/23
to
On 04/04/23 15:36, Plo wrote:
> Hi everyone,
> some time ago I found on the internet an original LINK.COM version of CP/M-80 by Digital Research whose manual described between the various switches /../../ one which performed a dynamic linking between the various .REL and Libraries, allowing to dynamically load into memory (within the limit of 64k), obviously to the detriment of execution speed, the various program segments whose sum is greater than 64k... Something similar to PLINK86 in a PC DOS environment... Now I can't find either the LINK.COM file or the relative manual in PDF format. Do any of you have them or know about them?
> Thanks
>

Thanks to everyone for the .pdfs !! Duly archived here :)

Best regards from Italy,
dott. Piergiorgio.


0 new messages