I played through the 780124 version up until 500 points. Unfortunately the end-game herald didn’t appear, but I know what’s the problem so I’m gonna fix it soon and play through the end-game too.
If there is someone who like to hone their MDL skills there is two parser bugs, one in the 77 version and one in the 78 version that I found. These are probably original bugs but it would be nice to fix things like this. So, if you so inclined take a look at the issues and offer a solution (I’m gonna give them a crack later when the end-game is fixed).
I glady take reports of any other bugs you can find!
I have seen reports of bugs in the 1981 version if you try to PLAY VIOLIN and somthing about LIGHT WIRE when you gonna blow the safe open. My ambition is to fix these bugs eventually.
I have fixed some 39 year old bugs in the original MDL code. These are bugs that I found in comments from when Renga in Blue and @beslayed played the game.
The fixes are the following (in the 1981-07-22 version):
Change line 1381 in act3.mud to make "play violin" respond "An amazingly offensive noise issues from the violin.":
<COND (<AND <NOT <EMPTY? <PRSI>>> <TRNN <PRSI> ,WEAPONBIT>>
Change line 153 in parser.mud to prevent the parser from crashing with phrases like "HELLLO, SAILOR":
<COND (<N=? <PRSO> <>> <SET ANDFLG T>)> ;"AND is only allowed between NOUN-phrases"
Change line 1386-88 in act3.mud to make "play me/thief/troll" work:
<JIGS-UP <STRING
"You are so engrossed in the role of the " <ODESC2 <PRSO>> " that
you kill yourself, just as he would have done!">>)>>
Change line 1207-08 in dung.mud to make save/restore during thief melee (for FLAGS to be properly saved/restored they have to be defined in MGVALS.)
THIEF-ENGROSSED!-FLAG
]>
BINF!-FLAG is used to hold the OBJECT that's burning in the receptacle. When restored it is unlikly that the pointer will point to the same OBJECT.
To fix this add this line after line 414 in act2.mud to make save/restore work during balloon ride:
<COND (.BINF <SET BINF <SETG BINF!-FLAG <1 <OCONTENTS .CONT>>>>)> ;"Rebind BINF to OBJ burning in receptacle."
All four versions is now fully playable from start to finish! See the project at my GitHub-page and please report any additional bugs that you can find.
I think I’ve had several email discussions over the years with people (not Henrik) reporting the balloon and thief issues as a bug in Confusion. My speculation was that BINF!-FLAG was once really a flag, but it looks like it was an object even in the 1977 version. Quite possibly it works in real MDL.
Lars Brinkhoff leads an effort to emulate and restore the PDP-10 ITS. It’s an ongoing effort but a couple of months ago they got the 1978 version of Zork up and running. So there is a possobility to test your thesis that it was possible that the BINF!-FLAG worked in real MDL. I think I’m gonna test that later today.
It’s not possible to test this in my reconstructions of the 1977 or 1978 versions because I used your implementation of SAVE/RESTORE (of the whole workbench) in these.
Nice hearing from you! I find your Confusion amazing and quite an achievment.
I’ve tried the 1978 version that’s on the PDP-10 ITS and in the original MDL it’s possible to save both during the fight with the thief and during the balloon ride. So the problem with BINF!-FLAG seems to be isolated to Confusion.
I’ve worked through the list of issues reported and fixed a lot of them. I especially fixed some small issues with the Confusion source code so to make it easier to compile it with current versions of GCC (in Linux or in CygWin) and in Visiual Studio 2022 for Windows. There’s also links to precompiled binaries for Windows and Linux.
I don’t have access to a Mac platform, so if any Mac owner could try a compilation (and document a how to) it would be great!
(I would also like a binary for Mac that I can store together with the other binaries, if possible.)
The link to the project is in the first post in this thread.
I gave it a shot on a current Mac (ARM architecture). Got it to build.
I had to install the garbage-collector package via homebrew:
brew install bdw-gc
Then I added -I/opt/homebrew/include to COPTFLAGS in the Makefile. (Homebrew packages were on /usr/local on Intel MacOS, but /opt/homebrew on ARM MacOS.) Then make worked. I tested mdli in mdlzork_810722/patched_confusion, and it worked, at least as far as the Kitchen.
You can grab my compiled copy from http://eblong.com/zarf/tmp/mdli if you want. However, I don’t think you want, because it dynamically links the bdw-gc library – so the binary won’t run on other people’s Macs. I don’t recall offhand the incantation to statically link a library.
(File length 584312, just to be sure you have the updated version.)
When you run it, it prints a “Welcome to ‘Confusion’” banner and then “LISTENING-AT-LEVEL 1 PROCESS 1”. To run Zork, go into the mdlzork_810722/patched_confusion directory of the repo (see first post in this thread), run mdli, and then type