И так, начну новую тему для узкого круга людей.
Для начала, все споем дифирамбы уважаемому SokilOff, который просто-таки маг и чародей.
Теперь по делу.
Что пробовалось:
Собрать классические видео и аудио драйвера. Видео, просто-таки выели мне мозг. Оказалось один bmp из ресурсов почему-то в каком-то странном формате. Как рисунок читается и распознается, а в ресурсы собраться не может. Пришлось его пересейвать и тогда все поехало. Но пока я до этого допер, пришлось написать свой дизассемблер (русурсы в формате вин 2.0 ни одна известная Гуглу тулза не поддерживает). Потом долго и нундо разбирался почему файл в ресурсы не лезет. В конце-концов драйвер собрался. Тут же пошли версии, ЕГА, ВГА, ВЕСА 800х600 - все круто. Правда, увы, предложенные примеры "гвоздями прибиты" к совим карточкам и адаптировать их ох как не легко. Наипростейший ВЕСА драйвер еле-еле склепал, и то не уверен что хитрых ошибок нету. Теперь про планы.
1. Пока играюсь с видео драйверами в трех направлениях:
1а. Универсализация. Чтобы ЕГА-ВГА-ВЕСА драйвер различались лишь набором переменных в памяти. В последствии их можно будет расширить вплоть до переключения режима без перезапуска Винды. Но, пока, это очень отдаленная перспектива, так как все значаения похардкоджены, вплоть до выделения памяти. Не знаю, как отреагирует система, если менять эту чать на лету.
1б. Большие расширения. Превые три режима хороши по двум причинам. Во-первых, все они включаются "старым" методом. Начиная с 1024х768, принцип обращения к БИОСу немного меняется. Но не это главная проблема. Есть еще одно дикое место. Не уверен точно, но скорее всего еще начиная от монохромных драйверов, винда немного нестандартно работает с адресами. Не углубляясь в подробности, лишь скажу, что для существующих методов отрисовки используются переменные, в которые должны влазить количество пикселей, на экране поделенные на 8. Легко посчитать, что 800х600/100 = 60 000 еще влазит в наши родные 16-бит. Любое большее расширение уже вылезет. Стало быть эту фигню придется всю переписывать, а это оооочень долго.
1в. Глубина цвета. Как я и предполагал, Винда 1.х и 2.х работает с 24-битным тру-колором, и ей пофиг, куда она передает изображение. Этим уже занимаются непосредственно драйвера. Хотелось бы для начала расшириться с 8-ми ыветов до 16-ти (так и не понял, пока, поечму Винда ограничина 8-мью цветами. захардкодженные таблицы есть, а пояснений нет). Надеюсь, эта задача не такая уж катастрофически сложная. Второй шаг - это 256 цветов, или же 24-бита. Впринципе, задаи сопоставимые по сложности. Но для этого нужно будет переписать всю рутину отрисовки.
Кстати, по 1-му пункту еще можно добавть, что я, впринципе, могу поменять все кнопочки, чекбоксики и т.д. на более опрятные, но пока, только двухцветные. Можно будет подумать о том, чтобы поправить рутину для поддержки хотя бы 8 цветов, и получить винду 2.х в стиле 3-ки. Но это не так важно.
2. Перспективы аудиодрайвера. Первоначально я просил драйвера для того, чтобы потюнать свой миди-плеер. Но уже получив их, я задумался, что я получу на выходе. Если вынести существующую миди-рутину на аудио драйвер, я получу грустную ситуацию: плеер, для которого нужен специальный дистрибутив и дистрибутив, поддержаный единственной программкой. Грустно немного. Можно, правда пойти двумя другими путями:
2а. Расширить драйвер, согласно более поздним API для мультимедиа. Но, увы, опять же, я не вижу ни одного программиста, который бы взялся писать или адаптировать софт, даже под стандартное API для Вин 2.х. Проблема, описанная выше, не снимается.
2б. Адаптировать существующие методы. Получится немного интерестная фича. Например, тот же биииип Винды, будет уже звучать, как мидишная нотка. Весь существующий софт, использующий бипер, зазвучит по-новому. Только, вот увы, такого софта я не знаю . И вторая, более серьезная проблема, то что классическое звуковое (не мультимедийное) API убого, и проигрывание миди через него будет ужастного качества.
Что посоветуете по этому пункту?
3. Клавитаура. Многоязычность наше все. Но, потом, руссификатор и так существует
4. Память. На пенсии выучить принципы работы DOS4GW и перенести его на Вин2, чтоб под "двойкой" использовать 4 гига оперативки
Как-то так. В аттаче черновая версия дров 800х600.