- 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.