Project Flea86
****** UPDATE: 19/11/2013 ******
Flea86
system boards will no longer be available due to the
non-availability of the AX-2005 used in the project. This
project page now exists purely as a historical record.
Introduction:
I would like to share with you the most complex embedded programming project I've ever undertaken thus far!
Basically, Flea86 is a fully-custom x86 emulator, originally written by me to run a high-speed version of Intel's 8051 microcontroller (specifically Appotech's AX-2005 System-on-chip, which contains an 8051 core). I also designed the PCB artwork (pictured above), around AX-2005 SoC as a hardware platform to run my x86 emulation software on.
I started the Flea86 project back in late 2009, after evaluating several microcontroller devices on behalf of my employer for a commercial project. I was quite impressed, with what Appotech had done with their AX-2005 microcontroller and wondered if I could do something cool with it (i.e. like write an x86 emulator for it :-)
'It seems like a totally crazy idea' I thought - but the possibility to run PC apps at a useful rate under emulation on a souped-up dishwasher controller was too intruiging to resist.. :-)
Going to an 8051-based hardware platform placed several restrictions on the software:
1.) The whole emulator *had* to fit inside 32K of program ROM, since that's all the AX-2005 has..
2.) There's only one (albeit) fast core, yet a full PC motherboard (including the graphics adapter!) has many tasks occurring seemingly at the same time.
3.) Emulating hardware timing of everything from 80x25 color text mode to chipset emulation required highly-optimised assembly routines to be written in areas where speed was critical.
Finally, in January 2012 (after several PCB de-design spins, as well as endless revisions of emulation code), I achieved my goal of making a complete and working PC emulator fit inside 32K of 8-bit microcontroller ROM!
In
September 2012, I developed an ISA-bridgeboard
for Flea86 (Click on left image to zoom). This allows
Flea86 to communicate with up to three ISA-compatible PC cards. Only
port I/O and two IRQ channels are supported with the bridgeboard,
but that is still sufficient for many cards i.e.
Serial/Parallel/Ethernet/Adlib/IDE etc.
With the completion of the ISA Bridgeboard, Flea86 came closer to emulating a real PC compatible than I could have imagined when I started this hobby project back in 2009.. :-) In the end, the ISA bridgeboard was relatively straightforward to get it working, especially when compared to the other issues raised by this project.
With the completion of the ISA Bridgeboard, Flea86 came closer to emulating a real PC compatible than I could have imagined when I started this hobby project back in 2009.. :-) In the end, the ISA bridgeboard was relatively straightforward to get it working, especially when compared to the other issues raised by this project.
Note: This page is only intended as a summary of my Flea86 project and will be expanded upon further in due course. In the meantime, feel free to read the FAQ section below, as well as documentation found in the Project files section.
Frequently Asked Questions:
Do you intend to sell Flea86 as a product? If yes, where can I buy it?
While Flea86 was always intended to be a hobby product, I do sell assembled/tested Flea86 system boards to those who are interested in buying one. I may be reached via the contacts section on this site, or by registering with the support forum and posting any questions you may have there.
One of your introductory images seems to show a fully-enclosed Flea86 model, any plans to sell that?
If Flea86 were to be sold as a retail product of some kind, it probably needed a custom case. Therefore, I built one such prototype case, as well as had 3D CAD files drawn up for it's mass production. Unfortunately, the volumes required to make custom case manufacture 'economically viable' at the time, appeared to exceed the anticipated demand and so the idea was forgotten.
Where can I find more Flea86 information?
You may find Flea86 documentation user manuals etc. in the Project files section found below.
Alternatively, you can also subscribe to our forum and ask specific questions there or send me an email in the Contact page on this site.
What kinds of PC platforms does Flea86 emulate specifically?
Tandy-1000 and IBM PS/2 model 25 (without the 640x480 monochrome VGA mode)
Flea86 detects which system to emulate upon reading the disk signature of the installed SD card upon boot-up.
How x86 compatible is Flea86, as well as the emulation quality?
Appendix B of the Flea86 User Manual covers all the compatibility and emulation issues. You can find the Flea86 User Manual in the Project files section found below.
How long did it take for you to bring Flea86 to it's current level of development?
Roughly a little over two years (part-time).
What on earth made you do this?!
Well, I've always liked the idea of *really* small and cheap x86 computers (you can probably guess that I am partial towards Intel products :-). It's a crazy idea, of course, but the fun factor was too great to resist :-)
What is an 8051 or 8052 microcontroller?
The 8051 and 8052 were both 8-bit microcontrollers that were once originally made by Intel Corporation from 1981 to 2007. 8051 has two 16-bit timers and 128Bytes IRAM, while the 8052 has three timers and 256Bytes of IRAM. Although Intel no longer produces them, dozens of silicon vendors still make (modern) 8051 models. (not to mention soft-core models that can exist inside an FPGA!).
How does Flea86 handle CPU *and* Graphics adapter emulation using only one microcontroller core?!
Flea86 emulation software consists of three parts:
1.) A software kernel with hardcoded two-task manager
2.) Task1: Combined VGA/PS2/PSG/8253/8259 emulation task
3.) Task2: Combined CPU/SD/DRAM/BIOS emulation task
Also, how did you generate those cool EGA/VGA-style graphics as seen in your Youtube Videos?!!
Answer: Not without difficulty! :-)
Basically, I had to get two things right before I had a viable EGA/VGA solution:
1.) Correctly decode the logic states of the VGA CRTC, build logic functions around those states and then hard-code them in 8051 assembly.
2.) Determine the data transfer mechanism/behaviour between the x86 CPU and CRTC, to ensure that the behaviour was correctly emulated.
Can your Flea86 emulator be ported to 8051 variants from other suppliers?
Flea86 can be ported to slower 8052 microcontrollers than the AX-2005, but they may end up missing out on many (or even all) of the video graphics modes as well as slower x86 CPU emulation
Can your Flea86 emulator be ported to other microcontrollers ie. AVR/PIC/ARM etc?
Flea86 is written in a 50/50 mixture of C and 8051-assembly, so porting to other architectures would be very difficult but not impossible.
How did you get the BIOS ROM in there? Who's BIOS did you use for Flea86?!
I wrote a BIOS emulation layer for Flea86 - the BIOS emulation code is practially 100% my own work! :-)
Have you ported any other emulators to your Flea86 hardware?
Once I modified (heavily) a cut-down version of an Apple][+ emulator (that does little more than run Woz's BASIC interpreter) to run natively on Flea86 hardware.
Are there any 'easter eggs' contained within the Flea86 emulator?
Just one :-) Press-hold the 'V' key upon Flea86 boot-up to reveal the names of three people who helped me at various stages of my Flea86 firmware development and testing (i.e. Chuck Guzis, Michael Brutman and Michael Chambers).
Do you plan on making a 386-based version of Flea86?
Unlikely to be done using an 8-bit microcontroller (by me anyways.. :-)
Project Screenshots (Click to zoom):
YouTube Videos:
Flea86 running Microsoft Windows 3.0: | Flea86 with prototype ISA-Bus
expander installed: |
Project support links:
Flea86 level-1 Preliminary User Manual rev 0.20 (.PDF)
Flea86 System Schematics:
Fleatiny Revision 3.0 Schematics (.PDF)
Flea86 Development Forum:
The Flea86 Development forums
Flea86 reviews and interviews:
http://www.brutman.com/Flea86/
http://vm.ru54.com/en/Flea86/interv.htm
External links:
Link to my old project site
Vintage Computer forum thread
Armchair Arcade forum thread
Copyright information:
All trademarked product names listed on this site belong to their respective trademark owners. All PCB designs, flea logo and related support documentation are the copyright of Valentin Angelovski (fleasystems).
(Page last updated 8th January 2014)