Hardware interrupt handlers have to be registered in kernel space. So you have to create a device driver, which would do what you want within the VBL interrupt, and would be controlled from your user space application (the demo) by means of such calls as Fopen(), Fread(), Fwrite(), Fcntl() and such.Ouch... when you write it like that, I have a feeling I'll keep the old fashioned way with supervisor :)
I don't see any difficulty. You wanted the VBL to write data to some buffer - so it would do (to kernel space buffer allocated by the dedvice driver). And then the user app to read that buffer - which can be done with Fread(). There is XDD skeleton written in assembly, writing a device driver is easy. What's the problem?
Pozdrawiam KMK