Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > видо карта


Автор: Step 18.12.2002, 19:52
я знаю что видео карта через свои порты возвращает обратный ход луча,
вот я думаю а нельзяли с помощь этого  сигнала определить включин ли монитор или нет.
Подскажите.

Автор: Chingachguk 19.12.2002, 00:08
Ха ! Думаю, что вряд ли: питание моника - это напряжение на конденсаторах лучевой, а видеокарта рулит лучом безо всякой связи с этим напрчяжением...

Хотя мысль интересная !

Автор: Step 19.12.2002, 18:25
Да но видео карта от куда принимает сигнал обратного хода, когда нет питания на лучевой - не должно быть и этого сигнала. Так что видать мне придется заняться долгими экспириментами.

Автор: stab 2.1.2003, 00:59
В книге нашел вот чего, правда это под ДОС, но я думаю переделать можно:

void WaitVert()
{
 _asm
 {
   mov  AX, 0h
   mov  ES, AX

   mov  DX, ES:[463h]
   add  DL, 6
   in   AL, DX

   test AL, 8
   jz   wait_on

 wait_off:
   in   AL, DX
   test AL, 8
   jnz  wait_off

 wait_on:
   in   AL, DX
   test AL, 8
   jz   wait_on

 ; здесь операции, которые надо делать во время обратного хода луча
 }
}

поидее, когда нет обратного хода значит нет и питания и эта функции никогда не отработает если нет обр. хода, т.е. можно засечь время и посмотреть если в течение получаса :) нет обратного хода значит монитор отключен...

Работать это скорее всего не будет т.к. монитор сам настраивается под синхроимпульсы видеокарты и карта не знает есть ли вообще монитор. :(

Автор: ARTi 21.1.2003, 08:24
cully
все это конечно хорошо и даже почти верно (в книжке описан общий случай), но оно действительно не будет работать.

Дело в том, что синхроимпульс посылается самой видяхой монитору, а никак не наоборот! Поэтому обратный ход луча должен быть в любом случае, независимо от того, включен монитор или выключен. Такова логика работы. В VGA-регистрах CRT-контроллера есть даже такие, как начало/конец обратного хода луча по горизонтали/вертикали. А почти любая видяха становится VGA-совместимой, если переключиться в видеорежим 12h/13h.

Сейчас вспомнил подтверждение этого факта. Мой эмуль делает нестандартный видеорежим ~50 Гц. Раньше, когда настройка CRT делалась криво, монитору это не нравилось и он постоянно перенастраивался на видеорежим. У меня даже спец. кнопка была - F12 ;) для переинициализации видеорежима, иначе монитор мог полчаса показывать черный экран. А еще раньше и этой кнопки не было, я просто выключал/включал монитор. Такое вот зло... Ну и вот, поскольку там почти все завязано именно на обратный ход луча (прерывания Speccy 50 Гц и все такое), то в момент выключения монитора, по вашей "гипотезе", должно было бы наблюдаться торможение или вообще подвисание эмуля/эмулируемой проги (проигрывание музона, например), чего на самом деле не происходит.

Так что, дорогой step, отвечая на твой вопрос, скажу: нет, по обратному ходу луча невозможно определить, включен монитор или нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)