Table of Contents

atari

Atari BASIC

This site calls "Atari BASIC" the Revision C of the original, buggy and slow BASIC made by Shepherdson Microsystems in 1979 for the first 8-bit home computers from Atari, the videogames giant of the day. It was not bundled with the machines, but sold separately, cramped into an 8kB cartridge which had not been enough for the 6502 port of Microsoft BASIC. It went through two revisions right from the start for bug-fixing, and famously implemented a somewhat different flavour of BASIC.

Atari developers eventually got Microsoft Atari BASIC ready by 1981, but Shepherdson/Optimized Systems Software (OSS) remained improving and extending the original Atari BASIC for many years and maintained a larger and loyal user base. As of March 2023, two of these following versions are registered here and worth looking.

Where it is/was used

  • Atari 400
  • Atari 800

Noteworthy characteristics

Statements and functions for string manipulations were possibly the most distinct feature of Atari BASIC, as strings had to be DIMensioned and treated like arrays of characters, pretty much like in C language and akin to Apple Integer BASIC. No operator for string concatenation, nor RIGHT$, LEFT$ nor MID$: string parts were accessed with base-1 indexes like in S$(5,10).

The Wikipedia article on Atari BASIC enumerates some other differences it had from the widespread Microsoft BASIC, such as:

  • Variable names are not restricted in size and all characters are significant
  • Arrays must be explicitely declared and sized with DIM, while MS-BASIC implicitely allows any variable to be used as a 10-element array.
  • Arrays of strings are not allowed.
  • No integer variables.
  • No bitwise operators.
  • INPUT does not allow a prompt string like in INPUT "What's your name"; N$.
  • ? would not be automatically converted to PRINT in listings, even though it would work as expected
  • The target of GOTO and GOSUB can be a variable or expression.
  • RESTORE may take a numeric constant, variable, or expression as a parameter, causing the next READ to begin from the specified line number
  • The counter variable used in FOR is a mandatory parameter for NEXT, and only _one_ counter variable.
  • For displaying a range of lines, the LIST uses a comma instead of a minus sign: LIST 40,100.

But for its side, Atari BASIC had some interesting features as well:

  • Because GOTO and GOSUB could take variables as arguments, and such variables had no name size limit, variables could be used like _labels_ throughout the code
  • Error-handling system based on the TRAP keyword, similar to ON ERROR of other machines
  • Immediate syntax checking on each line entry

Environment and usage

TO DO: notes about the REPL or IDE used, keyboard shortcuts and commands, command-line options for compiling and linking, environment variables which might be set…

Extensions

TO DO: Famous libraries tools and extension packages made for this BASIC

Curiosities

TO DO: Historical notes, anecdotes, what people said about it

Influenced by

  • HP BASIC - where the string-handling model came from
  • Data General Business BASIC - it was familiar to some of Shepardson developers.
  • Cromemco BASIC - developed just before by Shepardson, used a 6-digit BCD floating point format which was also adopted in Atari BASIC

Influence for

Versions and successors

References