Что делать, если программа слетает с Runtime Error 200?

Исправление ошибки Runtime Error 200 (Division by zero), возникающей на машинах старше PII-300.

Если в программе используется модуль CRT, то программа зависает при запуске из-за инициализации, которая потом используется процедурой Delay(). Инициализация происходит в любом случае - даже если эта процедура не используется в программе. При написании своих программ используйте пропатченный CRT. Чтобы заработала уже скомпилированная программа (чужая), возьмите hex-редактор и:

Ищем:       B93700F7F1
Меняем на:  B96E00F7F1    (увеличение в 2 раза)
или на:     B937009090    (убрать деление вообще)

Программа не должна быть запакована EXE-паковщиками.

Для того, чтобы самому пропатчить CRT сделайте следующее. В файле 'crt.asm', расположенном в каталоге 'BP\RTL\CRT', найдите строчки

NOT     DX
MOV     CX,55
DIV     CX

(они располагаются на строках 104-106). Замените во второй строке значение '55' на что-то большее - например на '110' или '550'. Либо можете удалить/закомментировать/заменить команду третьей строки на команду(ы) NOP. Затем, следуя инструкциям файла 'readme' из 'BP\RTL', создайте с помощью 'makefile', расположенного в том же каталоге, файлы 'TURBO.TPL' (для 'real mode') и 'TPP.TPL' (для 'protected mode'). Замените ими соответствующие файлы в каталоге 'BP\BIN'. Патчить аналогичный модуль 'TPW.TPL' для Windows не обязательно, т.к. он не содержит такой ошибки.