Hi. Есть некая программа(работает с одним железом через 2 COM-порта), которая прекрасно работает под ДОС, а под Win XP ругается на нестабильную работу то ли COM-портов, то ли таймера... Та же ругань и под Virtual PC и под VMWARE... Под Win 98 - другая ругань - работа под Windows невозможна... Устроена так: сначала мы запускаем оболочку - интерфейс, и после нехитрых манипуляций прога запускает один из 15 exe файлов(протоколов) - файлов работы с данным железом по данному протоколу. Какие есть методы портирования старой ДОСовской проги под WIN??? Я взял за основу один файл - протокол, т.к. они все имеют одинаковую структуру... После того, как я его распаковал, я его в IDA запихнул - вроде жить можно, но 500 проблем IDA все же выдала. Я подозреваю, что проблема либо в контроле COM-портов, либо в контроле таймера... Что можно сделать в этой непростой ситуации??? После ковыряния я выяснил - что она написана на Borland Turbo C, это может помочь при изучении...
CreateFile насколько я правильно понял MSDN - 2003 работает с COM-портами. Что если код досовской проги там где она обращается к com портам перенаправить к этой апи?
Во первых нет исходников, во вторых IDA дизассмемблировала, но ее еще надо обучать, т.к. там 500 проблем, в третьих программа довольно сложна и использует 2 COM порта на полную катушку... Прогу не устраивает виндовая NTVDM.EXE эмуляция ДОСа, можно ее как-нибудь форсировать, я еще точно не понял, дело в таймере или в COM-портах - прога выдает сообщение "Ненадежная частота...", может есть способы перехвата от NTVDM, а потом самому обрабатывать работу двух COM-портов этой проги?
Там 15 EXE-шников, а каждый весит по 300 KB, работа с протоколами сделана как-то хитро. Прога 92 года... К тому же на каждый файл у IDA находится 500 проблем, и хотя их все можно устранить, но на это уйдут месяцы... У меня валяется очень хороший декомпилятор TurboC, но эту прогу он не берет - там что-то много нестандартного наделали... Да и потом даже обычным дизассемблированием и патчем придется очень долго переводить работу с COM-портами в нормальное состояние, да и не факт, что будет работать, ведь если нестандартно написали, то наверное были причины... И потом у нее все еще остается тема: "работа под WIN невозможна", как портировать? Может какие-то методы перехвата?
Скорее всего, помимо непоср. доступа к железу, проге нужен и точный тайминг (нт/хр не дает ни того, ни другого). Открытие доступа к портам здесь вряд ли поможет. Можно попробовать запустить в DosBox, если не получится -- тогда в WASM.COMMERCIALS.
Было бы финансирование, так можно и декомпильнуть, тем более, если это ТurboC, я с ним много работал. В этом случае перемещай топик в коммерческие предложения.
Отчего же сразу коммерция? Я просто сказал, что простое дизассемблирование мне пока лень применять(слишком большой объем), может найдутся более удачные способы... 15*300KB... Кстати, а если каким-то образом монополизировать таймер в WINXP на время работы этой проги? Может использовать какой-то особенный драйвер COM-порта?