I would if I had the resources but the system mcu (40 pdip) is driving some valves and pump operation with use of 4 ADC's for thermistors temp sensors so it is pretty full.
Just use 74HC or 74LS shift registers to expand the I/O
74HC595s are perfect for outputs and 74HC165 for inputs.
Or you can use MIC5841 / MIC5891 shift register based power drivers, low side or high side respectively.
You can drive all those directly from the SPI port, plus two extra pins total for input and output latch signals.
For more than one of each, cascade data outs to data ins and transfer additional bytes.
Five MCU pins for effectively unlimited digital I/O.
Each 8 bit input and 8 bit output transfer together in a single SPI transfer instruction; latch the input register data, transfer all bytes, latch the new outputs.
Updating eg. 16 inputs and 16 outputs takes just two SPI I/Os plus moving & latching & the data at the appropriate time; a few microseconds at the start of each program pass.
You need the analog inputs on the MCU itself, but just about anything else for external I/O, LED display, keyboard inputs etc. can easily be done like this.
Just keep "image" bytes for the external input and output registers in RAM variables and use those in the normal program, with everything updated in one fast burst at every pass start or end.