|
Some
of my old DOS programs crash with Runtime Error 200!!!
Due
to the high speed of todays new CPU generation, some old programs have
problems with their time sensitive operations. This currently happens
to DOS programs compiled with PASCAL.
Some
News
I have found out that the error mostly happens together with Pentium
II CPUs. I'll try to figure out more (eg. Test it on other CPUs)
Patch
SysDesk has released a patch which will automatically patch the exe file,
after creating a backup of the original program file.
You can download the patch here (24,4
KB).
Note: SysDesk cannot be held responsible in any way for the
functionality of this patch or any loss of data.
For questions concerning the patch send mail to info@sysdesk.de
Using the patch
At the dos command-line, enter
crtpatch filename
where
filename is the exe file (including path) of the program you want to
patch. You MUST include the file extension ( *.exe) or the patch will
not work properly.
A backup of the file is automatically created with the extension *.bak.
Patching the file using a hexeditor
To solve this problem manually, edit the exe file of the program with
a hexeditor and look for this string:
F7 D0 F7 D2 B9 37
00
Here,
change
37 with
A0
How does the patch work?
The error is caused within the PASCAL Crt-Unit. Between two timer-interrupts
are usually 55ms. Increasing this number will usually solve the problem,
but the DELAY function in the Crt-Unit will then work faster and time-sensitive
operations might not work proberly anymore.
If you are still using PASCAL and have to use the DELAY function,
you have to recompile the Crt-Unit. Here, you can slow down the private
DelayLoop-function with NOPs. Don't forget to update your turbo.tpl
file with tpumover.exe.
|