Kamrad.ru

Kamrad.ru (https://kamrad.ru/index.php)
-   Программы (software) (https://kamrad.ru/forumdisplay.php?f=11)
-   -   Старые проги на новых процессорах (https://kamrad.ru/showthread.php?t=1786)

mOOrmaN 07-03-2001 12:52

Старые проги на новых процессорах
 
Некоторые программы скомпилированые на старых (ну там 386) машинах не хотят запускаться на P-II - выдают ошибку 200. Подскажите плис, как это вылечить? Где-то раньше видел тему в инете, да забыл где. http://www.kamrad.ru/forum/frown.gif

Xpert 07-03-2001 13:36

По-моему тебе сюда:
http://www.kamrad.ru/forum/Forum1/HTML/000218.html

------------------
Кто не боится Дьявола, тому не нужен бог.

mOOrmaN 07-03-2001 18:13

Спасибо, но дело не в скорости. Ошибка (о которой речь) возникает от заточености старых паскалевских компиляторов на архитектуру старых же 86 процессоров. Уже готовый екзешник можно отредактировать, но что именно?...

Alexvn 07-03-2001 18:38

В теме по ссылке как раз и написано, что можно сделать. А где именно редактировать - не знаю.

Xpert 09-03-2001 05:00

Я, конечно, мог бы вспомнить молодость, достать дебаггер и заново начать разбираться, где какие байтики надо поменять, чтобы программка работала. Но, все-таки, не буду. Могу только вкратце сказать, из-за чего такая фигня возникает. При компиляции паскалем программ, использующих библиотеку CRT (uses crt), в самом начале программы появляются два call-а на процедурки, устанавливающие всякия параметры и прерывания. В одной из процедурок есть что-то типа определения скорости проца, там хитрым образом засекается количество циклов проца, затраченных на выполнение какой-то фигни. Затем то-ли время, то-ли еще что-то (я не помню) делится на это число - получается некий параметр, определяющий скорость проца, он используется в delay-ях и еще где-то. Так вот, на быстрых процах количество циклов проца оказывается равным нулю, из-за чего далее возникает ошибка деления на 0 - та самая Runtime error 200.
Способов борьбы с этим много. Большинство описаны в ветке по ссылке.
Если очень надо, то могу поподробнее рассказать что и где конкретно глючит, но ты для этого должен нормально дружить с ассемблером.

------------------
Кто не боится Дьявола, тому не нужен бог.

mOOrmaN 09-03-2001 13:03

Ин принцЫп-то действительно надо. Есть пара старых прог (нечто вроде баз данных) которыми надо будет попользоваться некоторое время, и запускать при этом анрилы да архиваторы ну совсем неудобно. А на счёт дружбы с ассемблером я так знаю как он выглядит, call от mov отличу но всерьёз бодаться не способен, так что пардон http://www.kamrad.ru/forum/frown.gif

max3000 09-03-2001 18:07

Всё так, как сказал Xpert, только наоборот.
Т.е. количество циклов не зависит от скорости проца, а зависит только время. И делится не время на кол-во циклов, а кол-во циклов на время.
Ускоряй системный таймер, тока потом придёться вручную время править (или написать прогу такую). Я впрочем могу такую прогу написать - для ускорения и корректировки времени, но боюсь, что она будет работать только в ДОС'е и не слишком новых виндах. Если надо пиши.

Xpert 09-03-2001 20:16

2 max3000
Ну да, так и есть. Просто давно было, уже плохо помню.

А прогу я (с одним парнем) написал уже, она садится резидентом и забивает нужные регистры. Поэтому ошибка деления на 0 не может возникнуть. Если эту программулинку запускать до нужной проги, то все будет работать. По крайней мере, у меня - работает.
Могу по почте заслать, если кому надо.

------------------
Кто не боится Дьявола, тому не нужен бог.

max3000 09-03-2001 22:21

Зачем резиденты?
Просто ускоряется системный таймер. По тестам 800-й P3 станет, например сотым, если тест не будет трогать таймер, а в реале практически не замедлится. И всё будет работать как надо (если не будет трогать таймер). "Замедлить" можно где-то в 65535 раз.
Я, пожалуй, попробую написать прогу, но вот беда тестить негде, у самого 412МГц, вероятность ошибки очень низкая ~3%.

mOOrmaN 10-03-2001 14:16

2Xpert Надо, если не трудно зашли пожалуйста на orlov@tversu.ru
Кстати не очень понял: резидент в окне ДОС или для всей винды? (Хотя это уж не так принципиально)

Jazz 10-03-2001 14:22

Мне тоже уже понадобилось.
aleks96@mail.ru

Спасибо.

Xpert 11-03-2001 07:54

Двоим заинтересованным камрадам (Jazz & mOOrman) ушла передача в виде аттача http://www.kamrad.ru/forum/smile.gif. Т.е. разрекламированная мной утилитка обрела еще 2х новых владельцев.

------------------
Кто не боится Дьявола, тому не нужен бог.

Jazz 11-03-2001 08:59

2 Xpert

Спасибо.Пришло...

Romsan 11-03-2001 12:19

Хотя уже договорились... но всеж...
Я пользовался просто замедлителем... ЦПУ-Киллер...

mOOrmaN 14-03-2001 09:10

Xpert, спасибо, то что надо!

GoldenAndy 15-03-2001 10:51

Есть у меня програмулина, 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.
Любое использование материалов сайта
возможно только с разрешения его администрации.