Skip to content

alexander-akhmetov/apple1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Apple1 emulator

The CPU emulator is in the separate repository:

drawing

How to use

Run:

make run

# or you can use Docker:
make docker/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 --features binary -- -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).

Hello world:

PRINT "HELLO WORLD!"

Another 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 --features binary -- -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

make run

and then type E000R.

Resources