I build database driven web applications for a living. Lots of server-side code – usually PHP or ColdFusion tying to Oracle or MySQL. A good bit of this work also involves interface design. I try to be as innovative as possible in this work, and because of that, I am intrigued by the AJAX development methodology. I use it in a few applications right now, including my first Mac OS X Dashboard Widget.
Seeking to further my AJAX abilities, I talked my employer into sending me to a recent AJAX Seminar in New York City. It was a long day, well spent. Among the many notable speakers, one stood out for me: Bill Scott, AJAX Evangelist and member of Yahoo’s User Experience Design team. His take on sound design and his enthusiasm for these new technologies spoke to me. And I must confess, part of the reason I took particular note of the man was the fact that he is clearly “a Mac guy” – and not just a casual Mac guy. Bill Scott wrote the Macintosh port of Spectrum Holobyte’s submarine simulation, GATO, in the mid 80s.
I e-mailed Bill, asking a bit about the development of Macintosh GATO. He quickly responded and explained that the Macintosh version was coded in C and was based on the original IBM PC verison of the game, which was written in MS BASIC. The development specification was the PC GATO manual. He pointed me to a far more detailed history of the development of the game that he posted as a comment tied to a story posted on Folklore.org, entitled “3rd Party Developers and Macintosh Development“.
See the extended entry of this article for an excerpt from Bill’s commentary on the Folklore.org story.
- In 1983 when I read the Byte magazine article on the Lisa I called a friend (co-developer) and said I found the computer we have always dreamed about– but it is just too expensive.
Then when the Mac was announced we were at the local Apple store in May, 1984 to witness it first-hand. Its hard to appreciate, but I remember having a flood of emotions. Just simple things like the Basic programming environment having scrollbars! I mean you could scroll back and forth in your code. And MacPascal with pretty printing in the code- Whoa! Of course we were blown away by MacPaint, MacWrite, MacDraw.
Together we bought our macs and we knew that the one thing we wanted to do was write code for this beautiful machine. We tried out MacForth, MacBasic, etc. Soon, we went to work at the Apple store selling Macintoshes. While I have never cared for sales I found it effortless to sell something I believed so strongly in.
One of the other guys in the store had been spending his nights playing an IBM game called GATO a WWII submarine simulation. He came in one day and announced that we should contact the game company for GATO (Spectrum Holobyte) and pitch writing a Macintosh version of this best-selling game.
The next thing I knew we were putting together a prototype and had only one week to get it together. We took a cursory glance at the IBM version and knew that we wanted a distinctively Macintosh game– not a port. So we built the prototype to utilize the Macintosh windows, menus and dialogs and not just take over the video directly.
We had not bothered to get official developer status but a teenage kid had done so and loaned us the 1000 sheets of Inside Macintosh. A local firm we were consulting with allowed us to make three sets on their copier if we bought the paper.
Armed with Inside Mac, our 128K Macintoshes and Consulair C (purchased from Bill Duvall just a week or so before) but with absolutely no experience with the C language, serious development with the Mac or how to write a game we embarked on our prototype. It turned out great. I created the screens with MacPaint wrote some routines to spin the needle on the gauges, faked out a lot of menus and set up the way the screens would rotate between map view and periscope view. Spectrum loved our idea and we soon quit our jobs and dropped out of college to write GATO.
It was quite an experience. I remember the excitement of really comprehending the event management and object-oriented nature of the Macintosh. That was a big hurdle coming from IBM PC and Apple II programming. The most challenging aspect though was debugging the game. First, we barely knew C. Second, we had the debug switch installed on the side of our macs and used Macsbug to determine what went wrong when printf did not do the trick. A crash course in 68000.
We got the game together in a little over 3 months and were shipping it by the May timeframe. GATO was the first simulation game for the Mac and did extremely well in the market (although the Mac market was not large at the time) ( http://www.users.bigpond.com/james.jacobs/mac/gameguide.html )
The next few months we stayed holed up just playing with our macs. I remember the first desk accessory I wrote was a silly tool called wrap that made the cursor wrap around when it hit the edge of the screen. And even sillier one was bounce (or bouncy) that made the cursor bounce around the screen. Years later, I was working for a defense contractor and someone had a mac and was showing me a cool desk accessory that wrapped the cursor around the screen (one man’s junk…)
During that time I hooked 2 macs together and via a serial cable and MacTerminal running on the other I could force a dump of the Macintosh ROM (if I recall through MacsBug) to the other machine. I got my then 4 year old son (who was happy to do anything he could to play with the Mac) to continue to hit the enter key on each screenful of rom dump–which took most of the day!
We spent weeks annotating and commenting the Quickdraw portion of the rom. I think the frustration of not knowing 68000 when we started the game development really pushed us to want to understand the Mac from the ground up. The most exciting thing that happened in the summer of ’85 (next to the game being commercially successful) was figuring out how regions worked. I tell you that to this day I speak the name of Bill Atkinson with reverence. It was while commenting the PtInRegion section that we understood the elegance of the compression that regions brought to the table. Probably in violation of a patent that I was not aware of I gave talks to my local university and user’s groups on how Regions worked on the Mac.
Another cool discovery was in disassembling and reverse engineering how Bill A. did the MacPaint blitting with the MOVEM (move multiple). If I remember correctly the MacPaint window was fixed at 480 pixels. Bill would take 14 registers and use them in a MOVEM to push out to memory or back in. The other 2 registers were used for bookkeeping. I used that trick in a few demos I wrote on the Mac.
That summer was incredible. We went on to write a 3d graphics library patterned after the Mac library that was to be used in the (failed) Spectrum Holobyte Orbiter game. We played tons of that crazy maze game with the eyeball (what was that called?? [ByteCellar: it's called Maze War, Bill] ) over AppleTalk. And we read everything we could about the guys who brought this machine to life. We poured over the Quickdraw code and we dreamed what it would be like to work for Apple.
Thanks Andy and all of you for this great machine (and site). It really changed so many directions in my life. I have had a fun career and so much of it springs from that summer madly developing for that insanely great machine in 1985.
Thanks for the history, Bill. That’s the stuff, right there.
UPDATE: My post here apparently set Bill to thinking about what he got out of his experience with GATO so many years ago. He has shared these ruminations in a recent post to his blog, entitled “All I Really Need to Know I Learned from a 128K Mac“.