The CPU emulator is in the separate repository:
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
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
You can disable the screen (-s
) and enable debug logging:
RUST_LOG=debug cargo run --features binary -- -s -p asm/apple1hello.asm
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
...
make run
and then type E000R
.