Atari 400/800/XL/XE/XEGS systems
· 3 versions exist, “A”, “B”, and “C”. “A” was used primarily in the 400/800 computers, “B” in the XLs, and “C” in the XEs. Aside from being built-in in all the different machines, rev “B” and “C” carts were also made. To determine what version you have enter “PRINT PEEK (43234)”. Rev A returns a value of 162, Rev B is 96, and Rev C is 234. For a complete run-down of the different versions, and who did them, check out: http://www3.sympatico.ca/maury/other_stuff/atari_basic.html and http://www.faqs.org/faqs/atari-8-bit/faq/section-50.html
· Rev A was a beta version from Shepardson Microsystems, Inc. (SMI), the company Atari contracted to write Atari BASIC. As a result of trying to fit the program onto an 8K cartridge, as well as working on a tight schedule, Atari BASIC was plagued by 2 problems that caused it to be one of the slowest-performing BASIC languages for any computer – a poor implementation of line number lookups in loops and jumps, and a poor implementation of multiply and divide. Unfortunately, Atari never corrected the problem in subsequent versions, even though SMI identified and fixed a number of bugs (some serious) that cropped up in the initial release.
· The original cart releases were labeled “BASIC Computer Program” (picture #1), which was later changed to “BASIC Computing Language” (pictures #2 and #3). The last releases were labeled “Atari BASIC Computing Language” (pictures #4 and #5).
· BUG: Rev A – A bug in the code causes the keyboard to lock up, forcing you to turn the system off and back on (RESET doesn’t work). It was a fairly simple bug in some library code used for moving memory around on the 6502. Apparently this bug cropped up as a side effect of a mistaken "cut and paste" between two sections of the library, the one that added room for new lines, and the one that compacted memory when removing lines. Under a certain condition the code would skip over 256 bytes during compacting and ruin the program.
· BUG: Rev B – Atari attempted to correct the lock-up bug in Rev A for the 1200XL and removed the problem code. But then they attempted to fix something that wasn’t “broken” and ended up creating the same problem, and more. Besides the keyboard lock-up problem, your data may also become scrambled. Although not a permanent fix, using LIST and ENTER instead of SAVE and CSAVE (or LIST”C” and ENTER”C” instead of CSAVE and CLOAD) may minimize the potential for problems.