Mail Archives: djgpp/1995/01/07/20:55:07
I've got a program that speeds the timer up to 75x/sec and then latches
the interrupt, using it to switch graphics pages on the screen every
vertical retrace. Everytime the interrupt is called, it waits for a
retrace and then re-sets the timer to 75x/sec to start it over again from
the beginning. I do this because 75x/sec is too fast - I have it go too
fast so it'll be sure to catch the retrace and then it resynchs itself
afterwards.
Anyway, the timer handler routines I have should take care of calling
the old timer every 18.2 times a second or thereabouts - and they do as
long as I'm not doing anything too fancy, but apparently resynching the
timer is just too much for it and somehow even though my handler is
getting called 70x/sec, the old timer is never getting called at all.
This leads to the strange phenomenon that when my program is running,
time stands still. It also prevents me from using the disk :/
The program does occassionally SIGSEGV with a EIP that doesn't make
sense to symify or gdb. I have tried replacing the call to the old
handler with a function that would quit the program and print an error
message and it simply never gets called. I am sure that my handler isn't
taking too much time - it crashes in a different way when that happens.
I don't feel like spamming the group with my code unless someone asks
for it, so I'll leave it at this and hope it might be enough to ring a
bell with someone.
Kim
- Raw text -