Console based Apple 1 emulator for Windows and Linux
Go to file
Benjamin Jones 81b74fc5dd
2019-12-24 13:31:57 -07:00
Makefile Making backspace work on linux 2019-12-17 15:39:42 -07:00 Update 2019-12-24 13:31:57 -07:00
cpu.c linux compatibility 2019-09-05 12:17:08 -07:00
cpu.h Adding cassette support and improving timing 2019-03-16 00:29:06 -07:00
emulate.c Making backspace work on linux 2019-12-17 15:39:42 -07:00


Console based Apple 1 emulator for Windows and Linux

To build type


which outputs an exectable named A1Emu.exe

NOTE: WOZMON and WOZACI ROMs are needed to proceed. They are not provided in this repository.

Next go to the working directory and copy a ROM for Integer Basic named "BASIC" (no extension) into that directory. The emulator will copy the first 4KB of that file's contents into address 0xE000.

The emulator runs in a normal console without any GUI, just like the original Apple 1 worked. You are greeted with a \ character. Type the following to start Apple 1 BASIC:


E000: 4C

The cursor should now be blinking after the > character. Type commands like



If you want to load cassette storage into memory, you're going to need to uze Woz'z ACI. To do that, run from Woz's monitor (not BASIC)


to start the cassette interface. Now suppose we wanted to store the contents of memory from address 0xE000 to 0xEFFF. To do that, you would type afterwards


Hit enter after typing the command. Now, within 10 seconds type the | (pipe) character to pause the emulator. The emulator will display the last reads and writes into memory of the previous opcode. Now type

tstart write

which starts the emulated cassette. After waiting a few seconds, you will be greeted with a \ prompt again, meaning you have returned to the monitor. Type | once again, but this time, type the following 2 commands

tstore SOME_FILE

This stores in the same directory as the executable a file named SOME_FILE which can be read from using the cassette interface.

Suppose we wanted to read that file into the same memory addresses we had stored it from. First, we would enter the ACI again using


and then type


but DON'T PRESS ENTER. We need to start the cassette tape playing back again before we finish giving this command to the ACI. Type | to pause the emulator. Then run

tstart read

After entering the resume command, press enter one more time to finish telling the ACI to read to 0xE000. After a few seconds, you should be greeted by \. At this point, press | to pause emulation and type


The contents of addresses 0xE000 to 0xEFFF should now be the same as the contents originally stored onto the file using the ACI.

It functions exactly like the original Apple 1. To learn how to use Apple 1 basic, go here:

Here is a good place to learn more about the Apple 1 computer: