What you _ought_ to be able to do is test the screen handling functions to
determine if they are willing to display a character RIGHT NOW. If a
direct-to-screen pipe isn't open at that moment, then shuffle the current
character into a small ring buffer and go do something else, like handle the
keyboard, the serial port, or whatever. When it's convenient, go back and
see if now is a good time for the screen — if so, squirt out the buffered
characters.
The question is, how to tell if the screen handling functions are poised to
write those characters? The VIO-X10 card I've wire wrapped into my vintage
8-banger puts up an I'm-not-ready-bit on its status port if it can't take a
character just yet; /where/ is the equivalent Amiga hook? Or is screen
handling so muffled in windows and multi-tasking that you can't tell?