FPGApple
by Alex Freed
Screenshots Inside look Another project "Official blessing"
Pseudo-disk
New Altera version
Bus card
Applicard
More on CarteBlanche
A 6809 coprocessor
Once upon a time I had made an Apple ][ clone. Just because I couldn't
buy a real one.
Maybe I've learned a thing or two in the process, so now I can afford
all kinds of computers,
but then everyone can - they are a dime a dozen these days.
For the old time's sake I have recently made one more Apple clone, this
time without a lot of wiring. It fits into a single FPGA, including the
CPU. I did not write the 6502 CPU core. One was available from FPGA 64. I wrote the rest of
the system in Verilog - video, keyboard interface, floppy disk, ProDOS
hard disk etc.
I have also added a USB interface that allows me to download a .nib
image of a floppy into the board memory to be used to boot all kinds of
Apple software.
The heart of the design is a board sold by Digilent. It has a Xilinx
Spartan3 FPGA and 1 MB of static RAM - 256x32 bit wide. 64K of this
memory is used as the base 48K of Apple memory plus a 16K "Language
Card". Would be rather easy to implement 128K RAM a la Apple 2E, but I
just did not bother. All the nostalgic stuff runs fine in 64K - I have
recreated the actual system that I used to play with some 20 years ago.
One 256K bank serves to store a nibblized image of a floppy, as used in
many software simulators.
A program accessing the standard Apple disk register (in slot 6) will
see the next byte from this image. Works fine for all the images I've
tried so far - DOS 3.3, ProDOS and self-booting games.
Extra hardware needed is the USB interface board, also from Digilent,
that plugs directly into the main board. It is needed to load disk
images. Also provides a simple way to read/write arbitrary memory in
the system. A couple of transistors and a small speaker needed for the
sound.
I have also used a Compact Flash card with an IDE adapter to hold an
image of a hard disk, up to 32 MB - the ProDOS limit for a single
volume. Of course I could emulate several volumes, but so far didn't
need to.
The total cost of the hardware is about $200, using the available
boards. The raw parts cost is probably around $20, but manufacturing
will be expensive if only a few units are to be made.
If only the main $100 FPGA board is used with nothing extra, you still
get a basic system that will give you the Applesoft BASIC prompt when
powered up. The internal memory (BRAM) in the FPGA is used to hold the
ROM images as it is loaded with code when the system is powered up.
Would be simple enough to add SuperSerial card emulation. The serial
port could also be used to upload disk images, but I have USB 2.0 which
is WAY faster!
A few additional things that could be done:
- Interface to an actual floppy from an old Apple. Very easy to do,
but 3.3 to 5 volt logic convertion is needed. A single chip.
- A background debugger, like in some software emulators.
- A Z80 SoftCard. I have the schematics now, thanks to Gerwin Bleich
Other cool FPGA stuff
In fact this is the second retro computer replica that runs on this
board. A friend of mine is so fond of a rather obscure Russian first
(and only) home computer - BK0010 - that he wrote an
open source emulator for Linux. This inspired me to make the first (for
me) FPGA-based replica running on the same board. Coming soon: both
running on the SAME board concurrently, each one in a separate window
on the VGA screen.
Can I have it?
At this point this is not open source because if
anyone sees the Verilog code in its current state, I'll lose all my
business and fellow nerds will never talk to me again.
If you have a Digilent board and want to load my bitstream, drop me a
line.
to contact me add "alex@" to this page's domain
The board with the USB and CF interfaces
