Got a fiddly problem, on an old project.
The correct solution... well, the really correct solution involves understanding somebody else's software, which isn't really an option in this case. The nearly-correct solution uses a small PLD... something along the lines of a PAL16V8.
O-kaaay. SPLDs are still around. But! I need to program it. I have (but have never used) WinCUPL. (Last time I used a PAL, I used ABEL. Am I dating myself?) And: the chip'll need programming, which (for these little devices) doesn't happen over JTAG; they need a special programmer.
Somewhere in my lab, I have... yes! A Xeltek SuperPro Z! Like this! Hm. Needs a Windows machine with a parallel port. And:
Warning: SuperPro Z will only work on Pentium III 1.1 Ghz. or slower computers. It may create communication problems on new PCs. Please purchase accordingly!
Um. It needs an old Windows machine with a parallel port.
Or I could blow $500 on the new model. Or use a fancy-schmancy modern CPLD that gets programmed over JTAG. (Paying an extra $3 for the chip is no big deal, for a production volume of 5 pieces, tops.) But... this needs 5V-tolerant inputs, which limits the choices. Still, plausible.
Or, I can use an AVR, program it to handle the lame transfer function, and figure out how to deal with the startup condition: those milliseconds after power-up when the MCU hasn't actually started running yet.
I think this ends up as an AVR-as-logic-replacement situation. I've got all the development tools, and know how to use them, and the chips will happily run on poorly-regulated 5V.
Or, just maybe, I might use a pair of HCT logic chips and some resistors. But that takes more board space than the AVR, lacks flexibility, and probably costs more.
(Bonus geekpoints for recognizing the title.)