BB-88: An 8088 Experiment
I've always wanted to build a computer!
-- Me.
Links to the articles
Part 01: Introduction
Part 02: It runs!
Part 03: I restart from scratch without writing anything about it and then it's finished!
Part 04: Stability issues
Part 05: Experiments in VGA colors
Part 06: BB-88 runs Minix
Hardware Specs
- Intel 8088 running at 4.77MHz, or NEC V20 running at 6.67MHz
- Intel 8087 FPU
- Entire memory space available: 640K of conventional memory and 192K of Upper Memory Blocks.
- Intel 8254: Programmable Interval Timer
- Two cascaded 8259 Programmable Interrupt Controllers
- Serial port using 16C550, up to 115200 bps
- VIA 82C42 PS/2 keyboard and mouse controller
- ATA interface, for up to two CompactFlash
- Real Time Clock and CMOS parameters using a DS12887+
- Ad-Lib compatible sound card, PC-speaker
- Two game ports for SuperNES controllers
- A VGA-compatible video display that would deserve its own article
The complete set of schematics is available.
Software
- The BIOS is mostly based on Sergey Kiselev's 8088 BIOS
- The firmware includes a ROM monitor with XMODEM file transfer capability
- Also in the firmware is included my port of the Palo-Alto Tiny Basic
- The computer and its video adapter are compatible enough with the IBM PC so that it can boot MS-DOS: I started with 3.30, and even installed version 6.22 on another Compact Flash later on.
- Many softwares written for DOS run perfectly fine, such as Norton Commander, Turbo C++, Turbo Assembler, etc.
- Pretty early during the development, before I had the ATA interface, I wrote a Tetris game in assembler, following javidx9's youtube video.
Performances
It is always difficult to express actual performance. Probably the best I can do is to show the results of th MIPS CPU Benchmark and Performance Test and Landmark Speed Test. Note that the Landmark benchmark wants to compare it to a 286 CPU, which makes for strange results and clock speed estimation.
Achievements
I managed to complete all but two challenges on BB-88 during the Advent Of Code 2020. The two that I couldn't complete simply required too much memory to run. Even with temporary files used as some kind of swap, it would have taken years.
I also got a working SLIP connection to my laptop, immediately fired up an IRC client and connected to Netrusk.net. That was totaly useless but still a fantastic moment!
Videos
All the videos are on my youtube channel, where you can find a BB-88 playlist.
Links
There are several web pages that helped me understand how to start, and that are wonderful sources of information. In no particular order:
- Quinn Dunki's Veronica project got me hooked to the idea of building a computer from scratch.
- Sergey's XT and
- Sergey's Xi 8088, its evolution.
- Homebrew 8088 was of great help in the beginning.
- The Big Mess o' Wires: not based on a 8088, but that project made me want to design my own graphics card. This project is certainly worth a look anyway!
- Helm PCB - 8088 computer is also a great resource for starting.
- Design and Construction of an 8088-based Single Board Microcomputer: A Student Project