Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Atari BASIC
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Development== The machines that would become the [[Atari 8-bit computers]] were originally developed as second-generation [[video game console]]s intended to replace the [[Atari 2600|Atari VCS]]. [[Ray Kassar]], the new president of Atari, decided to challenge [[Apple Inc.|Apple Computer]] by building a home computer instead.{{sfn|Decuir|2004}} This meant the designs needed to include the [[BASIC]] programming language, the standard for home computers. In early 1978, Atari licensed the [[source code]] to the [[MOS Technology 6502|MOS 6502]] version of [[Microsoft BASIC]].{{sfn|Wilkinson|1982|p=ix}} It was offered in two versions: one using a 32-bit floating point format that was about 7800 bytes when compiled, and another using an extended 40-bit format that was close to 9 KB.<ref>{{cite web |url=https://www.pagetable.com/?p=46 |title= Create your own Version of Microsoft BASIC for 6502 |first= Michael |last=Steil |website=Some Assembly Required |date=20 October 2008}}</ref> Even the 32-bit version barely fit into the 8 KB size of the machine's [[ROM cartridge]] format. Atari also felt that they needed to expand the language to support the hardware features of their computers, similar to what Apple had done with [[Applesoft BASIC]]. This increased the size of Atari's version to around 11 KB; Applesoft BASIC on the [[Apple II Plus|Apple II+]] was 10,240 bytes long.{{efn|AppleSoft BASIC occupied memory locations $D000 through $F7FF, a total of 10240 bytes.}} After six months the code was pared down to almost fit in an 8 KB ROM,{{sfn|Wilkinson|1982|p=ix}} but Atari was facing a January 1979 deadline for the [[Consumer Electronics Show]] (CES) where the machines would be demonstrated. They decided to ask for help to get a version of BASIC ready in time for the show.{{sfn|Wilkinson|1982|p=ix}} ===Shepardson Microsystems=== [[Image:Basic computing language for Atari 8-bit computers.jpg|thumb|8K Atari BASIC cartridge]] In September 1978, [[Shepardson Microsystems]] won the bid on completing BASIC.{{sfn|Wilkinson|1982|p=ix}} At the time they were finishing Cromemco 16K Structured BASIC for the [[Zilog Z80|Z80]]-based [[Cromemco]] [[S-100 bus]] machines.{{sfn|Wilkinson|1982|pp=iv-v}}{{sfn|Cromemco|1978}} Developers Kathleen O'Brien and Paul Laughton used [[Data General Business Basic]], an integer-only implementation, as the inspiration for their BASIC, given Laughton's experience with Data General on a [[time-sharing]] system.<ref name="SE Books">{{cite book |last1=Lorenzo |first1=Mark |title=Endless Loop: The History of the BASIC Programming Language |date=2017 |publisher=SE Books |location=Philadelphia |isbn=978-1974-27707-0 |page=106}}</ref> Cromemco BASIC includes an extended [[floating-point arithmetic|floating point]] implementation using a 14-digit [[binary-coded decimal]] (BCD) format made possible using all 16 registers of the [[Zilog Z80]] processor. As it converts all data to the internal format at edit time, small constants like "1" use ~8 bytes of memory, and this could be a particular issue when storing arrays of numbers. To address this, the language also supports a smaller 6-digit BCD format.{{sfn|Cromemco|1978|pp=2, 3}} Even the smallest BASICs on the 6502 used about 10K. For instance, [[Commodore BASIC]] used 9K but also relies on support from the [[KERNAL]],{{efn|Commodore BASIC used two main areas of memory, $A000-$BFFF and $E000-$E4D2.<ref>{{cite web |url=https://www.c64-wiki.com/wiki/Memory_Map |title=Memory Map}}</ref>}} while [[Applesoft BASIC]] is 10,780 bytes.{{efn|Applesoft was in the area from $D000-$F7FF, including the FP library.<ref>{{cite web |url=https://www.callapple.org/vintage-apple-computers/apple-ii/memory-map-apple-ii-with-applesoft-basic-loaded/ |title=Memory Map β Apple II with Applesoft BASIC Loaded}}</ref>}} To meet the goal of fitting in an 8K ROM, the new BASIC would be in two parts: the language itself on the cartridge and a 2K floating point library in the system's 10K ROM supporting only the 6-digit format.{{sfn|Wilkinson|1982|p=v}} Atari accepted the proposal, and when the specifications were finalized in October 1978, Laughton and O'Brien began work on the new language.{{sfn|Wilkinson|1982|p=ix}} The contract specified the delivery date on or before 6 April 1979 and this also included a File Manager System (later known as DOS 1.0).{{sfn|Wilkinson|1982|p=v}} Atari's plans were to take an early 8K version of Microsoft BASIC to the 1979 CES, then switch to Atari BASIC for production. Development proceeded quickly, helped by a [[Consideration# Bonus_clause|bonus clause]] in the contract, which led to the initial version being delivered in October. Atari took an 8K cartridge version to CES instead of Microsoft's.{{sfn|Wilkinson|1982|p=x}} [[Atari Microsoft BASIC]] was later a separate product.<ref>{{cite magazine |first=Charles |last=Cherry |title=BASIC Bonanza |magazine=Antic |date=June 1987 |url=https://www.atarimagazines.com/v6n2/BASICBonanza.html}}</ref> ===Releases=== The version Shepardson gave to Atari for the CES demo was not intended to be final, and Shepardson continued to fix bugs.{{sfn|Wilkinson|1982|p=x}} Unknown to Shepardson, Atari had already sent the CES version to manufacturing.{{sfn|Wilkinson|1982|p=vi}} This version was later known as '''Revision A'''. It contains a major bug in a routine that copies memory: deleting lines of code that are exactly 256 bytes long causes a lockup after the next command is entered. The {{keypress|Reset}} key does not fix it.<ref name=twoline>{{cite magazine |url=http://www.atarimagazines.com/compute/issue74/readers_feedback_10.php |title=Atari BASIC Bugs |magazine=Compute! |date=July 1986 |page=10}}</ref> '''Revision B''' attempted to fix the major bugs in Revision A and was released in 1983 as a built-in ROM in the 600XL and 800XL models. While fixing the memory copying bug, the programmer noticed the same pattern of code in the section for inserting lines, and applied the same fix. This instead introduced the original bug into this code. Inserting new lines is much more common than deleting old ones, so the change dramatically increased the number of crashes.<ref name=twoline/> Revision B also adds 16 bytes to a program every time it is <code>SAVE</code>d and <code>LOAD</code>ed, eventually causing the machine to run out of memory for even the smallest programs.<ref name="rad">{{Cite magazine |last=Radcliff |first=Matthew |date=September 1985 |title=Revision C Converter |url=https://www.atarimagazines.com/v4n5/revisioncconverter.html |magazine=Antic |access-date=2023-07-08}}</ref>{{sfn|Chadwick|1985|p=230}} ''[[Mapping the Atari]]'' described these as "awesome bugs" and advised Revision B owners "Don't fool around; get the new ROM, which is available on cartridge" from Atari.{{sfn|Chadwick|1985|p=230}} The book provides a [[type-in program]] to patch Revision B to Revision C for those without the cartridge.{{sfn|Chadwick|1985|pp=250-251}} '''Revision C''' eliminates the memory leaks in Revision B.{{sfn|Chadwick|1985|p=230}} It is built-in on later versions of the 800XL<ref name=rad/> and all XE models including the XEGS. Revision C was also available as a cartridge.{{sfn|Chadwick|1985|p=230}} The version can be determined by typing <code>PRINT PEEK(43234)</code> at the READY prompt. The result is <code>162</code> for Revision A, <code>96</code> for Revision B, and <code>234</code> for Revision C.<ref>{{cite magazine |first=Bob |last=Hardy |title= Keycode Getter |url=https://www.atarimagazines.com/atariclassics/v2n1/keycode.php |magazine=Atari Classics |date= February 1993 |page=18}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)