The AppleSoft BASIC Wikipedia page has quite a bit of info on this:
Not really a feature, but the RAM footprint changed between the 1 & 2.
- AppleSoft I - 8.5 kb
- AppleSoft II - 10 kb
AppleSoft I had these features over the "Integer BASIC" (which Woz had written):
- Atomic strings: A string is no longer an array of characters (as in Integer BASIC and C); it is instead a garbage-collected object (as in
Scheme and Java). - This allows for string arrays;
DIM A$(10)
resulted in a vector of eleven string variables numbered 0–10.
- Multidimensional arrays (numbers or strings)
- Single-precision floating point 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
DATA
statements, with READ
and RESTORE
commands, for representing numerical and string values in quantity
CHR$
, STR$
, and VAL
functions for converting between string and numeric types (both languages did have the ASC
function)
- User-defined functions: 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
Additionally, AppleSoft II had these feature improvements over AppleSoft I:
- All commands supporting Apple's "high resolution" graphics (9 total)
- Error-trapping with
ONERR...GOTO
and RESUME
- Machine-routine shorthand call
&
- Screen-clearing
HOME
(a call to a system ROM routine)
- Text-output control
NORMAL
, INVERSE
, FLASH
and SPEED=
- The print-space function
SPC()
is listed among reserved words in the manual, but - is not otherwise documented (the TAB()
print-function is documented)
- Cassette tape storage of numerical arrays:
STORE
and RECALL
- Device response:
WAIT
Apple III Microsoft BASIC added:
INPUT$()
function to replace Applesoft's GET
command.
LINE INPUT
statement to input an entire line of text, regardless of punctuation, into a single string variable.
LPRINT
and LPRINT USING
statements to automatically direct output to paper.
LSET
and RSET
statements to left- or right-justify a string expression within a given string variable's character length.
OCT$()
function for output, and &
- or &O
-formatted expressions, for manipulating octal notation.
SPACE$()
function for generating blank spaces outside of a PRINT
statement, and STRING$()
function to do likewise with any
character.
WHILE
...WEND
statements, for loop structures built on general Boolean conditions without an index variable.
- Bitwise Boolean (16-bit) operations (
AND
, OR
, NOT
), with additional operators XOR
, EQV
, IMP
.
- Line number specification in the
RESTORE
command.
RESUME
options of NEXT
(to skip to the statement after that which caused the error) or a specified line number (which replaces the
idea of exiting error-handling by GOTO
-line, thus avoiding Applesoft
II's stack error problem).
- Multiple parameters in user-defined (
DEF FN
) functions.
- A return to the old Applesoft One concept of having multiple
USR()
functions at different addresses, by establishing ten
different USR
functions, numbered USR0
to USR9
, with separate
DEF
USRx
statements to define the address of each. The argument
passed to a USRx
function can be of any specific type, including
string. The returned value can also be of any type, by default the
same type as the argument passed.
Apple Business BASIC had big changes around direct memory access, and even removed PEEK
and POKE
from the language. Their provided functionality was replaced with functions like:
BUTTON()
function to read game-controller buttons.
WINDOW
statement to define the active window of the text screen by its coordinates.
- Use of the
KBD
, HPOS
, and VPOS
system variables.