Apple IIe BASIC
Applesoft BASIC as it shipped in the ROM of the Apple IIe: Microsoft's floating-point 6502 BASIC, adapted by Apple, running on the 1983 machine that brought lowercase, 80-column text and arrow-key editing to the Apple II line.
Created by Microsoft (Marc McDonald, Ric Weiland) and Apple Computer (Applesoft II adaptation; IIe firmware by Rich Auricchio)
Apple IIe BASIC is the BASIC built into the Apple IIe, the third and longest-produced model of the Apple II line. It is not a separate language but Applesoft BASIC, the floating-point Microsoft BASIC that Apple had licensed in 1977 and put into ROM on the Apple II Plus in 1979, running on the machine that replaced the II Plus in January 1983. What made the IIe version different was the machine around it: a full uppercase-and-lowercase keyboard, arrow keys, an optional 80-column display and 64K of memory as standard. The interpreter was not always ready for these changes. Apple’s own 1982 manual admitted that “Applesoft doesn’t know about the 80-column display,” and the fixes had to wait for the Enhanced IIe ROMs of March 1985.
The IIe stayed in production for almost eleven years, until November 1993, and schools were still heavily invested in Apple II computers and software in the early 1990s. For a long stretch of the Apple II’s history, this was the version of Applesoft that people sat down in front of.
A Note on the Year
The metadata year of 1983 refers to this platform-specific version, not to the language. Applesoft itself dates to 1977, and Applesoft II, the version the IIe runs, was released in 1978. What is new in 1983 is the Apple IIe and the ROM firmware around its BASIC. Apple’s IIe edition of the reference manual carries a 1982 copyright date because it was written before the computer went on sale in January 1983.
History & Origins
From Microsoft BASIC to Applesoft
Steve Wozniak’s Integer BASIC, the original Apple II’s ROM language, had no floating-point numbers, and customers complained. Wozniak was busy with the Disk II and DOS, so Apple turned to Microsoft, which already had a BASIC for the 6502. Microsoft’s Marc McDonald and Ric Weiland are credited as its authors, and Apple staff, including Randy Wigginton, adapted it. Andy Hertzfeld writes that Apple’s license from Microsoft ran for eight years.
The first Applesoft came on cassette in 1977. Applesoft II followed in 1978 with high-resolution graphics commands, and it became the ROM BASIC of the Apple II Plus in 1979. By the time the IIe was designed, Applesoft was the Apple II’s standard language. Integer BASIC had become a file loaded from disk, selected with the DOS command INT, while FP (for “floating point”) switched back to Applesoft.
The Apple IIe firmware
The Apple IIe project, code-named “Diana” and later “Super II,” set out to cut the Apple II’s chip count and add features the market wanted, especially lowercase and 80-column text. Compatibility with existing Apple II software shaped the design, and the Applesoft language the IIe manual documents is the same Applesoft II statement set; most of the new work went into the firmware around it.
According to Apple II History, design manager Peter Quinn “had to beg” for someone to revise the Monitor and Applesoft firmware, and eventually got Rich Auricchio, an Apple II hacker from the early days. Quinn said of him: “He added in all the 80-column and Escape-key stuff.” Bryan Stearns worked on the new Monitor. The IIe added a bank-switched ROM area, largely used to make the 80-column display in the auxiliary slot work, and Auricchio extended the screen-editing escape routines so that all four arrow keys could move the cursor.
Documentation
Apple rewrote the Applesoft manual for the new machine. The Applesoft BASIC Programmer’s Reference Manual, marked “For //e Only,” came in two volumes, was copyrighted in 1982 and was written for Apple by Scot Kamins of Technology Translated in San Francisco. It assumes readers already know the Apple IIe Owner’s Manual and suggests the Apple IIe Applesoft Tutorial for beginners. Its appendices include a table of differences between the 40- and 80-column displays and a comparison with Integer BASIC.
Programming on the Apple IIe
Keyboard and editing
The IIe’s keyboard changed how people typed programs. Its manual gives a notable piece of advice:
Applesoft understands only uppercase letters. Most programmers therefore keep the CAPS LOCK key down while typing programs.
On an original (unenhanced) IIe, typing print in lowercase gave a syntax error. Lowercase was allowed only inside string constants such as "George Bernard Shaw".
Editing was done on screen:
| Key | Effect in Applesoft on the IIe |
|---|---|
| LEFT-ARROW | Backspace: removes the last typed character from the line being entered |
| RIGHT-ARROW | “Recopies” the character under the cursor, as if it had been typed |
| DOWN-ARROW | Moves the cursor down a line without erasing or copying |
| UP-ARROW | No effect in Applesoft (outside escape mode) |
| ESC, then I/J/K/M or arrows | Pure cursor moves that stay in escape mode until SPACE is pressed |
| ESC, then E / F / @ | Clears to end of line / to end of text window / the whole window |
| CONTROL-X | Cancels the line being typed |
The usual way to fix a line was to list it, move the cursor onto it in escape mode, and recopy it with RIGHT-ARROW while typing over the mistakes. The OPEN-APPLE and SOLID-APPLE keys were wired like the buttons on game controllers 0 and 1, and Applesoft programs read them with PEEK.
The 80-column problem
Before the 1985 ROMs, the 80-column card and Applesoft did not cooperate well. The 1982 manual warns that a PRINT of exactly 40 characters produces an unintended blank line “even if you have the Apple IIe 80-Column Text Card installed and running in ‘active 80’ mode; Applesoft doesn’t know about the 80-column display and will still break each output line after 40 characters.” Its Appendix K lists commands that behaved differently, or were not available for the second 40 columns, when the card was active.
Numbers, strings and variables
Applesoft on the IIe offers three kinds of variables:
| Type | Suffix | Range per the IIe manual |
|---|---|---|
| Real | none | About ±9.99999999E+37, stored in 32 bits of precision, “about 9 digits” |
| Integer | % | -32767 to 32767 |
| String | $ | 0 to 255 characters |
A variable name can be up to 239 characters long, but only the first two characters count. The manual warns that SUM and SUNSTROKE are the same variable. Names also must not contain reserved words, so a name like SCORE fails because it contains OR. Strings are whole values rather than character arrays, and they are handled with LEFT$, MID$, RIGHT$, LEN, STR$, VAL, CHR$ and ASC. Arrays can have more than one dimension and are set to zero or the empty string by RUN or CLEAR.
What the language included
| Area | Statements and functions |
|---|---|
| Program control | GOTO, GOSUB/RETURN, ON...GOTO, ON...GOSUB, IF...THEN, FOR...NEXT, POP, STOP, END |
| Data | DIM, LET, READ/DATA/RESTORE, DEF FN (one-line functions) |
| Input and output | INPUT, GET, PRINT, HOME, HTAB, VTAB, TAB(, SPC(, INVERSE, FLASH, NORMAL, SPEED=, PR#, IN# |
| Graphics | Low-res GR, COLOR=, PLOT, HLIN, VLIN, SCRN(; high-res HGR, HGR2, HCOLOR=, HPLOT, DRAW, XDRAW, ROT=, SCALE=, SHLOAD |
| Errors and debugging | ONERR GOTO, RESUME, TRACE, NOTRACE |
| Machine access | PEEK, POKE, CALL, USR, &, WAIT, HIMEM:, LOMEM: |
| Cassette | LOAD, SAVE, STORE, RECALL, SHLOAD |
Without a disk operating system, SAVE and LOAD use the cassette port (the IIe manual covers this in Appendix M, “If You Have a Cassette Recorder”). On disk systems, DOS 3.3, or from 1984 ProDOS’s BASIC.SYSTEM, makes SAVE and LOAD work with named disk files and lets programs issue disk commands by printing a CONTROL-D followed by the command. Double hi-res graphics, possible on IIe machines with 128K and a suitable motherboard, have no Applesoft commands.
A short IIe-era program, in the uppercase that the original ROM required:
| |
CHR$(7) is the bell character; the IIe manual says it sends a 1,000 Hz tone to the speaker for a tenth of a second.
Error handling
ONERR GOTO replaces the normal error stop with a routine in the program, which can read the error code from memory location 222 and continue with RESUME. The IIe manual documents a trap here: if the handler does not end with RESUME, the system stack is not reset, which can crash the program.
Evolution
The Enhanced IIe (March 1985)
The only significant change to Apple IIe BASIC came in March 1985 with the Enhanced IIe. Existing owners could buy a four-chip upgrade: a 65C02 processor, two new ROMs holding revised Applesoft and Monitor code, and a character ROM that added MouseText. According to Apple II History, the new ROMs:
- made it possible to enter Applesoft and Monitor commands in lowercase, which were converted to uppercase;
- fixed most known problems with the IIe’s 80-column firmware, including routines that were too slow and disabled interrupts for too long;
- let
GET,HTAB,TAB,SPCand comma tabbing work properly in 80-column mode.
The same history notes that Apple’s engineers deliberately avoided larger changes to Applesoft when they built the closely related Apple IIc ROM, because many BASIC programs depended on undocumented machine-language entry points in the interpreter. That caution explains why Applesoft stayed almost unchanged through the life of the IIe.
Licensing
Hertzfeld writes that Apple’s eight-year Applesoft license with Microsoft was due to expire in September 1985. Apple still depended on the Apple II for most of its revenue and could not easily replace the language without splitting its software base. In his account, Microsoft made renewal conditional on Apple abandoning MacBASIC, and also used the renewal to obtain a perpetual license to the Macintosh user interface, in a deal Hertzfeld says John Sculley executed in November 1985.
Platinum IIe and the end of the line
The Platinum IIe of January 1987 changed the case color and keyboard and included the Extended 80-Column Card, but it had no firmware changes, so its BASIC is the Enhanced IIe version. Apple dropped the IIe from its price lists in November 1993, according to Apple II History. The Apple IIe Card, sold from March 1991 to May 1995, kept the IIe environment running in Macintosh LC-family computers.
Current Relevance
Apple IIe BASIC is historical. Apple no longer supports it and there is no official container image. The interpreter still runs in emulators of the Apple IIe, such as AppleWin, which is still being developed (release 1.32.0.0 appeared in May 2026), and in reimplementations such as Joshua Bell’s Applesoft BASIC in JavaScript. The two-volume IIe reference manual and the Applesoft tutorials are preserved as scans at the Internet Archive, and many vintage-computing hobbyists still keep working IIe machines.
Why It Matters
- It was the BASIC of the Apple II’s longest-lived model. The IIe ran from January 1983 to November 1993, longer than any other Apple II, and Applesoft was the language waiting at its
]prompt the whole time. - It shows the cost of compatibility. Apple kept Applesoft almost unchanged so that existing programs would run, even though the interpreter could not handle the IIe’s own 80-column display properly until 1985.
- It shows the weight of a licensed language. Because so much depended on Applesoft, Apple needed Microsoft’s renewal in 1985, and that dependence cost Apple its own MacBASIC.
- It connected hardware and language. The IIe’s arrow keys, escape-mode editing, Apple keys and lowercase keyboard shaped how programs were typed and edited, even though the BASIC underneath was the 1978 Applesoft II.
Timeline
Notable Uses & Legacy
Learning to program
Apple positioned the Apple IIe Applesoft Tutorial as "an excellent guide for beginning programmers", and the IIe Programmer's Reference Manual ends with a chapter that plans and writes a complete menu-driven postage-rates program, printed in full in Appendix N
Ampersand and USR extensions
Applesoft's & statement and USR function jump to machine-language routines, and numerous third-party commercial packages used them to add commands to the language, since Apple itself changed the ROM interpreter very little
Apple IIe Card for Macintosh
Apple's March 1991 compatibility card let Macintosh LC-family computers run Apple II software, including the Applesoft BASIC environment, easing schools' move from Apple IIs to Macs
Modern emulation
Applesoft programs still run today in Apple IIe emulators such as AppleWin (release 1.32.0.0, May 2026), and a reimplementation, Joshua Bell's Applesoft BASIC in JavaScript, runs them in a web browser