All Topics  
Applesoft BASIC

 

   Email Print
   Bookmark   Link






 

Applesoft BASIC



 
 
Applesoft BASIC was a dialect of BASIC supplied on the Apple II computer, superseding Integer BASIC
Integer BASIC

Integer BASIC, written by Steve Wozniak, was the BASIC programming language interpreter of the Apple I and original Apple II computers. Originally available on cassette, then included in Read-only memory on the original Apple II family computer at release in 1977, it was the first version of BASIC used by many early home computer owners....
. Applesoft BASIC was supplied by Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 and its name is derived from the names of both Apple and Microsoft. The first version of Applesoft was released in 1977 only on cassette tape and lacked support for high-resolution graphics. Applesoft II, which was made available on cassette and disk and in the ROM of the Apple II Plus and subsequent models, was released in 1978.






Discussion
Ask a question about 'Applesoft BASIC'
Start a new discussion about 'Applesoft BASIC'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Applesoft BASIC was a dialect of BASIC supplied on the Apple II computer, superseding Integer BASIC
Integer BASIC

Integer BASIC, written by Steve Wozniak, was the BASIC programming language interpreter of the Apple I and original Apple II computers. Originally available on cassette, then included in Read-only memory on the original Apple II family computer at release in 1977, it was the first version of BASIC used by many early home computer owners....
. Applesoft BASIC was supplied by Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 and its name is derived from the names of both Apple and Microsoft. The first version of Applesoft was released in 1977 only on cassette tape and lacked support for high-resolution graphics. Applesoft II, which was made available on cassette and disk and in the ROM of the Apple II Plus and subsequent models, was released in 1978. It is this latter version, which has some syntax differences from the first as well as support for the Apple II high-resolution graphics modes, that most people mean by the term "Applesoft."

Apple's customers were demanding a version of BASIC that supported floating point
Floating point

In computing, floating point describes a system for numerical representation in which a String of digits represents a rational number.The term floating point refers to the fact that the radix point can "float": that is, it can be placed anywhere relative to the Significant figures of the number....
 calculations. As Steve Wozniak
Steve Wozniak

Stephen Gary "Woz" Wozniak is an United States computer engineer who founded Apple Computer with Steve Jobs. His inventions and machines are credited with contributing significantly to the personal computer revolution of the 1970s....
, the creator of Integer BASIC and the only person who understood it well enough to add floating point features, was busy with the Disk II
Disk II

The Disk II was a 5?-inch Floppy disk designed by Steve Wozniak and manufactured by Apple Computer. It was first introduced in 1978 at a retail price of US$495 for pre-order; it was later sold for $595 including the Disk controller and cable....
 drive and controller and with Apple DOS
Apple DOS

Apple DOS refers to operating systems for the Apple II series of Personal computer from 1979 through early 1983. Apple DOS had three major releases: DOS 3.1, DOS 3.2, and DOS 3.3; each one of these three releases was followed by a second, minor "bug-fix" release, but only in the case of Apple DOS 3.2 did that minor release receive its own ver...
, Apple turned to Microsoft, who was the BASIC vendor of choice after their success with Altair BASIC
Altair BASIC

Altair BASIC was an interpreter for the BASIC programming language that ran on the Micro Instrumentation and Telemetry Systems Altair 8800 and subsequent S-100 bus computers....
, and licensed a 10 KB assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
 version of BASIC dubbed "Applesoft." Apple reportedly obtained an eight-year license for Applesoft BASIC from Microsoft for a flat fee of $31,000, renewing it in 1985 through an arrangement that gave Microsoft the rights and source code for Apple's Macintosh version of BASIC.

Applesoft was similar to (and indeed had a common code base with) BASIC implementations on other 6502
MOS Technology 6502

The MOS Technology 6502 is an 8-bit microprocessor that was designed by Chuck Peddle and Bill Mensch for MOS Technology in 1975. When it was introduced, it was the least expensive full-featured central processing unit on the market by a considerable margin, costing less than one-sixth the price of competing designs from larger companies such...
-based computers, such as Commodore BASIC
Commodore BASIC

Commodore BASIC, also known as PET BASIC, is the dialect of the BASIC programming language used in Commodore International's 8-bit home computer line, stretching from the Commodore PET of 1977 to the Commodore 128 of 1985....
: it used line numbers, and spaces were not necessary in lines. While Applesoft was slower than Integer BASIC, it had many features that the older BASIC lacked:

  • Atomic strings. A string is no longer an array of characters (as in Integer BASIC and C
    C (programming language)

    C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
    ); it is instead a garbage-collected
    Garbage collection (computer science)

    In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage , or memory used by Object that will never be accessed or mutated again by the Application software....
     object (as in Scheme and Java
    Java (programming language)

    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
    ). This allows for string arrays; DIM A$(10) resulted in a vector
    Array

    In computer science, an array is a data structure consisting of a group of element s that are accessed by index . In most programming languages each element has the same data type and the array occupies a contiguous area of computer memory....
     of eleven string variables numbered 0 to 10.
  • Multidimensional array
    Array

    In computer science, an array is a data structure consisting of a group of element s that are accessed by index . In most programming languages each element has the same data type and the array occupies a contiguous area of computer memory....
    s.
  • Single-precision floating point
    Floating point

    In computing, floating point describes a system for numerical representation in which a String of digits represents a rational number.The term floating point refers to the fact that the radix point can "float": that is, it can be placed anywhere relative to the Significant figures of the number....
     variables with an 8-bit exponent and a 31-bit significand and improved math capabilities, including trigonometry and logarithmic functions.
  • Commands for high-resolution graphics.
  • CHR$, ASC, STR$, and VAL functions for converting between string and numeric types
  • LET statement optional
  • User defined functions
    User Defined Function

    A User-Defined Function, or UDF, is a function provided by the user of a program or environment, in a context where the usual assumption is that functions are built into the program or environment....
     (simple one-line functions written in BASIC, with a single parameter)
  • Error-trapping, allowing BASIC programs to handle unexpected errors by means of a subroutine written in BASIC.
  • PEEK and POKE commands that let the user read the contents of a memory location (in decimal) or stuff a numeric value (specified in decimal) into any desired memory location.


Whereas Wozniak originally referred to his Integer BASIC as "Game BASIC," having written it so he could write a Breakout game for his new computer, few action game
Action game

An action game is a video game genre that emphasizes physical challenges, including hand-eye coordination and reaction-time. Action games are a vast genre that includes diverse subgenres such as fighting games, first-person shooters, and platform games....
s were written in Applesoft BASIC for several reasons:

  • In this era of carefully counting clock cycles and limited memory, it was inefficient to write speed-dependent programs that ran on a runtime interpreter.
  • The use of real numbers for all math operations created unnecessary overhead and degraded performance. Applesoft converted integer numbers to real before performing operations on them, converting the result back to an integer only if it was to be assigned to a (16-bit signed) integer variable.
  • So-called shape table
    Shape table

    Shape tables were a powerful yet little-used feature of Applesoft BASIC allowing for simple graphic manipulation on Apple II series computers, using the "hi-res" graphics mode....
    s are a slow alternative to bitmap
    Bitmap

    In computer graphics, a bitmap or pixmap is a type of computer storage organization or used to store digital images. The term bitmap comes from the computer programming terminology, meaning just a map of bits, a spatially mapped bit array....
    s. No provision existed for mixing text and graphics, except for the limited "Hardware split screen" of the Apple II (four lines of text at the bottom of the screen). Many graphics programs thus contained their own bitmap character generator routines. No provision was added in the 128 KB Apple IIe
    Apple IIe

    The Apple IIe is the third model in the Apple II series of personal computers produced by Apple Computer. The e in the name stands for enhanced, referring to the fact that several popular features were now built-in that were only available as upgrades and add-ons in earlier models....
     and Apple IIc
    Apple IIc

    The Apple IIc, the fourth model in the Apple II series of personal computers, was Apple Computer?s first endeavor to produce a portable computer....
     models' BASIC interpreters for the new machines' extra memory and double-resolution graphics, or for the Apple IIGS's
    Apple IIGS

    The Apple , the fifth model inception of the Apple II, was the most powerful member of the Apple II series of microcomputer made by Apple Inc.. At the time of its release, it was capable of advanced color graphics and then-state-of-the-art sound synthesis that surpassed those of most other computers, including the black and white Macintosh ....
     16-color mode. (Beagle Bros
    Beagle Bros

    Beagle Bros was a software company that specialized in creating personal computing products that were both useful and wiktionary: whimsical. Their primary focus was on the Apple II family of computers....
     offered machine-language workarounds for these problems.)
  • The program was stored as a linked list
    Linked list

    In computer science, a linked list is one of the fundamental data structures, and can be used to implement other data structures. It consists of a sequence of node s, each containing arbitrary data Field s and one or two reference s pointing to the next and/or previous nodes....
     of lines; a GOTO
    GOTO

    GOTO is a statement found in many computer programming languages. It is a combination of the English words wiktionary:go and wiktionary:to....
    took O(n) (linear) time
    Computational complexity theory

    Computational complexity theory, as a branch of the theory of computation in computer science, investigates the problems related to the Computational resource required for the execution of algorithms , and the inherent difficulty in providing efficient algorithms for specific computational problems....
    , and although Applesoft programs were not very long compared to today's software, on a 1 MHz 6502 this could be a significant bottleneck.
  • No sound support aside from a PEEK command that could be used to click the speaker (one could also PRINT an ASCII bell character to sound the system alert beep). The language was not fast enough to produce more than a baritone buzz from repeated clicks anyway. However, music spanning several octaves could be played by repeated calls to a machine-language tone generator.


Here's Hello World in Applesoft BASIC:

10 TEXT:HOME 20 ?"HELLO WORLD"

Multiple commands could be included on the same line of code if separated by a colon (:). The ? can be used in Applesoft BASIC as a shortcut for "PRINT", though spelling out the word is not only acceptable but canonical -- Applesoft converted "?" in entered programs to "PRINT", which would appear when a program was listed. So the program above would actually appear in a LIST command as shown below:

10 TEXT : HOME 20 PRINT "HELLO WORLD"

This article includes text from , licensed under GFDL.

Apple Business BASIC

Apple Business BASIC shipped with the Apple /// computer. Donn Denman ported Applesoft BASIC to SOS and reworked it to take advantage of the extended memory of the Apple ///. Following the trend of avoiding absolute addresses, the PEEK and POKE commands were replaced with INVOKE and PERFORM statements that loaded and executed separately-assembled code modules.

Trivia

  • Despite its heritage, Applesoft lacked commands common to non-6502 Microsoft BASIC interpreters, such as INSTR (which searched for a substring in a given string), PRINT USING (which formatted numbers with commas and currency signs according to a format string), and INKEY$ (which checked for a keypress without stopping the program as Applesoft's GET did). It seems likely that memory constraints were at the root of these differences, as the Apple II ROM had only 10 kilobytes available for the interpreter, and the improved hi-res graphics support was clearly a higher priority. Microsoft's CLS command (for clearing the screen) was renamed HOME in Applesoft.


  • There was a well-documented bug in Applesoft BASIC that could actually crash the interpreter if ONERR GOTO was in effect and numerous program errors occurred. Apple provided a short assembly-language routine which could be POKEd into RAM and CALLed to ameliorate the problem to an extent. Later it was discovered by an enterprising hacker that the required code was actually in the Applesoft ROM (though it was never executed) and could be called there instead.


  • Applesoft's garbage collector was notoriously slow (O(n²)). If a program had a large number of string variables, garbage collection, which occurred when the interpreter ran out of memory for a new string allocation, could seemingly lock up the computer for several minutes. Since users could not know when the computer was running low on string memory, these pauses seemed random and inexplicable. Though third parties provided some improvements, Apple did not truly fix the problem until ProDOS
    ProDOS

    ProDOS was the name of two similar operating systems for the Apple II series of personal computers. The original ProDOS, renamed ProDOS 8 in version 1.2, was the last official operating system usable by all Apple II series computers, and was distributed from 1983 to 1993....
    , which included a new garbage collector that did the same job in seconds as part of BASIC.SYSTEM.


  • Applesoft could be extended by two means: the ampersand (&) command and the USR function. These were two functions that called machine-language functions stored in memory. Routines that needed to be as fast or required direct access to arbitrary functions or data in memory could thus be called from a higher-level interpreted BASIC program. Additionally, these lower-level functions could read the data immediately following the "&" or "USR" command, allowing a BASIC program to pass parameters to the functions.


  • Applesoft, like Integer BASIC before it, did not come with any built-in commands for dealing with files or disks. The Apple II disk operating system, known simply as DOS, thus intercepted all input typed at the BASIC command prompt to determine whether it was a DOS command. Similarly, all output was scrutinized for a Control-D character (ASCII 4), which BASIC programs would send before seemingly PRINTing a disk command to get DOS's attention (the disk commands would not really get PRINTed but were intercepted by DOS and prevented from making it to the screen output). ProDOS followed this lead, although the BASIC command interpreter was placed in a separate program called BASIC.SYSTEM and the hook worked in a different manner.


  • Neither Apple nor Microsoft ever made source code for Applesoft BASIC available. However, Glen Bredon included a program with his Merlin assembler that would generate a commented copy of the disassembled machine language sources for the Applesoft interpreter. To avoid violating copyright, the source disassembler was encrypted using the compiled Applesoft program code, which was stored on the computer's ROMs. Thus, a person needed to have a functioning ROM copy of Applesoft in order to use the disassembler to see the source code.


  • Both Integer BASIC and Applesoft used the technique of tokenizing to reduce the memory requirements of programs and to speed their interpretation. As code was entered, BASIC keywords would be converted to single-byte tokens; the process was reversed when the program was listed. Integer BASIC used characters with codes above 127 for normal text and codes below 128 for tokens; Applesoft used exactly the reverse. Unlike Integer BASIC, Applesoft did not tokenize literal numbers appearing in the code but stored them digit by digit.


  • Due to Applesoft BASIC's slow performance, BASIC compilers were much sought-after tools for BASIC programmers. The first, Microsoft's The AppleSoft Compiler (TASC), was actually written in Applesoft and then used to compile itself. A later product, the Einstein Compiler, was somewhat more sophisticated and offered better performance both in compilation and in execution. The ultimate BASIC compiler was the Beagle Compiler, written by Alan Bird and published by Beagle Bros
    Beagle Bros

    Beagle Bros was a software company that specialized in creating personal computing products that were both useful and wiktionary: whimsical. Their primary focus was on the Apple II family of computers....
    ; it integrated closely with ProDOS (the current Apple II OS at the time of its release), compiled programs in seconds rather than minutes, and achieved superior code execution performance by optimizing integer math and pre-computing addresses of GOTO targets, among other tricks. Unlike previous compilers, the Beagle Compiler did not truly compile BASIC programs to machine code, but rather converted them to a highly optimized bytecode
    Bytecode

    Bytecode is a term which has been used to denote various forms of instruction sets designed for efficient execution by a software Interpreter as well as being suitable for further compilation into machine language....
     that was interpreted by a runtime module, much like the UCSD p-System.


See also

  • Chinese BASIC
    Chinese BASIC

    Chinese BASIC is the name given to several Chinese language-localized versions of the BASIC programming language in the early 1980s....
    : A Chinese-localized version of Applesoft BASIC.


External links