Skip to main content
Applesoft ONE did NOT support hi-res graphics or error-trapping
Source Link
  • 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
  • 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 Applesoft I manual, but - is not otherwise documented (the TAB() print print-function isis documented in it)
  • Cassette tape storage of numerical arrays: STORE and RECALL
  • Device response: WAIT
  • 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
  • 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
  • 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
  • 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
  • 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 Applesoft I manual, but is not otherwise documented (the TAB() print-function is documented in it)
  • Cassette tape storage of numerical arrays: STORE and RECALL
  • Device response: WAIT
Source Link
Aaron
  • 2.4k
  • 2
  • 17
  • 26

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.