Homebrew 8088 Arduino

                    Home    8088 Programming    Raspberry pi   Arduino    Troubleshoot  

Wire an 8088 to an Arduino Nano:    

YouTube Video

The Project:
    The concept is to use a Arduino Nano to up load code to the 8088.
    The Arduino has access to write to the one megabyte of RAM used by the 8088.

The boot-up sequence is:

    Power on, 5v to the system.
    Arduino holds 8088.
    Arduino copies "ROM" to the RAM. 
    Arduino releases Hold and Resets 8088.

Parts list to get started:
    1 x Arduino Nano
    1 x 8088
    7 x 74LS373 or 74HC573
    2 x 74LS245
    1 x 74LS138
    1 x 74LS04P
    1 x RAM 512K 


    Arduino is connected to it's own address and data latches. The 8088 has it's own address and data latches see the home page. The only thing that is shared it the memory. Ignore the CLK and Ready line in this schematic it is out of date. I use a 8284A to provde the clock and ready line.


    Include my Intel8088 library to your Arduino project. Intel8088
    The library  makes it easy to just wire up your 8088 and go with out a lot of programming of the Arduino.
    The byte arrays hold the 8088 opcodes that you want to load in memory.

Here is an example of the process to upload code to the 8088 through the Arduino using the code for my current project. click on the picture to view full sized. 

I write my 8088 x86 assembly normally. I saved as nop.asm, you can save it to your own file name.

Compile the assembly as a bin file. I use NASM to compile my code.

I use Linux command line hexdump to display the bin file in the terminal as hexadecimal numbers with comas. 

hexdump -v -e '", 0x" 1/1 "%02X"' nop.bin ; echo

I then copy the hexadecimal output and past into a byte array  it in the arduino IDE.
In this case I named my array as main[]

You need the jump code for the 8088 becasue the 8088 starts at FFFF:0000 or simpler put 0xFFFF0.
My jump code is just a far jump to 0xF000:0x0000.

In the setup line for the Ardiuno you designate where you want the code written to in the 8088 ram.
The jump code needs to be written to 0xFFFF0.

In my Project my jump code jumps to address 0xF0000 so this is where I put my main code. 

Dont forget to include the library and declare a new object.

Then just up load to the Arduino.