On Fri, May 22, 2020 at 11:54 AM Lawrence Stewart <stewart(a)serissa.com>
wrote:
I can’t find an online copy of the Bell Laboratories
BCPL manual
(Canaday/Thompson) from 1969 or anything about how to use BCPL on Multics
or CTSS.
In general, Multics does not have a concept of "main"; the entry point of a
program is the name of the program. Looking at the Multics runoff sources
(written in BCPL) we see in the segment runoff_driver.bcpl:
external
$( RunoffCommand = "runoff"
...
let RunoffCommand () be main
$( MONITOR := Open (StreamName + Write, "error_output") //
Errors, etc. written here.
...
BCPL replaces the name RunoffCommand with runoff during compilation; the
compiled segment runoff_driver will have an entry point "runoff". Entering
the command "runoff" will search segments in the search path for that entry
point.
Since segments can have multiple entry points, the idea of "main" (or
"start" or "start_") as the defining entry point is not meaningful in
Multics.
The Multics C compiler (based on PCC) does have a concept of main; the C
linker aliases that to the segment name, making the entry point name the
same as the segment name. Thus compiling and linking foo.c generates a
segment foo with an entry point foo, which points to main. (Actually, it
aliases it to the C runtime library initialization which calls main.)
-- Charles
-- Charles