

8088sbc
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
6AS6C4008-55PCN
PDIP-320℃~+70℃ 2.7V~5.5V 30mA 4Mbit 4uA 55ns Parallel Port (Parallel) PDIP-32 SRAM ROHSAlliance MemorySRAM74HC132D
SO-14-40℃~+125℃ 1.5V~4.2V 2 21ns@6V,50pF 2V~6V 2uA 3.7V~4.5V、5.2V~6V 300mV~1.2V 4 400mV 5.2mA 5.2mA 74HC Series NAND Gate Schmitt trigger SOIC-14 Logic Gates ROHSNexperiaSpecialty Logic74HC139D
SO-16-40℃~+125℃ 11ns@6.0V,50pF 160uA 2/4 2V~6V 74HC Decoder Single Supply SOIC-16 Signal Switches, Multiplexers, Decoders ROHSNexperiaSignal Switches / Encoders & Decoders / Multiplexers74HC4017D
SOIC-16-40℃~+125℃ 1 20ns 2V~6V 83MHz Asynchronous Divide-by-10 Falling Edge、Rising Edge Up Counter SOIC-16 Counters, Dividers ROHSNexperiaCounters, Dividers74HC573
SOP-20-40℃~+85℃ 14ns 1ns 2V~6V 4ns 74HC 8 8uA D Latch Tri-State SOP-20 Latches ROHSHXY MOSFETLatches74HC75D
SOIC-16-40℃~+125℃ 12ns 12ns 160uA 2V~6V 3ns 4 5.2mA 5.2mA 74HC Complementary D Latch SOIC-16 Latches ROHSNexperiaLatches
README
README.md8088 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)
- Clock oscillator at 3x frequency of CPU clock frequency. For 8 MHz operation, uses a 24 MHz half-can crystal oscillator
- 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
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.
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 3More info on display decoding:
100h-17Fh - Flash RAM
900h-97Fh - UDC Address Register
B00h-B7Fh - UDC RAM
D00h-D7Fh - Control Word Register
F00h-F7Fh - Character RAMBank switching and input/output
The modem control lines of the 16550 UART are used as general purpose input and output lines.
~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 3Bank select bits 0 and 1 control which device is mapped into the upper half of the address space:
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!)
- Power LED will light up.
OUT1LED will blink four times. (Testing 8 segments of lower RAM)OUT0will light.OUT1LED will blink four times. (Testing 8 segments of upper RAM)Hello 8088!will be printed to the serial port. (115200 8N1)OUT0andOUT1LEDs will toggle with 50% duty cycle. (verify with scope)- Pressing the
NMIbutton will print the register state:
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=FFFFAPI
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.
Parts
59| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 0.1uF | Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder | C5, C6, C7, C8, C9, C10, C11, C12, C13, C14 |
| 4 | 10k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R1, R2, R3, R9 |
| 3 | 330 | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R6, R7, R8 |
| 3 | SolderJumper_2_Bridged | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP1, JP2, JP3 |
| 2 | 4.7uF | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | C1, C2 |
| 2 | AS6C4008-55PCN | Package_DIP:DIP-32_W15.24mm | U8, U9 |
| 2 | I/O EXP | Connector_PinHeader_2.54mm:PinHeader_1x26_P2.54mm_Vertical | J3, J4 |
| 1 | +5V | TestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mm | TP1 |
| 1 | 1.8432MHz | Crystal:Crystal_HC49-U_Vertical | X2 |
| 1 | 10k | Resistor_THT:R_Array_SIP6 | RN1 |
| 1 | 12k | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R5 |
| 1 | 16550 | Package_DIP:DIP-40_W15.24mm | U3 |
| 1 | 1M | Resistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolder | R4 |
| 1 | 20.0 MHz | Oscillator:Oscillator_DIP-8 | X1 |
| 1 | 27pF | Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder | C3 |
| 1 | 28C256 | Package_DIP:DIP-28_W15.24mm | U10 |
| 1 | 47pF | Capacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolder | C4 |
| 1 | 5V FTDI SERIAL | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Horizontal | J2 |
| 1 | 5V POWER ONLY | Connector_USB:USB_B_OST_USB-B1HSxx_Horizontal | J1 |
| 1 | 74HC132 | Package_DIP:DIP-14_W7.62mm | U2 |
| 1 | 74HC139 | Package_DIP:DIP-16_W7.62mm | U7 |
| 1 | 74HC4017 | Package_DIP:DIP-16_W7.62mm | U1 |
| 1 | 74HC573 | Package_DIP:DIP-20_W7.62mm | U6 |
| 1 | 74HC75 | Package_DIP:DIP-16_W7.62mm | U5 |
| 1 | CLK | TestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mm | TP3 |
| 1 | CPU MISC | Connector_PinHeader_2.54mm:PinHeader_1x11_P2.54mm_Vertical | J7 |
| 1 | GND | TestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mm | TP2 |
| 1 | GPIO | Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_Vertical | J6 |
| 1 | MBL8088-2 | Package_DIP:DIP-40_W15.24mm | U4 |
| 1 | MEMORY EXP | Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_Vertical | J5 |
| 1 | NMI | MoreSwitches:SW_PUSH_3x6mm | SW3 |
| 1 | OUT0 | LED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolder | LED3 |
| 1 | OUT1 | LED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolder | LED2 |
| 1 | POWER | MoreSwitches:SW_Slide_1P2T_Cylewet_ CYT1107 | SW1 |
| 1 | POWER | LED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolder | LED1 |
| 1 | RESET | MoreSwitches:SW_PUSH_3x6mm | SW2 |
The 55 most common of 59 parts.
Similar boards
- 2 layers188 × 66 mm

- 4 layers100 × 100 mm

- 2 layers41.9 × 87.6 mm

- 2 layers177.8 × 130.8 mm

- 2 layers208 × 110 mm

- 2 layers100 × 100 mm

- 4 layers406.4 × 254 mm

- 4 layers

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).