Atari 2600 BASIC was terrible and completely useless, but the fact that it existed and worked at all given the constraints of the 2600 is nothing short of miraculous.
Yes, miraculous is precisely the right word. 128 bytes of memory. BYTES! Or as the article's author so beautifully frames it : "the RAM can't hold a full Tweet". And that's just the RAM; CPU is similarly limited.
"half the CPU time is spent Racing The Beam" meaning "half the time is spent tracing video ram to module the Cathode Ray Tube electron beam to generate the video output."
Just incredible that anything useful was possible. The more I learn about the 2600s architecture, the more impressed I am with the quality of the games that existed.
You have more than 128 bytes of memory. MUCH more, considering what's available :-)
- The I/O chip has a register or two used to store the direction of a bit in the port. If you don't care whether the port is reading or writing, you can use the direction register as a byte of RAM.
- The stack pointer is essentially useless most of the time. You get another 8-bit register to play with, and it even does auto increment/decrement for you, if you're careful about side effects.
A cow-orker of mine at Atari (we were in the Atari 800 games group) decided to learn how to program the 2600. I think his motivation was partly the massive bonuses and royalties that 2600 programmers were getting for shipping their cartridges (our division did not do royalties, and it barely did bonuses). Over four months I watched him mentally deteriorate, and he finally gave up. [Six months later the company folded, more or less, and we both wound up working for Jack Tramiel].
Yeah, the fact that anyone could make a fun game on the 2600 was kind of a miracle.
Sorry to go off topic, but, when I started reading this response, I started thinking, "hey is this the dadhacker.com guy?". I really loved your atari st history blog posts, man!
I'm laughing at the extra 2 bytes of memory you just gave us! ;)
IMO, the NES dev community had a better time with the 6502 -- but they definitely had far more memory to play with by then and they had (more) expensive cart mappers with RAM.
Writing a 2600 game was a little like a contact sport, you got beaten up a lot by the hardware ("What's wrong with this stupid register?"), got beaten up by marketing ("Can't you cram that thing into 2K of ROM? What's wrong with you? Oh, and we need it next week. What's wrong with you???"), got beaten up by management ("We gave your hot title to Joe Thumbfingers because there's nothing wrong with him") and ultimately beaten up by the market ("This game suxx, what's wrong with you?"). The payoff was good, at least for a few people.
Eventually the 2600 and its team ran out of gas. I remember being called into some game brainstorming meetings, and the 2600 programmers were just utterly burned out by the platform. Someone would raise an idea and it'd get shot down by the experienced platform wizards. Not the way you want to run a brainstorming session, but everyone thought that the platform was done.
In comparison, Atari 400/800 development was a doddle. You had oodles of RAM, tons of ROM (the cartridge I wrote was the first 16K ROM that Atari shipped, and I don't recall there being a huge flap about it), and the tools were pretty decent (for writing assembly language, anyway). Getting something on the screen was maybe half an hour of work, and you didn't have to count cycles or crunch code until you wanted to do optimization. The downside was that we weren't paid as much, and towards the end management started to fix that, too.
> Atari 2600 BASIC was terrible and completely useless
How old where you? As a child I had the Atari 2600 before owning a computer and just "typing" and executing a few lines of code was an exciting experience. Sadly that was my fantasy because I never had that cartridge but remember reviewing the BASIC picture in the Atari catalog again and again.
I had that cartridge. It was terrible and completely useless. I thought I was going to be writing my own video games, but I was lucky to be able to peck out
10print"this uses up all the ram. literally. this is all u get."
20goto10
without getting carpal thumb from the horrid color-based data entry method.
I had those same fantasies, going through the catalogs drooling over some of those awesome descriptions! I know it was talked about on HN some months ago, but http://www.artofatari.com brings back a whole lot of fun memories :)
My first exposure to computers was with a Commodore 64, on which I had also first learnt to code. I wasn't even aware of the 2600 until later. Compared to what I could do on the C64, 2600 BASIC _was_ useless. Doesn't make it any less of a technical marvel, though.
Useless means different things to different people, it is a subjective quality. It was useless for production use but not useless as a child experience where you don't have any access to computers. I can say the same to the first programmable calculators.
That's always been my take on it, but it's innovative, and it makes the most of what's there. I like how the article essentially points out that the cartridge, for all its primitive functionality, is essentially a BASIC IDE. Another great example of pulling functionality out of its rear end is BASIC for the Bally Astrocade, where they basically intercalate the bits of BASIC program space with bits of video memory. Of course, this also hamstrings your ability to take full advantage of the hardware, but hey, everything has its price.