The Apple-1 Software Library Beta

Browse all the Apple-1 programs that ever existed. A tribute to history and their hackers.
Run them in any emulator, or instantly on the (real) machine.

version

Apple BASIC: Huston

by Steve Wozniak in 1977

An interpreter that allows to run programs written in BASIC.

apple tapemachine codewithin 4k

Also referred to as Integer BASIC. Sold by Apple Computer on cassette tape for $5, order code A1T001X.

History

At the time, BASIC was a very popular language that enabled people to do more stuff with their mini- and microcomputers more easily. In order for the Apple-1 to succeed it needed a BASIC.

Apple BASIC was written by Steve Wozniak himself and later on improved further by other people. It did not support floating point arithmetic, so no decimals could be used. It was open source and was shared amoung fellow hobbyists.

Instructions

The Preliminary Apple BASIC Users Manual explains how BASIC is loaded from cassette tape:

Hit the CLEAR SCREEN button which will clear the screen and display only the cursor (a flashing @ sign) in the upper left corner of the screen.

Hit the RESET button which will cause the computer to print a backslash (\) and move the cursor down a line.

Place the BASIC cassette into the recorder, rewinding it if necessary.

  1. Type C100R RETURN
  2. Type E000.EFFFR (don't hit RETURN yet!)
  3. Start the tape
  4. Hit RETURN
  5. When BASIC is loaded (about 30 seconds) the computer will print a backslash (\).

To enter BASIC type E000R RETURN. The computer will print a few characters, then, on the next line, print the prompt character >. This prompt character (>) is used throughout BASIC to signify that the BASIC is ready for additional commands or statements.

To exit BASIC hit the RESET button. This will return control to the monitor. To re-enter BASIC from the monitor without losing the previous program, enter BASIC at E2B3 RETURN, instead of EOOO RETURN. This is extremely useful when you have unintentionally hit the RESET button while in BASIC. Normally, you should enter BASIC at E000 RETURN, which clears any previous programs.

The various BASIC statements and control structures are explained further by the manual.

Versions

Several versions are known to exist. Wendell Sander did some research into this:

There were many versions of Apple 1 Basic provided by Apple in the early days. There was just Woz and SJ and Woz was writing Basic while the computers were being sold. When someone got a copy from SJ it was just the last stable version from Woz.

I bought my Apple 1 at a Byte Shop in mid 1976 and I got 4 different versions of Basic over the next 6 months or so. I labeled them version A through D. Version A did not even have an INPUT statement so about all you could do is print HELLO WORLD. Version B added the INPUT statement, Version C added Arrays and Version D added PEEK and POKE. I have copies of C and D but have not been able to find any earlier. The Huston brothers got a copy of Apple 1 Basic in late 1977 or early 1978 when they were employees at Apple that includes a checksum program and I presume that was the last version. By late 1976 and early 1977 Woz was focused on the Apple II.

Based on the above, together with a blog article and another topic, the following comparison can be made;

Version Related with Comments
A source lost
B source lost, INPUT statement was added
C DIM statement, arrays, were added
Pagetable Achim Breidenbach see pagetable blog article
D
Super BASIC
Winston Gayler
Eric Smith
Larry Nelson
PEEK and POKE statement were added
HIMEM and LOMEM patch
see tips from Larry Nelson
Huston Huston Brothers Presumably the last version
Included a checksum program

Maybe Woz has the early versions still lying around, who knows?

Example program

The following program can be entered while running BASIC. It displays the fibonacci numbers and can be started with the RUN command. Use LIST to check if the program is entered correctly.

05 REM Fibonacci numbers 
10 LET M = 5000
20 LET X = 1 : LET Y = 1
30 IF (X>M) THEN GOTO 100
40 PRINT X
50 X = X + Y
60 IF (Y>M) THEN GOTO 100
70 PRINT Y
80 Y = X + Y
90 GOTO 30
100 END

References

Screenshot of Apple BASIC, version Huston

Historical reference : hardware

In 1976, the Apple-1 Computer was advertised for $666.66 and came with 4K of on-board memory. For a $120 extra, this doubled to 8K of RAM. The provided Operation Manual included the circuit diagram and assembly code of the monitor program.

The Apple-1 Computer main board
The Apple-1 Computer main board.

The Cassette Interface (or ACI) was used to load and save programs from cassette tape. The ACI Manual showed how to install it (the main board had to be jumpered correctly) and explained how it had to be used. Priced at $75, it included a cassette of Apple BASIC.

The Apple-1 Cassette Interface or ACI
The Apple-1 Cassette Interface or ACI.
Cassette with Apple BASIC
Cassette with Apple BASIC.

Software

Its BASIC was written by Woz himself. It did not support floating point arithmetic, but was tiny enough to fit in 4K of memory. The software itself was free. The Preliminary Apple BASIC Users Manual explained how to write your own games and programs with it.

Cassette tapes could be bought as an original accessory to your new Apple-1. A total of nine programs were available and listed $5 each. Pick one below and go back in time.

At the time, people were also inspired by publications like 101 BASIC Computer Games. They spent their evenings and nights to key-in the games, but soon were disappointed to discover that some of these did not work at all because of the missing floating points... Arghh.

Dive deeper? Read more here and here.

How to emulate?

It is easy to run the software with one of these emulators:

View a comparison of emulators here.

...and run a program

First, start the emulator of choice and have it run Wozmon (or BASIC), then use the Wozmon button to copy-paste the program code into the emulator.

For example: open Apple 1js in another browser tab. Hit CLS to clear the screen and RESET to enter Wozmon. Then paste the copied Wozmon code from this website.

In-website transfer to an Apple-1 Available soon

This website can connect directly (and locally) to the Keyboard Serial Terminal from 8BitFlux.com. It uses the Web Serial API for this and is supported by Chrome or Edge browsers. The Wozmon code of any program can be transferred quickly.

The Keyboard Serial Terminal connected to an Apple-1
The Keyboard Serial Terminal connected to an Apple-1.

Use the Serial button to transfer the current program to the Apple-1. For example, BASIC takes around 20 seconds to transfer at a speed of 57.6 kbps. The board is compatible with the higher-speed TurboType™ format (with CRC check).

After the transfer of the game or program, switch over to the normal Apple-1 keyboard (by pressing a button) and enjoy it. This makes also a great kit for museums and public events. Kits available soon »

Further exploration


Credits

This library is an initiative of 8BitFlux.com. It can be put to full use with a Keyboard Serial Terminal adapter board, which let you run software instantly on a (real) Apple-1.

Many thanks to Uncle Bernie for his support and provision of his TurboType™ algorithm, which is part of his Apple-1 Toolchain.

Last but not least, all this was not possible by all the authors of Apple-1 software and emulators. The hobby computer enthusiasts of the past, but also people of the present, who keep this hobby so alive. Thank you all.

Disclaimer

This website is not associated with Apple Inc. in any way.

It tries to be a tribute to (their) history. It wants to list only software that is already considered to be in the public domain, or its license permits further publication. The (online) sources of the program and other references are listed when known.

Mistakes happen, as this website is not generated by any AI, please report any nonconformities.

Like it?

Buy me a ☕ coffee.

Check out my products, or just spread the word! Incorrect or missing content can be reported here. Thanks!

No trackers and zero cookies 🍪

Made behind an 🍎 in The Netherlands.