Sam Falvo's
original Kestrel project was ROMless, booting under control of a PC's parallel port using shift registers to control the busses (and the BE pin to get the CPU off the bus)
But there's no surviving schematic of his idea, and PC parallel ports are hard to come by.
So, how about using the I²C port which comes with your handy VGA port? At least in Linux and with most graphics hardware it's possible to send i2c communications, which you can test by interrogating your monitor.
(We're warned not to write to any other I²C port in case of bricking your computer.)
Code:
$ sudo apt-get install i2c-tools
$ sudo modprobe i2c-dev
$ i2cdetect -l
i2c-0 unknown i915 gmbus ssc N/A
i2c-1 unknown i915 gmbus vga N/A
i2c-2 unknown i915 gmbus panel N/A
i2c-3 unknown i915 gmbus dpc N/A
i2c-4 unknown i915 gmbus dpb N/A
i2c-5 unknown i915 gmbus dpd N/A
i2c-6 unknown SDVO DDC proxy N/A
$ sudo i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- 37 -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 -- -- 54 55 -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
$ sudo i2cdump -r 0x5f-0x68 -y 1 0x50 b
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
50: 53 S
60: 79 6e 63 4d 61 73 74 65 72 yncMaster
Quote:
Probably, the easiest way to use an I²C device on Linux is the Python SMBus module...
Whereas Sam
used five 595s:
Quote:
the IPL circuitry for the Kestrel-1 ... just used 74ACT595 chips.
Quote:
The outputs of the 74HC595s used in the IPL circuitry have nice, clean outputs, about 10ns rise times, and in my circuit, 13ns fall times.
we'd need five 8574s or perhaps two and a half 8575s (aka
MCP23017, perhaps)
Or, instead of the VGA port of a PC, you could use a Raspberry Pi (3V3 alert) or an Arduino.