5

When trying to run http://www.terminate.com/ under http://www.dosemu.org/, I get Runtime Error 200.

I know that this is a well known issue with software compiled with Turbo / Borland Pascal and using the CRT unit. This unit has an overflow in a delay loop if the computer is too fast and as this routine was written in approx. 8MHz age, the limitation is not a big surprise.

There are several workarounds available for cases in which you cannot recompile with a modified library as it is always the case for closed-source software. However, these usually have different draw-backs and they all are work-arounds.

Because of this, I have this explicit question about Terminate, whether someone knows about a working work-around. I want to be sure that I do not later have connection issues or what-ever, because required delay times are wrong due to the workaround.

3
  • You can try dosbox if you still have problems. Speed/cpu cycles is adjustable. I have used to run many older apps with success. It's also considered more portable, you can run it on whatever arch (x86, amd64, others) and OS. – Krackout Jan 4 at 10:31
  • 1
    I don't see this as an outright duplicate. The question is specifically about Terminate-specific solutions, not general discussion of the problem. – Dercsár Jan 4 at 18:19
  • @Dercsár I agree, but I don’t think we really have a consensus yet on exactly what constitutes a duplicate here. – Stephen Kitt Jan 5 at 12:50
5

Several of the approaches listed in the answers to Why did MS-DOS applications built using Turbo Pascal fail to start with a division by zero error on faster systems? should work; in particular, c’t’s patch, which includes a working Delay routine, or one of the Pascal fix TSRs.

3

Surprisingly, googling "Runtime error 200" yields this, which still refers to the defunct Altavista:

Borland: Runtime Error 200 - 'Divide by 0'

Applications that use the CRT unit may generate this error message when running on very fast machines (i.e. Pentium Pro 180 and above). The cause of this error is a timing loop that occurs as part of the initialization of the CRT unit. This timing loop counts how many clock ticks occur within the loop and then that number is divided by 55. The result of this division is a value that is too large to fit into an integer value. The 'Divide by 0' error message is the catch-all error that is displayed when this overflow occurs.

There are currently no Borland endorsed patches for this problem. There are several user provided patches available on the internet that patch both the CRT unit as well as existing EXE files. The easiest way to obtain these patches is to go to www.altavista.digital.com and search on '+bp7patch.zip +tppatch.zip' without the quotes.

but the suggestion to search for the relevant files appears to yield some results.

1
  • 1
    Could you paste the relevant info into the answer please? – knol Jan 4 at 3:16

Not the answer you're looking for? Browse other questions tagged or ask your own question.