Yeah, what a disappointment that purchase turned out to be with my precious allowance money. As noted, it had an impressive IDE for the horrifically limited abilities of the machine, but that didn't make up for the fact that your working set (if I might use that term very loosely) was measured in bytes. There just wasn't much to be done with it other than "print 'mikestew is awesome'; goto 10".
My parents bought Basic Programming for the 2600 at my request. We didn't yet have a computer, and affording one was a bit dicey at that time. But I had been learning BASIC on a TRS-80 Model I at school for some months, and the hope was that I could replicate some of that experience at home.
Long story short, this is literally the only console cart I've ever returned (on the 2600 or any later system) due to being dissatisfied with its contents. It was an remarkable achievement on the system, but for a kid who just wanted to be able to do some nontrivial BASIC programming, it was nothing but disappointment.
"Your Odyssey2 can make over 100,000 electronic decisions every second - and there are computers around that are more than ten times faster than that!"
Have you checked out Ms. Pac Man yet? Personally I found it to be a better conversion with slightly nicer graphics. That said, I do think 2600 Pac Man is very playable and much better than some people give it credit for.
When I first started getting serious about programming in the early 00's, I thought, I'll figure out how to code a game for the 2600. Those games are so simple, it must be easy to work with. I couldn't have been more wrong. Imagine coding a game without sprites, objects, threads, or anything really. At a high level, coding a game on Atari 2600 consists of timing the toggling of the beam that is racing left to right and back throwing light onto the tv screen. You literally build screens off that!
On the plus side, when that finally clicked, a lot of the mystery of how a computer worked finally made sense and I could now understand the abstractions on top of abstractions that allow me to just instantiate a sprite instead of having to manage hardware directly.
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.
This program was by Warren Robinett, of Adventure fame; both were released in 1979. He later went on to write Rocky's Boots for the Apple II, a rather more successful educational game involving logic gates.
Same feelings here. I read "racing the beam" a couple years back - the limitations and inventiveness to get around said limitations were both crazy.
About 13 years, I was reminiscing about Adventure, searched around a bit, and found Warren Robinett's email address. I wrote a fan email, and ... got a nice thank you email back! I was ecstatic! I later moved down to the Raleigh area, and, last I understood, he was working around the Chapel Hill area, so our paths may one day yet cross :)
Actually, many BASICs will do this. What's unique about the 2600's IF syntax in this situation is that it's functioning almost like a ternary operator.
I can relate... I never used an Atari 400, but did spend several afternoons entering code into a Timex-Sinclair 1000 (or ZX-81 if you prefer).
(There the big problem wasn't so much the keyboard as it was the 16K memory expansion falling off the back of the machine while you were typing. Just writing that makes me SO thankful modern hardware is as good as it is...)
It makes for a cool party trick, but not something to charge unsuspecting children money. I got more value out of the 2600 version of PacMan (https://en.wikipedia.org/wiki/Pac-Man_(Atari_2600) ).