Пишу тетрис для DOS на ассемблере. Проблема в том, что процесс ntvdm в Windows и dosemu в Linux стремятся загрузить процессор полностью. Но TD (Turbo Debugger) отнимает лишь 3%. Программа находится в непрерывном цикле. Но на самом деле ей достаточно лишь просыпаться по прерыванию таймера. Как мне подсказать операционной системе, что программу необходимо усыпить? Может быть (ntvdm,dosemu) реагирует на какие-нибудь известные вам функции BIOS или DOS и приостанавливает выполнение?
хальт в вдм-е не работает, вы чо! это ж привилегированная опкода из вдм-а заслипить тяжело, так с ходу и не посоветую, может и низя
int 2Fh, ax = 1680h - отдать квант времени, эту функцию поддерживают куча DOS-окружений, в том числе Win9x и dosemu. Насчёт NT, впрочем, сомневаюсь. Вообще под NT-линейку очень рекомендую эмулятор dosbox - http://www.dosbox.com - там DOS'овские проги идут гораздо лучше, чем под самой виндой.
из ntvdm-а можно вызвать родной Sleep через 0xc4 0xc4 (и свой длл-переходник потому что параметр передать там непросто) и этот гемор конечно не стоит того чтобы сбить загрузку цпу