So the Infocom source code base was just ‘released’.

https://twitter.com/textfiles/status/1118005126457888768

So I woke up to this incredible news. Jason Scott at the most excellent archive.org had just uploaded the old Infocom source code to github. It’s from the infamous ‘found hard disk’ that has been mentioned going back to the failed game ‘The restaurant at the end of the universe’.

So looking at the repos here, you can see the latest ones are all Infocom. It’s best to get them all via git for reason below:

git clone https://github.com/historicalsource/abyss.git
git clone https://github.com/historicalsource/amfv.git
git clone https://github.com/historicalsource/arthur.git
git clone https://github.com/historicalsource/ballyhoo.git
git clone https://github.com/historicalsource/beyondzork.git
git clone https://github.com/historicalsource/borderzone.git
git clone https://github.com/historicalsource/bureaucracy.git
git clone https://github.com/historicalsource/checkpoint.git
git clone https://github.com/historicalsource/cutthroats.git
git clone https://github.com/historicalsource/deadline.git
git clone https://github.com/historicalsource/enchanter.git
git clone https://github.com/historicalsource/hitchhikersguide.git
git clone https://github.com/historicalsource/hollywoodhijinx.git
git clone https://github.com/historicalsource/infidel.git
git clone https://github.com/historicalsource/infocom-sampler.git
git clone https://github.com/historicalsource/journey.git
git clone https://github.com/historicalsource/leathergoddesses-gold.git
git clone https://github.com/historicalsource/leathergoddesses.git
git clone https://github.com/historicalsource/lurkinghorror.git
git clone https://github.com/historicalsource/minizork-1982.git
git clone https://github.com/historicalsource/minizork-1987.git
git clone https://github.com/historicalsource/minizork2-1988.git
git clone https://github.com/historicalsource/moonmist.git
git clone https://github.com/historicalsource/nordandbert.git
git clone https://github.com/historicalsource/planetfall.git
git clone https://github.com/historicalsource/plunderedhearts.git
git clone https://github.com/historicalsource/restaurant.git
git clone https://github.com/historicalsource/seastalker.git
git clone https://github.com/historicalsource/sherlock.git
git clone https://github.com/historicalsource/shogun.git
git clone https://github.com/historicalsource/sorcerer.git
git clone https://github.com/historicalsource/spellbreaker.git
git clone https://github.com/historicalsource/starcross.git
git clone https://github.com/historicalsource/stationfall.git
git clone https://github.com/historicalsource/suspect.git
git clone https://github.com/historicalsource/suspended.git
git clone https://github.com/historicalsource/trinity.git
git clone https://github.com/historicalsource/wishbringer.git
git clone https://github.com/historicalsource/witness.git
git clone https://github.com/historicalsource/zork-german.git
git clone https://github.com/historicalsource/zork.git
git clone https://github.com/historicalsource/zork1.git
git clone https://github.com/historicalsource/zork2.git
git clone https://github.com/historicalsource/zork3.git
git clone https://github.com/historicalsource/zorkzero.git

NEW the ‘gold’ versions of various games, these are the ones with built in help systems

git clone https://github.com/historicalsource/wishbringer-gold.git
git clone https://github.com/historicalsource/planetfall-gold.git
git clone https://github.com/historicalsource/zork1-gold.git
git clone https://github.com/historicalsource/hitchhikersguide-gold.git

The reason being of course that if there are multiple versions they are stacked. Now why is this important? Who cares? it’s all in ZILL which there is no compiler for, as the TOPS-20 tools are still lost?

Enter ZILF!

Written by Jesse McGrew in an apparent vacuum, this toolchain can Z3 machine based ZIL source code. Yes that’s right it’s a compiler!

I know Zork will get all the headlines, but back the 80’s I preferred Planetfall. I’m not even going to talk about the insanity that was the Hitchhiker’s guide to the galaxy.

Zilf is really only suited for Z3 compilation, and looking at planetfall there are two commits of note:

$ git log| tail -11 commit e85ca899aac575e74a4b3845f44d09a891c1563a Author: historicalsource Date: Sat Apr 13 21:35:51 2019 -0400 Final Revision commit 281bd3417faada8011397244d4bfaad562cb7bfc Author: historicalsource Date: Sat Apr 13 21:34:42 2019 -0400 Revision 37 (Original Source)

The source for the Final version won’t build with ZILF. However the Revision 37 source will!

$ git checkout 281bd3417faada8011397244d4bfaad562cb7bfc Note: checking out '281bd3417faada8011397244d4bfaad562cb7bfc'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b HEAD is now at 281bd34... Revision 37 (Original Source)

Ok, now let’s trash the directory! (you did backup the repo first, right?)

C:\temp\zilf\zilf-0.8\planetfall>..\bin\Zilf planetfall.zil ZILF 0.8 built 3/19/2017 1:34:17 PM Planetfall [warning MDL0417] C:\temp\zilf\zilf-0.8\planetfall\MISC.zil:509: ROUTINE: only 3 routine arguments allowed in V3, so last 2 "OPT" arguments will never be passed in INSERT-FILE called at planetfall.zil:14 in IFILE called at planetfall.zil:25 [warning ZIL0208] C:\temp\zilf\zilf-0.8\planetfall\SYNTAX.zil:143: preaction routine mismatch for 'V?ZAP': using PRE-ZAP as before [error ZIL0113] C:\temp\zilf\zilf-0.8\planetfall\MISC.zil:150: SETG: argument 1: bare atom argument must be a variable name [error ZIL0113] C:\temp\zilf\zilf-0.8\planetfall\MISC.zil:315: SETG: argument 1: bare atom argument must be a variable name [error ZIL0113] C:\temp\zilf\zilf-0.8\planetfall\MISC.zil:317: SETG: argument 1: bare atom argument must be a variable name [error ZIL0113] C:\temp\zilf\zilf-0.8\planetfall\MISC.zil:319: SETG: argument 1: bare atom argument must be a variable name [warning ZIL0504] C:\temp\zilf\zilf-0.8\planetfall\PARSER.zil:244: treating SET to 0 as true here [warning ZIL0502] C:\temp\zilf\zilf-0.8\planetfall\VERBS.zil:156: RETURN value ignored: block is in void context [warning ZIL0204] C:\temp\zilf\zilf-0.8\planetfall\VERBS.zil:1879: no such global variable 'WHERE', using the local instead [warning ZIL0505] C:\temp\zilf\zilf-0.8\planetfall\COMPTWO.zil:3035: COND: clauses after else part will never be evaluated [warning ZIL0308] : too many parts of speech for 'PORT': Object (C:\temp\zilf\zilf-0.8\planetfall\GLOBALS.zil:78), Adjective (C:\temp\zilf\zilf-0.8\planetfall\GLOBALS.zil:224), Direction (C:\temp\zilf\zilf-0.8\planetfall\GLOBALS.zil:11) [warning ZIL0306] C:\temp\zilf\zilf-0.8\planetfall\GLOBALS.zil:224: discarding the Adjective part of speech for 'PORT' [warning ZIL0308] : too many parts of speech for 'BRUSH': Object (C:\temp\zilf\zilf-0.8\planetfall\GLOBALS.zil:548), Adjective (C:\temp\zilf\zilf-0.8\planetfall\GLOBALS.zil:549), Verb (C:\temp\zilf\zilf-0.8\planetfall\SYNTAX.zil:283) [warning ZIL0306] C:\temp\zilf\zilf-0.8\planetfall\GLOBALS.zil:549: discarding the Adjective part of speech for 'BRUSH' 10 warnings 4 errors C:\temp\zilf\zilf-0.8\planetfall>dir *zap Volume in drive C is BOOTCAMP Volume Serial Number is 903B-72D4 Directory of C:\temp\zilf\zilf-0.8\planetfall 04/17/2019 08:32 PM 247,803 planetfall.zap 04/17/2019 08:32 PM 162,476 planetfall_data.zap 04/17/2019 08:32 PM 1,336 planetfall_freq.zap 04/17/2019 08:32 PM 40,495 planetfall_str.zap 4 File(s) 452,110 bytes 0 Dir(s) 238,542,704,640 bytes free C:\temp\zilf\zilf-0.8\planetfall>..\bin\zapf planetfall.zap ZAPF 0.8 Reading planetfall.zap Reading planetfall_freq.zap Reading planetfall_data.zap Reading planetfall_str.zap Measuring.. Assembling Wrote 121952 bytes to planetfall.z3

Sure it said 4 errors, but it compiled! Using a z3 or higher interpreter we can load up Planetfall

Planetfall!

At first glance it may look the same, but check the serial number. 190417. That’s today!

I’ve played it about 1/5th of the way though. There is a walkthru here.

There seems to be so much in flux about this source dump. replicate while you can!

5 thoughts on “So the Infocom source code base was just ‘released’.

  1. FWIW, ZILF supports Z-machine versions 3-8. If you’re getting errors about exceeding the size limit, that means the assembler isn’t finding the right table of abbreviations, which the game needs in order to fit under the size limit. Check the filenames it prints out and the contents of the “freq” files you have; you may need to rename a file or generate new abbreviations.

    • It was the freq words indeed.

      The directories are just grabbed off of the old PDP-10 and have lots of junk in the directories (minizork has the actual ZIL assembler source code). And that is what was messing up.

      Also one of the files for planetfall was cut short on the triffid object, which prevents compiling.

      I was thinking of trying to go one by one to re-build as much as I could. But I’ve been also looking to cross compile simple stuff for the Atari ST, which has proven far more difficult than it should have.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.