Raspberry PI PCB
The code is fairly simple and easy to modify. Basically the Raspberry PI toggles the Clock then reads the Control Bus and then provides the 8088 what it is requesting. It will read the ALE pin and save the address then provide the proper Memory or IO Read/Write.
Disadvantages:
The speed, the processor is only running at about 0.3 MHz the best I could calculate. But on the flip side the drive read writes are very fast because the memory is virtual on raspberry pi.
Not all 8088/8086 Processors will work. The power is connected to the 3.3v pin on the PI. Most NEC V20/V30's will operate 3V - 7V so this is not problem.
I have written a c library that helps with interfacing the 8088 PCB. I have also begun to develop a GUI window that emulates CGA/VGA graphics
GitHub
https://github.com/homebrew8088/pi86
-I tested this with a fresh install of Raspberry PI os and it ran just fine.
-To compile I had to install the SDL library.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gcc build-essential libsdl2-dev
-To compile the bios file install nasm
sudo apt-get install nasm
*** This is experimental use at your own risk.
This current build runs very stable. I have left it running for seveal hours and came back and it was still running just fine. I encourage you to download the source code to the projects and give them a try and make modification.
My Bios currently supports the follow interrupts
INT10: Video, Limited Functions
AH = 0X00 Set Video Mode 0-4
AH = 0X02 Set Cursor Position
AH = 0X05 Select Active Display Page
AH = 0X09 Write Character and Attribute at Cursor Position, Not in mode 4
AH = 0X0B Set Palette CGA
AH = 0x0E Teletype
AH = 0X0F Get Current Mode
INT 0x11 Equipment Check
INT 0x12 Memory
INT 0x13 Drives, Limited Functions
AH = 0X00 Reset Disk System
AH = 0X01 Get Status of Last Operation
AH = 0X02 Read Disk
AH = 0X03 Write Disk
AH = 0X08 Disk Parameters
AH = 0X15 Get Disk Type
INT 0x15 Cassette Returns Not Present
INT 0x16 Keyboard
AH = 0X00 Wait For Key
AH = 0X01 Check For Key
AH = 0X02 Get Shift Flags, Limited
INT 0x19 Jump to Bootstrap
INT 0x1A Time