портировать DOS -> WIN

Тема в разделе "WASM.RESEARCH", создана пользователем microprogs, 26 фев 2006.

  1. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Hi.

    Есть некая программа(работает с одним железом через 2 COM-порта), которая прекрасно работает под ДОС, а под Win XP ругается на нестабильную работу то ли COM-портов, то ли таймера... Та же ругань и под Virtual PC и под VMWARE...

    Под Win 98 - другая ругань - работа под Windows невозможна...



    Устроена так:

    сначала мы запускаем оболочку - интерфейс, и после нехитрых манипуляций прога запускает один из 15 exe файлов(протоколов) - файлов работы с данным железом по данному протоколу.



    Какие есть методы портирования старой ДОСовской проги под WIN???



    Я взял за основу один файл - протокол, т.к. они все имеют одинаковую структуру...

    После того, как я его распаковал, я его в IDA запихнул - вроде жить можно, но 500 проблем IDA все же выдала.



    Я подозреваю, что проблема либо в контроле COM-портов, либо в контроле таймера...

    Что можно сделать в этой непростой ситуации???

    После ковыряния я выяснил - что она написана на Borland Turbo C, это может помочь при изучении...
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    CreateFile насколько я правильно понял MSDN - 2003 работает с COM-портами.

    Что если код досовской проги там где она обращается к com портам перенаправить к этой апи?
     
  3. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Во первых нет исходников, во вторых IDA дизассмемблировала, но ее еще надо обучать, т.к. там 500 проблем, в третьих программа довольно сложна и использует 2 COM порта на полную катушку...

    Прогу не устраивает виндовая NTVDM.EXE эмуляция ДОСа, можно ее как-нибудь форсировать, я еще точно не понял, дело в таймере или в COM-портах - прога выдает сообщение "Ненадежная частота...", может есть способы перехвата от NTVDM, а потом самому обрабатывать работу двух COM-портов этой проги?
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Ну так исходники и восстановить можно...
     
  5. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Там 15 EXE-шников, а каждый весит по 300 KB, работа с протоколами сделана как-то хитро. Прога 92 года...

    К тому же на каждый файл у IDA находится 500 проблем, и хотя их все можно устранить, но на это уйдут месяцы...

    У меня валяется очень хороший декомпилятор TurboC, но эту прогу он не берет - там что-то много нестандартного наделали...

    Да и потом даже обычным дизассемблированием и патчем придется очень долго переводить работу с COM-портами в нормальное состояние, да и не факт, что будет работать, ведь если нестандартно написали, то наверное были причины...

    И потом у нее все еще остается тема: "работа под WIN невозможна", как портировать? Может какие-то методы перехвата?
     
  6. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Скорее всего, помимо непоср. доступа к железу, проге нужен и точный тайминг (нт/хр не дает ни того, ни другого). Открытие доступа к портам здесь вряд ли поможет. Можно попробовать запустить в DosBox, если не получится -- тогда в WASM.COMMERCIALS. ;)
     
  7. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Было бы финансирование, так можно и декомпильнуть, тем более, если это ТurboC, я с ним много работал. В этом случае перемещай топик в коммерческие предложения.
     
  8. microprogs

    microprogs New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2006
    Сообщения:
    54
    Отчего же сразу коммерция? ;)

    Я просто сказал, что простое дизассемблирование мне пока лень применять(слишком большой объем), может найдутся более удачные способы...

    15*300KB...

    Кстати, а если каким-то образом монополизировать таймер в WINXP на время работы этой проги?

    Может использовать какой-то особенный драйвер COM-порта?
     
  9. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ




    не знаешь что делает таймер в WINXP? долго будешь портировать