In my last journey towards MUD I found that the source files in the zip archive from Stanford are incomplete. I managed to get hold of a key missing file as scanned hardcopy, but this still had errors in it and there were possibly other issues with the sources that I had. Thanks to a comment from John Forecast I discovered that the tape version of MUD, available on GitHub, is more complete than the zip file of source and also includes a compiled binary. Consequently I have changed direction and I am now going to build MUD from the tape source rather than the zip file source, even though the binary is also on the tape and could be viable. By compiling from source we prove the files and ensure we have a binary compatible with my 7.04 monitor.
First things first, restore MUD from tape. Mount the tape and then:
.r backup
/tape tape:
/files
/restore
! READ MUD
MUD MAS
MUD TXT
MUDTXT MAS
MUD EXE
1 DBA
2 DBA
5 DBA
6 DBA
7 DBA
LOGBOO DBA
ALMANA DBA
BOOK DBA
MUD .RM
MUD .TM
MUD .OM
MUD .MM
VALLEY EXE
VALLEY .RM
VALLEY .TM
VALLEY .OM
VALLEY .MM
POWER EXE
DBASE EXE
SUBFIL EXE
READ ME
"Done
/^Z
.dismount tape:
[MTA0:MUD Read(C/H/S) = 1933920/0/0]
[MTA0 dismounted]
.dir
READ MUD 2 <000> 1-Mar-84 DSKB: [1,2]
MUD MAS 476 <000> 28-Feb-84
MUD TXT 483 <000> 28-Feb-84
MUDTXT MAS 141 <000> 28-Feb-84
MUD EXE 552 <000> 28-Feb-84
1 DBA 4 <000> 25-Jan-84
2 DBA 6 <000> 19-Jan-84
5 DBA 2 <000> 25-Jan-84
6 DBA 2 <000> 14-Feb-84
7 DBA 2 <000> 21-Nov-83
LOGBOO DBA 2 <000> 29-Feb-84
ALMANA DBA 2 <000> 24-Feb-84
BOOK DBA 1 <000> 23-Feb-84
MUD .RM 134 <000> 21-Feb-84
MUD .TM 134 <000> 28-Feb-84
MUD .OM 39 <000> 28-Feb-84
MUD .MM 4 <000> 21-Feb-84
VALLEY EXE 380 <000> 28-Feb-84
VALLEY .RM 40 <000> 28-Feb-84
VALLEY .TM 23 <000> 28-Feb-84
VALLEY .OM 8 <000> 28-Feb-84
VALLEY .MM 1 <000> 28-Feb-84
POWER EXE 60 <000> 8-Feb-84
DBASE EXE 176 <000> 21-Feb-84
SUBFIL EXE 56 <000> 3-Oct-79 3B(15)
READ ME 1 <000> 1-Mar-84
Total of 2731 blocks in 26 files on DSKB: [1,2]
We now need to extract the source files into the directory build from source.
.ru subfil
/H for help
*
*mud.mas
EXPLODING
*mudtxt.mas
EXPLODING
*^C
Now we need to make some simple changes to the MUD.MIC to accommodate my system configuration. Notably NSAVE and NSSAVE is not a valid command in monitor 7.04 having been dropped in 7.01 and we have the BCPL compiler in the system search path so there is no need to specify where to run it from.
.sos mud.mic
Editing MUD.MIC[27,100,MUD,SOURCE]
*fbcpl$1:*
01700 .r dskf:bcpl[1,4]
*sdskf:bcpl[1,4]$bcpl$1:*
01700 .r bcpl
03000 .r bcpl
05400 .r bcpl
06300 .r bcpl
08400 .r bcpl
10600 .r bcpl
*fnsa$1:*
06000 .nsa
*snsa$save$1:*
06000 .save
12100 .save
*fnss$1:*
02100 nss power
*snss$ssave$1:*
02100 ssave power
04600 .ssave
11700 .ssave
*eub
[DSKB:MUD.MIC[27,100,MUD,SOURCE]]
It should now be possible to do MUD.MIC. Lets see what happens.
.do mud all
.noerror
.if ($A#"") .goto all
.
.r macro
*dbadat=dbadat
Assembling Database for MUD version 3
NO ERRORS DETECTED
HI-SEG. BREAK IS 406500
PROGRAM BREAK IS 000000
CPU TIME USED 00:00.016
10P CORE USED
*mboots=mboots
% .SGPPN will be obsolete; please use GETTAB .GTRDI instead.
% .SGDEV will be obsolete; please use GETTAB .GTRDV instead.
NO ERRORS DETECTED
HI-SEG. BREAK IS 400140
PROGRAM BREAK IS 000140
CPU TIME USED 00:00.017
36P CORE USED
*^Z
.
.r bcpl
*mud0/o
BCPL: MUD0 400461/354
*mud1/o
BCPL: MUD1 402622/16
*mud2/o
BCPL: MUD2 403724/12
*mud3/o
BCPL: MUD3 402373/36
*mud4/o
BCPL: MUD4 403345/415
*mud5/o
BCPL: MUD5 416447/5
*mud6/o
BCPL: MUD6 407032/65
*mud7/o
BCPL: MUD7 403042/13
*mud8/o
BCPL: MUD8 407612/12
*mudlib/o
BCPL: MUDLIB 414536/1445
*^Z
EXIT
.
.r link
*mud0,mud1,mud2,mud3,mud4,mud5,mud6,mud7,mud8,mudlib,mboots/COUNTER/set:.high.:4
72500
[LNKRLC Reloc. ctr. initial value current value limit value
.LOW. 0 3143 1000000
.HIGH. 400000 472452 1000000]
*dbadat/g
EXIT
.ssave
MUD saved
.if ($A="all") .goto DB
.
.r bcpl
*dbase/o
BCPL: DBASE 415477/2442
*^C
.r link
*/set:.high.:430000
*dbase,sys:bcplib/search/set:.high.:472500,dbadat/g
EXIT
.save
DBASE saved
.mic exit
Well that looks excitingly successful with no apparent errors. Lets see what happens if you run MUD.
ru mud
isn't available at the moment. Try again tomorrow?
Well, it does something. At a guess I think that it should be picking up the application name at the beginning of string but doesn’t seem to be doing that, and there is probably something that needs to be done to actually start MUD.
After some digging around it would appear that the all important MUD database needs to be created using DBASE. Obvious really, until you run DBASE:
.ru dbase
?BCLIOE BCPL I-O ERROR
ALL:MUD.TXT (0) file not found
EXIT
The issue now appears to be that the all important MUD source database is not here. A quick search through the tape finds the MUD.TXT separately on the tape, it is just not in the .MAS files. A retry of DBASE gives us:
.ru dbase
initialisation used 3519
persona used 0
levels used 67
hours used 7
rooms
435 = last room number
used 6487
maps
8 = last map number
used 26
vocabulary ;vocabulary objects
;vocabulary actions
;vocabulary action synonyms
;vocabulary demon actions
used 12914
demons
48 = last demon number
used 153
objects
470= last object number
used 5065
travel
435 = last travel number
used 8106
text
1041 = last text number
used 636
187 classes, 233 objects and 16 motion words defined
Total space used 36996
isn't available at the moment. Try again tomorrow?
This looks promising until the last line which suggests that MUD still won’t start. As a test, lets see what happens if we try and build VALLEY (a smaller MUD that was East from the Road between the lands).
.ru dbase-valley.txt
initialisation used 3519
persona used 0
levels used 67
hours used 7
rooms
98 = last room number
used 1483
maps
0 = last map number
used 26
vocabulary ;vocabulary action synonyms
;vocabulary demon actions
used 4745
demons
51 = last demon number
used 156
objects
159= last object number
used 1561
travel
98 = last travel number
used 2466
text
1083 = last text number
used 794
47 classes, 77 objects and 16 motion words defined
Total space used 14840
isn't available at the moment. Try again tomorrow?
Still doesn’t look like it is going to run.
Well, although we have made progress it looks like there is still something missing. A look back at what is on the MUD tape reveals that there are a number of DBA files that I don’t have and which it is clear from the READ.MUD are required to run the game:
1 DBA 4 <055> 25-Jan-84
2 DBA 6 <055> 19-Jan-84
5 DBA 2 <055> 25-Jan-84
6 DBA 2 <055> 14-Feb-84
7 DBA 2 <055> 21-Nov-83
LOGBOO DBA 2 <055> 29-Feb-84
ALMANA DBA 2 <055> 24-Feb-84
BOOK DBA 1 <055> 23-Feb-84
I could just use the ones from tape, but I would like to know how to generate them for completeness. On inspection, these just appear to be text files for in game help and humour, a bit like fortune cookie on unix, so nothing to do here really but use them as is as far as I can tell.
So, a moment for some reflection. When I use the tape supplied pre-compiled binaries, I get the following error and it doesn’t matter if it is MUD or VALLEY.
.ru valley
I don't seem to be able to access :F.MUD[166055000000,0], it's
not your fault, sorry.
I think I have now confirmed that this is what happens when MUD can’t read/write/update the persona file (MUD..PM). To correct this, in the executable directory ensure that MUD..PM has a protection of <022>. All other files should probably be <055>.
If I build from source, I get the other error
.ru mud
isn't available at the moment. Try again tomorrow?
Time to put my thinking cap on again.
After further research I have discovered:
The user profile needs an ENQ-DEQ and IPCF quota to run mud. This needs to be set in REACT either for the default user of the individual user.
The PPN [2011,2776] is special! Only from this account can you enter MUD and use the persona Richard, and this allows you in as Richard the Arch-Wiz. I think the user name of the account may also be special and has to be RICHARD, but that is not proven.
.login richard
Job 3 PDP10 TTY1
Password:
[LGNLAS Last access to [2011,2776] succeeded on 13-Apr-118:15:25:59]
15:37 13-Apr-118 Friday
.ru mud
ESSEX UNIVERSITY: Multi-User Dungeon
This Mud created: 28th February 1984 at 20:50:58
Welcome! By what name shall I call you?
*richard
Your last game was today at 15:26:53.
Hello again, Richard the arch-wizard!
^C trap is OFF
Room START
Narrow road between lands.
You are stood on a narrow road between The Land and whence you came.
To the north and south are the small foothills of a pair of majestic
mountains, with a large wall running round. To the west the road
continues, where in the distance you can see a thatched cottage opposite
an ancient cemetery. The way out is to the east, where a shroud of
mist covers the secret pass by which you entered The Land.
rain -
----*A playful rabbit snuffles round your feet.
----*
If you want to RUN MUD from another PPN, you need to ensure all the MUD runtime files are protection <055> except for the MUD..PM file which needs to be protection <022> but there might be issues with how personas are written back to the file that still need to be pinned down. When this is done MUD will run from any directory using the tape image.
I donot have a mud..pm Please help
I have confirmed this by rebuilding on my TOPS-10.
You need to build MUD.EXE on [2011,2776], then RUN MUD. This will initialise the persona file MUD..PM[2011,2776]. From then on you should be able to RUN MUD and VALLEY on the [2011,2776] account.
Assuming you have mud.exe in [2011,2776], running mud.exe from that account should create MUD..PM.