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