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:
  1. 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.
  2. A background debugger, like in some software emulators.
  3. 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