everyBASIC
Docs » Atari BASIC

atari

Atari BASIC

atari
Keywords

  • ABS
  • ADR
  • AND
  • ASC
  • ATN
  • BYE
  • CHR$
  • CLOAD
  • CLOG
  • CLOSE
  • CLR
  • COLOR
  • CONT
  • COS
  • CSAVE
  • DATA
  • DEG
  • DIM
  • DOS
  • DRAWTO
  • END
  • ENTER
  • EXP
  • FOR
  • FRE
  • GET
  • GOSUB
  • GOTO
  • GRAPHICS
  • IF
  • INPUT
  • INT
  • LEN
  • LET
  • LIST
  • LOAD
  • LOCATE
  • LOG
  • LPRINT
  • NEW
  • NEXT
  • NOT
  • NOTE
  • ON-GOSUB
  • ON-GOTO
  • OPEN
  • OR
  • PADDLE
  • PEEK
  • PLOT
  • POINT
  • POKE
  • POP
  • POSITION
  • PRINT
  • PTRIG
  • PUT
  • RAD
  • READ
  • REM
  • RESTORE
  • RETURN
  • RND
  • RUN
  • SAVE
  • SETCOLOR
  • SGN
  • SIN
  • SOUND
  • SQR
  • STATUS
  • STEP
  • STICK
  • STOP
  • STR$
  • STRIG
  • THEN
  • TO
  • TRAP
  • USR
  • VAL
  • XIO

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
  • Missing keywords: INKEY$ (there is GET), CLS, DEF FN, SPC, TAB and ELSE.
  • 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:

  • An uniform interface based on OPEN, CLOSE, PRINT, GET, PUT, NOTE, POINT and XIO for devices, due to Atari's Central Input/Output (CIO)
  • 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

Related to...

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

  • Turbo BASIC XL

Versions and successors

  • Atari BASIC A+, actually a disk-based extension with lots of added functionality
  • Atari BASIC XL

References

  • https://atariwiki.org/wiki/Wiki.jsp?page=Atari%20BASIC
  • https://en.wikipedia.org/wiki/Atari_BASIC
  • https://archive.org/details/ataribooks-atari-basic
  • https://goto10retro.com - Excellent read from Paul Lefebvre about everything related to Atari computers, including some valuable BASIC tips. Last check 2024-01-17
Interpreters, Numbered Lines BASIC, Atari, Atari8bit
Previous Next

everyBASIC

Table of Contents

Table of Contents

  • Atari BASIC
    • Where it is/was used
    • Noteworthy characteristics
    • Environment and usage
    • Extensions
    • Curiosities
    • Related to...
      • Influenced by
      • Influence for
    • Versions and successors
    • References

Home Login Links

  • BASICs we know of
    • Apple II INTEGER BASIC
    • Altair BASIC
    • ANSI BASIC
    • Applesoft BASIC
      • Atari BASIC A+
    • Atari BASIC
      • Atari BASIC XL
    • Acorn Atom BASIC
    • BBC BASIC
    • bootBASIC
    • Bywater BASIC
    • Commodore BASIC
    • Dartmouth BASIC
    • DEC BASIC-PLUS
    • Decimal BASIC
    • FreeBASIC
    • Gambas
    • Microsoft GW-BASIC
    • HP Time-Shared BASIC
    • Liberty BASIC
    • Numbered Lines BASIC
    • MiniBASIC (Joe Strout's)
    • minibasic (McLean's)
    • Microsoft BASIC-80
    • Amiga Microsoft BASIC
    • Microsoft Atari BASIC
    • Microsoft QuickBASIC
    • MSX BASIC
    • Sinclair BASIC
    • Structured BASICs
    • TI BASIC
    • TRS-80
    • Color BASIC
    • TrueBASIC
    • twinBASIC
    • ugBASIC
    • MS Visual Basic for DOS
  • BASIC keywords reference
  • Links