Stuffing Macs Into FPGAs

A few years ago, [Steve] of Big Mess ‘O Wires fame stuffed one of the first Macintosh computers into an FPGA. While the project worked and was able to run System 6 on a virtual CPU, there were a few problems: it wasn’t exactly stable, and there was no support for a keyboard, sound, SCSI, or serial ports.

Now, there’s a new tiny FPGA board around, and this one is perfectly designed to fit the original Macintosh on it. It’s much more stable, and there is a floppy disk emulator on the horizon, just so you won’t have to deal with all those 400k 3.5″ disks anymore.

[Steve]’s brand new Mac Plus is based on the MiST board, an FPGA board that was originally designed to emulate the first Amigas and the Atari SE on an FPGA and a separate ARM CPU. There’s already been a lot of classic computers ported to the MiST, and the classic all-in-one Macs are the last project that’s left.

In the video below, you can see the MiST board running the classic System 6 at SVGA resolution. That means MacPaint and Shufflepuck in one compact board using modern hardware.

23 thoughts on “Stuffing Macs Into FPGAs

  1. Well, while we’re emulating, how about an Arduino emulating an FPGA that’s emulating a Mac Plus? It would be interesting to see how many seconds per cycle you could achieve with it. Plus, it’s Arduino, so of course it must be good.

    1. This is not emulation. FPGA synthesise so this the real thing made with different hardware technology and not some program running to emulate hardware. The program that ‘runs’ on FPGA is the exact byte code that ran on the original and it runs directly on the hardware and not interpreted by some other code.

    1. I suspect something like this could work on many FPGAs, if they are “big enough” (and the ARM in the Zynq is likely not required – but might be handy). Looks like the MiST board uses an Altera Cyclone III-25 (which is a nice size, but not especially large). The Zynq Z7010 FPGA fabric is somewhat small, but this design might fit (and probably no problems on the larger Z7020). FPGA code tends to be fairly portable to different parts in my experience (other than a few “vendor bits” you swap out).

    2. A Zynq is SoC because it has a CPU as well as FPGA. The CPU is different to what is needed here so the inbuilt CPU serves no purpose to this project making it a poor choice – in my opinion.

      1. The CPU is handy for IO translation, making an SD card look like a floppy and/or hard drive for example, or for configuration changes via a pop-up menu that is invisible to the system being simulated.

  2. No no, FPGAs are NOT what you want for speed. You want your emulator programmed in Java, running on a JVM programmed in JAVA, running on a JVM programmed in JAVA…

    More recursion==more speed!

    Java is faster than C, and even faster than some old slow FPGA.

    1. LOL, when I get repetitive programming tasks turn on output buffering write/print/echo the assembled code as strings to the buffer from within loops and the execute/eval the output buffer.

    2. Running C on a *s/w emulation* of a processor can be +- as fast as running it directly on the *same* processor – provided you use the same techniques in HotSpot JVMs. Google for the HP Dynamo compiler to see how and why.

    1. Probably, however it isn’t an emulation. It’s a reimplementation… probably no FPU emulated here but I doubt the Plus ever had an FPU maybe as an expensive expansion…. there are some very fast 60Mhz+ 68k implementations that are proprietary.. at some point someone with enough interest will write an open source superscalar 68k implementation which should allow running some slightly more modern software on the FPGA based machines. For instance SSL is very impractical currently on 68k …. somewhat doable on the higher end ones like the SE30.

  3. Has anyone done an FPGA implementation of the Infocom Z-machine virtual machine for text adventures?

    (I’m not sure if there’d be any point to it, and it might be a silly idea.)

  4. I worked at the last Apple shop in Rockford Il. We never saw a single 6.0.5 (os) Mac with a software problem (outside INIT32). Thanks for the “retro” video.

    (BTW: 6.0.5 was the cesium standard, 6.0.7/6.0.8……Aples version of DOS….)

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.