Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Возможно ли использовать обработчики прерываний Real Moda в Protected Mode

Аноним
Я начал писать свою ОС. Тут же возникла проблема недокументированность и нестандартизированность функций VESA. Не понятно, какие порты используются. Существует ли способ, использовать стандартные обработчики в Protected Mode, или можно хотя бы вытащить номера портов из обработчика?
Заранее спасибо.
Mail [EMAIL]ksicom@rambler.ru[/EMAIL]
555
08 ноября 2001 года
AcidJAM
25 / / 20.05.2000
Похожая проблема !!
Тоже пишу свою ОС (Pr0tectedM0de).
Тоже проблемы с SVGA (aka VESA).
Как например винда программит VESA
например как меняет режимы переключает
банки видео, и т.д.
А про обработчики прерываний RM в PM думаю
так - стандартный обработчик прерываний сидит
в BIOS, и пашет только в RM (я так думаю),
конечно можно высчитать его адрес и заполнить
дескриптор в IDT так как надо, ну и что из
этого если стандартный обработчик шпарит только в RM ? Как например в PM исполнится инструкция mov ax, es[di]?

Best regardz from Acid JAM

mailto [EMAIL]jamk@mail.ru[/EMAIL]
716
12 ноября 2001 года
bugsy
5 / / 20.02.2000
Моно оно конечно моно - токе придёться в PM конкретно разобраться, что касается шлюзов, ловушек и прочее... А вообще, чтоб нормально с прерываниями работать в PM надо бы idtr (lidt [addr]) настроить нужными адресами обработчиков. Есть однако, средство не париться со всем этим - не реальный режим - хотя для ОС (в весовой категории Windows or Unix) не очень подходит.
Аноним
Щлюзы, ловушки и т.д. - это уже на финальной стадии подключения процедуры обработчика. Но ее нужно сначала написать!!! Для всевозможных дисковод, клавиатур, COM, LPT, PS/2, USB все просто. Там существуют закрепленные за ними порты. А вот с VESA по другому: каждая фирма прошивает BIOS видеокарты по своему. Стандарта на порты, как это было с VGA, нет. И ко всему прочему тела этих процедур написаны для Real Mode. Поэтому основная задача - выделить номера портов из процедур Real Moda. Хотя в настройках Winda я где-то видел что-то типа "чтение таблицы IRQ для защищенного режима из BIOS". Если кто-то знает как он это делает напишите пожалуйста.
Аноним
А Вы ничего об UNREAL MODE не слышали? - Это когда из защищённого обратно в реальный - получается весьма интересная штука... Кароче посмотрите инфу по этому поводу - может быть пойдёт...
1.0K
12 декабря 2001 года
SaultDog
2 / / 20.02.2000
Цитата:

On 2001-11-29 1200, Anonymous wrote
А Вы ничего об UNREAL MODE не слышали? - Это когда из защищённого обратно в реальный - получается весьма интересная штука... Кароче посмотрите инфу по этому поводу - может быть пойдёт...



UNREAL MODE - это вход в PM изменнение размеров сегментов до 4Г и возврат в реальный режим без перегрузки сегментных регистров. След. в реальном режиме возможно использовать большие сегменты (больше 64К). Сам не пробовал, но слышал. Первый о такой возможности упомянул Р.Коллинз.

Аноним
UNREAL MODE это конечно здорово, но размер 4Gb после перехода могут иметь только сегменты данных, а CODESEGи так и остаются 64KBайтными. И никакой тебе многозадачности и прочей ерунды, над которой интересно поломать голову.
Аноним
Функции VESA доступны через int 10 ,ah = 4fh,
или через специальный интерфейс защищенного режима предоставляемый одной из подфункций VBE 2.0. В последнем случае возвращается структура линейных адресов VESA-вских функций, которые можно вызывать из PROTECTED MODE.Переключение банков памяти советую похоронить т.к. лучше использовать LFB (Linear Frame Bufer).
Muromec ...
email [EMAIL]htmme@yandex.ru[/EMAIL]
Аноним
Спасибо за помощь !!!
Аноним
Цитата:

On 2001-11-08 0641, AcidJAM wrote
Похожая проблема !!
Тоже пишу свою ОС (Pr0tectedM0de).
Тоже проблемы с SVGA (aka VESA).
Как например винда программит VESA
например как меняет режимы переключает
банки видео, и т.д.
А про обработчики прерываний RM в PM думаю
так - стандартный обработчик прерываний сидит
в BIOS, и пашет только в RM (я так думаю),
конечно можно высчитать его адрес и заполнить
дескриптор в IDT так как надо, ну и что из
этого если стандартный обработчик шпарит только в RM ? Как например в PM исполнится инструкция mov ax, es[di]?

Best regardz from Acid JAM

mailto [EMAIL]jamk@mail.ru[/EMAIL]


Так, во первых винда VESA не пользуется, там за графику отвечает DirectX (точнее directDraw), который пишет данные прямо в память устройств (поэтому он быстрее чем LFB в VESA).
Во вторых вызвать прерывание реального режима из ProtMode можно через V86 (режим виртуального 86 процессора). Кто нибудь тут ваще про V86 слыхал? А то тут долго писать...

1.2K
24 августа 2002 года
Adler
4 / / 20.04.2000
Да, кстати, про UNREAL MODE: у кого-нить получилось писАть в память, а то у меня получается только чтение, может я чего-то неправильно юзаю. Хотя вроде сделал так, как у Зубкова написано.
А про прерывания... Почему-то мне кажется, что работать не будет, даже если настроить систему прерываний в защищенном режиме. Они по-любому где-нибудь да и обращаются по адрессам типа сегм:смещ, что не прокатит в РМ. А вот в v86 должно работать. Тока ето такая лабуда, я пробовал - забил....
572
29 августа 2002 года
Chingachguk
29 / / 20.01.2000
Насчет того, как в PM запускать обработчик RM. Винда(98) это делает сто раз, например - вызывает ЛЮБОЙ довесок-резидент на int 13h, зацепившийся из autoexec.bat. Или тот же русификатор из autoexec.bat. Конкретно вроде вызывается сервис какого-то там vxd. Также соответсвующие сервисы есть у DPMI(хоть из dos, хоть под вин) - они тоже способны вызвать обработчик RM. Делается это вроде через переключение в режим V86, на соотвественно описанную задачу(TASK). Подробнее можно прочесть у Финогенова - у него даже есть пример простого PM-менеджера, вызывающего из себя int 10h. Или протрассировать любой вызов прерывания из дос-окошка под виндами.
Аноним
Цитата:

В защищенном режиме прерывания реального режима работать не будут. Например при выполнении инструкции mov ds,ax в обработчике прерывания либо будет загружен неправильный селектор либо вообще произойдет исключение общей защиты по причине недопустимого селектора сегмента. Я считаю, что обработчик прерывания должен переводить процессор из защищенного режима в реальный, помещать в стек адрес возврата на "свою" процедуру и командой jmp прыгать на процедуру BIOS-овского обработчика. При воврате из прерывания на "свою" процедуру эта процедура переводит процессор обратно в защищенный режим.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог