Sim6502 is a rudimentary Apple I emulator for 68K and PPC Macs. The
[Apple I][1] was originally built by Steve Wozniak in 1975 and was the
machine that launched Apple Computers, Inc. It was the forerunner to
the much more widely produced Apple II.
This emulator is probably more a curiosity than a serious way to
experience the Apple I. The behavior and appearance of the terminal is
a recognizable approximation of an actual unit but overall this looks
like a somewhat low accuracy emulator. It's still interesting and
worth preserving for its historical context but if you are just
looking to experience the Apple 1 itself then a more recent emulator
is a better choice. As of this writing the best available is probably
the JavaScript-based [Apple 1js][2].
The original "monitor" ROM which provides the Apple I's basic IO
capabilities (the "\" prompt) is bundled in the archive along with a
small test program from the original Apple I manual. Both of these run
okay (the monitor is started automatically by the emulator) but one or
more bugs in the emulation of the CPU make running other common titles
difficult or impossible. The cassette interface (ACI) card and ROM are
not emulated but blocks of RAM can be read in and out files from the
File menu.
The BASIC interpreter is also missing and when loaded from an
available copy it fails to operate properly. The BASIC prompt (">")
appears and accepts input but every command is met with an incorrect
and usually unrelated error message. This is the result of certain
6502 CPU instructions behaving incorrectly in this emulator.
Although the monitor operates correctly it has trouble executing code
located outside of the "zero page" of memory. This is likely due to
the emulator not correctly implementing the 6502 indirect-jump
instruction.
The following "hello" program can be entered into memory at address
$0300 using the monitor by typing the following:
`0300: A2 00 BD 13 03 C9 00 F0 07 20 EF FF E8 4C 02 03 4C 1F FF 8D 48
45 4C 4C 4F 20 57 4F 52 4C 44 A1 00`
It should then be possible to run the program by typing "300R" to
execute the code starting at $0300 but this crashes and the emulated
CPU just restarts again presenting the monitor prompt ("\").
Indirectly jumping to addresses above the lowest page of memory don't
seem to work but this can be worked around by putting code in the
lowest page that will jump to the program and then indirectly jumping
to that low address instead. Type the following to enter and execute a
direct jump to $0300 at $0000 and execute it:
`0000: 4C 00 03 R`
Doing this causes the program entered at $0300 to execute but this is
only necessary because the emulator is broken. On a real Apple 1 or
any correctly functioning emulator it would be possible to jump to the
code at $0300 using the monitor without the stub at $0000.
This copy is version 0.1d and appears to be the last (and only?)
release. It seems to run on System 7 and later. The original point of
origin is not clear but as of this writing identical copies are all
available for download from the following URLs:
<
https://web.archive.org/web/20000826224615/http://www.emulation.net/apple1/>
<
http://apple1.chez.com/Apple1project/Emulation/Emulation.htm>
<
https://www.zophar.net/macintosh/apple1/sim6502.html>
Some other Apple I resources:
<
https://www.applefritter.com/apple1>
<
https://www.sbprojects.net/projects/apple1/wozmon.php>
<
http://www.ferretronix.com/march/apple1.html>
MD5: 070FC9BBE4356C794BE37F8771B8ABB0 sim6502.sit.hqx
SHA1: 8AD5813DFE5F2A1DC41888A2D6C805CB63EFCA22 sim6502.sit.hqx
Compatibility
Architecture: 68k PPC
[1]:
https://en.wikipedia.org/wiki/Apple_I
[2]:
https://www.scullinsteel.com/apple1/