Ситуация такая 1.Написал свою систему... 2.Хочу определить свой LFB в памяти в любом другом месте... Со стандартными LFB все понятно $B800(для текста) и $A000(для графики) Как установить другой линейный адрес для VGA? (VESA - это само собой) А как сделать это с помощью портов ввода/вывода К примеру процедура следующая: =================================== NewLFB: ;(Addr:int32-линейный адрес в памяти; SizeOfLFB:int32-размер этого самого буфера) ... В какой порт че выводить? mov al,? mov dx,? out dx,al ... ret ================================== plzz!!!
1) Не верю. 2) Сделай отображение страниц на нужный адрес. Возьми документацию на VGA и посмотри там вроде есть (или нет) выбрать $B800 или $A000 или $B000
Pavia Давно этим занимался. Есть мысли Он же вроде сделал уже себе режим линейной адресации. То есть скорее всего настроил регистр допустим FS на адресацию по всей доступной памяти (64 метра вроде... ограничение биоса) Далее ему нужно получить инфу о режиме через VESA биос. И адрес будет находиться в этой информации (для соответствующего видеорежима) (а именно двойное слово по смещению 28h - там адрес лин области видеопамяти). Вот его и ставишь как базу в дескрипторе FS. Вот только менять этот полученный адрес манипулируя контроллером ниразу нельзя (я не видел). Поэтому как мне кажется - это задача не решается таким методом. И вы правильно сказали - надо использовать страничную адресацию памяти.
Понимаете я сделал Разметку памяти... Переход в защищенный режим... Определил селекторы... //Текст то он выводит в $B800 Ну а графика сами понимаете 32 бита лучше чем 16 У меня есть буфер (допустим Screen.Height*Screen.Width*4(RGBW) размером) В адаптере по любому должен быть регистр хранящий начальный адрес LFB Что тут невозможного Pavia? Спасибо - TermoSINteZ!
По любому от печки придется писать что-бы вам объяснить другого пути я не вижу. Дыру PCI ты не подвинешь она по любому от 4ГБ отсчитывается. Есть похожий регистр который прямо влияет на положение LFB, только его менять как угодно не получится. А во вторых вы неправильно понимаете что такое линейный адрес и что под ним понимают разные вещи в интеловской документации это вполне определенный конкретный механизм, когда само по себе понятие гораздо шире. Отсюда линейный непрерывный адрес(LFB) и линейный адрес (x86) есть понятия совершенно разные. Остается только отображение, что я и предложил. Я не говорил что не возможно. При помощи страниц отображаешь физический адрес на линейный куда надо и все дела. OUT dx себя отжил. С чего вы взяли что через него надо вести работу?