Well I completely rewrote the code. And surprisingly, it looks pretty similar to what I did before. I moved the store/transfer routine out of (being called from) the ISR to the main loop. As soon as the ISR detects a bit, it notifies the main routine which processes it (ie stores and shifts it) and then xfers to the PC if necessary. Pretty good plan, and there shouldn’t be an issue handling the bit in between the interrupts. Absolute worst case there is about 1200ns or so, which gives me at least 50+ instructions.
Still can’t figure out what I’m doing wrong with the PC xfer routines. These same ones worked earlier. Not sure if I blew something like my PC’s parallel port (GASP!), possibly the SX, etc. I don’t think this is the case, knock on wood. Gotta put some current limiting resistors in place. Wish there was a local electronic house that stocked resistor packs. I hate messing with a bunch of individual resistors.
I’ll have limited time coming up within the next week and half to work on it, but honestly distancing myself from it might help me step back a little get a different perspective.