Contracted out: four-layer board layout, and software.
I designed the circuit and the initial placement of devices on the PCB. I supervised the PCB layout artist, solving layout problems and ensuring good placement and signal routing.
It could be populated for either 16 inputs or outputs. There was not enough room for both LS245 and LS573 chips, so I overlapped their footprints.
The CANbus ID switches are read one at a time through a 1-of-8 multiplexer. This is smaller than an LS245, and allowed them to share a single pull-up resistor.
As a bonus feature, I made sure the serial port was still available. This allowed me to port 8052 BASIC onto it, with the only minor work to override the auto-baud feature. This avoided writing tedious assembly code test software.
There is an online 8x51 assembler but its limit on source code file size prevented it from assembling the source file I had. So I uploaded the hex file.