RSS

Category Archives: Digital Antiquaria

Patreon

Patreon

It’s hard for me to believe that it’s now been about three-and-a-half years since I started this blog. Over that time it’s come a long way. After beginning with no real direction, I found my forte within the first six months or so, and the blog evolved into the grand history you all know and (hopefully) love. Along the way I like to believe I’ve become a better writer, and I know I’ve become a much better and more thorough researcher, with many more sources at my disposal. I must admit that some of those early articles are a bit painful for me to read now (I really need to do something about that someday). But best of all, I’ve found you folks, a core group of loyal readers who seem to grow by just a little bit every month. It hasn’t been a meteoric rise, but it has been a steady one and a fun one. You’re the best readers anywhere, you know, almost unfailingly polite and witty and perceptive and helpful, and I appreciate each and every one of you enormously. Every writer wants, more than anything else, to know some people out there are reading. Thanks for that!

So, having buttered you up, let’s move on to the real subject of today’s post. After some months of dithering over the question, I’ve decided it’s time to take the next step in my blogging career. As you can probably imagine based on the length and depth of the articles I post, the writing and research for the blog  absorbs many hours of my time per week. If I can start to bring in a little bit more, and on a more consistent basis, I’ll be able to devote more time to my work here, which will translate directly into more and better articles for you to enjoy. Imagine if you will a sliding scale of hours devoted to computer-gaming history that terminates in my being able to make it my full-time job. I’m afraid I’m a long way from there, may indeed never reach it, but every little bit of income the blog does manage to generate shifts that scale just slightly in a positive direction, resulting in more articles published, more games and other topics covered, and more depth to that coverage.

I’ve therefore decided to add Patreon to the existing PayPal donation system. As many of you probably already know, Patreon is a way for readers like you to support the work of creators like me through something like the old patronage model that used to fund art and literature back in the day. It has the advantage for me that it represents a steady income stream I can count on on a per-article basis, whereas one-off donations tend to move through cycles of feast and famine that are impossible to plan for. You need only go to my fresh new Patreon page to sign up. If you do so, you’ll be automatically billed for each substantial article that I write for the blog (i.e., articles like this one are not included). You can decide how much that amount will be. I’m certainly not asking you to break the bank here; a dollar or two (or the equivalent in your local currency) is fine, although if any of you love the blog and are flush with cash I certainly wouldn’t balk at more. On the other hand, some of you may want to pay a bit less, maybe just a dollar or two per month. I unfortunately can’t offer monthly and per-article payments simultaneously, but there is a way around it: just set a per-article level of $1 and also set a monthly limit of $1, $2, or whatever you like. This will have the same effect, with the added advantage that you don’t pay anything if I stop blogging for a month for some reason.

Patreon supporters will gain access to a special members area of my Patreon page, where we can interact a bit more informally and where you can have a bit more of a say on certain things that happen around here. I’ll give sneak previews from time to time of upcoming articles, ask for your input on games and topics worthy of coverage, and if there’s interest host occasional meet-ups via Google Hangouts or the like.

The PayPal donation button to the right will not be going away, so if you do still prefer to make a single lump-sum donation by all means feel free. And whether you can contribute financially or not, I could also use your help in one other way. As just about everyone must realize by now, I’m terrible at self-promotion, and worse at social media. So, anything you could do to help me get the word out to potential supporters would be hugely appreciated.

And that’s that, except to say, as Bartles and Jaymes did back in the year of which I’m writing these days, “Thank you for your support.” Next up in the on-deck circle: a certain spacefaring epic.

 

The Forth Dimension

Forth

The Forth programming language reached maturity around 1970 after more than ten years of development and experimentation by its creator, Charles H. Moore. Its first practical use was to control a radio telescope at the National Radio Astronomy Observatory, where Moore was employed at the time. From there Forth spread to other telescopes and other observatories, cementing a connection with astronomy and space science that persists to this day; in addition to controlling countless telescopes and planetariums earthside, Forth has been into space many times on probes and satellites of all descriptions. Yet already by the end of its first decade Forth had spread far beyond astronomical circles. It was being used to control the motorized cameras used to film miniature-based special-effects sequences (suddenly a booming business in the wake of Star Wars); to control automotive diagnostic equipment; as the firmware in various medical devices; to control automated agricultural equipment. Closer to our usual interests, Atari had invested a lot of money into developing a version of the language suitable for programming pinball machines and stand-up arcade games, while versions of the language were available for all of the trinity of 1977 within a year or so of their appearance. The key to Forth’s burgeoning popularity was its efficiency: it not only ran faster than just above any language short of assembly, but in the right hands it was also almost unbelievably stingy with memory. Those were good qualities to have in the late 1970s, when the average PC ran at 1 MHz and had no more than 16 K.

We’ll get into why Forth is so efficient in just a bit. But first let’s take a look at the language itself. If you’ve programmed before in just about any other language, Forth will likely seem deeply, deeply weird. Still, there’s also something kind of beautiful about it. If you’d like to follow along with the few examples I’ll give in this article, you have many free implementations of the language to choose from. A good choice, and one that has the advantage of working on Windows, Macintosh, and Linux alike, is Gforth.

Forth is an interactive programming language, like the microcomputer BASICs so many of us grew up with. This means that you can enter commands directly at the Forth console and watch them run immediately.

Forth is also a stack-based programming language, and this is the key to everything else about it. Virtually every programming language uses a stack under the hood; it’s one of the most fundamental mechanisms of computer science. But most other languages try to hide the stack from us, strain to make it so that we need not trouble ourselves over it and, indeed, don’t really need to know much about it at all. The only time many programmers even hear the word “stack” is when an infinite loop or runaway recursion causes a program to crash with a “stack overflow error.” Forth, however, doesn’t hide its stack away like something shameful. No, Forth loves its stack, sets it front and center for all to see. Forth demands that if we are to love it, we must also love its stack. Given this, it would behoove me at this point to explain just what is meant by the idea of a stack in the first place.

A stack is just that: a stack of numbers stored in a special part of memory, used for storing transient data. Adding a number to the stack is called pushing to the stack. It always goes on top. Taking a number from the stack is called popping the stack. It’s always the top number — i.e., the most recently pushed — that’s popped, after which that number is erased from the stack. A stack is, in other words, a first-in-last-out system — or, if you like, a last-in-first-out system. If you haven’t quite wrapped your head around the idea, don’t sweat it. It should become clearer momentarily.

Let’s look at how we can do simple arithmetic in Forth. Let’s say we want to add 2 and 3 together and print the result. In a typical modern language like Java, we’d just do something like this:

System.out.print(2 + 3);

In Forth, we do it a bit differently. If you’ve started up a Forth environment, you can type this in and see the result immediately.

2 3 + .

If you happened to use a Hewlett-Packard scientific calculator back in the day, this notation might look familiar to you. It’s known as “postfix” or “reverse Polish” notation. Let’s unpack this piece by piece to see how exactly Forth is handling this expression.

The first thing to understand here is that Forth reads almost everything as a word — Forthese for a command. A number standing by itself is actually interpreted as a word, a command to push that number onto the stack. Therefore, assuming we started with an empty stack, the stack looks like this after the first two parts of the expression above have been processed:

3
2

Now the interpreter comes to the “+,” which is also read as a command, instructing it to pop two values off the stack, add them together, and push the result back onto the stack. After doing so, the stack looks like this:

5

Finally, the “.” just instructs the interpreter to pop the top value off the stack and print it.

Now let’s consider a more complicated algebraic expression, like “(4 + 5) * (6 + 7).” In Forth, it would be written like this:

4 5 + 6 7 + * .

Let’s walk through this. We push 4 and 5 onto the stack.

5
4

We pop them off, add them together, and push the result to the stack.

9

We push 6 and 7 onto the stack.

7
6
9

We add them together and push the result.

13
9

We pop the top two values on the stack, multiply them together, and push the result.

117

And finally we pop and print the result.

To this point we’ve been working interactively. The key to programming in Forth, however, is to define new words; this is Forth’s nearest equivalent to the function calls common to other languages. Let’s consider a function to cube a number, which would look like this in Java:

int cube (int num) {
   return (num * num * num);
}

In Forth, we might do it by entering the following lines at the console:

: CUBE ( N -> N. Cube a number)
   DUP DUP ( Now there are three copies)
   * * ( Get the cube)
;

Let’s again unpack this piece by piece. The colon is a word which tells the interpreter that what follows will be a new word definition, to be terminated by a semicolon. “CUBE” is the name of the new word we are creating. All text within parenthesis are comments, to be ignored by the interpreter. The “N -> N.” notation within the first parenthesis is not required, but is considered good practice in Forth programming. It tells us that this word will pop and operate on the current topmost word on the stack, and will push a single result onto the stack. Forth words do not take arguments like functions in other languages, but operate only on the current contents of the stack. Thus it’s the programmer’s responsibility to set the stack up properly before invoking a word, and to know what that word will have done to the stack when it finishes. The two lines in the middle are the meat of the word, the actual instructions it represents.

Let’s say we call this new word “CUBE” with a 5 on top of the stack — i.e., by entering “5 CUBE .” at the console. Thus the initial stack looks like this:

5

Now we’re going into the body of the word itself. The two “DUP” statements tell the interpreter to duplicate the top value on the stack twice, without destroying — i.e., without actually popping — the original value. So, we end up with:

5
5
5

Now we pop the top two values, multiply them together, and push the result.

25
5

Then we just do the same thing again.

125

And our work is done.

Next we’ll see how we can use this word within another word. But first let’s see how we would do that as a function in Java.

void cubes10() {
   for (int i = 0; i < 10; i ++) {
      System.out.print("\n");
      System.out.print(i + " ");
      System.out.print(cube(i));
   }
}

Here it is as a Forth word:

: CUBES10 ( ->. Print a table of cubes of 0-9.)
   10 0 ( Indices of loop)
   DO ( Start Loop)
      CR I . I CUBE . ( Print a number and its cube.)
   LOOP ( End of loop.)
;

As the first comment indicates, the “10CUBES” word expects nothing on the stack and leaves nothing there. We begin by pushing 10 and 0 onto the stack. Now Forth’s back-asswordness really comes to the fore: the “DO” word pops the last two words off the stack. It will increment a variable — always known as “I” — from the second of these until it is equal to the first of these, looping each time through the block of words contained between “DO” and “LOOP.” Within the loop, the word “CR” simply causes the cursor to move down to the next line. Keeping in mind that “I” represents the current value of the variable being incremented, which can be pushed and popped just like a constant, the rest should hopefully be comprehensible. The output looks something like this:

0 0
1 1
2 8
3 27
4 64
5 125
6 216
7 343
8 512
9 729

Forth is built entirely from words like the ones we’ve just created. In fact, calling Forth a programming language may be something of a misnomer because virtually every piece of its vocabulary is redefinable. Forth comes with a dictionary of common, useful words, but the programmer is always free to replace these with others of her own devising, to make Forth into whatever she wants it to be. The most basic words are not constructed from other Forth words but rather written as in-line assembly language. The programmer adds words to this base which do ever more complicated tasks, until finally she writes a word that subsumes the entire program. To take an example from Leo Brodie’s classic book Starting Forth (one of Forth’s chief products down through the decades has been horrid puns), a Forth program to control a washing machine might have this as its top-level word:

: WASHER
   WASH SPIN RINSE SPIN
;

Each of the words referenced within “WASHER” would likely call several words of their own. “RINSE,” for instance, might look like this:

: RINSE
   FAUCETS OPEN TILL-FULL FAUCETS CLOSE
;

Each of these words would call still more words of its own, until we come to the level of fundamental assembly-language commands to control the CPU on its most basic level. Forth words can even create new words dynamically, resulting in programs that effectively rewrite themselves as they run to suit their environment.

Especially if you’re a programmer yourself, you may have already formed an impression by now of Forth’s strengths and weaknesses. And yes, contrary to the claims of many Forth zealots, the latter do exist in considerable numbers. Even leaving aside the strange reverse notation, which one can eventually get used to, Forth programs can be incredibly hard to actually read thanks to their reliance on pushing and popping to the stack, with the associated lack of helpful variable names. For this reason Forth has occasionally been called a “write-only” language; Forth code can be well-nigh incomprehensible even to the person who originally wrote it after just a week or so has elapsed. It’s the polar opposite of a contemporaneous language I once wrote about on this blog, Pascal, replacing the latter’s pedantic emphasis on structure and readability above all else with a love of hackerish tricks, sleight of hand, and cleverness that can sometimes come off as sort of facile. Just trying to keep a picture in your head of the current configuration of the stack, something on which absolutely everything you do in Forth depends, can be a nightmare as programs get more complicated and their possible states get more varied. If not quite the last language in the world I’d use to write a complicated modern application, it must be pretty close to it. It’s “write-only” qualities make it particularly unsuitable for team projects, a problem given that most useful software long ago got too complicated for solo programmers.

Yet there’s also an uncompromising beauty about Forth that has drawn many people to it, a beauty that has occasionally been compelling enough to override people’s better judgment and make them use the language for purposes to which it really isn’t terribly suited. Whatever else you you can say about it, it sticks to its philosophical guns tenaciously. There’s a fascination to building a dictionary of your own, to effectively making a programming language all your own. Grizzled Forth programmers have often replaced virtually everything that comes with the language to create something that is absolutely theirs. That’s a rare experience indeed in modern programming. People who love Forth really love it. This (in Leo Brodie’s words) “high-level language,” “assembly language,” “operating system,” “set of development tools,” and “software design philosophy” has that rare ability, like my old love the Commodore Amiga, to inspire a level of visceral, emotional commitment that smacks more of romance or religion than practicality.

If we do insist on speaking practically, within certain domains Forth excels. It’s still widely used today in extremely constrained environments where every byte and every processor cycle counts, such as, well, the firmware inside a washing machine. To understand what makes Forth so efficient, we need to first understand that those more readable Java functions I showed you above must ultimately be converted into a form pretty close to that we see in the Forth versions. By making us meet the computer halfway (or further), Forth eliminates a whole lot of shuffling about that costs precious processor time. A well-written Forth program can actually be smaller than its pure assembly-language equivalent — much less the same program written in some other high-level language — because Forth so emphasizes reusable words. And it can be surprisingly easy to port Forth programs from computer to computer; one need only re-implement that bottommost layer of words in the new machine’s assembly language, and leave the rest alone.

Of course, all of these advantages that make Forth so attractive to programmers working on embedded systems and device firmware today also made it mighty appealing to programmers of ordinary PCs of the late 1970s and 1980s, working as they were under stringent restrictions of their own. For some early PCs Forth was the only language other than the ROM-housed BASIC or assembly language that made any sense at all. Stripped down to its essentials, Forth can be tiny; for example, Cognetics Corporation, a developer we met in a recent article, worked with a version of Forth that fit into just 6 K. Thus Forth enjoyed considerable popularity, with a fair number of games and other commercial software written in the language. John Draper, the legendary “Captain Crunch” who taught Steve Wozniak and Steve Jobs how to phone phreak amidst myriad other hacking accomplishments, was a particular devotee, distributing a Forth development system for the Apple II which he also used to write the II’s first really usable word processor, EasyWriter. Many of the magazines ran columns or extended series on Forth, which was available, and generally in multiple versions, for virtually every remotely viable machine of the era. One British computer, the ill-fated but fascinating Jupiter Ace, even included Forth in ROM in lieu of BASIC. Tellingly, however, as the 1980s wore on and software got more complex Forth became less common amongst commercial application and game developers, even as it retained a dedicated cult of hobbyists who have persisted with the language to this day. According to Charles Moore, this was as it should be. Forth, he told Jerry Pournelle in Byte‘s March 1985 issue, had never been intended for closed-source commercial software.

Writing big programs to be distributed in object code is a distortion of what Forth is all about. Forth is like a set of craftsman’s tools. You use it to make still more tools that work with whatever you specialize in. Then you use it to solve problems. Forth programs should always be distributed in source code. You should have Forth online at all times. Recompile whenever you want to use a program. Forth programs are tailored, they’re living and dynamic, not static object code.

“Distortion” or not, the most important Forth game, and arguably the most ambitious project ever completed in the language, would appear more than a year after those remarks. I know I’ve been teasing you with it for a while, but, with all the pieces in place at last, we’ll get there next time… really, I promise.

(Probably the best place to look to get an idea of the excitement Forth once generated, as well as a very good picture of the language itself, is the August 1980 Byte, which had Forth as its main theme. My example code in this article has its origins there, as does the picture.)

 
 

Tags: ,

Send in the Clones

In computer parlance, a clone is Company B’s copycat version of Company A’s computer that strains to be as software and hardware compatible with its inspiration as possible. For a platform to make an attractive target for cloning, it needs to meet a few criteria. The inspiration needs to be simple and/or well-documented enough that it’s practical for another company — and generally a smaller company at that, with far fewer resources at its disposal — to create a compatible knock-off in the first place. Then the inspiration needs to be successful enough that it’s spawned an attractive ecosystem that lots of people want to be a part of. And finally, there needs to be something preventing said people from joining said ecosystem by, you know, simply buying the machine that’s about to be cloned. Perhaps Company A, believing it has a lock on the market, keeps the price above what many otherwise interested people are willing or able to pay; perhaps Company A has simply neglected to do business in a certain part of the world filled with eager would-be buyers.

Clones have been with us almost from the moment that the trinity of 1977 kicked off the PC revolution in earnest. The TRS-80 was the big early winner of the trio thanks to its relatively low price and wide distribution through thousands of Radio Shack stores, outselling the Apple II in its first months by margins of at least twenty to one (as for the Commodore PET, it was the Bigfoot of the three, occasionally glimpsed in its natural habitat of trade-show booths but never available in a form you could actually put your hands on until well into 1978). The first vibrant, non-business-focused commercial software market in history sprung up around the little Trash 80. Cobbled together on an extreme budget out of generic parts that were literally just lying around at Radio Shack — the “monitor,” for instance, was just a cheap Radio Shack television re-purposed for the role — the TRS-80 was eminently cloneable. Doing so didn’t make a whole lot of sense in North America, where Radio Shack’s volume manufacturing and distribution system would be hard advantages to overcome. But Radio Shack had virtually no presence outside of North America, where there were nevertheless plenty of enthusiasts eager to join the revolution.

EACA shindig in Hong Kong

A shindig for EACA distributors in Hong Kong. Shortly after this photo was taken, Eric Chung, third from right in front, would abscond with $10 million and that would be that for EACA.

The most prominent of the number of TRS-80 cloners that had sprung up by 1980 was a rather shady Hong Kong-based company called EACA, who made cheap clones for any region of the world with distributors willing to buy them. Their knock-offs popped up in Europe under the name “The Video Genie”; in Australasia as the “Dick Smith System 80,” distributed under the auspices of Dick Smith Electronics, the region’s closest equivalent to Radio Shack; even in North America as the “Personal Micro Computers PMC-80.” EACA ended in dramatic fashion in 1983 when founder Eric Chuang absconded to Taiwan with all of his company’s assets that he could liquify, $10 million worth, stuffed into his briefcase. He or his descendents are presumably still living the high life there today.

By the time of those events, the TRS-80’s heyday was already well past, its position as the most active and exciting PC platform long since having been assumed by the Apple II, which had begun a surge to the fore in the wake of the II Plus model of 1979. The Apple II was if anything an even more tempting target for cloners than the TRS-80. While Steve Wozniak’s hardware design is justly still remembered as a marvel of compact elegance, it was also built entirely from readily available parts, lacking the complex and difficult-to-duplicate custom chips of competitors like Atari and Commodore. Wozniak had also insisted that every last diode on the Apple II’s circuit board be meticulously documented for the benefit of hackers just like him. And Apple, then as now, maintained some of the highest profit margins in the industry, creating a huge opportunity for a lean-and-mean cloner to undercut them.

The Franklin Ace 1000

A Franklin Ace 1000 mixed and matched with a genuine Apple floppy drive.

Assorted poorly distributed Far Eastern knock-offs aside, the first really viable Apple II clone arrived in mid-1982 in the form of the Franklin Ace line. The most popular model, the Ace 1000, offered for about 25 percent less than a II Plus complete hardware and software compatibility while also having more memory as well as luxuries like a numeric keypad and upper- and lowercase letter input. The Ace terrified Apple. With the Apple III having turned into a disaster, Apple remained a one-platform company, completely dependent on continuing Apple II sales — and continuing high Apple II profit margins — to fund not one but two hugely ambitious, hugely innovative, and hugely expensive new platform initiatives, Lisa and Macintosh. A viable market in Apple II workalikes which cut seriously into sales, or that forced price cuts, could bring everything down around their ears. Already six months before the Ace actually hit the market, as soon as they got word of Franklin’s plans, Apple’s lawyers were therefore looking for a way to challenge Franklin in court and drive their machine from the market.

As it turned out, the basis for a legal challenge wasn’t hard to find. Yes, the Apple II’s unexceptional hardware would seem to be fair game — but the machine’s systems software was not. Apple quickly confirmed that, like most of the TRS-80 cloners, Franklin had simply copied the contents of the II’s ROM chips; even bugs and the secret messages Apple’s programmers had hidden inside them were still there in Franklin’s versions. A triumphant Apple rushed to federal court to seek a preliminary injunction to keep the Ace off the market until the matter was decided through a trial. Much to their shocked dismay, the District Court for the Eastern District of Pennsylvania found the defense offered by Franklin’s legal team compelling enough to deny the injuction. The Ace came out right on schedule that summer of 1982, to good reviews and excellent sales.

Franklin’s defense sounds almost unbelievable today. They readily admitted that they had simply copied the contents of the ROM chips. They insisted, however, that the binary code contained on the chips, being a machine-generated sequence of 1s and 0s that existed only inside the chips and that couldn’t be reasonably read by a human, was not a form of creative expression and thus not eligible for copyright protection in the first place. In Franklin’s formulation, only the human-readable source code used to create the binary code stored on the ROM chips, which Franklin had no access to and no need for given that they had the binary code, was copyrightable. It was an audacious defense to say the least, one which if accepted would tear down the legal basis for the entire software industry. After all, how long would it take someone to leap to the conclusion that some hot new game, stored only in non-human-readable form on a floppy disk, was also ineligible for copyright protection? Astonishingly, when the case got back to the District Court for a proper trial the judge again sided with Franklin, stating that “there is some doubt as to the copyrightability of the programs described in this litigation,” in spite of an earlier case, Williams Electronics, Inc. v. Arctic International, Inc., which quite clearly had established binary code as copyrightable. Only in August of 1983 was the lower court’s ruling overturned by the Federal Court of Appeals in Philadelphia. A truculent Franklin threatened to appeal to the Supreme Court, but finally agreed to a settlement that January that demanded they start using their own ROMs if they wanted to keep cloning Apple IIs.

Apple Computer, Inc., v. Franklin Computer Corp. still stands today as a landmark in technology jurisprudence. It firmly and finally established the copyrightable status of software regardless of its form of distribution. And it of course also had an immediate impact on would-be cloners, making their lives much more difficult than before. With everyone now perfectly clear on what was and wasn’t legal, attorney David Grais clarified the process cloners would need to follow to avoid lawsuits in an episode of Computer Chronicles:

You have to have one person prepare a specification of what the program [the systems software] is supposed to do, and have another person who’s never seen the [original] program write a program to do it. If you can persuade a judge that the second fellow didn’t copy from the [original] code, then I think you’ll be pretty safe.

After going through this process, Apple II cloners needed to end up with systems software that behaved absolutely identically to the original. Every system call needed to take the exact same amount of time that it did on a real Apple II; each of the original software’s various little quirks and bugs needed to be meticulously duplicated. Anything less would bring with it incompatibility, because there was absolutely nothing in those ROMs that some enterprising hacker hadn’t used in some crazy, undocumented, unexpected way. This was a tall hurdle indeed, one which neither Franklin nor any other Apple II cloner was ever able to completely clear. New Franklins duly debuted with the new, legal ROMs, and duly proved to be much less compatible and thus much less desirable than the older models. Franklin left the Apple-cloning business within a few years in favor of hand-held dictionaries and thesauri.

There is, however, still another platform to consider, one on which the cloners would be markedly more successful: the IBM PC. The open or (better said) modular architecture of the IBM PC was not, as so many popular histories have claimed, a sign of a panicked or slapdash design process. It was rather simply the way that IBM did business. Back in the 1960s the company had revolutionized the world of mainframe computing with the IBM System/360, not a single computer model but a whole extended family of hardware and software designed to plug and play together in whatever combination best suited a customer’s needs. It was this product line, the most successful in IBM’s history, that propelled them to the position of absolute dominance of big corporate computing that they still enjoyed in the 1980s, and that reduced formerly proud competitors to playing within the house IBM had built by becoming humble “Plug-Compatible Manufacturers” selling peripherals that IBM hadn’t deigned to provide — or, just as frequently, selling clones of IBM’s products for lower prices. Still, the combined profits of all the cloners remained always far less than those of IBM itself; it seemed that lots of businesses wanted the security that IBM’s stellar reputation guaranteed, and were willing to pay a bit extra for it. IBM may have thought the PC market would play out the same way. If so, they were in for a rude surprise.

The IBM PC was also envisioned as not so much a computer as the cornerstone of an ever-evolving, interoperable computing family that could live for years or decades. Within three years of the original machine’s launch, you could already choose from two CPUs, the original Intel 8088 or the new 80286; could install as little as 16 K of memory or as much as 640 K; could choose among four different display cards, from the text-only Monochrome Display Adapter to the complicated and expensive CAD-oriented Professional Graphics Controller; could choose from a huge variety of other peripherals: floppy and hard disks, tape backup units, modems, printer interfaces, etc. The unifying common denominator amongst all this was a common operating system, MS-DOS, which had quickly established itself as the only one of the four operating paradigms supported by the original IBM PC that anyone actually used. Here we do see a key difference between the System/360 and the IBM PC, one destined to cause IBM much chagrin: whereas the former ran an in-house-developed IBM operating system, the operating system of the latter belonged to Microsoft.

The IBM architecture was different from that of the Apple II in that its operating system resided on disk, to be booted into memory at system startup, rather than being housed in ROM. Still, every computer needs to have some code in ROM. On an IBM PC, this code was known as the “Basic Input/Output System,” or BIOS, a nomenclature borrowed from the CP/M-based machines that preceded it. The BIOS was responsible on startup for doing some self-checks and configuration and booting the operating system from disk. It also contained a set of very basic, very low-level routines to do things like read from and write to the disks, detect keyboard input, or display text on the screen; these would be called constantly by MS-DOS and, very commonly, by applications as well while the machine was in operation. The BIOS was the one piece of software for the IBM PC that IBM themselves had written and owned, and for obvious reasons they weren’t inclined to share it with anyone else. Two small companies, Corona Labs and Eagle Computer, would simply copy IBM’s BIOS a la Franklin. It took the larger company all of one day to file suit and force complete capitulation and market withdrawal when those machines came to their attention in early 1984.

Long before those events, other wiser would-be cloners recognized that creating a workalike, “clean-room” version of IBM’s BIOS would be the key to executing a legal IBM clone. The IBM PC’s emphasis on modularity and future expansion meant that it was a bit more forgiving in this area than the likes of the more tightly integrated Apple II. Yet an IBM-compatible BIOS would still be a tricky business, fraught with technical and financial risk.

As the IBM PC was beginning to ship, a trio of Texas Instruments executives named Rod Canion, James Harris, and William Murto were kicking around ideas for getting out from under what they saw as a growing culture of non-innovation inside TI. Eager to start a business of their own, they considered everything from a Mexican restaurant to household gadgets like a beeper for finding lost keys. Eventually they started to ask what the people around them at TI wanted but weren’t getting in their professional lives. They soon had their answer: a usable portable computer that executives and engineers could cart around with them on the road, and that was cheap enough that their purchasing managers wouldn’t balk. Other companies had explored this realm before, most notably the brief-lived Osborne Computer with the Osborne 1, but those products had fallen down badly in the usability sweepstakes; the Osborne 1, for example, had a 5-inch display screen the mere thought of which could prompt severe eye strain in those with any experience with the machine, disk drives that could store all of 91 K, and just 64 K of memory. Importantly, all of those older portables ran CP/M, until now the standard for business computing. Canion, Harris, and Murto guessed, correctly, that CP/M’s days were numbered in the wake of IBM’s adoption of MS-DOS. Not wanting to be tied to a dying operating system, they first considered making their own. Yet when they polled the big software publishers about their interest in developing for yet another new, incompatible machine the results were not encouraging. There was only one thing for it: they must find a way to make their portable compatible with the IBM PC. If they could bring out such a machine before IBM did, the spoils could be enormous. Prominent tech venture capitalist Ben Rosen agreed, investing $2.5 million to help found Compaq Computer Corporation in February of 1982. What with solid funding and their own connections within the industry, Canion, Harris, and Murto thought they could easily design a hardware-compatible portable that was better than anything else available at the time. That just left the software side.

Given Bill Gates’s reputation as the Machiavelli of the computer industry, we perhaps shouldn’t be surprised that some journalists have credited him with anticipating the rise of PC clones from well before the release of the first IBM PC. That, however, is not the case. All indications are that Gates negotiated a deal that let Microsoft lease MS-DOS to IBM rather than sell it to them simply in the expectation that the IBM PC would be a big success, enough so that an ongoing licensing fee would amount to far more than a lump-sum payout in the long run. Thus he was as surprised as anyone when Compaq and a few other early would-be cloners contacted him to negotiate MS-DOS license deals for their own machines. Of course, Gates being Gates, it took him all of about ten minutes to grasp the implications of what was being requested, and to start making deals that, not incidentally, actually paid considerably better than the one he’d already made with IBM.

The BIOS would be a tougher nut to crack, the beachhead on which this invasion of Big Blue’s turf would succeed or fail. Having quickly concluded that simply copying IBM’s ROMs wasn’t a wise option, Compaq hired a staff of fifteen programmers who would dedicate the months to come to creating a slavish imitation. Programmers with any familiarity at all with the IBM BIOS were known as “dirty,” and barred from working on the project. Instead of relying on IBM’s published BIOS specifications (which might very well be incorrect due to oversight or skulduggery), the team took the thirty biggest applications on the market and worked through them one at a time, analyzing each BIOS call each program made and figuring out through trial and error what response it needed to receive. The two trickiest programs, which would go on to become a sort of stress test for clone compatibility both inside and outside of Compaq, proved to be Lotus 1-2-3 and Microsoft Flight Simulator.

Before the end of the year, Compaq was previewing their new portable to press and public and working hard to set up a strong dealer network. For the latter task they indulged in a bit of headhunting: they hired away from IBM H. L. ”Sparky” Sparks, the man who had set up the IBM PC dealer network. Knowing all too well how dealers thought and what was most important to them, Sparks instituted a standard expected dealer markup of 36 percent, versus the 33 percent offered by IBM, thus giving them every reason to look hard at whether a Compaq might meet a customer’s needs just as well or better than a machine from Big Blue.

The Compaq Portable

Compaq’s first computer, the Portable

Savvy business realpolitik like that became a hallmark of Compaq. Previously clones had been the purview of small upstarts, often with a distinct air of the fly-by-night about them. The suburban-Houston-based Compaq, though, was different, not only from other cloners but also from the established companies of Silicon Valley. Compaq was older, more conservative, interested in changing the world only to the extent that that meant more Compaq computers on desks and in airplane luggage racks. ”I don’t think you could get a 20-year-old to not try to satisfy his ego by ‘improving’ on IBM,” said J. Steven Flannigan, the man who led the BIOS reverse-engineering effort. “When you’re fat, balding, and 40, and have a lot of patents already, you don’t have to try.” That attitude was something corporate purchasing managers could understand. Indeed, Compaq bore with it quite a lot of the same sense of comforting stolidity as did IBM itself. Not quite the first to hit the market with an IBM clone with a “clean” BIOS (that honor likely belongs to Columbia Data Products, a much scruffier sort of operation that would be out of business by 1985), Compaq nevertheless legitimized the notion in the eyes of corporate America.

The Compaq Portable goes flying

The worst possible 1980s airplane seatmate: a business traveler lugging along a Compaq Portable.

Yet the Compaq Portable that started shipping very early in 1983 also succeeded because it was an excellent and — Flannigan’s sentiments aside — innovative product. By coming out with their portable before IBM itself, Compaq showed that clones need not be mere slavish imitations of their inspirations distinguished only by a lower price. “Portable” in 1983 did not, mind you, mean what it does today. The Compaq Portable was bigger and heavier  — a full 28 pounds — than most desktop machines of today, something you manhandled around like a suitcase rather than slipping into a pocket or backpack. There wasn’t even a battery in the thing, meaning the businessperson on the go would likely be doing her “portable” computing only in her hotel room. Still, it was very thoughtfully designed within the technical constraints of its era; you could for instance attach it to a real monitor at your desk to enjoy color graphics in lieu of the little 9-inch monochrome screen that came built-in, a first step on the road to the ubiquitous laptop docking stations of today.

Launching fortuitously just as some manufacturing snafus and unexpected demand for the new PC/XT were making IBM’s own computers hard to secure in some places, the Compaq Portable took off like a rocket. Compaq sold 53,000 of them for $111 million in sales that first year, a record for a technology startup. IBM, suddenly in the unaccustomed position of playing catch-up, released their own portable the following year with fewer features but — and this was truly shocking — a lower price than the Compaq Portable; by forcing high-and-mighty IBM to compete on price, Compaq seemed to have somehow turned the world on its head. The IBM Portable PC was a notable commercial failure, first sign of IBM’s loosening grip on the monster they had birthed. Meanwhile Compaq launched their own head-to-head challenge that same year with the DeskPro line of desktop machines, to much greater success. Apple may have been attacking IBM in melodramatic propaganda films and declaring themselves and IBM to be locked in a battle of Good versus Evil, but IBM hardly seemed to notice the would-be Apple freedom fighters. The only company that really mattered to IBM, the only company that scared them, wasn’t sexy Apple but buttoned-down, square-jawed Compaq.

But Compaq was actually far from IBM’s only problem. Cloning just kept getting easier, for everyone. In the spring of 1984 two little companies called Award Software and Phoenix Technologies announced identical products almost simultaneously: a reverse-engineered, completely legal IBM-compatible BIOS which they would license to anyone who felt like using it to make a clone. Plenty of companies did, catapulting Award and Phoenix to the top of what was soon a booming niche industry (they would eventually resolve their rivalry the way that civilized businesspeople do it, by merging). With the one significant difficulty of cloning thus removed, making a new clone became almost a triviality, a matter of ordering up a handful of components along with MS-DOS and an off-the-shelf BIOS, slapping it all together, and shoving it out the door; the ambitious hobbyist could even do it in her home if she liked. By 1986, considerably more clones were being sold than IBMs, whose own sales were stagnant or even decreasing.

That year Intel started producing the 80386, the third generation of the line of CPUs that powered the IBM PC and its clones. IBM elected to wait a bit before making use of it, judging that the second-generation 80286, which they had incorporated into the very successful PC/AT in 1984, was still plenty powerful  for the time being. It was a bad decision, predicated on a degree dominance which IBM no longer enjoyed. Smelling opportunity, Compaq made their own 80386-based machine, the DeskPro 386, the first to sport the hot new chip. Prior to this machine, the cloners had always been content to let IBM pave the way of such fundamental advances. The DeskPro 386 marks Compaq’s — and the clone industry’s — coming of age. No longer just floating along in the wake of IBM, tinkering with form factors, prices, and feature sets, now they were driving events. Already in November of 1985, Bill Machrone of PC Magazine had seen where this was leading: “Now that it [IBM] has created the market, the market doesn’t necessarily need IBM for the machines.” We see here business computing going through its second fundamental shift (the first being the transition from CP/M to MS-DOS). What was an ecosystem of IBM and IBM clones now became a set of sometimes less-than-ideal, sometimes accidental, but nevertheless agreed-upon standards that were bigger than IBM or anyone else. IBM, Machrone wrote, “had better conform” to the standards or face the consequences just like anyone else. Tellingly, it’s at about this time that we see the phrase “IBM clone” begin to fade, to be replaced by “MS-DOS machine” or “Intel-based machine.”

The emerging Microsoft/Intel juggernaut (note the lack of an “IBM” in there) would eventually conquer the home as well. Already by the mid-1980s certain specimens of the breed were beginning to manifest features that could make them attractive for the home user. Let’s rewind just slightly to look at the most important of them, which I’ve mentioned in a couple of earlier articles but have never really given its full due.

When the folks at Radio Shack, trying to figure out what to do with their aging, fading TRS-80 line, saw the ill-fated IBM PCjr, they saw things well worth salvaging in its 16-color graphics chip and its three-voice sound synthesizer, both far superior to the versions found in its big brothers. Why not clone those pieces, package them into an otherwise fairly conventional PC clone, and sell the end result as the perfect all-around computer, one which could run all the critical business applications but could also play games in the style to which kids with Commodore 64s were accustomed? Thanks to the hype that had accompanied the PCjr’s launch, there were plenty of publishers out there with huge inventories of games and other software that supported the PCjr’s audiovisuals, inventories they’d be only too eager to unload on Radio Shack cheap. With those titles to prime the pump, who knew where things might go…

Launched in late 1984, the Tandy 1000 was the first IBM clone to be clearly pitched not so much at business as at the ordinary consumer. In addition to the audiovisual enhancements and very aggressive pricing, it included DeskMate, a sort of proto-GUI operating environment designed to insulate the user from the cryptic MS-DOS command prompt while giving access to six typical home applications that came built right in. A brilliant little idea all the way around, the Tandy 1000 rescued Radio Shack from the brink of computing irrelevance. It also proved a godsend for many software publishers who’d bet big on the PCjr; John Williams credits it with literally saving Sierra by providing a market for King’s Quest, a game Sierra had developed for the PCjr at horrendous expense and to underwhelming sales given that platform’s commercial failure. Indeed, the Tandy 1000 became so popular that it prompted lots of game publishers to have a second look at the heretofore dull beige world of the clones. As they jumped aboard the MS-DOS gravy train, many made sure to take advantage of the Tandy 1000’s audiovisual enhancements. Thousands of titles would eventually blurb what became known as “Tandy graphics support” on their boxes and advertisements. Having secured the business market, the Intel/Microsoft architecture’s longer, more twisting road to hegemony over home computing began in earnest with the Tandy 1000. And meanwhile poor IBM couldn’t even get proper credit for the graphics standard they’d actually invented. Sometimes you just can’t win for losing.

Another sign of the nascent but inexorably growing power of Intel/Microsoft in the home would come soon after the Tandy 1000, with the arrival of the first game to make many Apple, Atari, and Commodore owners wish that they had a Tandy 1000 or, indeed, even one of its less colorful relatives. We’ll get to that soon — no, really! — but first we have just one more detour to take.

(I was spoiled for choice on sources this time. A quick rundown of periodicals: Creative Computing of January 1983; Byte of January 1983, November 1984, and August 1985; PC Magazine of January 1987; New York Times of November 5 1982, October 26 1983, January 5 1984, February 1 1984, and February 22 1984; Fortune of February 18 1985. Computer Wars by Charles H. Ferguson and Charles R. Morris is a pretty book book-length study of IBM’s trials and tribulations during this period. More information on the EACA clones can be found at Terry Stewart’s site. More on Compaq’s roots in Houston can be found at the Texas Historical Association. A few more invaluable links are included in the article proper.)

 
 

Tags: , , , , ,

The Fractal Phenomenon

How long is the coast of Britain? Would you be surprised if I told you that it’s infinitely long? Infinite coastlines are just one of many byproducts of the strange mathematics of fractal geometry.

Why is geometry often described as “cold” and “dry?” One reason lies in its inability to describe the shape of a cloud, a mountain, a coastline, or a tree. Clouds are not spheres, mountains are not cones, coastlines are not circles, and bark is not smooth, nor does lightning travel in a straight line.

— Benoit Mandelbrot

For centuries mathematicians and philosophers were dogged by a nagging problem. Classic Euclidean geometry, with its regular lines and planes and solids, was elegant and useful, but fell down when it came to describing the natural world. It was ill-equipped to describe the seemingly endless spatial complexity of a leaf — or, for that matter, a section of coastline. Indeed, it’s largely the very presence or absence of such chaotic complexity that we subconsciously use when we decide whether something is natural or human-made. The world humanity has built is created in the image of our geometry, while the universe that birthed us, even the very forms that enclose us, is defined by its refusal to conform to our ideals of coordinates and shapes and angles. To believe that the universe is somehow corrupted or deformed because of this refusal would be the height of hubris. “These are not natural irregularities, but with respect to our fancy only; nor are they incommodious to the true uses of life and the design of man’s being on earth,” wrote Richard Bentley in the time of Swift and Pope. Yet how to reconcile the riot of natural beauty with the cooler constructions of Euclid? Until very recently we literally lacked a mathematical language to describe the world around us.

In 1975 the Polish/French mathematician Benoit Mandelbrot provided such a language when he published his theory of fractal geometry. Mandelbrot discovered that certain solution sets to certain equations generate what he called “fractals” — patterns that are infinitely detailed. Such sets were much better suited to describe natural forms than anything heretofore present in the geometric arsenal.

It’s this seeming paradox of infinite detail that’s the thorniest conceptual part of natural forms and fractal geometry alike. To begin to get a handle on it, consider the “snowflake” curve, an idea first proposed by Helge von Koch in 1904. Imagine that you start with a line forming a simple geometric motif.

a "snowflake" curve

Now you replace every straight-line segment with another copy of the original motif.

a "snowflake" curve

You do it again…

a "snowflake" curve

And you keep on doing it over and over and over, to infinity.

a "snowflake" curve

As you look at a coastline or a leaf at ever greater levels of magnification, there are always more details, more curves and changes to discover. This continues forever — or at least until you hit the level of individual particles of matter, the sort of resolution limit of the universe itself. Thus that aforementioned infinite — or at any rate unmeasurable — coastline. “Coastline length turns out to be an elusive notion that slips between the fingers of one who tries to grasp it,” wrote Benoit Mandelbrot. “All measurement methods ultimately lead to the conclusion that the coastline’s length is very large and so ill-determined that it is best considered infinite.”  What to make of such a logical monstrosity?

Mandelbrot found a way out in some theories of dimensionality espoused by the controversial German mathematician Felix Hausdorff more than half a century before. The easiest way to describe conventional notions of dimensionality mathematically is to say that an object’s number of dimensions equates to the number of numbers needed to describe a single point on it. Thus a line (X) is one-dimensional; a plane (X and Y) two-dimensional; a solid (X, Y, and Z) three-dimensional. Hausdorff, however, floated the counter-intuitive notion that dimensions could be fractions as well as whole numbers. Consider a line. As it gets more wiggly, ever more complex in its gyrations, its dimensionality increases, until it becomes infinitely wiggly, and completely fills — or, perhaps better said, becomes — a plane. The pattern labelled 1a below, for example, is made up of infinite repetitions (within the bounds of the resolution of the picture) of the hook-like line segment labelled 1b. According to Hausdorff’s formulation, it has a dimensionality of 1.8687.

A line with a dimension of 1.8687

This idea of fractional dimensionality is a strange one, but seeing complex lines in terms of dimension rather than distance does allow us to dodge the paradox of infinite coastlines, restoring a mathematical order in which the coast of Britain is again longer than that of, say, the island where I live these days, Funen.

The most interesting fractal equations are not those like the ones shown above that simply repeat a pattern, but rather those that echo themselves but never exactly repeat, to infinity. The classic example is one of the first discovered by Mandelbrot himself, the appropriately named Mandelbrot set, consisting of all solutions to (z(n) ← z(n – 1)2 + c) which converge toward zero rather than expanding toward infinity. (Whilst trying to avoid getting too far down into the weeds here: this notation represents a potentially infinite series of iterations, in which n represents the current iteration. The result of the previous iteration — represented as z(n – 1) — is used as input for the next. The variable c is assumed to be a complex number, meaning it can be plotted onto the X and Y axes of a Cartesian coordinate system.)

The Mandelbrot set produces the most famous and immediately recognizable visual pattern in the field of fractals.

Mandelbrot set

At this point I’d like to give you a chance to explore the Mandelbrot set for yourself, via the little program embedded below. You can pan around by holding down the left mouse button and dragging in the desired direction; drill down deeper into the image by holding down the right button and dragging to select the region you’d like to magnify; and undo each step you’ve previously made by clicking the middle button. Notice how this infinite space is made up of similar patterns that are nevertheless never quite exactly the same.

Now for the caveats: as you zoom in to ever-greater levels of magnification, the picture begins to break down and lose detail. This is not a reflection of the pure mathematics of fractal geometry, but rather a byproduct of the computing reality of limited number precision and limited processing power, especially given that this is implemented in the relatively slow language of JavaScript. Any computerized exploration of fractals is inevitably bounded by such considerations, as well as by the resolution of the individual pixels that form the patterns. Eventually my program will not let you zoom in further at all, a concession to these realities; when you reach the point that your zooms don’t take anymore, you’ll have to zoom out by clicking the middle button to continue your explorations. Due to its processing demands, not to mention the lack of handy mouse buttons, I don’t recommend that you try to play with this program on your phones or tablets. (If these limitations smart, you might want to consider how far we’ve come; a typical 68000-based computer of the 1980s would have required hours to generate each new image.)

As useful and oddly beautiful as fractal lines like the ones produced by the Mandelbrot set can be, they’re only the beginning. Fractal planes are also possible, existing in some fractional limbo between two and three dimensions. Just as a plane is in this formulation an infinitely complicated line, a solid is an infinitely “wrinkled” plane. And just as fractal lines are perfect for representing coastlines and leaves, fractal planes can easily become mountains. The striking pictures shown below were computer-generated by Richard F. Voss in 1983 using only fractal equations.

Fractal mountains

It’s also possible — mathematically, that is — to go further, to produce fractals that strain toward a fourth (or higher) dimension. However, representing them becomes a problem given our three-dimensional world. We can only show a three-dimensional slice of these fractals. Doing so produces some strange shapes indeed, like the “dragons” of Alan Norton.

One of Alan Norton's "dragon" fractals

Benoit Mandelbrot published his magnum opus, The Fractal Geometry of Nature, in 1982; it still remains the definitive book on the subject. It’s a strange sort of mathematics text, in which Mandelbrot devotes at least as much space to philosophical digressions into the implications of his discoveries as he does to proofs and equations, and that much space again to lots of beautiful color slides of the fractals themselves. With the book’s publication, the theory of fractals became an example of a rare phenomenon indeed: a development in abstract higher mathematics that was taken up and trumpeted widely and excitedly by not just the likes of Scientific American (which devoted many, many articles to the subject) but also mainstream magazines, newspapers, even television broadcasts. As is all too typical of any new media plaything, fractals were hyped as useful for everything short of curing cancer — and I suspect that some wouldn’t put that past them either. Not only could physicists use them to understand the motions of molecules and and biologists to understand the growth of plants, but some researchers claimed that fractal music was a possibility, while others claimed that they could help you get rich by revealing the “hidden patterns” that govern the stock market. In a 1984 article for Byte magazine, Peter R. Sørensen waxed effusive: “their uses range from physics, biology, and sociology, to art and even motion-picture scene simulation.” While I’m hardly qualified to speak to their uses in the former three scientific disciplines, I do feel fairly confident in claiming that they have had the greatest impact on those latter two, mushier categories, especially if we preface “art” with the word “computer” and allow computer games to slip in under that label.

Tellingly, Mandelbrot was employed at IBM’s Thomas J. Watson Research Center at the time he wrote The Fractal Geometry of Nature; all of the images found within it were generated by the computers there. Many fractal equations, including some of the most beautiful, aren’t complex at all in themselves, but the need to iterate through them so many times to produce their solution sets means that the science of fractals could exist only as a theory without the aid of computers. The first primitive computerized fractal visualizations had been produced by Robert W. Brooks and Peter Matelski in 1978, just three years after Mandelbrot first codified his theories. Virtually from that time forward fractals were inseparable from the computers needed to properly generate and study them.

Many people got their first glimpse of fractals before the hype started in earnest, in a remarkable sequence of computer-generated special effects included in 1982’s Star Trek II: The Wrath of Khan.


The creators of the sequence were the Lucasfilm Graphics Group, a collection of software and hardware engineers whom George Lucas had started putting together in 1979. These folks, whose numbers included such soon-to-be computer-graphics legends as Alvy Ray Smith, designed and built all of the hardware and software used to create sequences like this one. In 1986, the Graphics Group would be spun off to become an independent company whose name you might know: Pixar.

When Lucas elected to start a computer-games division shortly after the sequence shown above was created, it was natural for it to draw inspiration, technologies, and even personnel from the Graphics Group. One of Lucasfilm’s first two games, Rescue on Fractalus!, proudly bears its graphical underpinnings and its status as the first game to make significant use of fractals right there in its title. (By way of continuing the theme, the alien enemies you fight are called the “Jaggies,” a reference to the ugly pixelized artifacts that are one of a computer artist’s worst enemies.) The game, something of a hybrid of Choplifter and the Atari 8-bit classic Star Raiders that didn’t manage to be quite as compelling as either, nevertheless sparked great interest upon its 1984 release thanks to its endlessly varied mountainous terrain, generated on the fly using fractal algorithms.

In the wake of Rescue on Fractalus! fractals were suddenly everywhere in the computing press; I’m not sure there was a single magazine that didn’t publish at least one big feature article on the subject over the next few years. The appeal of fractals to programmers was obvious, and had little to do with Mandelbrot’s esoteric philosophies about geometry and nature. Irregular, natural-looking landscapes had previous been dauntingly hard to craft for games — hard not only because they were a pain to draw but also and predominately because they were so un-amenable to compression algorithms and, indeed, to virtually all of the many innovative techniques programmers had discovered to store graphics data using minimal memory. Thus the distinctly regular, blocky graphics that were the norm, and the shock that was Rescue on Fractalus! Much like the Fibonacci-derived galaxies of Elite, fractals let programmers create whole landscapes generatively, from only an equation and a few seed numbers. They had their limitations, not least the amount of processing power that had to be allocated to generating them — Rescue on Fractalus! runs at all of 5 or 6 frames per second — but for many applications they seemed like magic. It was not a coincidence that after 1984 virtual landscapes started to become markedly richer and more natural.

But fractals did more than just make games prettier; they opened up whole new realms of possibility for them. The bit of video below, from a remarkable game that will be the topic of another article I’ll be publishing soon, may not look like much in contrast to some of what you’ve already seen today. Yet consider that, thanks to the magic of fractals, the planet being landed on is one of thousands to be topographically mapped in its entirety, and that you can land on it absolutely anywhere you like, zooming in from space to touch down where you will just as you can zoom and pan and explore the Mandelbrot set via the toy embedded into this article. Each of these unique worlds is generated using just a few numbers, a bare handful of bytes of precious memory.


Fractals aren’t quite the media darlings they once were; many other shiny objects have come and gone since the 1980s. And while they remain a valuable tool in many branches of science, they’re no longer viewed there either as the revolution they once were. You certainly don’t hear much anymore about fractal music or using fractals to play the stock market. Likewise, they’re now just another item in a game programmer’s bag of tricks. Still, they retain a fascination and beauty all their own. In that spirit, have fun in any further explorations you undertake, and if you discover any interesting patterns using my little toy above, or if you create any enhancements on the Studio Sketchpad site that hosts it, by all means let me know.

(As noted in the article proper, old computer magazines are an embarrassment of riches when it comes to information on fractals. Particularly good articles are in found in the Byte of March 1984, September 1984, and June 1986; the 80 Microcomputing of December 1984; the Ahoy! of April 1987; the Amazing of March 1989, July 1989, October 1989, January 1990, June 1990, and April 1991; the Compute! of January 1983; and the A.N.A.L.O.G. of January 1986.

And since we’re in a multimedia sort of mood today, check out this song about the Mandelbrot set, sent to me by reader Rick Reynolds.)

 
 

Tags: , ,

Amnesia

Thomas M. Disch, circa 1985

Thomas M. Disch, circa 1985

I feel fairly confident in stating that Thomas M. Disch trails only Robert Pinsky as the second most respected literary figure to turn his hand to the humble text adventure — speaking in terms of his literary prestige at the time of his game’s release, that is. The need for that last qualifier says much about his troubled and ultimately tragic life and career.

Disch burst to prominence alongside Roger Zelazny and the rest of science fiction’s New Wave in the mid-1960s. Yet Disch’s art was always even more uncompromising — and usually more uncompromisingly bleak — than that of his peers. His first novel bears the cheery name of The Genocides, and tells the story of the annihilation of humanity by an alien race who remake the Earth into a hyper-efficient nutrient farm, apparently without ever even recognizing humans as sentient. In its final scenes the remnants of the human race crawl naked through the innards of the aliens’ giant plants, stripped of even a veneer of civilization, reduced to feeding and fucking and waiting to be eradicated like the unwanted animal infestations they are. Camp Concentration — sensing a theme? — another early novel that is perhaps his most read and most acclaimed today, tells of another ignominious end to the human race, this time due to an intelligence-boosting super-drug that slowly drives its experimental recipients insane and then gets loose to spread through the general population as a contagion.

The protagonist of the latter novel is a pompous overweight intellectual who struggles with a self-loathing born of his homosexual and gastronomic lusts, a man who can feel uncomfortably close to Disch himself — or, more sadly, to the way Disch, a gay man who grew up in an era when that was a profoundly shameful thing to be, thought others must see him. Perhaps in compensation, he became a classic “difficult” artiste; his reputation as a notable pain in the ass for agents, editors, and even fellow writers was soon well-established throughout the world of publishing. He seemed to crave a validation from science fiction which he never quite achieved — he would never win a Hugo or Nebula for his fiction — while at the same time often dismissing and belittling the genre when not picking pointless fights within it with the likes Ursula Le Guin, whom he accused of being a fundamentally one-dimensional political writer concerned with advancing a “feminist agenda”; one suspects her real crime was that of selling far more books and collecting far more awards than Disch. Yet just when you might be tempted to dismiss him as an angry crank, Disch could write something extraordinary, like 334, an interwoven collection of vignettes and stories set in a rundown New York tenement of the near future that owes as much to James Joyce as it does to H.G. Wells; or On Wings of Song, both a sustained character study of a failed artist and a brutal work of satire in precise opposition to the rarefied promise of its title — these “Wings of Song,” it turns out, are a euphemism for a high-tech drug high. Disch wrote and wrote and wrote: high-brow criticism of theater and opera for periodicals like The New York Times and The Nation; reams of science-fiction commentary and criticism; copious amounts of poetry (always under the name “Tom Disch”), enough to fill several books; mainstream horror novels more accessible than most of his other efforts, which in 1991 yielded at last some of the commercial rewards that had eluded his science fiction and poetry when he published The M.D., his only bestseller; introductions and commentaries to the number of science-fiction anthologies he curated; two plays and an opera libretto; and, just to prove that the soul of this noted pessimist did house at least a modicum of sweetness and light, the children’s novel The Brave Little Toaster, later adapted into the cult classic of an animated film that is still the only Disch story ever to have made it to the screen.

The dawn of the brief bookware boom found Disch at something of a crossroads. On Wings of Song, published in 1979, would turn out to be his last major science-fiction novel, its poor commercial performance the final rejection that convinced him, the occasional short story or work of criticism aside, to write in other genres for the remaining quarter century of his life. He was just finishing his first horror novel, The Businessman, when his publisher Harper & Row came to him to ask if he might be interested in making his next novel interactive, in the form of the script for a computer game. Like just about every other book publisher in the United States, Harper & Row were in equal measure intrigued by the potential for interactive literature and terrified lest they be left out of a whole new field of literary endeavor. They were also, naturally, eager to leverage their existing stable of authors. Disch, a respected and established author of “literary” genre fiction who didn’t actually sell all that well as a rule, must have seemed an ideal choice; they’d get the cachet of his name without foregoing a bunch of guaranteed sales of a next traditional novel. For his part, Disch was intrigued, and jumped aboard with enthusiasm to write Amnesia.

We know quite a lot about Disch’s plans for the game thanks to a fellow historian named Stephane Racle, who in 2008 discovered his design script, an altogether fascinating document totaling almost 450 pages, along with a mock-up of Harper & Row’s planned packaging in a rare-books shop. The script evinces by its length and detail alone a major commitment to the project on Disch’s part. He later claimed to find it something of a philosophical revelation.

When you’re working on this kind of text, you’re operating in an entirely different mode from when you’re writing other forms of literature. You’re not writing in that trance state of entering a daydream and describing what’s to the left or right, marching forward, which is how most novels get written. Rather, you have to be always conscious of the ways the text can be deconstructed. In a very literal sense, any computer-interactive text deconstructs itself as you write because it’s always stopping and starting and branching off this way and that. You are constantly and overtly manifesting those decisions usually hidden in fiction because, of course, you don’t normally show choices that are ruled out — though in every novel the choices that are not made are really half the work, an invisible presence. With Amnesia, I found myself working with a form that allowed me to display these erasures, these unfollowed paths. It’s like a Diebenkorn painting, where you can see the lines that haven’t quite been covered over by a new layer of paint. There are elements of this same kind of structural candor in a good Youdunit.

Disch came to see the player’s need to figure out what to type next as a way to force her to engage more seriously with the text, to engage in deep reading and thereby come to better appreciate the nuances of language and style that were so important to him as a writer.

Readers who ordinarily skim past such graces wouldn’t be allowed to do that because they’d have to examine the text for clues as to how to respond; they’d have to read slowly and carefully. I thought that was theoretically appealing: a text whose form allowed me a measure of control over the readerly reponse in a way unavailable to a novelist or short-story writer. I’ve always been frustrated that genre readers are often addictive readers who will go through a novel in one night. I can’t read at that speed — and I don’t like to be read at that speed, either.

Philosophical flights aside, Disch didn’t shirk the nitty-gritty work that goes into crafting an interactive narrative. For instance, he painstakingly worked through how the protagonist should be described in the many possible states of dress he might assume. He even went so far as to author error messages to display if the player, say, tries to take off his pants without first removing his shoes. He also thought about ways to believably keep the story on track in the face of many possible player choices. One section of the story, for example, requires that the player be wearing a certain white tuxedo. Disch ensures this is the case by making sure the pair of jeans the player might otherwise choose to wear have a broken zipper which makes them untenable (this also offers an opportunity for some sly humor, an underrated part of Disch’s arsenal of writing talents). Even Douglas Adams, a much more technically aware writer who was very familiar with Infocom’s games before collaborating with Steve Meretzky on The Hitchhiker’s Guide to the Galaxy, couldn’t be bothered with this kind of detail work; he essentially authored just the main path through his game and left all the side details up to Meretzky.

Amnesia‘s story is not, outside the presence of a drug capable of inducing sustained and ever-encroaching amnesia, science fiction. It’s rather a noirish mystery in which no character, including the amnesiac protagonist, is pure, everyone has multiple layers of secrets and motivations, and nothing is quite what it initially seems. Disch almost seems to have challenged himself to make use of every hoary old cliché he can think of from classic detective fiction, including not only the device of amnesia itself but also hayseed Texans who shoot first and ask questions later, multiple femme fatales, and even two men who look so alike they can pass as identical twins. It takes a very good writer to get away with such a rogues gallery of stereotypes. Luckily, Disch was a very good writer when he wanted to be. Amnesia is not, mind you, deserving of mention alongside Disch’s most important literary works. Nor, one senses, is it trying to be. But it is a cracker of a knotty detective story, far better constructed and written than the norm in adventure games then or now. Among its most striking features are frank and even moving depictions of physical love that are neither pornographic nor comedic, arguably the first such to appear in a major commercial game.

 

Cognetics -- Pat Reilly, Kevin Bentley, Lis Romanov, and Charlie Kreitzberg -- trying to be EA rock stars and, with the notable exception of Benley, failing miserably at it.

Cognetics — Pat Reilly, Kevin Bentley, Lis Romanov, and Charlie Kreitzberg — trying to be EA rock stars and, with the notable exception of Bentley, failing miserably at it.

To implement his script, Harper & Row chose a tiny New Jersey company called Cognetics who were engaged in two completely different lines of endeavor: developing the user interface for Citibank ATMs and developing edutainment software for Harper & Row, specifically a line of titles based on Jim Henson’s Fraggle Rock television series. The owner of Cognetics, Charlie Kreitzberg, already had quite a long background in computing for both business and academia, having amongst other accomplishments authored a standard programming text called The Elements of FORTRAN Style a decade before. Working with some colleagues, Kreitzberg had developed an extendible version of the Forth programming language with a kernel of just 6 K or so to facilitate game development on the Apple II. He dubbed this micro-Forth “King Edward” for reasons known only to him. The actual programming of Amnesia he turned over to a local kid named Kevin Bentley; they had met through Kreitzberg’s wife, who shopped at the grocery store owned by Bentley’s family. And so it was poor young Kevin Bentley who had Disch’s doorstop of a script dropped on his desk — no one had apparently bothered to tell the untechnical Disch about the need to limit his text to fit into the computers of the time — with instructions to turn it into a working game. He had nothing to start with but the script itself and that 6 K implementation of Forth; he lacked even the luxury of an adventure-specific programming language like ZIL, SAL, AGI, or Comprehend.

It was of course a hopeless endeavor. Not only had Disch provided far, far too much text, but he’d provided it in a format that wasn’t very easy to work with. Disch, for understandable reasons, thought like a storyteller rather than a world builder. Therefore, and in the absence of other guidance, he’d written his story from the top down as essentially a hypertext narrative, a series of branching nodes, rather than from the bottom up, as a set of objects and rooms and people with descriptions of how they acted and reacted and how they could be manipulated by the player. Each part of his script begins with some text, followed by additional text passages to display if the player types this, that, or the other. Given the scope of possibility open to the player of a parser-driven game, that way lies madness. We’ve seen this phenomenon of text adventures that want to be hypertext narratives a surprising number of times already on this blog. Amnesia is perhaps the most painful victim of this fundamental confusion, born of an era when hypertext fiction didn’t yet exist outside of Choose Your Own Adventure books and any text- and story-driven game was assumed to necessarily be a parser-driven text adventure.

Harper & Row's original Amnesia box art

Harper & Row’s original Amnesia box art

In mid-1984, just as it was dawning on Cognetics what a mouthful of a project they’d bitten off, Harper & Row, the instigators of the whole thing, suddenly became the first of the big book publishers to realize that this software business was going to be more complicated than anticipated and, indeed, probably not worth the effort. (The depth of the blasé belief of which they were newly disabused that software publishing couldn’t be that hard is perhaps best measured by the fact that they had all of the box art for Amnesia prepared before Cognetics had really gotten started with the actual programming, evidently thinking that, what with Disch’s script delivered, it couldn’t be long now.) They abruptly pulled out, telling Kreitzberg he was welcome to do what he liked with Fraggle Rock and Amnesia. He found a home for the former with CBS, another old-media titan still making a go of software for the time being, and for the latter with Electronic Arts, eager to join many of their peers on the bookware bandwagon. EA producer Don Daglow was given the unenviable task of trying to mediate between Disch and Cognetics and come up with some sort of realizable design. He would have his hands full, to such an extent that EA must soon have started wondering why they’d signed the project at all.

In addition to being a noir mystery, Disch had conceived Amnesia as a sort of extended love letter to his adopted home of Manhattan. Telarium’s Fahrenheit 451, when released in late 1984, would also include a reasonably correct piece of Manhattan. Disch, however, wanted to go far beyond that game’s inclusion of twenty blocks or so of Fifth Avenue. He wanted to include almost all of the island, from Battery Park to the Upper West and East Side, with a functioning subway system to get around it. The resulting grid of cross-streets must add up to thousands of in-game locations. It was problematic on multiple levels; not only could Disch not possibly write enough text to properly describe this many locations, but the game couldn’t possibly contain it. Yet Disch, entranced by the idea of roaming free through a virtual Manhattan, refused to be disabused of the notion. No, EA and Cognetics had to admit, such a thing wasn’t technically impossible. It was just that this incarnation of Manhattan would have to be 99 percent empty, a grid of locations described only by their cross-streets, with only the occasional famous landmark or plot-relevant area poking out of the sea of nothingness. That’s exactly what the finished game would end up being, rivaling Level 9’s Snowball for the title of worst ratio of relevant to irrelevant locations in the history of the text adventure.

The previous paragraph underlines the most fundamental problem that dogged the various Amnesia teams. Disch never developed with Cognetics and EA the mutual respect and understanding that led to more successful bookware collaborations like Amazon, The Hitchhiker’s Guide to the Galaxy, and Mindwheel. Given the personality at the center of Amnesia, that’s perhaps not surprising. I described Disch as “difficult” earlier in this article, and, indeed, that’s exactly the word that Kevin Bentley used to describe him to me. His frustration with the collaboration was still palpable when I recently corresponded with him.

The conclusion I reached was that Tom wanted to write a book and have it turned into a game by creating a sort of screenplay adapted from a book. The trouble was that a screenplay to my mind was the wrong metaphor for an adventure game. The missing piece of the puzzle seemed to be that Tom didn’t grasp that an adventure game was a matrix of possibilities and it was up to the user to discover the route, and the point was not to cram the user toward the “conclusion.” Tom was very unhappy with the notion that the player might not experience the conclusion of the story the way that he intended in the script, so he insisted that the user be directed toward the conclusion.

Bentley and Kreitzberg met with Disch just a handful of times at his apartment near Union Square to try to iron out difficulties. The former remembers “lots of herbal tea being offered,” and being enlisted to fix problems with Disch’s computer and printer from time to time, but it’s safe to say that the sort of warm camaraderie that makes, say, the Mindwheel story such a pleasure to relate never developed. Before 1984 was out, frustrated with the endless circular feedback loop that the project had become and uninterested in the technical constraints being constantly raised as issues by his colleagues, Disch effectively washed his hands of the whole thing.

His exit did allow EA and Cognetics a freer hand, but that wouldn’t necessarily turn out for the better. Feeling that the game “was lacking in the standard sorts of gaming experience (like a score, sleep, food, etc.)” and looking for some purpose for that huge empty map of Manhattan, EA requested that Bentley shoehorn all that and more into the game; the player would now have to eat and sleep and earn money by taking odd jobs whilst trying to come to grips with the central mystery. The result was a shotgun marriage of the comparatively richly implemented plot-focused sections from Disch’s original script — albeit with more than half of the text and design excised for reasons of capacity — with a boring pseduo-CRPG that forces you to spend most of your time on logistics — earning money by begging or washing windows or doing other odd jobs, buying food and eating it, avoiding certain sections of the city after dark, finding a place to sleep and returning there regularly, dealing with the vagaries of the subway system — all implemented in little better than a Scott Adams level of detail. Daglow came up with an incomprehensible scoring system that tries to unify all this cognitive dissonance by giving you separate scores as a “detective,” a “character,” and a “survivor.” And as the cherry on top of this tedious sundae, EA added pedestrians who come up to you every handful of moves to ask you to look up numbers on a code wheel, one of the most irritating copy-protection measures ever implemented (and that, of course, is saying something).

All of this confusion fell to poor Kevin Bentley to program. He did a fine job, all things considered, even managing a parser that was, if not up to Infocom’s standards, also not worse than its other peers. Nevertheless growing frustrated and impatient with the game’s progress, EA put him up in an “artist apartment” near their San Mateo, California, headquarters in February of 1985 so that he could work on-site on a game that was now being haphazardly designed by whoever happened to shout the loudest. He spent some nine months there dutifully implementing — and often de-implementing — idea after idea to somehow make the game playable and fun. Bentley turned in the final set of code in November of 1985, by which time “everyone was over it,” enthusiasm long since having given way to a desire just to get something up to some minimal standard out there and be done with it. Certainly Bentley himself was under no illusions: “as a game I thought it sorta bombed.” Impressed with his dogged persistence, EA offered him a job on staff: “But I was 20 and far from home. I knew if I left immediately and drove back to New Jersey I could be home for Thanksgiving.” Unsurprisingly given the nature of the experience, Amnesia would mark the beginning and the end of his career as a game developer. He would go on to a successful and still ongoing career in other forms of programming and computer engineering. Charlie Kreitzberg and Cognetics similarly put games behind them, but are still in business today as a consulting firm, their brief time in games just a footnote on their website.

EA's released Amnesia package

EA’s released Amnesia package. Note that it’s simply called a “text adventure,” a sure sign that the bookware boom with its living literature and electronic novels has come and gone.

Amnesia, a deeply flawed effort released at last only during the sunset of the bookware boom, surprised absolutely no one at EA by failing to sell very well. It marks the only game EA would ever release to contain not a single graphic. Contemporary reviews were notably lukewarm, an anomaly for a trade press that usually saw very little wrong with much of anything. Computer Gaming World‘s Scorpia, admittedly never a big fan of overtly literary or experimental games, issued a pithy summary that details the gist of the game’s problems.

Overall, Amnesia is an unsatisfying game. You can run around here, and run around there, and work up your triple scores as a detective, a character, and a survivor, but so what? Much of what you actually do in the game doesn’t get you very far towards the ultimate solution. Boiled down to the essentials, there are only three things you need to do here: follow up on the clue from TTTT, get and read the disk, and meet Bette. There are auxiliary actions associated with them, but those are the key points. So when you think back on the game as a whole, you don’t see yourself as having done, really, a whole lot, as having been the main character. It’s more as though you came to certain places in a book, and turned a page to get on with the story.

Bottom line: terrific prose, nice maps, too much novel, not enough adventure.

Disch, despite having walked away from the hard work of trying to make the game better over a year before its release and despite having probably never even played the version of Amnesia which arrived in stores, took such reviews predictably personally. Amnesia, he pronounced, had been “one of the quickest disillusionments of my life.” He went on to blame the audience.

The real problem is that there’s simply no audience for this material, no one who would respond enthusiastically to what I do well. Those who buy it, who are aficionados of the form, are basically those who want trivial pursuits; and to offer them something, however entertaining, that involved reading and imaginative skills they did not care to exercise while playing with their computers was foolish. I felt like de Soto, who journeyed to Tennessee looking for the Fountain of Youth — an interesting enough trip, but neither of us found what we were looking for.

People who want to play this sort of game are looking, I suppose, for something like Douglas Adams’s Hitchhiker, where they can have their familiar experiences replayed. The computer-interactive games that have done well — like the Hitchhiker’s or Star Trek series — have been tied in with copyrighted materials that have already had success with the target audience in prior literary forms. I don’t think the quality of those scripts compares to what I did in Amnesia — Adams’s scripts, for example, are actually very good of a kind, but it’s a matter of one little joke after another. The notion of trying to superimpose over this structure a dramatic conception other than a puzzle was apparently too much for the audience. In the end, I just produced another literary curiosity.

There’s more than a grain of truth in all this if we can overlook the condescension toward Douglas Adams that would be more worthily applied to one of his derivatives like Space Quest. A computer-games audience more interested in the vital statistics of dragons and trolls than the emotional lives of the socially engaged humans around them undoubtedly did prove sadly unreceptive to games that tried to be about something. And reviewers like Scorpia did carry into their columns disconcertingly hidebound notions of what an “adventure game” could and should be, and seemed to lack even the language to talk about “a dramatic concept other than a puzzle,” to the extent that Scopia’s columns on Infocom’s two most forthrightly literary works, A Mind Forever Voyaging and Trinity, are little more than technical rundowns and catalogs of puzzle hints — not to mention her reaction to one of Infocom’s first bold literary experiments, the ending to Infidel and poor Brian Mortiarty found himself actively playing down the thematic message of Trinity in interviews in the hope of actually, you know, selling some copies of this supposedly “depressing” game. It’s just that Amnesia, being well-nigh unplayable, is an exceedingly poor choice to advance this argument, and for that Disch deserves his due share of the responsibility. At some level, having just served up — or having at least allowed his name to be attached to — a bad game, he’s not entitled to this argument.

Disch one month before his death.

Disch one month before his death.

Disch’s ultimate fate was an exceedingly sad one. After the millennium, his world crashed around him brick by brick. First there was the shock of witnessing the September 11 attack on his beloved New York, a shock that seemed to break a circuit somewhere deep inside him; often open to charges of nihilism, extreme pessimism, even misanthropy during his earlier career, it wasn’t until after September 11 that his hatred for the people who had done this made him begin to sound like a bigot. Then in 2005 Charles Naylor, his partner of three decades, died. In the aftermath came an effort by his landlord to evict him from the rent-controlled apartment the two had shared, an effort which appeared destined for success. With his writing career decidedly on the wane, his books dropping out of print one by one, and his income correspondingly diminishing, he did most of his writing after Naylor’s death in his LiveJournal blog. Amidst the poorly spelled and punctuated screeds against Muslim terrorists and organized religions of all stripes, depressingly similar to those of a million other angry bloggers, would come the occasional pearl of wisdom or poetry to remind everyone that somewhere inside this bitter, suffering man was the old Thomas M. Disch. And suffer he did, from sciatica, arthritis, diabetes, and ever-creeping obesity that left him all but housebound, trapped alone in his squalid apartment with only his computer for company. On July 4, 2008, he ended the suffering with a shotgun. In 1984, for Amnesia, a younger Disch had written from that same apartment that “suicide is always a dumb idea.” Obviously the pain of his later years changed his mind.

One of the writers with whom Disch seemed to feel the greatest connection was another brilliant, difficult man who always seemed to carry an aura of doom with him, and another who died in tragically pathetic circumstances: Edgar Allen Poe. Disch once wrote a lovely article about Poe’s “appalling life,” the last year of which “seems a headlong, hell-bent rush to suicide.”  Like Disch, Poe also died largely forgotten and unappreciated. Perhaps someday Disch will enjoy a revival akin to that of Poe. In the meantime that Amnesia script sits there tantalizingly, ripe as ever to become a modern work of interactive fiction that need not leave out a single word, that could give us Disch’s original vision undiluted by scores and copy protection and money problems and hunger and sleep timers. Maybe he’d forgive us for trimming some of that ridiculous Manhattan. And maybe, just maybe, his estate would be willing to give its blessing. Any takers?

(First and foremost, huge thanks to Kevin Bentley for sharing with me much of the history of Cognetics and Amnesia. Disch himself talked about Amnesia at greatest length in an interview published in Larry McCaffery’s Across the Wounded Galaxies: Interviews with Contemporary American Science Fiction Writers. Disch’s writings on science fiction are best collected in the Hugo-winning The Dreams Our Stuff Is Made Of and On SF. Scorpia’s review of Amnesia appeared in the January/February 1987 Computer Gaming World.

I’ve made Amnesia available here for download in its MS-DOS incarnation with a DOSBox configuration file that works well with it. Note that you’ll need to use the file “ACODES.TXT” in place of the code wheel when the irritating pedestrians start harassing you.)

 
11 Comments

Posted by on September 29, 2014 in Digital Antiquaria, Interactive Fiction

 

Tags: , ,