Hello everyone, I'm here again to ask what's probably a question with a simple answer :D!
I decided to run my 5150 today to check its health after a month or so of disuse, since I haven't been able to give it the love it deserves. Everything checks out (and the RTC hasn't lost nearly any time at all in the past 2 months o.0, but while I was running CHECKIT's memory test, something dawned on me...
CHECKIT gives you the option to test all regions of conventional memory, and allocates a buffer to store data so MS-DOS data structures, device drivers and the IVT are not overwritten. I can understand moving the data back to it's correct location immediately after testing locations, but I don't understand how such a program can deal with hardware interrupts. I thought overwriting the IVT implies that all interrupts must be disabled, including (especially) the system timer. However I have a TSR screensaver which hooks the system timer, and it works properly even during the memory test (which takes longer than 10 minutes, the delay before the screensaver activates).
What I expect to work (disable interrupts) and what does work (interrupts are not disabled) contradict each other. Am I understanding this right, or am I missing something? On that note, how would I go about programming a memory test (psuedocode?) without completely trashing MS-DOS?
I decided to run my 5150 today to check its health after a month or so of disuse, since I haven't been able to give it the love it deserves. Everything checks out (and the RTC hasn't lost nearly any time at all in the past 2 months o.0, but while I was running CHECKIT's memory test, something dawned on me...
CHECKIT gives you the option to test all regions of conventional memory, and allocates a buffer to store data so MS-DOS data structures, device drivers and the IVT are not overwritten. I can understand moving the data back to it's correct location immediately after testing locations, but I don't understand how such a program can deal with hardware interrupts. I thought overwriting the IVT implies that all interrupts must be disabled, including (especially) the system timer. However I have a TSR screensaver which hooks the system timer, and it works properly even during the memory test (which takes longer than 10 minutes, the delay before the screensaver activates).
What I expect to work (disable interrupts) and what does work (interrupts are not disabled) contradict each other. Am I understanding this right, or am I missing something? On that note, how would I go about programming a memory test (psuedocode?) without completely trashing MS-DOS?
Last edited: