Scott Adams
Scott Adams | |
---|---|
![]() Scott Adams with Mythical Monster | |
Born | July 10, 1952 |
Occupation | Software Programmer |
Website | http://www.msadams.com/index.htm |
Scott Adams was the co-founder of Adventure Internation Inc. and programmer of many software titles. He programmed, with his wife Alexis Adams, Adventure: Pirate's Adventure. Scott Adams also released the following Adventure series games that could be played with the same cartridge as Adventure: Pirate's Adventure with the additional purchase of a floppy disk or cassette tape:
- Adventureland
- Voodoo Castle
- The Count
- Strange Odyssey
- Mystery Fun House
- Pyramid of Doom
- Ghost Town
- Savage Island Part 1
- Savage Island Part 2
- Golden Voyage
Contents
Byte Magazine Article
The following appeared in the December 1980 issue of Byte Magazine (Volume 5, Number 12). It appears to be written by Scott Adams himself. The article begins on page 192 of that issue of the magazine. [1]
A Short History
Time flies. The copyright date on my game, Pirate's Adventure, reads 1978. It seems like yesterday, but it has been two and a half years since I started on my Adventures . . .
At the time I was working as a systems programmer for Stromberg Carlson when I was first introduced to the classic Adventure game written by Crowther and Woods to run on a DEC (Digital Equipment Corporation) PDP-10. After playing for only a few minutes I was hooked. It took almost ten days of early-morning and late-evening sessions before I achieved the coveted score of 350 and the title of Grand Master. I had done it--I was a bona fide adventurer! Yet it seemed unfair that such a fascinating game was restricted to such an expensive machine.
Back then, I had just gotten my Radio Shack TRS-80 Level II computer, and (having recently finished my backgammon program) I was looking for another good game to write. The concept of character strings intrigued me, and I wanted a game that used them. (Up to that point, I had programmed primarily in FORTRAN and assembly language, neither of which can handle strings easily.)
Adventure seemed to fit my needs exactly. But I didn't want to copy someone else's program, and I was afraid I wouldn't get much of an Adventure in a 16 K-byte BASIC computer-especially when the FORTRAN version I played took about 300 K bytes!
I mentioned the idea of getting some sort of Adventure into my small machine to friends; fortunately, I was not daunted by their laughter. After all, I could remember when it was supposedly impossible to get a BASIC interpreter to run on an 8080 microprocessor!
Interpreter? Did I say interpreter? Suddenly the idea fell into place! I had written many compilers and operating systems. Why not write an Adventure interpreter? This would allow me to write many Adventures and would also provide the compression I needed to fit them into a small machine. (Inside, I'm really a frustrated science-fiction writer; I have over 3000 science-fiction books in my collection but have never tried to write one myself.)
So, weeks later, my initial scribblings had evolved into a working interpreter with a skeleton Adventure to play on it. It took some six months of play-testing before my first Adventure, Adventureland, was finally released through The Software Exchange of Milford, New Hampshire, and Creative Computing Software. Thus the Scott Adams Adventure Series was born.
And, at that same moment, it almost died. For six months I had been so engrossed in programming Adventure that my wife Alexis (who at the time was pregnant with Maegen, our daughter) started hiding my floppy disks around the house to get my attention. Once she hid them in the oven-boy, did she get some attention that time! I then decided that one Adventure was enough.
Some time after that, Alexis unexpectedly announced that she wanted to write an Adventure, and it was this effort that led to the Scott Adams Adventure given in listings 1 and 2, Pirate's Adventure. With her basic ideas, we created an Adventure that was different from any that had ever been written before. Instead of simply searching for treasures in this Adventure, you now had an added ingredient-a "mission." (In this case, you had to figure out how to build a pirate's ship!) This set the stage for many of my later mission-oriented Adventures that replace a cumulative score with a do-or-die situation. These include my Mission Impossible, The Count, Voodoo Castle, and Mystery Fun House Adventures.
All my current Adventures, for the Apple II, the Radio Shack TRS-80, and the Exidy Sorcerer, are written in machine language and run much faster and cleaner than the original BASIC versions (of which there were only two and a half). I probably would never have written these programs in machine language if it had not been for the gentle nudges I received from a friend I've never met but greatly respect, Lance Micklus.
Program Notes
Pirate's Adventure was first sold commercially to run in Level II BASIC on a 16 K-byte TRS-80. Both the Adventure-interpreter program (in BASIC) and a data file created by the Adventure-editor program were on the cassette tape. After you loaded the interpreter program, you used it to read the data file, an operation that took 20 minutes but allowed me to compress a lot of Adventure into very little memory space.
In planning this article, I had to devise a means of creating the tape data file without using the Adventure editor. The BASIC program in listing 1 provides the means. This program, which runs on a TRS-80 with 16 K bytes of memory, has the sole purpose of generating the Adventure-data file that will be read by the
Adventure-interpreter program. The program of listing 1 writes the data on a C-60 cassette and verifies that the tape has been correctly written. Allow about 45 minutes for this program to run.
The Adventure-interpreter program appears in listing 2. It will read the tape data file in about 20 minutes and then start play of the game.
If you plan to run Pirate's Adventure, on a 32 K-byte TRS-80 or larger machine, you can merge the two programs as follows: delete lines 6510 thru 6790 of listing 1. Append the data statements of listing 1 to listing 2, replacing all occurrences of INPUT#D in listing 2 with the word READ.
It is possible to run this program on machines other than the TRS-80. If your machine runs a version of Microsoft BASIC (eg: Apple II running Applesoft, Commodore PET, Exidy Sorcerer, or any Ohio Scientific computer), you will have fewer changes to make. Here are some of the obscure changes that may have to be made (depending on your machine and version of BASIC):
- A logical operation returns the value -1 (or hexadecimal FF) when true, and 0 otherwise. For example, executing:
PRINT (1=2), (1=1)
causes the numbers 0 (denoting false) and -1 (denoting true) to be printed.
- The flag SF is a 16-bit integer that is set and tested with boolean algebra commands. This can be replaced by the following:
- Dimension SF as SF(15)
- Replace F1=SF AND CINT(2↑LL+.5) with F1=SF(LL)
- Replace SF= F OR CINT(2↑P+.5) with SF(P)= -1
- Replace SF=SF AND NOT CINT(.5+2↑P) with SF(P)=0
- IF ... THEN ... ELSE statements in TRS-80 Level II BASIC assert that, if the condition being tested is true, the statements between the words THEN and ELSE are performed. If the condition is false, the statements following the ELSE are performed. If your BASIC does not have the ELSE clause, you will have to split the statement into multiple lines.
- LEFT(A$,B) returns the substring of A$ from the first character to the Bth character. Similarly, MID$(A$,B,C) returns the substring from the Bth character on, for a total of C characters, and RIGHT$(A$) returns the last (ie: rightmost) B characters in the string.
- If you cannot create a two-dimensional array of strings (eg: DIM A$(20,3) as a twenty-row by three-column array of strings), you will find conversion nearly impossible because this feature is used heavily in the program.
Happy adventuring, and watch out for the tides on Pirate's Island-they can be tricky.