Transitioning 80286 from Breadboard to PCB
Updated: Jan 22
Over the past couple of months, I have been working to build out a breadboard-based 80286 system. See /blog/categories/x86. I plan to start winding down efforts on the breadboard system and shift my efforts to a PCB-based 80286 system.
I now have the core system running on a PCB.
Up next, I plan to populate the remainder of the board, with a focus on getting all SPI devices working (8-character numeric display, SD Card reader, USB serial-to-PC communication, and real-time clock).
Issues / Modifications
As I work on version 0.10 of the PCB, here are issues I have found and/or modifications I have made.
The LED bar graphs for address data had signals reversed in each of the 8-bit outputs. I have updated the schematic so that this will be corrected in future versions of the PCB.
I did not have decoupling capacitors on the 6522 VIA. I soldered a 0.1uF and 0.01uF capacitor on the bottom side of the PCB, under the VIA. I have updated the PCB layout.
I added a modification to the PS/2 keyboard circuit to allow adjustment of the interrupt timing with a trimpot. I also added support for keyboards which do not auto-reset. This will allow me to use a newer PS/2 keyboard which requires communication from the host to the keyboard to enable the keyboard. I am using u/gfoot's design for this auto-reset. Also, I updated the PS/2 keyboard handling code utilize a keyboard buffer and support upper case (along with punctuation).
At one point, I had moved the VIA CS# output pin on the PSoC to a pin that did not have an onboard capacitor on the PSoC. I failed to update the schematic when I updated the PSoC, so I had to run a line from the updated PSoC pin to the control latch.
My schematic had one of the OLED I2C pins incorrect on the Nano. I updated the schematic. No changes were needed to the PCB, as I am just connecting to a pin header; I simply shifted a wire on the pin header.
My power on auto-reset is not holding low when connected to the PCB. When using the breadboard system, this is not an issue. I will need to further troubleshoot this. Update: If I remove power from the Arduino Mega, the auto-reset works fine.
Communication with the RTC is struggling at higher speeds. I likely need to adjust some timing in the SPI code for the RTC. Update: I resolved the issue by moving the RTC VCC to the 3.3V supply on the Nano and changing the VIA clock back to PCLK (instead of PCLK#).
Schematic, Address Decode, and Assembly
The current schematic, as of 17 December 2022:
Address decode logic loaded on the PSoC:
Assembly code at this point:
x86/g2_20221217.asm at main · rehsd/x86 · GitHub