Tried on real hardware (using FreeDOS 1.0), seems to work OK aside from the fact that the keyboard buffer fills up with garbage and then I hear a bunch of beeping. I thought it was the fault of my DPMI server at first (I'm using HDPMI32) but nope, it also happens with DOS4G/W.
Are you able to clear the key buffer every frame?
EDIT: I managed to make a program to temporarily hook INT 0x1C so that I could clear the buffer every theoretically-default PIT tick (~18.22Hz) and that seems to work well enough. Anyway, I probably get about 5-6 FPS on a 266 MHz Celeron (Pentium II type).