alone wrote:Ибо у соседних кадров в общем случае разные сдвиги
эт врядли.. ведь адрес сдвига физически один, и не зависит от того какой экран отображается, основной, или альтернативный.. дык откуда взяться разному сдвигу?
alone wrote:Надо две отдельных скроллируемых области 256x256. Иначе невозможно работать на двух экранах (светить один, рисовать в другом).
Пожалуй ты прав, переключение по D3#7FFD должно обеспечивать смену экрана. Но тогда необходимо решить вопрос с выделением областей памяти под неотображаемую область скроллируемого экрана. Учитывая, что прокрутка может быть двухкоординатная, то под такой скроллинг должно выделяться как минимум 4 экрана. Основной проблемой здесь является то, что в разных видеорежимах экраны имеют разный объём, к тому же в перспективе объём будет расти, поэтому выделение областей под скроллинг должно быть масштабируемым. При этом не получится привязать область скроллинга к конкретным страницам памяти, т.к. объём ОЗУ у разных клонов разный, а конкретная привязка приведёт к невозможности оптимально использовать имеющуюся у клона память, отдав конкретные области сугубо под скроллинг. Поэтому, как мне видится, самым оптимальным решением будет закрепить под скроллинг плавающие адреса, зависящие только от конкретного клона, например два старших адреса адресного пространства ОЗУ - самый старший - вертикаьный, следующий за ним - горизонтальный скроллинг. Т.к. объём ОЗУ у разных клонов разный, то программа использующая скроллинг должна предварительно его определить и таким способом получить конкретные адресные разряды для адресации 4х экранных областей выделенных под скроллинг.