-
Notifications
You must be signed in to change notification settings - Fork 81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Muddle executables and save files #1940
Comments
The Toad systems at Living Computers: Museum + Labs (which are still available online) have working executables for MDL104.EXE and MADADV.SAV, which I installed myself from my personal magtape, whose contents originated at UChicago in the 1970s. I can arrange to put those files somewhere where you can pick them up for inclusion in the collection.
Rich Alderson
github@alderson.users.panix.com
its@alderson.users.panix.com
… On Sep 1, 2020, at 4:23 PM, Adam Sampson ***@***.***> wrote:
Notes on the surviving Muddle interpreter executables and save files, for the purposes of reconstructing the Muddle environment and applications. (Even when we have the source code, it's not always obvious what the resulting artefact should look like!)
This covers both ITS and TOPS-20 Muddle, and ignores anything earlier than version 50. See #1911 <#1911> for the full history.
A Muddle save file is a dump of the interpreter's memory space minus the interpreter code itself; it can contain both interpreted and compiled code. The interpreter executable can also include preloaded Muddle code. The memory layout in the executable is different between ITS and TOPS-20, and between different versions.
Compiled relocatable functions (RSUBRs) can be generated by the Muddle compiler or assembler (or by hand). RSUBRs need to refer to the interpreter's internal variables and functions, so they aren't inherently portable between Muddle versions or platforms, although there's a "fixups" mechanism that allows a list of patches to be applied when loading into a different version.
ITS files are usually in good shape. Unfortunately most of the TOPS-20 files we have are mangled, e.g. by newline conversion.
"Basics" = the PKG, EDIT, etc. packages described in The MDL Programming Environment <https://github.com/PDP-10/muddle/blob/master/doc/MDL_Programming_Environment.pdf> in compiled form.
Interpreters
Source Filename Version Contents Notes
XX <mdl>mdl105.exe.93 <https://github.com/PDP-10/muddle/blob/master/%3Cmdl%3E/mdl105.exe.93> 105 ? -Wascii, ?
Panda <games>mdl105.exe <https://github.com/PDP-10/panda/blob/master/files/games/mdl105.exe> 105 ? -Wascii, good
This repo MUDSYS; TS MDL56 56 None Built from the 106 source
XX <mdl>mdl106.exe.52 <https://github.com/PDP-10/muddle/blob/master/%3Cmdl%3E/mdl106.exe.52> 106 ? -Wascii, ?
? <mdl.int>mdl106.exe <https://github.com/PDP-10/muddle/blob/master/%3Cmdl.int%3E/mdl106.exe.5>.{1-5} 106 ? -Wascii, corrupt
? <mdl.int>mdlxxx.exe <https://github.com/PDP-10/muddle/blob/master/%3Cmdl.int%3E/mdlxxx.exe.2>.{1-2} After 106 ? -Wascii, corrupt, probably broken
Save files
Source Filename Version Contents Notes
XX <mdl>m104uni.save.1 <https://github.com/PDP-10/muddle/blob/master/%3Cmdl%3E/m104uni.save.1> 104 Basics (?) -Wascii, corrupt (missing bytes)
Panda <games>zork.sav <https://github.com/PDP-10/panda/blob/master/files/games/zork.sav> 105 Compiled Zork 7/22/81 <https://github.com/PDP-10/zork/> -Wascii, good
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub <#1940>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ADLCRX36BIFEJROA766HNWLSDV67PANCNFSM4QSLKZEQ>.
|
Thanks @rmaldersoniii, please do! I have updated @brouhaha's copy of "read20" with a -b option to write binary files preserving all bits: https://github.com/brouhaha/tapeutils FTP binary image mode would also be fine. |
It looks like there are actually three versions of Muddle in
|
I've been able to download those from TOAD-2 using Kermit - thanks, @rmaldersoniii! |
I have make two files available on my personal web page (but not in the index.html) to solve all the issues which people are seeing with previous attempts to move thing from the LCM+L Toad-2. The first is a copy of DUMPER, modified to allow the use of on-disk image files as input and output (as 36 bit files, not as tape images): https://www.panix.com/~alderson/dumper.exe The second is a DUMPER image of all the relevant files, including the ZORK.MAC files used at UChicago and LCM+L: https://www.panix.com/~alderson/zork.dumper These files were created with the image command to the BSD ftp program, to fetch them from the Toad-2. Once you have a copy, use the same command to write them to a running KLH10-based Tops-20 system such as Panda; this DUMPER will not run on a KS10 or SimH. Then use DUMPER (commands INFILE ZORK.DUMPER, then TRANSFER .) to put them into your connected directory. |
I believe I've now listed all the executables and save files we know about above - if you find any more, please let me know. I've added dates for all the Zork save files based on the newspaper in the white house's living room (search for "news" in the file, or climb through the window and go west). We've got more distinct versions than I thought - and none that corresponds to the final source. |
@eswenson1's copy of the sources from 1979 shows only trivial changes were added for the final 1981 version. |
Added Zork 1977-06-13 @ ToTS 9006255, and 1977-06-14 @ 9005183 & 2100085 to the table. |
On the its.pdp10.se server the MADMAN; contains the following files:
The one i wonder about is the "MADADV JAN7". If the JAN7 is correct, this file isn't in the above list. When I start the file it says:
The issue of US NEWS & DUNGEON REPORT is dated 1/24/78 so maybe the file is one of the above dated 1978-01-24? Would it be possible to expand the list above with a column that list the the correct filenames on its.pdp10.se? Is it possible to start the "OMADAD SAVE" file or is it corrupted (it doesn't start on the its.pdp10.se in MUD54)? |
Maybe I fumbled the JAN7 file. There is a single tape with several MADADV SAVE files on it, which can be confusing. They are the Zork 1978-01 files with suffix _0 etc in the table above. If you like, I can make a second pass and install them all with the proper date. The OMADAD file can be started by copying it to MADMAN; MADADV SAVE and then start ZORK. This will affect other users, so it's best to be a little careful. It should look like this:
|
There is no rush to fix the timestamp on the file for me. Maybe it could be done when MADMAN is updated with the new file from march/april of 1978 (nudge, nudge...). Is there a reason that OMADAD-file don't start with:
But it would start if a rename/copy the file to "MADADV SAVE"? I'm not gonna tinker with the server and potentionally mess it up for other users, even though I havn't seen that many (I even tried to promote the server a bit on IntFiction)... |
The April files don't include an executable SAVE file, only sources. I updated all the January files. The files are named from their timestamps. I haven't checked if that's consistent with the dates inside the game. There must be a reason OMADAD can't be RESTORED, but I don't know what it is. It's ok to mess around a bit, but I understand if you are reluctant. |
I got the April files mixed up with the 3/28/78 one above (for MUDDLE104). I get these results from the files in MADMAN;
|
I've not found that the file name or location of a Muddle save file bears on the ability or not to run it. In other words if you do <RESTORE "..."> and it won't run, moving it or renaming it isn't going to help. What Lars meant by copying the file to MADMAN;MADADV SAVE was to allow the :ZORK or ZORK^K DDT command to use it automatically. |
Are the "MADADV SAVE"-files from ToTS 9006255, 9005183, 2100085 & 9005143 (MADADV JUN12, JUN14 & JUL1) available anywhere, or do I have to wait until MITDDC releases them? (I'm trying to compile my own little MADMAN-collection to import/export from/to my own offline emulation via DUMP.) |
Are the timestamps, the time part, correct for the above files, or are they arbitrary? (The tree.txt on MITDDC only report the date not the time.) |
The SAVE files are not available until released by MITDDC. The tapes carry standard ITS timestamps which have a 0.5 second resolution. Possibly there is some rounding when files are stored in a Unix file system, but the timestamps listed above should be accurate to the second. They are not arbitrary. |
Currently at the its.pdp-10.se server all the zork-files from MADADV DEC12 and forward crashes on startup. I'm not sure of something has changed on the platform or the servre just is in a need of a reboot.
The strange thing is that even the files like the one from 77-12-04 crashes in the same way. On my own installation of ITS this file refuses to start at all and just hangs without printing anything (the dec12-file works, though). |
@heasm66, indeed I have made a change in the platform: I have updated the PDP-10 emulator to test a bug fix. However it's only related to one of the terminal I/O devices, so I'd be surprised if it affects Muddle or Zork. I rebooted, but MADADV DEC12 still crashes like above. I changed back to the older emulator, still same thing. |
Ah, I also changed MUDSAV; SAV FILE and FIXUP FILE for running Trivia. I changed back, and now MADADV DEC12 works fine again. |
Just so I understand this correctly: |
The
Whatever that means... |
I suspect it means that a file whose code/data lives in the SAV or FIXUP files in the MUDSAV directory at the time the Muddle image was saved is no longer present on the machine on which the SAVE file is being RESTORed. |
Regarding your dependencies question regarding Zork and Trivia and corresponding files in MUDSAV, I believe you are correct. One issue I found is that when I built and ran the latest Zork under muddle 55, I had to replace the SAV FILE and FIXUP FILE files in MUDSAV. I couldn't just name them SAV 55FILE and FIXUP 55FILE. Not sure why the pattern of nnFILE didn't work for me, Zork, and MDL 55. |
I meant FILEnn, above, I guess. I thought it was FILEnn, but must be mistaken. |
The binaries, and source, from tape 9005143, 9005183 & 9006255 have been released at MITDDC and the links in the above table can be updated. (I just noticed that I have edit rights in the above mentioned post. Should I update the links myself?) |
Cool! The Trivia files can also be added (my explain-muddle script should be able to handle them too if you want to poke around in them). Edit: Added. MARC; TV SAVE is a Muddle 53 image so explain-muddle doesn't understand it yet; I need to figure out the locations of the variables it uses. The later MADMAN; TRV SAVFIL is a 54 image and decodes fine. |
Maybe this is old news but I found a way to stop execution without KILLing the Muddle interpreter.
This could be useful to recreate the ACT & DUNGON-files.
|
Great tip, thanks!
|
You can change variables, texts and even replace existing functions with your own version (you need to |
I'm reading this, a little surprised that it is news. I've used this to debug Zork images many times. When I ran into errors with compiled/saved Zork in MDL55, were it not for this ability to debug, it would have been impossible. I thought I'd mention, in case you didn't already know, that when you get to a Muddle listener, you can load in any functions, to help debugging and introspection -- most importantly the Zork bible code (IIRC this is LCF; B >. You can make nice charts of all objects, rooms, points, etc. There are other debug helper functions scattered around the source trees that are also useful here. When I have a chance, I'll provide more details. Not near a (real) computer now. |
Unfortunately the earliest "BIBLE" code I could find was from your 1979 version and it doesn't work out-of-the-box with the earlier images. I guess at least some ATOMs changed names. But it always possible to rewrite the code. Shouldn't be to hard... |
Oh right. I was working with the 616+100-point version when using the Bible. |
Charts?!? I'd like to see this!
|
It would look like this (there is, of course, many pages of this but I cut it off after a couple of entries for each command),:
|
Yup. I have an XGP printout of all this in my circa 1980 Zork binder! |
Cool, thanks!
|
These are now online: As far as I can see, this completes the set of Zork source and binary files from ToTS. |
The
and
This file seems to be from a couple of months before the source code from 1979 @eswenson1 "extracted". |
How many points does this version have? |
I can't start it, but I guess it's 616 points + 100 points endgame because the Donald Woods stamp is there (the last lousy point). |
Notes on the surviving Muddle interpreter executables and save files, for the purposes of reconstructing the Muddle environment and applications. (Even when we have the source code, it's not always obvious what the resulting artefact should look like!)
This covers both ITS and TOPS-20 Muddle, and ignores anything earlier than version 50. See #1911 for the full history.
A Muddle save file is a dump of the interpreter's memory space minus the interpreter code itself; it can contain both interpreted and compiled code. The interpreter executable can also include preloaded Muddle code. The memory layout in the executable is different between ITS and TOPS-20, and between different versions. So you can't load a save file into a different version of Muddle from the one that produced it - all the references to interpreter variables and code locations would be wrong.
Compiled relocatable functions (RSUBRs) can be generated by the Muddle compiler or assembler (or by hand). RSUBRs need to refer to the interpreter's internal variables and functions, so they aren't inherently portable between Muddle versions or platforms, although there's a "fixups" mechanism that allows a list of patches to be applied when loading into a different version.
ITS files are usually in good shape. Unfortunately most of the TOPS-20 files we have are mangled, e.g. by newline conversion.
Interpreters
"Basics" = the PKG, EDIT, etc. packages described in The MDL Programming Environment in compiled form.
"No GC" = the garbage collector files are missing; TS MUDxx should come with AGC MUDxx and (from 55 onwards) SGC MUDxx.
"54+dev" = some stage of development between versions 54 and 55. These tend not to work.
Save files
MUDSAV; PC1 SAVE
Not all FOO SAVE files are from Muddle: save files from MIM and Confusion use different formats, although they use similar names, and some are just backups of other random files.
Zork dates are from the issue of US News & Dungeon Report.
GC notes
Muddle 56/106 has three GCs: AGC is a compacting GC that copies between two ITS processes; SECGC is a compacting GC that uses TOPS-20 sections; SGC is a fast mark-sweep GC. SGC was introduced in Muddle 55/105, so earlier versions only have AGC or SECGC depending on the platform.
The GCs are quite big and don't need access to most of the interpreter, so they're mapped in from a separate file when needed, overlaying the interpreter from AGCLD onwards. They're assembled along with the rest of the interpreter using some MIDAS LOC/OFFSET trickery - the code is actually stored at REALGC (200000) but it thinks LOC is AGCLD (which means the symbol table from AGCLD onwards contains two overlapping sets of symbols, for the GC code and whatever it's overlaying). AGCLD is set by the AGCMRK source file; everything after AGCMRK in the link order is overlayed by the GC.
For Muddle 54/104, we have an ITS interpreter and a TOPS-20 interpreter. We only have the AGC file for the TOPS-20 version, but we have the symbols for it in ITS. AGC only has a single ITS conditional, for the page size, so it should be possible to rebuild the ITS version using the TOPS-20 one as a reference. Unfortunately the two copies don't quite match, going by the symbols - LOCFL1-GLOFLS=11 for TOPS-20 and 10 for ITS. (It's also 11 for TS MUD, which suggests the TOPS-20 version is a bit later...)
The text was updated successfully, but these errors were encountered: