Are you Japanese?

On my latest trip, I managed to find a copy of Zork 1 for the PC-98! And let me say, let the adventure begin!

I went to Beep and the place next door I always forget it’s name, and I found this burried in the back for a mere Â¥2,860! Not exactly what I thought would be a bargain, but flipping it over however…

Zork 1 for the PC-98!

Â¥7,800 YEN! From 1991!Honestly I don’t even know what is up with the price of software in Japan! Clutching this thing in my hands for the Â¥2,800 makes it feel like a steal so of course I buy it!

Contents of the box

Nice to see that opening of the box gives me a catalogue, a manual, minimal map, registration card and a diskette! And I’m hoping I can read it using a USB drive.

Now I have no pc98 gear in Japan, and I’m trying to not have a mountain of hardware here, the i7 desktop and 30″ cinema display are already feeling ‘too big’ for this place anyways. I go to hardoff and pick up 2 USB floppy drives hoping to read the 3 1/2″ diskette.

Now I bought an IBM & some weird iMac looking drive, I was hoping between the two drives, maybe one would work. And I was right for buying the two. The IBM drive didn’t read the disk AT ALL.

However this iMac looking Logitec LFD-31US did the trick!

Apparently you need what is known as a “3-mode USB floppy drive”. Whatever that means. Although I can read the disk fine from Windows 10, winimage was unable to make a disk image. Disk Explorer is another option, which also specializes in the PC-98’s weird 1.2MB on a 1.44MB disk, however it couldn’t read the disk either.

I write a simple C program to read 512, 1024, 2048 blocks from \\.\A: (the physical drive), however it was cut short after 138kb. Maybe a hidden bad sector? Xcopy ran without issues, so who knows.

Looking at what I could dump, it does look like a bootable image:

and the xcopy did pick up MSDOS.SYS & IO.SYS. I though Microsoft was so against people redistributing MS-DOS, but then again aren’t most PC98’s floppy only?

I was able to cobble together a DIY disk image, and it doesn’t work fully on Neko Project II sadly. However Annex86 works fine.

On boot there is a nice graphical logo, and animation as the door opens. Really cool I have to say. Searching through zork.exe there is some interesting strings

  • Are you Japanese?
  • MS Run-Time Library – Copyright (c) 1988, Microsoft Corp
  • Original copyright (c)1988 Infocom Inc.
  • Used under license from Activision. All rights reserved.
  • (c)1991 SystemSoft
  • Copyright VACS Corp./ASCII Corp.,1986-90.
  • @(#)sunedit.c 1.0 07/03/1989 by VACS Corp.

Well that’s interesting. I was wondering how to trigger the ‘Are you Japanese?’ and well it turns out it’s pretty simple:

I’d have to figure out how to type in things like eat/sleep take… Although it is a twist on the old Infocom style. Now could this have ‘saved’ Infocom before their sale to Activision? I guess there was a market for Infocom games in Japan, although probably far earlier than 1991.

Confessions of a paranoid DEC Engineer: Robert Supnik talks about the great Dungeon heist!

What an incredible adventure!

Apparently this was all recorded in 2017, and just now released.

It’s very long, but I would still highly recommend watching the full thing.

Bob goes into detail about the rise of the integrated circuit versions of the PDP-11 & VAX processors, the challenges of how Digital was spiraling out of control, and how he was the one that not only championed the Alpha, but had to make the difficult decisions that if the Alpha succeeded that many people were now out of a job, and many directions had to be closed off.

He goes into great detail how the Alpha was basically out maneuvered politically and how the PC business had not only dragged them down by management not embracing the Alpha but how trying to pull a quick one on Intel led to their demise.

Also of interest was his time in research witnessing the untapped possibilities of AltaVista, and how Compaq had bogged it down, and ceded the market to the upstart Google, the inability to launch a portable MP3 player (Although to be fair the iPod wasn’t first to market by a long shot, it was the best user experience by far).

What was also interesting was his last job, working at Unisys and getting them out of the legacy mainframe hardware business and into emulation on x86, along with the lesson that if you can run your engine in primary CPU cache it’s insanely fast (in GCC land -Os is better than -O9).

The most significant part towards the end of course is where he ‘rewinds’ his story to go into his interest in simulations, and of course how he started SIMH when he had some idle time in the early 90’s. SIMH of course has done an incredible amount of work to preserve computing history of many early computers. He also touches on working with the Warren’s TUHS to get Unix v0 up and running on a simulated PDP-7 and what would have been a challenge in the day using an obscure Burroughs disk & controller modified from the PDP-9.

Yes it’s 6 hours long! But really it’s great!

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!

Dungeon 2.5.6 on MacOS

Years and years ago I had bought this copy of Language Systems Fortran for MacOS with the intention of using my Quadra to build Dungeon for MacOS.  Except I couldn’t figure out the first thing about MPW, and life was always busy and I never did figure it out.  Well after getting GCC to compile something on MacOS, I thought I’d dig up some images I made of the disks, and without the benefit of having the manuals anymore see if I could figure it out.

FORTRAN Dungeon 2.5.6 on MacOS

FORTRAN Dungeon 2.5.6 on MacOS

And much to my amazement it compiled without any real issues.  All the EOF markers in the files had to be fixed up, and gdt.f for some reason was mangled at the end, but it was trivial to repair.  I didn’t bother trying to integrate the gettime call, so the clock and any clock events don’t work correctly.  I guess I should make the seconds increment by 15 between calls, or something.  Oh well I don’t think anyone will really care.  I compiled it for the 68020 with 68881 hooks, although I doubt it even makes any calls.  It runs for me.

If anyone cares, the binary is here:dungeon-2.5.6-m68k-MacOS.sit

As always, you’ll have to read the 404 screen to get the download.

Confusion & MDL Zork

I don’t know how I missed this, but there is a MDL interpreter that can run MDL Zork!

This Zork created December 2, 2015.
West of House
This is an open field west of a white house, with a boarded front door.
There is a small mailbox here.
A rubber mat saying ‘Welcome to Zork!’ lies by the door.
“DONE”
> open mailbox
Opening the mailbox reveals a leaflet.
> take leaflet
Taken.
> read leaflet
WELCOME TO ZORK
ZORK is a game of adventure, danger, and low cunning. In it you
will explore some of the most amazing territory ever seen by mortal
man. Hardened adventurers have run screaming from the terrors
contained within!

In ZORK the intrepid explorer delves into the forgotten secrets
of a lost labyrinth deep in the bowels of the earth, searching for
vast treasures long hidden from prying eyes, treasures guarded by
fearsome monsters and diabolical traps!

No PDP-10 should be without one!

ZORK was created at the MIT Laboratory for Computer Science, by
Tim Anderson, Marc Blank, Bruce Daniels, and Dave Lebling. It was
inspired by the ADVENTURE game of Crowther and Woods, and the long
tradition of fantasy and science fiction adventure. ZORK is written
in MDL (alias MUDDLE).

On-line information may be available using the HELP and INFO
commands (most systems).

Direct inquiries, comments, etc. by Net mail to ZORK@MIT-DMS.

(c) Copyright 1978,1979 Massachusetts Institute of Technology.
All rights reserved.

>

How is that for cool?  The MDL interpreter is called Confusion by Matthew T. Russotto, and can be found here.  There is even a port to Windows, by  David Kinder back in 2009!

I don’t know how I missed it, but this is as close as you can get to the original 1979 experience.

Speaking of which, gunkies should be on faster hardware, and the DNS records should be updated by the time you read this.

Bringing back the WinZork demo via jsDOSBox

So with all the excitement with jsDOSBox it was about time I tried to get something from my old java dosbox stuff running again.

As a quick note, as of right now, you cannot boot into a disk image… Nor can you really run bat files, or any kind of drivers beforehand.  It’s basically either use a script that adds files one by one, or use an image file which gets mounted, and you run your exe/com file from that.

So here we go, back again is the old Fortran Dungeon (zork) compiled with QuickC for Windows, running on the working model version of Windows 3.0.

Dungeon via F2C

Dungeon via F2C

Click here, and enjoy!

For anyone interested my old post about this Fortran/Zork adventure is here.

 

Zork CPU implemented in FPGA

Really, how cool is that?

From the youtube page:

Using an FPGA I created a hardware implementation of the Infocom Z-Machine virtual machine (presumably a world’s first as I can’t imagine anyone else being crazy enough to do it). The instruction set is Z-Machine version 3 which means all the “standard” Infocom games should run. Only change was a few extra opcodes for implementing the BIOS (which provides the terminal).

The Verilog code for the Z-machine CPU is available at https://github.com/charcole/Z3 along with the code for the BIOS and a hacked version of Inform 6 which allows the use of the extra opcodes.

FPGA + display board

FPGA + display board