80x25 with 100 Hz

Тема в разделе "WASM.ASSEMBLER", создана пользователем Exception13, 13 июн 2005.

  1. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Задался вопросом, надо бы частоту поднять в досовых приложениях. Написал простенький обработчик int 10h, в графике все нормально, с текстовыми режимами косяк... 100 Hz есть, но экран куда то в сторону съезжает, и отображается лишь правая его часть. Это ладно, такой финт еще можно списать на параметры развертки, но откуда берется градиентная заливка знакоместа этого я уже не могу объяснить :)

    пробовал утилиту VbeHz - не пашет, точнее корректно работает только в графических режимах.

    Параметры развертки для 80x25 гружу такие же как и для 640x400, в котором все нормально отображается.

    Может кто тоже боролся с этим, прошу откликнуться.
     
  2. Ykidia

    Ykidia Member

    Публикаций:
    0
    Регистрация:
    21 июн 2005
    Сообщения:
    99
    Адрес:
    Санкт-Петербург
    Очень давно этим занимался, выставлял текстовый режим 40x480 при высоте символа в 1 пикс. 50 Hz. Сейчас не помню точно, но вроде там какой-то сомнительный регистр есть в контроллере CRT, применительно именно к текстовому режиму. Значение - что-то вроде с какого места по горизонтали начинается отображение символов.

    Его значение, видимо, зависит именно от размера строки развертки и смещения, потому что при попытке варьировать ими этот регистр тоже приходилось менять.

    Если нужно, я могу посмотреть и вспомнить, в чем там дело. Но по крайней мере такая штука есть, потому что когда я начал играться с частотами, мне пришлось обратить на это внимание.



    Попробуй просто цвет бордюра поменять, и ты сразу узнаешь,списывать тебе финты на параметры развертки или нет.
     
  3. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Сыпасибо что кто то откликнулся.

    Да, конечно, играться со стандартным набором VGA регистров можно до бесконечности, иногда в графике возможно было получить и 99 герц, при этом экран жутко перекашивало :)

    Но, исходя из расчетов, а именно: если надо 100 герц, при разрешении 640x400, то PixelClock должен составлять примерно 33,44 МГц, а этого с помощью VGA регистров никак не вытянуть, максимум 28 МГц с копейками. Вот, именно по этому пришлось обратиться к VESA BIOS, там можно, но как оказалось не во всех режимах. Вобщем, я забил на это дело, пока, т.к. нашел простой выход: выставить VESA 132x60, символ 8x8, грузанул параметры развертки, и все без глюков. Безглючная работа с загруженными параметрами развертки наблюдается только для VESA режимов, почему, не знаю.

    P.S. а на исходники бы хотелось взглянуть...
     
  4. Ykidia

    Ykidia Member

    Публикаций:
    0
    Регистрация:
    21 июн 2005
    Сообщения:
    99
    Адрес:
    Санкт-Петербург
    А как ты грузишь параметры развертки?



    Какие исходники тебе интересно посмотреть? Если моего эмулятора Spectrum, то они имеют немалый размер, да и к тому же 10-летней давности :). Но сами части, отвечающие за работу с экраном, могу выдрать и послать.
     
  5. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    как параметры развертки то гружу, см. документацию к VBE 3.0, в кратце так:

    AX = 4F02h Set VBE Mode

    BX = Desired Mode to set

    D0-D8= Mode number

    D9-D10 = Reserved (must be 0)

    D11 = 0 Use current default refresh rate

    = 1 Use user specified CRTC values for refresh rate

    D12-13 Reserved for VBE/AF (must be 0)

    D14 = 0 Use windowed frame buffer model

    = 1 Use linear/flat frame buffer model

    D15 = 0 Clear display memory

    = 1 Don't clear display memory

    ES:lol: I = Pointer to CRTCInfoBlock structure



    вобщем, этот 11 битик выставляешь и подсовываешь ему структурку по адресу es:di следующего плана:



    CRTCInfoBlock struc

    HorizontalTotal dw ? ; Horizontal total in pixels

    HorizontalSyncStart dw ? ; Horizontal sync start in pixels

    HorizontalSyncEnd dw ? ; Horizontal sync end in pixels

    VerticalTotal dw ? ; Vertical total in lines

    VerticalSyncStart dw ? ; Vertical sync start in lines

    VerticalSyncEnd dw ? ; Vertical sync end in lines

    Flags db ? ; Flags (Interlaced, Double Scan etc)

    PixelClock dd ? ; Pixel clock in units of Hz

    RefreshRate dw ? ; Refresh rate in units of 0.01 Hz

    Reserved db 40 dup (?) ; remainder of



    Расшифровка поля флагов:

    The Flags field:

    D0 = Double Scan Mode Enable

    0 = Graphics mode is not double scanned

    1 = Graphics mode is double scanned

    D1 = Interlaced Mode Enable

    0 = Graphics mode is non-interlaced

    1 = Graphics mode is interlaced

    D2 = Horizontal sync polarity

    0 = Horizontal sync polarity is positive (+)

    1 = Horizontal sync polarity is negative (-)

    D3 = Vertical sync polarity

    0 = Vertical sync polarity is positive (+)

    1 = Vertical sync polarity is negative (-)



    например, для разрешения 640x480@100 параметры будут следующими:



    HorizontalTotal 840

    HorizontalSyncStart 672

    HorizontalSyncEnd 712

    VerticalTotal 509

    VerticalSyncStart 481

    VerticalSyncEnd 484

    Flags 0100b

    PixelClock (Hz) 42750000

    RefreshRate (0.01 Hz) 10000

    все параметры можно вытащить из калькулятора PowerStrip



    P.S. Интересуют все же исходники установки видеорежима. Я все никак не мог вогнать зачем такой кривой режим использовать :), но слово Spectrum поставило все на свои места... Классное решение, однако.
     
  6. Ykidia

    Ykidia Member

    Публикаций:
    0
    Регистрация:
    21 июн 2005
    Сообщения:
    99
    Адрес:
    Санкт-Петербург
    Пока выдираю код настройки видеорежима в отдельный модуль, у меня вопрос, правдв не совсем по теме... Эти VESA-навороты под виндой NT работают? Понимаю, что глупый вопрсо, но мало ли что...в полноэкранном режиме...а вдруг?

    Кстати, причем здесь PowerStrip?

    Спасибо за инфу, как-нибудь попытаюсь ею воспользоваться. Исходники (причесанные, а то так выкладывать - срамота ;))выложу, скорее всего, завтра.
     
  7. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Да, под виндой эти финты не пашут, проверено. Например в 2000 Winde вообще поддержку VESA отрубили, зато в XP все прекрасно пашет, за исключением тюнинга параметров развертки.

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

    P.S. За исходники буду премного благодарен...
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Exception13


    Уже давно безуспешно добиваюсь инфы по использованию VESA в NT. Можешь простенький пример под ХП прицепить или скинуть на valterg@inbox.ru

    Кстати MagicTune не использует VESA и работает напрямую через porttalk с портами. Я думаю и Power Strip также работает ?!
     
  9. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    valterg: "Кстати MagicTune не использует VESA и работает напрямую через porttalk с портами. Я думаю и Power Strip также работает ?!"

    Насчет напрямую с портами - сильно сомневаюсь, разве только через дрова видяхи.

    Вообще бардак, покупаешь себе железку какую нить, к ней - 2 сидюка, на одном драйвера с подробным описанием того как их устанавливать, а на другом спам какой нить, в основном ПО глючное. Так вот почему бы им туда мануал нормальный не засунуть на свой чипсет к примеру. (крик души :)

    Вот у Intel'a с документацией конечно порядок, а взять NVidia к примеру - там все глухо.
     
  10. Ykidia

    Ykidia Member

    Публикаций:
    0
    Регистрация:
    21 июн 2005
    Сообщения:
    99
    Адрес:
    Санкт-Петербург
    Вот исходники подрихтовал, выкладываю.

    Однако же очень многое выдрано за ненадобностью, если вопросы какие, задавай.



    Кстати, большое тебе спасибо, твоя просьба сподвигла меня на оживление - в эти дни я занимался перелопачиванием и переоформлением кода, для себя же, чтобы вспомнить, че я там подразумевал, корякая код лет 10 назад... Тупой я тогда был, комментов и дефайнов не признавал (разве что только в крайних случаях), писал через одно место... и ведь как-то работало, даже неплохо работало, но только в чистом DOS.

    А потом я как-то решил перевести все под DPMI, и все сдохло. Хорошо хоть 2-е рабочие исходники остались - работа под DOS в защищенном режиме вручную. А 1-е рабочие исходники, когда еще все работало просто под DOS в любом виде, я потерял... :'(



    Ох, что-то я на старости лет сентиментальным стал. Прекращаю свою тираду :).

    [​IMG] _1761345203__video.zip
     
  11. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    Большое сыпасибы тов. Ykidia за оказанное внимание.
     
  12. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Exception13



    Именно напрямую с портами. Правда Magic Tune не занимается выводом - это прога для "безкнопочной" настройки дисплеев фирмы Самсунг. И использует она DDC(I2C) без всякого VESA через порты.
     
  13. Exception13

    Exception13 New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    66
    Адрес:
    Владимир
    "Именно напрямую с портами. Правда Magic Tune не занимается выводом - это прога для "безкнопочной" настройки дисплеев фирмы Самсунг. И использует она DDC(I2C) без всякого VESA через порты."

    Про етот Magic Tune ничего сказать не могу, т.к. кроме названия о нем ничего не знаю. а через I2C, USB, это не понтово, тем более что речь шла про регистры видяхи а не про обмен данными напрямую с моником.