Beat those Revision B Basic Blues with Revision C!

By Brad Finney

 

Issue 25

Jan/Feb 87

 

<< Prev Article

 

 

If you are like most Atari BASIC programmers, you have 'discovered' the infamous keyboard lock-up bug the hard way, by losing a program you were editing. The bug, which strikes at essentially random times during program editing, causes the machine to completely lock-up, with control only being regained after turning the machine off, erasing any program in memory in the process. The bug first appeared in revision A of Atari BASIC, which was the official BASIC for the 400/800 machines.

When the XL machines were released, Atari attempted to cure this and other minor bugs with revision B BASIC. Unfortunately, the cure proved worse than the cough! Not only did the keyboard lock-up bug remain, but new bugs were introduced which mangled strings, shuffled program lines, and added 16 bytes to a program every time it was SAVEd. Atari has finally cured all of these bugs with revision C of BASIC that was built into the last batch of 800XL machines and is standard on the XE machines.

However, that leaves tens of thousands of us with buggy-BASIC! While the only long term cure is a hardware fix via a revision C BASIC ROM purchased from Atari, a software alternative is provided here. This program creates a second short program that can be quickly run each time you power on your machine or return to BASIC from DOS. This second program copies ROM BASIC into underlying RAM, and then patches the bytes required to upgrade revision B to C. Since a machine language routine is used, the entire process is finished in seconds.

Under normal circumstances, pressing RESET would turn ROM BASIC back on. To prevent this, the second program also includes a routine that turns RAM (version C) BASIC back on at the end of the RESET process.

To determine which version of BASIC you have, PEEK at 43234. If you get 162, you have revision A, and this program is not appropriate. If you get 234, count your blessings because you already have revision C. If you get 96, you have revision B, and the first step to kissing the bugs goodbye is to type in and save the program given below. When the program is run, it will create and write a BASIC program called BASICC to disk.

Running BASICC will install revision C BASIC in RAM and install the RESET handling routine in the last 17 bytes of page 6 memory. Note that with the exception of these 17 bytes, no memory is lost, because BASIC now resides in previously unused (in BASIC) RAM underlying ROM BASIC. As long as you do not exit to DOS or power off your machine, revision C BASIC will remain installed.

The RESET routine, while handy in reinitialising RAM BASIC, does have a few side effects. The first is that the MEMSAVE feature will not work when exiting to DOS. The second (but minor) effect is that to exit to DOS you must type DOS (and RETURN), press the RESET key, and then type DOS again. These two extra steps are only necessary if you used the RESET key at least once in BASIC. If you desire, you can eliminate the RESET feature by deleting lines 140-160, and 180-220 in the first program. Under this condition, RAM BASIC can be re-installed after RESET by simply poking location 54017 with 255.

AtariLister - requires Java

top