That wasn't really a possibility for anything but static fullscreen images, or extremely optimized demos. Even then it would be difficult, since there is no way to generate an interrupt at a specific raster position (unlike CGA, where the pixel clock was synchronized with the system timer chip).