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.

News | Development | Projects | Download | Contact