TopSome Background Info
I have a customer of long standing who never made the transition to writing his products' software in a high level language (C). Despite numerous opportunities, and offers of help, they had persisted in expanding their body of assembly language. All in the interest of "I don't have time for this right now"...This code has been in use for nearly 30 years. It started out on a National Semiconductor 8070 processor. When the 8070 went EOL, they bought a goodly supply of them to continue their business. Eventually, the customer supply of 8070 CPUs dwindled and I moved them over to the 80188 processor.
The move to the 80188 was done circa 1992, so perl and other langauges were unknown to me. I ended up writing a YACC (effectively) which transcribed the 8070 opcodes over to 80188 equivelent series of opcodes. This wasn't too difficult as the 8070 resembled a 6502 with a 16bit accumulator.
Fast forward to the present, they have now run out of codespace on the present CPU board and no where to go. The customer now has no choice but to move from the 80188 platform to something else. Now, you would probably snicker and say something to the effect that if they had taken the time (pain) to move onto the C langauge, this transition would be a fairly quick one? That is arguable due to the non-modular approach that this code is being written.
But, the point of this article is to describe a solution that I found to moving them off of a restricted environment into something larger. Something larger that could offer them a means of correcting the error of their ways, probably not; it would give them a way to "keep going" into more assembler. heh.