Загрузка процессора 100% (ntvdm)

Тема в разделе "WASM.BEGINNERS", создана пользователем veritas, 31 июл 2008.

  1. veritas

    veritas New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2008
    Сообщения:
    3
    Пишу тетрис для DOS на ассемблере.

    Проблема в том, что процесс ntvdm в Windows и dosemu в Linux стремятся загрузить процессор полностью. Но TD (Turbo Debugger) отнимает лишь 3%.

    Программа находится в непрерывном цикле. Но на самом деле ей достаточно лишь просыпаться по прерыванию таймера.

    Как мне подсказать операционной системе, что программу необходимо усыпить? Может быть (ntvdm,dosemu) реагирует на какие-нибудь известные вам функции BIOS или DOS и приостанавливает выполнение?
     
  2. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    А hlt не пробовал?
     
  3. veritas

    veritas New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2008
    Сообщения:
    3
    comrade
    Пробовал. Игнорируется как-будто это nop. Процессор грузится по прежнему.
     
  4. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    А cli+hlt?
     
  5. veritas

    veritas New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2008
    Сообщения:
    3
    Теперь программа не просыпается по таймеру (как с hlt так и без него).
     
  6. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    Посмеялсо...
     
  7. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    http://www.citrix.pp.ru/DOS.html
     
  8. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    http://www.tamedos.com/
     
  9. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    хальт в вдм-е не работает, вы чо! это ж привилегированная опкода
    из вдм-а заслипить тяжело, так с ходу и не посоветую, может и низя
     
  10. DeGlucker

    DeGlucker New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2002
    Сообщения:
    28
    Добавить в autoexec.nt
    lh c:\util\resfree 40000
     
  11. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    int 2Fh, ax = 1680h - отдать квант времени, эту функцию поддерживают куча DOS-окружений, в том числе Win9x и dosemu. Насчёт NT, впрочем, сомневаюсь.
    Вообще под NT-линейку очень рекомендую эмулятор dosbox - http://www.dosbox.com - там DOS'овские проги идут гораздо лучше, чем под самой виндой.
     
  12. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    из ntvdm-а можно вызвать родной Sleep через 0xc4 0xc4 (и свой длл-переходник потому что параметр передать там непросто)
    и этот гемор конечно не стоит того чтобы сбить загрузку цпу