Skip to the content
2 layers172.7 × 63.5 mm8088sbc, the printed circuit board in 3D

Minimal 8088 single board computer

Size
172.7 × 63.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
59
Nets
109
Pads
460
Tracks, vias
1,453, 99
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
31 May 2020
Updated
31 May 2020

Overview

8088sbc is an open-source printed circuit board by 74hc595, from the 74hc595/8088sbc repository on GitHub, published under the BSD-3-Clause licence. It is a 2-layer board of 172.7 × 63.5 mm with 59 parts on 109 nets, routed with 1,453 tracks and 99 vias.

It is built around the AS6C4008-55PCN, 74HC132D and 74HC139D, with the 74HC4017D, 74HC573 and 74HC75D among its other parts. Its parts include 14 capacitors, 10 ICs, 9 resistors, 7 connectors and 3 diodes. It belongs with the computers and single-board computers boards of this library.

Main components

6

README

README.md

8088 Single Board Computer

A minimal single-board computer based on the Intel 8088 processor. That's the same processor used in the original IBM PC, but this is just a simple project and doesn't strive for PC/DOS compatibility.

Specs

  • 8088 or compatible CPU in minimal mode (5 MHz with 8088, 8 MHz with 8088-2)
  • 1 MB static RAM (2x AS6C4008-55PCN)
  • 32 KB ROM (1x AT28C256-15)
  • FTDI-compatible 5V serial port provided by a 16C550 UART (up to 115200 baud)
  • 32 column by 4 row LED display (sixteen PDSP-1881 intelligent displays, display board schematic available here)
  • Uses five common 74HC chips for glue logic (74HC4017, 74HC132, 74HC573, 74HC75, 74HC139). Does not require any of the Intel 8200-series support chips.
  • 5V power via USB-A connector

Memory map

text
00000h-7FFFFh - RAM
80000h-FFFFFh - bankable (RAM, ROM, expansion 1, or expansion 2)

I/O map

Only bits 7 and 8 are used for decoding.

text
000h-07Fh - I/O bank 0
    060h-067h - 16550 UART
080h-0FFh - I/O bank 1
100h-17Fh - I/O bank 2
    100h-107h - 128-character display (16x PDSP-1881 or similar)
180h-1FFh - I/O bank 3

More info on display decoding:

text
100h-17Fh - Flash RAM
900h-97Fh - UDC Address Register
B00h-B7Fh - UDC RAM
D00h-D7Fh - Control Word Register
F00h-F7Fh - Character RAM

Bank switching and input/output

The modem control lines of the 16550 UART are used as general purpose input and output lines.

text
~OUT1 - bank select bit 0
~OUT2 - bank select bit 1
~DTR  - general purpose output 0 (LED2)
~RTS  - general purpose output 1 (LED3)
~RI   - general purpose input 0
~DCD  - general purpose input 1
~DSR  - general purpose input 2
~CTS  - general purpose input 3

Bank select bits 0 and 1 control which device is mapped into the upper half of the address space:

text
00 - expansion 1
01 - expansion 2
10 - RAM
11 - ROM (default at power-up)

These are controlled by bits 2 and 3 of the 16550's Modem Control Register. (64h)

Interrupts

The four general-purpose inputs can be set up as inputs by configuring the 16550's Interrupt Enable Register (61h). However, this won't be very useful because the 8088's ~INTA line is not connected to anything, so when an interrupt is received, there is no device to place the vector number on the data bus.

Pressing the NMI button will generate a non-maskable interrupt (INT 04h). The button is debounced in hardware.

Software

Not much here, just enough to test memory and dump the register state. Compiles with NASM (version 2.14.02 used). Running make in the code/ directory generates as 32KB binary file. Running make flash can be used to burn the ROM image to an AT28C256 EEPROM chip using a MiniPro TL866II+ with the minipro utility.

(The TL866II+ is around $60 USD and widely available, if you don't have one, you should get one!)

  1. Power LED will light up.
  2. OUT1 LED will blink four times. (Testing 8 segments of lower RAM)
  3. OUT0 will light.
  4. OUT1 LED will blink four times. (Testing 8 segments of upper RAM)
  5. Hello 8088! will be printed to the serial port. (115200 8N1)
  6. OUT0 and OUT1 LEDs will toggle with 50% duty cycle. (verify with scope)
  7. Pressing the NMI button will print the register state:
text
AX=F001 CS=F000 IP=82E0      NMI
BX=FFF0 DS=F000 SI=82F5     --I-
CX=0000 ES=0000 DI=0024 --------
DX=F202 SS=7000 SP=FFE6 BP=FFFF

API

Interrupt vector 06h points to the character output routine. If using the PDSP-1881 LED display, this can be changed to disp_outch_int to write to the display instead of the serial port.

INT 07h prints the null-terminated string in CS:SI.

INT 08h is a rudimentary formatted-output routine. See output.inc.

Future work

Probably none. This was just a quick project and I probably won't work on it long-term because... honestly, I'm just not a fan of 8086 assembly language and its weird 16-bit segmented model. Mainly, I had these chips lying around and wanted to do something with them.

About

Open hardware, released under the terms of the 3-clause BSD license.

Copyright 2020 Matt Sarnoff.

http://twitter.com/txsector

http://msarnoff.org

Parts

59
QtyValueFootprintReferences
100.1uFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC5, C6, C7, C8, C9, C10, C11, C12, C13, C14
410kResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR1, R2, R3, R9
3330Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR6, R7, R8
3SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1, JP2, JP3
24.7uFResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderC1, C2
2AS6C4008-55PCNPackage_DIP:DIP-32_W15.24mmU8, U9
2I/O EXPConnector_PinHeader_2.54mm:PinHeader_1x26_P2.54mm_VerticalJ3, J4
1+5VTestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mmTP1
11.8432MHzCrystal:Crystal_HC49-U_VerticalX2
110kResistor_THT:R_Array_SIP6RN1
112kResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR5
116550Package_DIP:DIP-40_W15.24mmU3
11MResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR4
120.0 MHzOscillator:Oscillator_DIP-8X1
127pFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC3
128C256Package_DIP:DIP-28_W15.24mmU10
147pFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC4
15V FTDI SERIALConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_HorizontalJ2
15V POWER ONLYConnector_USB:USB_B_OST_USB-B1HSxx_HorizontalJ1
174HC132Package_DIP:DIP-14_W7.62mmU2
174HC139Package_DIP:DIP-16_W7.62mmU7
174HC4017Package_DIP:DIP-16_W7.62mmU1
174HC573Package_DIP:DIP-20_W7.62mmU6
174HC75Package_DIP:DIP-16_W7.62mmU5
1CLKTestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mmTP3
1CPU MISCConnector_PinHeader_2.54mm:PinHeader_1x11_P2.54mm_VerticalJ7
1GNDTestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mmTP2
1GPIOConnector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalJ6
1MBL8088-2Package_DIP:DIP-40_W15.24mmU4
1MEMORY EXPConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ5
1NMIMoreSwitches:SW_PUSH_3x6mmSW3
1OUT0LED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderLED3
1OUT1LED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderLED2
1POWERMoreSwitches:SW_Slide_1P2T_Cylewet_ CYT1107SW1
1POWERLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderLED1
1RESETMoreSwitches:SW_PUSH_3x6mmSW2

The 55 most common of 59 parts.

Similar boards

  • 2 layers188 × 66 mmFloppy, the printed circuit board in 3D

    Floppy

    scefrom/SF68

    A board featuring the Motorola 68000

    48 parts2
  • 2 layers41.9 × 87.6 mmNes Sound Expansion, the printed circuit board in 3D

    Nes Sound Expansion

    Perkka2/EPSM

    NES Expansion Port Sound Generator

    53 parts76
  • 2 layers177.8 × 130.8 mmFull, the printed circuit board in 3D

    Full

    zuiko21/minimOS

    Scalable OS for 6502/65816

    130 parts23MIT
  • 2 layers208 × 110 mm8 16 computer 2, the printed circuit board in 3D

    8 16 computer 2

    halfburnttoast/TCPU816-v1

    Version 1.1 of my 8-bit, TTL computer.

    120 parts21
  • 2 layers100 × 100 mmMinisys 186 CPU, the printed circuit board in 3D

    Minisys 186 CPU

    ab0tj/MiniSys

    Homebrew computer with an ISA-like bus

    57 parts7
  • 4 layers406.4 × 254 mmExtmemory, the printed circuit board in 3D

    Extmemory

    mrieker/pdp8i

    113 parts
  • 4 layers65c816-sbc v1, the printed circuit board in 3D

    65c816-sbc v1

    erikarn/65c816-pcbs

    mucking about with 65c816 stuff

    66 parts2

Questions

How big is the 8088sbc PCB?

It measures 172.7 × 63.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the 8088sbc use?

59 parts, built around the AS6C4008-55PCN, 74HC132D, 74HC139D and 74HC4017D. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the 8088sbc KiCad files?

From the 74hc595/8088sbc repository on GitHub, at the commit this page was made from: the board is 8088sbc.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the 8088sbc design in my own project?

Its repository publishes it under the BSD-3-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).