A PIO such as a 8255 can be used as an interface between 2 microprocessors/microcontrolers.
There are many softwares allowing the use of a 8255 on the microprocessor side but I didn't find any on the peripheral side.
This software uses the 8255 PIO in mode 2 which allows bidirectional exchanges through an 8-bit parallel bus. A Z80 is connected on the microprocessor side and initialize the PIO.
It can work with polling or interrupts. An Arduino UNO or equivalent (Sparkfun Redboard) is connected on the peripheral side.