Skip to content
Apple-1 emulator
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
asm
roms
src
sys
.gitignore
Cargo.lock
Cargo.toml
Makefile
README.md
apple1-30.gif

README.md

Apple1 emulator

The CPU emulator is in the separate repository:

drawing

How to use

Run:

cargo run

The command above starts the Apple-1 emulator with Woz Monitor at the address 0xFF00. You should see the screen and the command line prompt:

\
<cursor>

With optional flag -p you can load an additional program to the memory:

cargo run -- -p asm/apple1hello.asm

It will be loaded to the memory with starting address 0x7000. To run it using Woz Monitor type 7000R and press enter.

You should see this:

^?\
7000R

7000: A9
HELLO WORLD!

█

To see the hex content of the program: 7000.<END ADDR>, for example: 7000.700F:

7000.700F

7000: A9 8D 20 EF FF A9 C8 20
7008: EF FF A9 C5 20 EF FF A9

Basic

You can type E000R to start basic (run program at E000).

Simple BASIC program to try:

10 FOR I = 1 TO 5
20 PRINT "HELLO, WORLD!"
30 NEXT I
40 END

RUN

Debug

You can disable the screen (-s) and enable debug logging:

RUST_LOG=debug cargo run -- -s -p asm/apple1hello.asm

Apple 1 Basic

There are two different ROMs, one of them is from Replica1 (sys/replica1.bin) and another one, roms/apple1basic.bin. Seems like it has 0xD0F2 instead of 0xD012. Both seems to be working well, though I did not test everything.

You can inspect them if you load them to memory and print hex data at location E3D5.E3DF with Woz Monitor.

note: http://www.brielcomputers.com/phpBB3/viewtopic.php?f=10&t=404
discussion about the same problem

apple1basic.bin:

E3D5.E3DF

E3D5: 2C F2 D0
...

Replica1 basic content:

E3D5.E3DF

E3D5: 2C 12 D0
...

Start Basic

cargo run

and then type E000R.

Resources

You can’t perform that action at this time.