I ran pep8 over the sources and thought I'd remediated all the training spaces already. I'll finish the job.
My alternative to the four globals is to pass the function pointers as parameters through one or two intermediates to the functions that would use them. Would that be acceptable? I can't just delete the globals (as is) because the places that need then would break on invocation. You saw why I was doing that, right? - Paul