M00 was the ticket. Everything is event driven now, with large enough margins on the incremental moves that it works repeatably. The good news is I was able to increase the speed significantly. The limiting factor is how fast the parallel port can read the strobe pulses and activate the lock solenoid. If I go too fast it misses the strobe....still a lot faster than before. I'll post the code tomorrow after I clean up the comments.
Now if the threading will just work!