On Wed, Jul 16, 2008 at 09:34:45PM -0700, Eric Smith wrote:
Ethan Dicks wrote about bit-banging serial between two
Did that to move Infocom game sectors from an
Apple II to a C-64.
Amazing! I did the exact same thing, when I owned the Apple II games
but wanted to play them on a C-64 at school.
I was testing the Spartan Mimic, a bolt-on-the-side Apple II "emulator"
for the C-64 (it was really more of a headless Apple clone that could
run parasitically from the C-64). At one point, to show that things
wouldn't lock up, mostly, I was running two simultaneous Infocom games,
one on the C-64 CPU and one on the Mimic CPU, then switching between
them with the keyboard shortcuts while each one loaded the results
from the latest command. Due to disk I/O, the Apple
side was much
faster than the C-64 side, but that's hardly a revalation.
On later occasions, I transferred Infocom game images
serially from an
Atari 800 to the Apple II, from the Apple II to an IBM PC, and from the
IBM PC to a Mac, but I didn't have to write any bit-banging code for any
I've done similar things with slightly different platforms (I wasn't
ever into the Atari universe, and I only had an Apple II because one
of my early jobs was writing children's software for it - I pretty
much stayed with Commodore from the days of the 8K PET all the way
through until I bought an Amiga 4000 in NZ and refitted the PSU to
work in the U.S.)
One unusual platform for my game file transformations was VMS. I
got the ITF V3 interpreter working on the 11/750 running VMS 4.6
at work in the early 1990s, so I needed to snarf game files from
my original C-64 disks. That was a chore. I forget exactly how
I did it, but it probably involved writing a program to read
the sectors in game order (slightly dependent on exactly which
of the three C-64 interpreters was on the game disk), then pushing
them up a dial-up pipe to work (I never brought my C-64 in... it
was all done remotely) then reassembling the fragments into a
working game file. I only did that for a few games (Zork I, II,
III, Starcross, and Planetfall, IIRC).
I also wrote a Turbo Pascal program on the PC to read
games from Kaypro disks.
Pascal was never a language I liked to use, but I did a lot of
game file fiddling with stuff I wrote in C.
I'd reverse-engineered the Apple II Infocom
interpreter myself around
1982-1983, and based on that wrote my own in Turbo Pascal in 1985. I
should have posted it to comp.sources back then, but since Infocom was
still a going concern at the time, I was afraid they would sue me.
Unfortunately I no longer have any of the software I wrote in that era.
A friend kept a printed listing of my
reverse-engineered source code for
the Apple II interpreter, so I've got a PDF of scan of it here:
I've seen it (and have a copy).
My similar project was to reverse-engineer the first version of the
C-64 interpreter, as shipped with Zork I, into mostly-commented
source that compiles back to the original binary. I started back
in the late 1980s, then dropped it for a while, since assembly
development on the C-64 is really a pain, but then when VICE matured
enough to be useful, I picked up the project again, but this time
using a SPARCstation as my emulation and development platform.
Editing source on a workstation display then running the binary
without having to cut floppies sped things along at a dizzying
rate by comparison. So about 10 years ago, I was able to run
the C-64 code on a VIC-20 (with the interpreter living up in
ROM cartridge space). Just this past month, I finally figured
out two bugs - one zero-page-related, one 40-column-related, so
that now, I can run Infocom games on a PET!
I first ran across Zork when it was fresh and new on the TRS-80.
Since I'd played a few Scott Adams games (writing an interpreter
for the PET on Supermon before I had a disk drive or assembler),
the richness of the interaction was stunning. I read the articles
that are now easy to find from Creative Computing and the IEEE
journal (courtesy of the nearby college engineering library),
but was thwarted at playing them myself until late 1983 when
the games were put out for the C-64. The only practical
application for my porting the games to the PET is to prove
to myself, if noone else, that they _could_ have supported
the platform if they'd decided there would be enough sales
to warrant (which there probably would not have been, given
the immense cost of a 32K PET and a 4040 disk drive when
Infocom was just starting out - not so many folks had a
system that decked out). Obviously, by 1982-1983, when they
would have been writing the C-64 interpreter, it had already
established itself as an affordable platform with a large
I've written plenty of Infocom-related tools over the years
(fortunately in my case, I still have +90% of what I've
written still around), but one thing I've never done is to
write an interpreter from scratch. The closest I've come is
to help Mike Reilly, author of ElfOS, debug a V3 interpreter
for the 1802. Since I've owned an Elf since the late 1970s,
it was a real thrill to port the games to that platform -
another case of "could have done it if they'd wanted to"
for one of the machines that shaped my formative years.
Of course, it's much easier for us now with modern tools
and modern understanding of 1970s architectures, so what
was once a major commercial development undertaking is
now a hobby project of a few weeks. The evolution of my
C-64 interpreter reverse-engineering project is a clear
demonstration of that - going from 40-column poking around
to a nearly instant edit-compile-test cycle on modern
hardware, aided by web-based hyperlinked ROM listings.
A completely different environment, but in the end, it all
just comes down to the ">" prompt.
Ethan Dicks, A-333-S Current South Pole Weather at 17-Jul-2008 at 04:40 Z
South Pole Station
PSC 468 Box 400 Temp -87.2 F (-66.2 C) Windchill -118.7 F (-83.7 C)
APO AP 96598 Wind 6.3 kts Grid 59 Barometer 675.6 mb (10795 ft)
Ethan.Dicks at usap.gov http://penguincentral.com/penguincentral.html