New year, new resolutions! This time, finalizing a nice piece of hardware.
What is it?
PicoPOST is an attempt at improving the classic ISA diagnostic POST cards, commonly found online for very cheap.
They run a 8051-like microcontroller and usually only provide a 7-segment display and an externally-driven buzzer. Clearly not enough for hardcore geeks…
PicoPOST is powered by a Raspberry Pi Pico and its RP2040 microcontroller. All this dual-core power is used to read the ISA bus in real time, displaying info over a way more flexible 128×32 graphical OLED display.
What does it do?
With the current rev 5 hardware prototypes, we can replicate the original cards’ features and improve them quite a bit in the process:
- Full 16-bit address decoding
The top 4 bits A[16..19] are filtered out to all zeros, to avoid unnecessary noise when exiting pure 16-bit modes.
- IOW read trigger
Considered the relatively limited amount of GPIO available, we are only considering the bus ready when no DMA transaction is occurring and the I/O Write signal is active. No IOR or memory access for the time being.
- +5V and +12V rail monitoring
We’re using some ADC inputs to read the primary voltage rails on the bus. It’s not as accurate as a proper digital multimeter, but it’s a nice touch.
- Graphical remote control
When diagnosing a live system, the onboard LED display is not very convenient. We opted for a wired remote control, using a graphical 128×32 OLED display and a few buttons for menu operations. Freedom!
- Output over USB CDC serial
Activity is also sent over the virtual serial port available from the Pico’s USB port. Code tracking and boot time can be easily checked with microsecond precision, thanks to the multi-core data queue and ordered data handling.
There’s a rev 6 incoming, bringing some more welcome features:
- Entirely I2C remote control
Previously, buttons were using raw GPIO on the Pico. That’s a waste of precious fast I/Os! The keypad now uses a remote I2C GPIO expander, which also doubles as display setup, giving the user more flexibility.
- -12V rail monitoring
With the freed up GPIOs, we recovered another ADC input, which now goes for monitoring this (seldom used) rail.
- Clock frequency counter
One of the pins is now used to monitor bus clock rate, so you can bring the oscilloscope in at a later point.
- SATA cable for the remote control
Instead of having to deal with through-hole wiring, possibly stiff Cat5e cabling, we decided to use a SATA connector for the remote control. It should also double as a more reliable way to carry the delicate I2C signaling over a well-defined maximum distance of 0.5m (19.5″ for the Imperial fellas).
All this hardware would be useless without firmware. We currently implemented:
- a very simple menu system for selecting the operation mode
- port 80h reader (same as the fixed-function POST cards)
- voltage monitoring
- credits banner
What will it do?
Being a Raspberry Pi Pico, firmware is very easy to update. And you will probably want to update it at a certain point in time, since we have plans to have it do even more stuff!
- Read ports other than 80h (some systems output to other addresses)
- Keep the full bus activity trace (useful for sniffing certain initialization sequences)
- Audio-visual alert for out-of-range voltage rails (be warned before the power supply combusts)
- POST code decoder, after selecting the BIOS type (a quick description of the code, without having to look for dozens of web pages before realizing it’s the incorrect BIOS core version)
Where do I get it?
It’s an open source project, both for the hardware and the firmware. Feel free to look around the official repository at https://github.com/TheRetroWeb/PicoPOST.
If there’s enough interest, we might consider keeping some stock locally. At the moment, it’s all DIY: download the gerbers, send them to a PCB manufacturer, get the components, assemble them yourself.
Huge thanks to fireTwoOneNine for hardware design and TheRealZago for firmware development.
Special thanks to the small circle who spectated some of the depression and (occasionally) excitement of the initial prototyping and testing. Here, have a cookie 🍪