OSDev http://osdev.su/ |
|
как перевести буквенно-цифровой режим в 40x25 http://osdev.su/viewtopic.php?f=7&t=635 |
Страница 1 из 3 |
Автор: | v4567 [ 29 сен 2012, 23:10 ] |
Заголовок сообщения: | как перевести буквенно-цифровой режим в 40x25 |
Используя функции биос-а буквенно-цифровой режим из 80x25 в 40x25 можно перевести следующим образом: Код: mov ah,0 mov al,1 int 10h как это сделать не используя функции биос-а и дос-а, только через регистры и порты. И ещё как через порты и регистры погасить курсор, через функции биос-а это делается так: Код: mov ah,1 mov ch,20h int 10h Только не спрашивайте зачем мне это надо. Если кто знает как это сделать помогите пожалуйста. За помощь заранее благодарен! |
Автор: | phantom-84 [ 29 сен 2012, 23:55 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
Добро пожаловать! Я занимался непосредственно программированием vga очень давно, но попробую ответить. 1. Вы хотите установить весьма древний режим. Я сам этого никогда не делал, но читал об этом. Скорее всего вам нужен регистр синхронизатора с индексом 1, бит 3. В доках, на которые я сейчас смотрю, они называются соответственно Clocking Mode Register и Dot Clock Rate (DCR). 2. Это можно сделать двумя способами: либо переместить курсор за пределы экрана, либо установить в регистре начальной линии курсора бит 5 (см. тут). Я использую второй способ. |
Автор: | v4567 [ 30 сен 2012, 14:46 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
phantom-84 спасибо за помощь, но хотелось бы получить более подробную информацию. Сейчас смотрю твою ссылку на форум. |
Автор: | phantom-84 [ 30 сен 2012, 21:55 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
v4567 писал(а): phantom-84 спасибо за помощь, но хотелось бы получить более подробную информацию. Типа выложить код и еще объяснить, как он работает? ![]() Код: #define VIDEO_SAR 0x3C4 #define VIDEO_SDR 0x3C5 ... /* синхронный сброс, т.к. будем перепрограммировать регистр режима синхронизатора */ outw(VIDEO_SAR,0x100); /* установка бита DCR */ outb(VIDEO_SAR,1); outb(VIDEO_SDR,inb(VIDEO_SDR)|8); /* возврат к нормальному режиму работы */ outw(VIDEO_SAR,0x300); Цитата: Сейчас смотрю твою ссылку на форум. Я там выкладывал код того способа, которым пользуюсь сам. А если хочешь перемещать курсор за пределы экрана, то для этого к примеру можно установить суперпозицию курсора в позицию сразу после последнего знакоместа, отображаемого на экране. Например, если у тебя стартовая позиция видеобуфера равна нулю, а на экране отображается 40x25=1000 знакомест, то установи суперпозицию курсора в значение 1000:Код: #define VIDEO_CRTAR 0x3D4
#define VIDEO_CRTDR 0x3D5 ... outw(VIDEO_CRTAR,0xE+(1000&0xFF00)); outw(VIDEO_CRTAR,0xF+((1000&0xFF)<<8)); |
Автор: | Golan [ 02 окт 2012, 00:26 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
фантом-84, подскажите как переключиться под виндой из графики в текст непосредственно через программирование портов? Понятно, что ринг0 |
Автор: | phantom-84 [ 02 окт 2012, 14:11 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
Странный вопрос ![]() |
Автор: | pavia [ 02 окт 2012, 20:42 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
Цитата: фантом-84, подскажите как переключиться под виндой из графики в текст непосредственно через программирование портов? Понятно, что ринг0 Ответ прост никак. Для этого видео драйвер экспортирует Int10CallBios Int10FreeBuffer Int10ReadMemory Int10WriteMemory Windows при необходимости смены режима пользуется этими функциями. В простейшем случае Int10CallBios можно сделать так сделать вызов CallBios и передавать туда параметры. CallBios реализуется при помощи перехода в реальный режим и обратно. |
Автор: | Golan [ 06 окт 2012, 15:34 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
решение все же есть http://exelab.ru/f/index.php?action=vth ... opic=19324 |
Автор: | phantom-84 [ 06 окт 2012, 21:15 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
Нифига. Я при первом переключении видеорежима в обязательном порядке перезагружаю шрифты, но, повторяю, при переключении из SVGA-режима это не всегда позволяет активировать VGA-совместимый видеорежим. Помогает только mov ax,3 плюс int 10h. Я конечно перестраховываюсь, т.к. при старте всегда активен текстовый режим, но все-таки. Я до этого дошел след. путем: если предварительно через BIOS включить какой-либо графический режим VESA, то мой код инициализации (первое переключение видеорежима) не всегда давал положительный результат. Если же между первым и вторым добавить код включения режима 3, то это работает в 100% случаев. |
Автор: | Golan [ 20 окт 2012, 11:59 ] |
Заголовок сообщения: | Re: как перевести буквенно-цифровой режим в 40x25 |
А что волшебного делает int 10? Почему нельзя в своем кодесе выполнить те же действия? |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |