.key sys,dest/k,ancname/k,68000/s,link/s,tidy/s,ancilla/s,opt/k,ws/k,cc/k,sl/s,sc/s,all/s,comp/k
.def sys  m68k
.def ws   22000
.def dest :c.new.
.def cc   new
.def opt  -wa
.def comp bcp
.def ancname NEWESTMAILSERVER

.
. called as
.       make 68000              make into default dest, default ancilla slot
.       make LSI4                               ditto
.
. Only SYS, DEST, ANCNAME, 68000, link, tidy should need to be used.
. Otherwise please modify this
.

IF EQ <link$nolink> link; SKIP link
IF EQ <tidy$notidy> tidy; SKIP tidy
IF EQ <ancilla$anc> ancilla; SKIP ancilla

<comp>  bcp.util     mobj:util      opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.ummd     mobj:ummd      opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.server   mobj:server    opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.fs       mobj:fs        opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.send     mobj:send      opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.send     mobj:csend     opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>:cc:command:
<comp>  bcp.main     mobj:main      opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.main     mobj:cmain     opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>:cc:command:
<comp>  bcp.report   mobj:report    opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.msinit   mobj:msinit    opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.bsppair  mobj:bsppair   opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.mail     mobj:mail      opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.com      mobj:com       opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.command  mobj:command   opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.fsinput  mobj:fsinput   opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.groups   mobj:groups    opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.rdform   mobj:rdform    opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.readlin  mobj:readlin   opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.logon    mobj:logon     opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.trace    mobj:trace     opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.vt       mobj:vt        opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>

IF NOT MCTYPE=LSI4; SKIP nodemon
<comp>  bcp.demon    mobj:demon     opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.dinit    mobj:dinit     opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.sender   mobj:sender    opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.compres  mobj:compres   opt=ws<ws><sl><sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.r        mobj:r         opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>

LAB nodemon

IF mctype=68000;<comp> bcp.rmail mobj:rmail opt=ws25000sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>
IF mctype= LSI4;<comp> bcp.rmail mobj:rmail opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.rmessage mobj:rmessage  opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>
<comp>  bcp.rsend    <dest>rsend    opt=ws<ws>/sl/<sc>cc:sc:cc:new:cc:<cc>:<opt>

LAB link


. obj must be assigned to :PB.MOBJ on M68000s, and :PB.LOBJ on LSI4s
FAILAT 30
IF mctype = 68000; assign obj: :pb.mobj; IF NOT FAIL; echo "OBJ: assignment made"
IF mctype = LSI4;  assign obj: :pb.lobj; IF NOT FAIL; echo "OBJ: assignment made"
FAILAT 10

IF NOT mctype = 68000; SKIP NOT68000
. as LSI4s need to do post-processing but 68000s don't, move rmail and rmessage.
copy mobj:rmail    <dest>rmail
copy mobj:rmessage <dest>rmessage

. link together the MAIL program
obj:link com mobj:n mobj: CMAIN CSEND to <dest>mail
SKIP linkingdone

LAB NOT68000
IF NOT mctype = LSI4; SKIP NOTLSI4
. As they're so big, RMAIL and RMESSAGE are linked from two sections on LSI4s.
join mobj:rmail    mobj:r as <dest>rmail
join mobj:rmessage mobj:r as <dest>rmessage

. As machines can only read address space/2 bytes at a time, make MAIL two segs.
<comp>  bcp.com-1    mobj:com-1     opt=<opt>SN
<comp>  bcp.com-2    mobj:com-2     opt=<opt>SN
obj:link com-1    mobj:n mobj:             to mobj:tcom-1
obj:link com-2    mobj:n mobj: CMAIN CSEND to mobj:tcom-2
join mobj:tcom-1  mobj:tcom-2 as <dest>mail
delete mobj:tcom-1 mobj:tcom-2
SKIP linkingdone

LAB NOTLSI4
Echo "Unknown machine type"

LAB linkingdone

. Now make the dynamic system
syslink Mobj:system Mobj:newmail-system OPT fW18000

LAB ancilla
. Will fail if it already exists .....
:<68000>sys.ancilla mobj:newmail-system name=<ancname> <sys> create
. Now move NEWESTMAILSERVER somewhere ...
delete mobj:newmail-system

QUIT 0

LAB tidy
. Clean up
FAILAT 30
IF mctype=LSI4; protect mobj:n.sys-demon RW; protect mobj:sys-demon RW
                protect mobj:n.system    RW; protect mobj:system    RW
scratch dir=mobj:n
IF EQ selective <all$selective>; SKIP safe
scratch dir=mobj:
QUIT 0

LAB safe
DELETE mobj:n.trmail mobj:n.tcom mobj:n.trsend mobj:n.trmessage
DELETE mobj:mail-system mobj:newmail-system mobj:mail-demon mobj:newmail-demon


