----------------------------------------
Apple I Emulator, Release 1
Copyright 1999, Peter Rittwage
All Rights Reserved
----------------------------------------
Original Apple I Hardware and Monitor
Copyright 1975 (6?) Steve Wozniak
----------------------------------------

Well, how far do you want to go back?

Here is a program which emulates the original Apple I hardware,
to the best that I can determine.  The fact is, I've never seen
one powered on.  Everything you see in the emulator is deduced
from the user manual.  I even typed the monitor ROM in by hand
using a hex editor.  The manual is available online at:

   http://www.emulation.net/apple1/manual/apple1manx.html

You will need to download/print this out to do anything with the
emulator, as it contains all the documentation on how to use the
computer, including how to use the monitor and some test programs to
try.

The 6502 core is also my own, which was written back in 1996 when
I was working on "Virtual PCB" (the first Centipede/Millipede emulator).
Warning: Not all the opcodes are implemented, but I doubt you will
want to develop for this machine, as it's very primitive.  There are
only a few unimplemented opcodes, but if I get enough interest it only
takes 5 seconds to add them in. (Except the decimal mode functions, which
I have never taken the time to understand.)

The text display on the Apple I was simply some shift registers, so it
acts much like a typewriter.  I think I have captured the essence
of how the original interface works, but I don't know for sure.
Email me at rittwage@usa.net if it does not act like a real machine.

Also, I don't know if the characters are correct.  I can't tell exactly
how they are generated from the schematics, so it uses the Apple2e
character set.  It seems to work fine with them.



EMULATOR-SPECIFIC KEYS
----------------------
F1   Exit emulator
F2   Force IRQ (Jumps to 0x0000, which is start of user RAM)
F3   Force NMI (This jumps to 0x0F00, which is nothing...
                Maybe Wozniak had something here during development,
                BASIC perhaps?)
F4   Force RESET (Jumps back into monitor, just like power-up)


THINGS TO KEEP IN MIND (FROM THE MANUAL)
----------------------------------------
1) You must "shift" everything up.  Apple I does not recognize lower
   case even though they print.
2) The backspace key is SHIFT-MINUS, just like the real Apple I.
   (This is the "underscore" key.)
3) ESC ends the current line.
4) 0X100-0x1FF is the stack on the 6502.  Don't use it for programs.
5) The original Apple I had 4K of RAM (0x0000-0x1000) and you could
   expand it to 8K (I believe).  The emulator assumes all memory is
   free RAM.  (Including the monitor ROM area)
6) There are a couple of areas that are used as scratch space by the
   monitor.  These are detailed in the manual.


WHY?
----
Well, I thought about actually building one of these from real parts, but
I couldn't find a set of schematics that were legible enough to read.  I
had the 6502 engine sitting around forever, and all the information was in
the original manual, so I figured I'd give it a try.  It had to be easier
to figure out than Centipede without documentation!


TODO
----
1) Implement the clear screen keys
   (It's undocumented, so I'm not sure exactly how it worked. I'll need
    a good set of schematics)
2) Convert/Add the Apple 2 BASIC ROM, just for kicks.
3) Add this as a driver for "MESS".
4) Emulate the Apple 3 hardware, and add that to MESS as well since nobody
   has done it yet.


Peter Rittwage (rittwage@usa.net)
1/24/1999

