Raspberry PI

Second Project

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.

  • There are currently no hardware interrupts. The interrupt pin was not connected due to the number of GPIO's available on the Raspberry PI. The Project does not trigger a hardware interrupt to insert key strokes or the timer. Because the memory is held in an array on the Raspberry PI I just update the memory directly. There are a few programs that I have tested that remap the keyboard interrupt to use it's own keyboard handlers. When this is the case the keyboard doesn't work.

    • The next version of the board will have hardware interrupts. Watch for around Sept 2020


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

CPP Files 24 Jul 2020 run with command line ./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 Telotype

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