Runtime Error 200

1999 November 25

Problem: All programs compiled with Turbo Pascal 7 that use the system unit CRT (almost all programs do) abort with the error message "Runtime Error 200" on faster PCs (e.g., a Pentium II with 233 MHz). These programs include versions of TrakStar, Pass Scheduler, and Pass Update released prior to 1999 November.

Cause: The source of the bug is in the initialization for the delay procedure that is part of the initialization of the CRT unit. The delay initialization is called in every program that uses the CRT unit, not just in those that use the delay procedure. The CRT unit is included in most programs that are written in Turbo Pascal. The delay initialization counts how often a tiny do-nothing loop must be called in order to delay by 55 milliseconds (time measured by reading the BIOS Time Counter at memory address 40:6C that ticks 18.2 times a second, i.e., each 55 milliseconds). This number is then divided by 55 to get the number of calls for one millisecond. The result is written to a word (16-bit) variable. The overflow of this variable triggers a runtime error (Runtime Error 200 is a division by zero, which is caused by the overflow condition in this case).

Solution: All programs were recompiled after applying the patch found at

http://www.brain.uni-freiburg.de/~klaus/pascal/runerr200/download.html#T7TplFix

The information above was extracted from:

http://www.brain.uni-freiburg.de/~klaus/pascal/runerr200/index.html

If you continue to experience this problem with the newer versions of these programs, please let me know.