![]() |
Старые проги на новых процессорах
Некоторые программы скомпилированые на старых (ну там 386) машинах не хотят запускаться на P-II - выдают ошибку 200. Подскажите плис, как это вылечить? Где-то раньше видел тему в инете, да забыл где. http://www.kamrad.ru/forum/frown.gif
|
По-моему тебе сюда:
http://www.kamrad.ru/forum/Forum1/HTML/000218.html ------------------ Кто не боится Дьявола, тому не нужен бог. |
Спасибо, но дело не в скорости. Ошибка (о которой речь) возникает от заточености старых паскалевских компиляторов на архитектуру старых же 86 процессоров. Уже готовый екзешник можно отредактировать, но что именно?...
|
В теме по ссылке как раз и написано, что можно сделать. А где именно редактировать - не знаю.
|
Я, конечно, мог бы вспомнить молодость, достать дебаггер и заново начать разбираться, где какие байтики надо поменять, чтобы программка работала. Но, все-таки, не буду. Могу только вкратце сказать, из-за чего такая фигня возникает. При компиляции паскалем программ, использующих библиотеку CRT (uses crt), в самом начале программы появляются два call-а на процедурки, устанавливающие всякия параметры и прерывания. В одной из процедурок есть что-то типа определения скорости проца, там хитрым образом засекается количество циклов проца, затраченных на выполнение какой-то фигни. Затем то-ли время, то-ли еще что-то (я не помню) делится на это число - получается некий параметр, определяющий скорость проца, он используется в delay-ях и еще где-то. Так вот, на быстрых процах количество циклов проца оказывается равным нулю, из-за чего далее возникает ошибка деления на 0 - та самая Runtime error 200.
Способов борьбы с этим много. Большинство описаны в ветке по ссылке. Если очень надо, то могу поподробнее рассказать что и где конкретно глючит, но ты для этого должен нормально дружить с ассемблером. ------------------ Кто не боится Дьявола, тому не нужен бог. |
Ин принцЫп-то действительно надо. Есть пара старых прог (нечто вроде баз данных) которыми надо будет попользоваться некоторое время, и запускать при этом анрилы да архиваторы ну совсем неудобно. А на счёт дружбы с ассемблером я так знаю как он выглядит, call от mov отличу но всерьёз бодаться не способен, так что пардон http://www.kamrad.ru/forum/frown.gif
|
Всё так, как сказал Xpert, только наоборот.
Т.е. количество циклов не зависит от скорости проца, а зависит только время. И делится не время на кол-во циклов, а кол-во циклов на время. Ускоряй системный таймер, тока потом придёться вручную время править (или написать прогу такую). Я впрочем могу такую прогу написать - для ускорения и корректировки времени, но боюсь, что она будет работать только в ДОС'е и не слишком новых виндах. Если надо пиши. |
2 max3000
Ну да, так и есть. Просто давно было, уже плохо помню. А прогу я (с одним парнем) написал уже, она садится резидентом и забивает нужные регистры. Поэтому ошибка деления на 0 не может возникнуть. Если эту программулинку запускать до нужной проги, то все будет работать. По крайней мере, у меня - работает. Могу по почте заслать, если кому надо. ------------------ Кто не боится Дьявола, тому не нужен бог. |
Зачем резиденты?
Просто ускоряется системный таймер. По тестам 800-й P3 станет, например сотым, если тест не будет трогать таймер, а в реале практически не замедлится. И всё будет работать как надо (если не будет трогать таймер). "Замедлить" можно где-то в 65535 раз. Я, пожалуй, попробую написать прогу, но вот беда тестить негде, у самого 412МГц, вероятность ошибки очень низкая ~3%. |
2Xpert Надо, если не трудно зашли пожалуйста на orlov@tversu.ru
Кстати не очень понял: резидент в окне ДОС или для всей винды? (Хотя это уж не так принципиально) |
Мне тоже уже понадобилось.
aleks96@mail.ru Спасибо. |
Двоим заинтересованным камрадам (Jazz & mOOrman) ушла передача в виде аттача http://www.kamrad.ru/forum/smile.gif. Т.е. разрекламированная мной утилитка обрела еще 2х новых владельцев.
------------------ Кто не боится Дьявола, тому не нужен бог. |
2 Xpert
Спасибо.Пришло... |
Хотя уже договорились... но всеж...
Я пользовался просто замедлителем... ЦПУ-Киллер... |
Xpert, спасибо, то что надо!
|
Есть у меня програмулина, pasp2fix называется.
Она сканит прогу (ЕХЕ-файл) и исправляет ошибку деления на 0. После этого хоть на третьем пне 800 гоняй! пишите по goldenandy@pisem.net - пришлю... |
All times are GMT +3. The time now is 05:29. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Любое использование материалов сайта
возможно только с разрешения его администрации.