FLASH ATTACK NOTES

In early 2001 I had the opportunity to have an e-mail discussion with one of the creators of Flash Attack, Katherine Wasserman.

The following was edited from several e-mails so the topics my drift a little here and there…


KW

A little Background

I'm the co-author of it and the other three Mach 2 Software games that you mention (RT Backgammon, RT Checkers, RT Statego).

Tim Stryker and I went to college together in the 70's, we were both physics majors and taught ourselves computers. Stryker was a year ahead of me but hung around school for my senior year and we were best friends for all 4 years and beyond. Late in 1977 I bought a PET computer to play with, almost as soon Stryker saw what I had he ordered one too. In short order we were writing loads of game programs for single machines, but often for two players. We made joystick like devices that plugged into the user port and wrote our games in BASIC. Of course that wasn't good enough and soon we started to come up with ways to hook up our two machines together. Naturally, we found that BASIC too slow for much of what we wanted to do and although we had taught ourselves 6502 machine code and figured out much of the PET ROM/RAM usage (even before there was any documentation on it) hand assembling more than a few hundred lines of code took forever! (This was also before there were any assemblers for PET's.)

I had been reading about FORTH in Dr. Dobbs around the time we figured out how to make the PET's talk to each other and had learned about the internals of the machines. We decided that a FORTH-like language was what we needed to write a real good game for the PETs. It would be the perfect compromise of speed of execution, speed of coding and space in RAM. So we wrote our own language – eventually called RPL – and used it to write Flash Attack in. The other games were not as speed dependant so they were coding in BASIC with some parts being in machine code (mainly the PET-to-PET communication code).

At some point in late 1979 we realized that we had some pretty good stuff and decided to write the BYTE article, and try to find a software publisher for our games. BYTE liked the article, but none of the software publishers wanted to sell our programs. Adventure International replied to our letter by sending us a copy of Combat for the TRS 80 (note: Comm*Bat was surprisingly similar in features to Flash Attack, and was available for the TRS-80 and Atari computers, it used modems to link the two machines together. I contacted Scott Adams and he didn't recall much about Comm*Bat except that he did distribute it.) We were puzzled by this, but still thought that our games were pretty good so we decided to sell them ourselves and BYTE agreed to put that little blurb alongside our article. [IIRC the game was $20 and the cable was $15]

I don't think that we sold more than 30 or 40 copies of Flash Attack and fewer of the other games. Most people built their own communications cable (like you did) from our instruction sheet, but we sold a dozen or so cables w/speakers too. So there can't be too many people out there like yourself who ever played it and you've got to be one of the only people around that's still playing it. (Although, if I had a second PET I might play it from time to time just for kicks!)

After that, Stryker moved to Florida and did a bunch more work on games, RPL (he sold this under the company name Samurai Software, let me know if your interested in it) and other things, even working for a while with an arcade game manufacturer. Much later, he started Galaticom and wrote the new version of Flash Attack. I pretty much did nothing with computer games, but went on to get my PhD in computer science and ended up doing consulting.

We stayed in touch on and off over the years, but never did any more work together. He retired from Galaticom in 1995 and moved to Utah (from Florida) that was the last I heard from him. I was pretty upset (as you might imagine) when I heard about his death a year later. He was the most intelligent person that I ever knew, very unconventional and very interesting!

LA

[I had once received a letter from Tim Stryker a number of years ago, when I found out he was working at Galacticomm (I saw Flash Attack 2.6 screenshot in an ad for the Major BBS and wrote looking for him). He let me know that the original Flash Attack was “ancient history “and offered me the chance to become a developer of 'flash protocol' games for major BBS. I had declined.]

KW

I'm not at all surprised that Stryker made you an offer to work for Galacticom, that was very typical for him. He liked to make quick decisions based on one key piece of knowledge – you're being interested in porting Flash Attack. I remember when he bought a used car in college in almost no time flat. When I asked him how he decided on which one he told me that he used his father's method: turn on the radio – if it's on a news or classical music channel it's a good buy if it's on a rock station don't get it!

LA

What sort of other games did you write? Any other arcade or mainly traditional board and logic games?

KW

All arcade-type stuff. We wrote board games in multi-machine versions only, the idea was to take something fairly established and plain and jazz it up in a multi-machine version. In college we played Risk a lot, so Stryker and I got to thinking about how we could “jazz” that up too – before we had PET's. The outcome was a computer-assisted real-time paramutual wagering scheme where players could bet at any time during the game on the expected winner.

It was an interesting experiment! If I remember correctly, I think that we used a desk-top HP (or maybe Tektronix) programmable calculator/computer for the computations. But the betting complicated the game too much and it took even longer to play than the usual many hours.

LA

I've played games like that. I think it's more fun to deveop them though.

KW

I agree. I never really liked playing computer games, but writing them was a lot of fun. And playing them during the process of writing them was fun too.

LA

It wasn't until after I got my first computer (A VIC-20) that I got to really play with ML, never went to Forth, looked interesting but using stacks had shied me away..

KW

I really liked that stuff and got more than a dose of it in grad school. I can't say that I do much in the way of that kind of programming now, however. My consulting work is mainly to Wall Street firms. A mixed bag of things, from system design, to implementation and sometimes just making recommendations. It's not very intellectually challenging however, and I keep thinking about doing something more interesting. My doctoral thesis was in AI and I did use it a bunch in my consulting practice for a few years, but not much any more.

[The copy protection was pretty ingenious (took my brother and I a while to figure out how to make a second copy…) there is code in the first cassette buffer, so, to save it you had to plug the datasette in the second cassette port and then save it from the first buffer location to the end of the program ( in the monitor S “PROGRAM”,02,027A,2000 )]

KW

Monitor program, hah! My PET predates that ROM – it's all POKEing, PEEKing and SYSing for me. I'm sure that I'll be able to figure it out soon, and make you copies.

LA

I was wondering about that, Comm*Bat's ads read like Flash Attack in features and play (with lasers for guns, etc) and was wondering if it was you guys who did it or an adaptation of your stuff… (I found the comm*bat files but no computer or emulator to try them…yet. :-/)

KW

Amazingly (or maybe not) Comm*Bat and Flash Attack were developed at the same time and neither of us knew about the other's work at all. But an awful lot of computer-related things seem to happen that way, so I guess it was to be expected.

LA

I only met one other person that had it (Flash Attack), and that was just before we ordered ours… And no one had played the PET version has e-mailled, some have because they played the Galacticomm version.

KW

Well, we'll have to get together some day and have a serious match!

LA

My brother got a letter from them once (Samurai Software), he was selling the RPL language, but we didn't jump on it… I'd be interested in knowing (or even seeing) what other games he wrote..

KW

The first article that Stryker wrote about RPL is attached, there's another article or two and a (real) manual for it. I'm not sure if I still have the RPL program that he was selling around, but I'll look. I don't think that he wrote any more games for PET's after the ones that we did together.

He wrote a lot of utility programs and tried to get a bunch of articles related to them published. I have copies of many (if not all) of those articles and even two books that he wrote many years later. (The books were pretty way-out there, even for him! They weren't computer-related, more like his philosophy of the world.)

Did you ever try hitting <SHIFT>-<OFF> when you're playing Flash Attack?

LA

That was neat, jumps your tank to high memory. where you can walk onto the other's display, we sure freaked out some friends when this little tank would come out of nowhere and start blowing away their status displays… ;→

KW

The really neat thing is to move your tank on the screen into the right side window. You get that infinite mirror effect, only digitally!

Actually, this was at the core of the game. Before we wrote Flash Attack I was playing around with this infinite mirroring thing in ML and wrote a full screen version of it. We decided that we would use this screen refresh IRQ-based code to display the base and tank windows in the game.

There's a piece of ML code in Flash Attack that run's off the 60Hz screen refresh clock, looks at the board and updates the screen. Our RPL code just writes to the game board and updates the mines, tanks, etc. indicators but not the image of the board. So Flash Attack is also a multi-process program not just multi-machine.

[more detail on the 'tank/base window' routine] The only hard part about it was syncing to the 60hz video refresh, the rest of it was a mindless loop of reading a byte of screen memory and writing it into the proper position (also in screen memory) to line up with the 25×40 presentation by the monitor.

LA

That is cool, there wern't that many interrupt driven screen programs for the PET. Though that would make conversion harder maybe just conforming to the communications protocol… hmm.

KW

Maybe. The 64 video worked similarly but had another chip to handle screen memory along with the 6502. The video syncing was necessary in order to avoid all the chaff that you see if you poke characters onto the screen at random times. [an effect really prominet with original PETs referred to as 'snow'] Once we understood where all the interrupt vectors were kept in memory and how they were used, it was obvious that we could simply intercept them and do what we needed to do as long as we didn't take too long to complete the task. If you did take too many cycles before returning from the interrupt, you'd have cascading interrupts and crash the PET. I didn't know of any interrupt driven programs when i wrote the “windowing” code prior to using it in FA, but they did start appearing not too long after that.

(What's incredible to me in hindsight was how much stuff we had figured out back then and didn't do anything with it – especially the multi-machine gaming stuff.)

I'm not sure if I have the source code of it on tape, but I do have hardcopy listing that I can scan. The problem is that it's got no comments at all and it's written in RPL which is extremely difficult to read! But it may make for interesting stuff on your web page.

LA

We also learned how to read the characters in the memory (at the top and bottom of the playfield you could see what seemed like random characters, but were actually the program code and game status values) - you could see in the tank window just above the playfield the bytes representing the opponents x/y locations - with a few seconds thought you could target him. (of course we didn't do it much - it asn't as much fun as playing)

KW

The ICBM's were my baby! RPL is an all integer (2 bytes) language and I had to come up with code to compute trig functions and stuff in next to zero memory space.

LA

It was a very good feature - between that and Cursor's Trek! game, we got our angles down really well.

KW

Maybe we should have tried to sell FA to high schools so that they could use it in their trig classes! :)

LA

One of the kids had set up his calculator to do the math, start coordinate, end coordinate into angle, range. I think we still blew him away from just quick guesstimation of angle and range.

KW

Yea, on a 40 x 60 field and a 3 x 3 explosion area it's not too hard to get pretty close with a half way decent guess.

LA

In our (mine and Jeff Wood's) updated version there is ICBM tracking so you can watch the missle as it reaches its destination… Also a targeting-to-tank feature (gotta make it less accurate and disable-able though, it is way too easy then.) 64k is alot of memory to work in.

KW

That sounds neat! I'm afraid that we would have never finished the game if we had that much memory space to work with. I really liked having to fit so much into 8K, it was the most challenging aspect of all of our game writing.

LA

On working on creating a 64 version: It's hard for me, I don't think I've gone too far past 16k (-graphic characters) in BASIC, but I want it faster and smaller too.

KW

Are you working on the game alone, or do you have other people to hash out ideas with? It certainly helps to have at least someone else to bounce ideas off of when you're trying to come up with faster/smaller ways to do things.

(To be historically accurate, I really shouldn't be calling the language RPL. Stryker came up with that name later when he started selling it. We called it various names when we developed it and wrote FA like: FOCO - FORTH-Object-Compiler-something or other, FIB FORTH-in-BASIC, FIF - FORTH-in-FORTH. Each of these represented different versions of the development of the language. Writing the language was by far the most time consuming part of writing FA.) I remember working on those math routines for a week in order to get them accurate enough and small enough to squeeze into the space we allotted. Actually, everything in RPL and FA was like that, we wrote and re-wrote all the code to optimize it for speed and space. 8K isn't much when you're using 2K of it for the internal board representation and another .5K for variables and another 1K for ML code and another 1.5K for the RPL run-time library. That left us all of 3K to write the actual game in. Nowadays, you can't write the “H” in “Hello world” in that space!

LA

Any notes or source of the original flash attack? I would someday like to make a 64 or later version that's compatible with the original (or better yet, a port for every machine that can interface to it…)

KW

It should be possible to make a 64-compatible version. I know that Stryker and I talked about that once, he may have even tried to do that. I also think that Stryker had a version of RPL for the 64, so a recompile of FA might even be possible. I'll look around some more for whatever I can find. Unfortunately, I don't know what happened to all of Stryker's tapes and stuff when he died.

LA

I believe if Flash Attack was released on the 64 in the mid 80s it would have done better.

KW

I'm sure that if we had it on the 64 it would have been a hit. The 64 was cheap enough that people could buy two machines and light enough to carry one over to a friends house to play. I'm not sure why Stryker didn't try that. I was pretty much out of gaming by the time the 64 was available.

I agree that Commodore made great machines, some of their calculators too (I collect old calculators, BTW). Stryker wrote to them on several occasions trying to get a deal with them to make a new RPL-based CPU as the basis of a new line of machines (sort of like a P-code machine) but that never got anywhere.

I've attached a PDF of the RPL manual for your reading pleasure! FOCO, is 99.9% compatible with RPL so you should be able to read the FA source code using the explanations from the RPL manual. As far as the missing lines in the source code listing that I sent last time, you're just missing one line it's:

3190 BANG:POW& SHOW:42,6849POKEDISPCD&DISPT&34,6849POKERETURN

Pretty exciting, eh? :)

Last modified:: 2020/11/22 09:08
   
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International