8088 Computer using Raspberry pi

                    Home    8088 Programming    Raspberry pi   Arduino    Troubleshoot 


YouTube Video

 The 8088 is connected to the Raspberry pi through the SPI bus. The Raspberry pi uploads the ROM provides the monitor, keyboard, hard drive, and floppy drive.
    The parts I used to build.

    1 - 8088-2 or NEC V20
    1 - 24 mHz Crystal      1 - 8284A
    1 - 74LS245
    1 - 74LS138    
    3 - 74HC573
    1 - 74LS04
    2 - 512K RAM
    3 - MCP23S17

Source code/Downloads

    I have tested this code. the Bios.bin and Dos622.img need to be in the same folder as my8088. to run type ./my8088. The code for the hard drive has been commented out in the bios.asm file to prevent errors but is still there. 

    my8088 my8088.cpp Compiled
    Bios.bin Bios.asm Compiled

    The operational processes:

    The Raspberry pi is connected to the 8088 using 3-MCP23S17 chips through the Raspberry pi SPI bus to read and write to the 8088 1MB ram. 
            -One 8 bit port for a control port. 
            -One 8 bit port for the data bus. 
            -Three 8 bit ports for the 20 bit address bus.

    Loading the Rom into memory  -  The Raspberry pi holds the 8088 and flashes the Bios.bin file to memory address 0xF4000 and the jump code to memory address 0xFFFF0. 

    Reading video ram  -  Every fraction of a second the Raspberry pi holds the 8088 and reads a bit of the video ram. The video ram is stored in a char array and updated on the Raspberry pi screen. The timing and length of read can be adjusted through the code.

    Drive read and writes -  Every fraction of a second the Raspberry pi holds the 8088 and checks the I/O ports for command bytes. The Raspberry pi reads and writes to drive image files which are used to simulate the A: floppy and C: hard drive. 

    Keyboard input  -  When a key stroke is detected the Raspberry pi holds the 8088 and writes the character codes and scan codes into the 8088 keyboard buffer.
    System timer  -  The Raspberry pi updates the system timer in the 8088 Memory.

    Booting DOS:

    It took a lot of trial and error to figure this out. Booting DOS allows you to load off the shelf programs on the 8088. 

    The MINIMUM bios interrupts and sub interrupts required to boot and use DOS

        -INT 0x08, Hardware, System timer IRQ0
                -Sets value for INT 0x1A, The rate of change does not seem to matter just needs to change.
        -INT 0x09, Hardware, Keyboard IRQ1
                -Puts the character code and scan code in to the key board buffer
        -INT 0x10, Video
                -AH=0x0E  Teletype out
                -Ignore any other AH=0xXX
        -INT 0x11, Equipment Check
                -This I return video mode and number of floppy drives
        -INT 0x12, Memory 
                -Returns 0x0280-640K, 
        -INT 0x13, Disk operations
                -AH=0x00, Resets disk, Does nothing returns success 
                -AH=0x01, Get status of last operation, Does nothing returns success  
                -AH=0x02, Disk read
                -AH=0x03, Disk write 
                -AH=0x08, Disk parameters
                -AH=0x15, Disk type 
        -INT 0x14, Communications
                -Does not have to do anything but is called during start up 
        -INT 0x15
                -Returns not BIOS supported
        -INT 0x16
                -AH=0x00, Returns key character code and scan code
                -AH=0x01, Checks to see if key stroke is present
                -AH=0x02, Key shift board flags, does not do anything returns 0x0000
        -INT 0x17, Communications
                -Does not have to do anything but is called during start up 
        -INT 0x1A, Time of Day
                -Clicks based on INT 0x08