80286 System Roadmap
Updated: Jan 26
Last October (2022), I started my learning journey to develop a 286 system. See Start to an 80286 System. As of this writing, I have a third revision of a PCB for the 286 system board which is running well. See Transitioning 80286 from Breadboard to PCB. Along the way, I have developed a couple of different VGA cards -- a 320x240x1B with dual port RAM and a 640x480x2B with SRAM. See VGA for my 80286 and VGA Next: 640x480 ISA Card. I seem to have countless ideas for additions and improvements to the system. I thought I would share some of my thoughts of a roadmap for the system.
Current Features / Capabilities / Specifications
Processor: 80C286 running at 8.0 MHz processor clock (16 MHz system clock). Utilizing 82284 clock generator and 82288 bus controller.
Real address mode with 1 MB address space.
Co-processor: 80C287 math co-processor.
RAM: 640 KB SRAM.
ROM: 256 KB flash memory.
Interrupt controller (82C59A).
Reset and watchdog.
PS/2 keyboard support, utilizing a Programmable Peripheral Controller (PPI).
Onboard SPI support utilizing W65C22S Versatile Interface Adapter.
Logging & debugging with Arduino Mega and Windows application.
Serial to PC output (SPI to Arduino Nano).
Two-line 1602 LCD (using a PPI).
128x64 OLED display (I2C from Arduino Nano).
SD Card reader (SPI).
Two ISA slots.
Video: ISA card supporting 640x480 with 2 bytes per pixel color data. 2 MB SRAM with two-frame buffer. Access via 64 KB segment in the 286 address space. The PCB is currently running on a breadboard, awaiting the first PCB version to arrive.
Backlog of Potential Enhancements
The following list captures ideas I have to improve and expand the system, in general order of which I hope to implement (or at least attempt). I will update this list as I work through this project.
Assemble and test the latest VGA PCB (640x480x2B).
Test faster system clock speeds. Once I have the VGA card installed, and no breadboards connected to the ISA bus, I'll be curious to see if the system can run faster. Currently, I am running the system at 16 MHz. Previously, I could run at 18 MHz. With my latest 286 PCB, I might be able to push that to 20 MHz. I don't see being able to go any faster than 20 MHz (optimistically).
VGA routines (never-ending 286 assembly work).
General BIOS coding. A start to a rudimentary operating system (more never-ending 286 assembly work).
VGA PCB refinement, including manual routing.
Protected virtual-address mode.
Mouse support (USB to SPI with MAX3421E?).
Sound card, likely leveraging my earlier work. See 65816 Sound Card Substantially Complete!.
Start to implement interrupts for DOS support (e.g., graphic calls... and the assembly work continues...).
Some form of storage support that can support DOS (e.g., floppy disk, disk on chip).
Run MS-DOS 6.22. I do not even know what all this is going to take, so I imagine the preceding items in this list will grow in number!
DRAM support. Currently, the system has no DRAM controller (e.g., 82C08). I'm not sure if I ultimately want to use DRAM instead of SRAM, but I would at least like to have an alternate design for DRAM and compare the two configurations.
Alternate VGA card that supports dual-port (random+serial) access to DRAM.
Digital output (e.g., DVI-D, DP, or HDMI) on VGA card (Sil9022, ADV7513, TFP410, other).
DMA support. Currently, the system has no DMA controller.
Basic TCP/IP support (10Base-T maybe?).
Onboard flash RAM programming (via USB to PC).
I would love to hear feedback on my prioritized backlog! Would you recommend other enhancements or additions be inserted into the list? Thanks!