Задержка, генерируемая Delay В сети Интернет популярен неполноценный патч (см. ниже). Задержки, которые задаются процедурой Delay(), с этим патчем на разных машинах разные. Вот другая процедура:
procedure Stop(Wait:LongInt); assembler; asm mov ah, 86h mov dx, word ptr Wait mov cx, word ptr Wait+2 int 15h end;
Если в программе используется модуль CRT, то программа виснет при запуске из-за инициализации, которая потом используется процедурой Delay(). Инициализация происходит в любом случае - даже если эта процедура не используется в программе. При написании своих программ используйте пропатченый CRT. (можно скачать с сайта)
Исправление уже написанных программ. Чтобы заработала уже скомпилированная программа (чужая), возьмите hex-редактор (например, в School Pak есть HIEW) и:
Ищем: B93700F7F1 Меняем на: 6E (увеличение в 2 раза) или на: 9090 (убрать деление вообще)
Программа _не_ должна быть запакована EXE-паковщиками.
Исправление CRT самостоятельно. Для того, чтобы самому пропатчить 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 не обязательно, т.к. он не содержит такой ошибки.
Скачать сразу весь TURBO.TPL с патчем: TURBO.TPL (время задержки правильное)
Скачать пропатченный (с неправильным временем задержки) модуль CRT (для разных версий Паскаля) с инструкцией по установке: crt.zip ( 29.68 килобайт )
Кол-во скачиваний: 1622