Назад Вперед Оглавление

10. Работа в X-Windows

Прочтите все это для более полной информации об X ;-)

10.1 Последние данные

From Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>:

xdos начиная с dosemu версии pre-0.60.4.2 с патчем из моих последних писем получил ряд новых возможностей. В частности, он должен теперь понимать клавиши с дополнительной цифровой клавиатуры (клавиши с праого края MF-клавиатуры), а также NumLock и keyevents в диапазоне латинских символов, даже если вы запустили xdos на удаленном X-терминале.

Если что-то не работает так, как ожидалось, проверьте следующее:

10.2 Более старая информация

From Rainer Zimmermann <zimmerm@mathematik.uni-marburg.de>

Некоторая базовая информация о поддержке X в dosemu. Она может даже оказаться полезной.

О чем нужно позаботиться:

10.3 Состояние поддержки X (Sept 5, 1994)

Done

10.4 Представление графических режимов (November 13, 1995)

Erik Mouw <J.A.K.Mouw@et.tudelft.nl> & Arjan Filius <I.A.Filius@et.tudelft.nl>

Мы внесли крупные изменения в X.c, которые позволяют под X работать в графическом режиме. К сожалению, при этом пришлось отключить поддержку cut-and-paste, но мы считаем, что графика гораздо интереснее (когда все установится, мы вернем cut-and-paste назад). Графика работает через vgaemu, эмулятор VGA. Состояние работы:

vgaemu

VESA

X

Erik

10.5 Новый код VGAEmu/X (July 11, 1997)

Steffen Winterfeldt <Steffen.Winterfeldt@itp.uni-leipzig.de>

Я работал над кодом для X и эмуляцией VGA последние несколько месяцев. Вот текущие результаты:

В текущей версии 4-х и 8-битовые SVGA режимы поддерживаются на всех типах X дисплеев. Режимы Hi-color поддерживаются только на дисплеях с в точности совпадающей глубиной цвета (15 or 16); режимы true color поддерживаются только на true color дисплеях, но всегда и 24- и 32-битовые.

Кроме того, сейчас в hi- и truecolor нельзя изменять размер окна графики, гамма-коррекция также игнорируется.

Поскольку типичный графический режим 320x200x8 часто будет использоваться со значительным масштабированием, а современные графические карты весьма быстры, я добавил кое-что для поедания времени CPU: вы можете включить билинейную интерполяцию. Она здорово улучшает качество изображения (но довольно медленная, т.к. у меня не было времени написать оптимизированную версию - пока она на обычном C). Если билинейный фильтр будет слишком медленным, попробуйте линейный, который интерполирует только по горизонтали.

Учтите, что (би)линейная фильтрация доступна не на всех комбинациях VGA/X-дисплей. В этом случае используются обычные процедуры рисования.

Если VGA-режим не поддерживается на текущем X-дисплее, экран графики просто останется черным. Это не значит, что xdos рухнул.

Поддержка VESA является (или должна быть) практически VBE 2.0 - совместимой. Для справок я использовал несколько документов, включая неофициальные спецификации VBE 2.0 от SciTech Software. Я сравнивал их с некоторыми реализациями стандарта VBE 2.0, включая SciTech's Display Doctor (ранее известного как UniVBE). К сожалению, реализация и описание разошлись в нескольких местах. В таких случаях я считал, что правильно так, как в работающей программе.

Единственная неподдерживаемая функция VBE - запись/восстановление состояния VGA. Но эта возможность редко используется, и ее отсутствие не должно вызвать много проблем.

VBE позволяет использовать горизонтальный и вертикальный скроллинг даже в текстовых режимах. Эта возможность не реализовывалась.

Если вы подозреваете, что линейный фрейм-буффер (LFB) вызывает неполадки, его можно отключиь в dosemu.conf, также как и интерфейс защищенного режима. Учтите, однако, что LFB работает быстрее, чем переключение банков, даже в DOSemu.

Список VBE-режимов по умолчанию включает много режимов среднего разрешения, удобных для игр (типа Duke3D). Вы можете также создавать собственные режимы в dosemu.conf. Однако учтите, что один и тот же режим не может быть определен дважды, второе (и последующие) определения будут проигнорированы.

Режимы, которые определены, но не поддерживаются из-за нехватки видеопамяти или за-за того, что они не могут быть отображены на вашем X-дисплее, помечаются в VBE-листе как неподдерживаемые (но остаются в нем). Учтите, что поддержки для 4-битных режимов VESA сейчас нет.

Существующий интерфейс между VGAEmu и X будет пытаться обновить сразу все некорректные видеостраницы. Это может, в особенности в VBE/SVGA режимах высокого разрешения, заметно нарушить обработку сигналов DOSEmu. В настоящий момент это не исправляется, но вскоре будет переработано (потем запуска отдельного процесса для обновления).

Если вы считаете, что именно в этом причина ваших проблем, попробуйте поиграть значением veut.max_max_len в env/video/n_X.c, возле строки 2005. Эта переменная ограничивает количество видеопамяти, которое обновляется за одно прерывание таймера. Это может существенно уменьшить нагрузку от обновления экрана, но в той же степени ухудшит качество картинки.

Гамма-коррекция работает как в 4, так и в 8-битовом режимах. Поскольку парсер файла конфигурации не понимает чисел с плавающей точкой, значение гамма в dosemu.conf должно указываться в процентах: gamma 100 = gamma 1.0. Большие числа дают большую яркость, меньшие - делают графику темнее. Разумные значения лежат в диапазоне 50 ... 200.

В файле dosemu.conf вы можете указать объем видеопамяти, который должен использовать VGA эмулятор. Это значение будет округлено вверх до ближайшего целого блока в 256К. Чтобы не запутать DOS-приложения, нужно использовать стандартные значения, например 1024, 2048, 4096. Учтите, что какое бы значение вы ни указали, 4-битовые режимы поддреживаются только до размера 800x600.

Вы можете влиять на начальный размер окна графики разными способами. Обычно это то же самое значение (в пикселах), что и в графическом режиме VGA, за исключением моды 0x13 (320x200, 256 цветов), которая растягивается в mode13fact раз (по умолчанию в 2). Либо, можно явно указать размер окна в dosemu.conf при помощи winsize. В любом случае потом вы сможете изменить размер окна.

Параметр конфигурации fixed_aspect позволяет зафиксировать отношение сторон графического окна при его масштабировании. Либо, aspect_43 устанавливает отношение сторон в 4:3. Идея заключается в том, что когда программа работает в DOS, она отображается на мониторе 4:3. Благодаря этому у вас не будет сложностей с режимами типа 640x200 (и даже 320x200), которые в противном случае выглядели бы искаженными.


Назад Вперед Оглавление
Перевод: Валерий Груздев (grue@vpti.vladimir.ru)

Примечание переводчика: данный файл подвергнут некоторым сокращениям, в основном опущены разделы "To Do" трех-четырехлетней давности.



Banner.Novgorod.Ru