I just spent some time bangin my head against the wall because I couldn’t write and then read the same register in the new CPLD with the GPIO and shift register.

All the lines seemed to be doing what they were supposed to according to my DMM. I finally figured out that the lines were doing a simplified version of actual CPU addressing. And there was no rising edge on the clock while WR# was low. This meant that nothing could get written. Once I fixed that in the Arduino, the writes worked. Whew!

My testing after this has all been good. Shift register is shifting. GPIOs are driving (or not).