На самом деле с интересом прочел ветку. К сожалению моих знаний в электронике пока недостаточно. Если бы в виде конструктора было, то было бы здорово.
Насчет ISA-8 Должно получиться что-то вроде MDA?
Я с силами собирался все это время, чтобы начать рисовать ее как раз на ISA8. Вчера тему еще раз пересматривал, как раз прикидывал. Лично мне - была бы очень интересна.
- - - Добавлено - - -
Но, надо еще ставить ПЗУ для своего обработчика int 10h, и первоначальной инициализации. Но это мелочи и сравнительно не сложно, я могу BIOS написать. Основная загвоздка в памяти, в текущем формате отображения символов-аттрибутов. Очень многие программы в DOS пишут в видеопамять напрямую, тот же Volkov Commander, например. И с текущим представлением получится ой. То есть скорее всего надо подстраиваться к стандартному виду отображения символов-аттрибутов как в CGA текстовой памяти - сначала один байт по 4 ниббла аттрибутов, второй байт - символ (255 значений). Иначе многие проги не будут корректно работать.
Или, плохой вариант - не ставить ПЗУ, не менять карту памяти, и не отображать эту видеокарту по стандартному 0xB8000h. Вообще, увести ее в область дополнительных ROM, ну типа скажем в 0xE0000 куданибудь или 0xD8000. И запускать совместно с другой, скажем обычной VGA картой, а инициализировать программно и выводить туда какие-нибудь показания погоды на марсе, часы, матерное слово во весь экран на второй монитор. Но это конечно в разы менее интересно.
Можно еще конечно программно-аппаратно сделать переконвертацию из CGA представления текстовой памяти в текущий формат dual-head. Карта будет висеть вне области текстовой видеопамяти, опять же где-нибудь в 0xE0000 например, а при попытке записи в стандартные 0xB8000 повесить регистры-защелки, в одном или двух сохранять адресу куда произошла попытка доступа, в другом что хотели записать. И вызывать после защелкивания прерывание IRQ. В BIOS же по прерыванию читать значение регистров-защелок и конвертировать в представление dual-head и записывать значения в 0xE0000h. Но, чревато тормозами и занятым IRQ, которых и так в XT раз-два и обчелся.
Короче, самая жопа в несоответствии символов-аттрибутов в памяти dual-head вг75 со стандартным отображением символов-аттрибутов текстовой памяти CGA/EGA/VGA видеокарт.
klingon, конечно же будет в виде конструктора, для начинающих она сложновата в плане подбора комплектующих. Но не MDA, скорее текстовая VGA, она ближе к ее режимам. 03h у неё режим по дефолту. И ещё можно запрограммировать в режимы 80х30, 80х50, 80х60. Но я уберу всю ту ересь с кучей джамперов для изменения режима видеошины, что я сделал для 8ми битников. Толку 0, этим ни кто не может воспользоваться. Также уберу регистр страниц, у РС достаточно места под видеобуфер отведено.
Tronix, спасибо за интерес. Не спешите пока ничего рисовать. Я хочу рассказать, что с ней можно сделать. Для начала я переделаю дешифрацию адресов видеопамяти. Она будет отображаться вся 32к в b8000h. Порты предполагаю использовать 300-31fh. На некоторые миди порты можно забить, этот диапазон для прототипов отведён. Для овместимости с не корректным ПО, на прямую пытающимся писать в видеопамять, приведу биты атрибутов в соответствие нормальному режиму 03h. Ну и сделаю дешифратор для выборки видеобиоса c0000h. 2764 пзу хватит, добавлю ее в схему.
Что мы получим в итоге? В итоге мы всунем эту карту вместе с обычной vga. На этапе загрузки dos проинициализируем вручную в режим 03h. И если все сделано правильно, увидим изображение с vga видеокарты. Ну хоть что то. А потом уже можно писать видеобиос. Он будет очень простой, так как железо простое.
- - - Добавлено - - -
Я хочу поменять концепцию. Раньше это был универсальный видеоадаптер, теперь нет. И он станет даже проще. И раз будет работать в основном под dos, то и аппаратная поддержка koi8r ему не нужна. Освобождается одна страница знакогенератора. Стоит ли ее оспользовать для шрифта 8х8 и колхозить видеорежим 40х25 или оно нафиг не надо?
- - - Добавлено - - -
Я склонен считать что не нужно.
Вот это самое важное, да. Это сразу переводит плату из разряда игрушки в разряд полнофункционального вообщем-то устройства.
Да можно наверно без проблем. В случае чего если ИД7 будет в дешифраторе можно туда-сюда подвигать по адресам, не критично.
За глаза. Наверное бы у в 2кб уложились, но 8 так 8. Их проше найти и программировать, тем более електро-стираемые AT28C64 удобней на период отладки, чем каждый раз 2716 уф стирать.
Тут конечно интересный момент, с одним и тем же адресом у двух устройств... Если при записи наверное должно записаться и в VGA и в эту плату, то что будет при чтении? А VGA при своей инициализации активно чето пишет-читает в память, да и потом, в досе уже может тоже читать из памяти при скроле там например и тд. Тогда этой плате надо запретить на время операцию чтения вообще, какой-нить джампер поставить, или 0 ом резистор, чтоб разорвать /MEMR можно было ....
Но в целом все так, крутая видяха получится, особенно полностью на отечественной эл базе собрать. Вид будет иметь однозначно!
- - - Добавлено - - -
Я тоже думаю не нужно 40x25
Tronix, конечно на время отладки без /memr. Поставлю джампер.
Я тут подумываю, что у меня только 6 бит атрибутов цвета. Вобще 7, но один уходит на старший бит кода символа. Получается, что придётся остаться без битов яркости и довольствоваться 8 цветами фона и символа. На сколько это считается критично? Может поставить ещё одну вг75 и выдавать все 8 бит атрибутов? 3 ВГ75 могут 21 бит выдать. Это более чем достаточно и к усложнению архитектуры видеогенератора не приведёт. Напишите своё мнение.
Мне кажется критично. Все-таки 16 цветов нужны для VGA... В голом дос конечно не используется, а вот в различных IDE типа TurboPascal или Borland C - вполне. Да и во многих других дос программах с оконным интерфейсом. Три ВГ75, так три, чего мелочиться -)
И еще по поводу знакогенератора (шрифта) - интересно, а сильно сложно сделать его загружаемым и изменяемым? То есть поставить ОЗУ вместо ПЗУ, или вообще использовать основную ОЗУ где-то в конце памяти? Сорри, но до сих пор не понимаю как все это работает, поэтому такой дурацкий вопрос. В int 10h есть функция 11h, позволяющая загрузить свой шрифт, но я точно не знаю, используют ли эту функцию Norton Utilities, и например, заставка Award Bios при загрузке компа, или же напрямую через порты разлочивают вторую битовую плоскость и пишут туда, потом через порты залочивают обратно и переключают на нулевую биттовую плоскость. По-идее, все-таки менять шрифт должны через int 10h. Щаз посмотрю как я это в детстве делал, а то забыл уже все напрочь...
https://habrastorage.org/webt/aw/fm/...of5vccwv0s.png
Ну, шрифт то я грузил через int 10h ax=11h, а вот псевдо-графический курсор мыши уже через порты, ибо скорость нужна...
Ну, не знаю, вообщем если можно сделать загружаемый знакогенератор минимальными потерями- наверное лучше сделать, пускай только через биос будет работать, но все равно хоть что-то.
Tronix, вг75 стоит 25р, думаю сумма вполне посильная:) Будет 3. А перед ними аппаратный перестановщик бит. Т.е. видеопамять будет содержать тоже самое, что и у обычной vga карты.
Насчёт загружаемого знакогенератора: да можно и туда пробросить внутреннюю видеошину. Цена вопроса 3 мультиплексора, 1 двунаправленный шинный формирователь 3 регистра. В общем то ничего особенного по схемотехнике. Но это огромная логическая проблема использования устройства, так как оно автоматически приобретает графические видеорежимы. 640х400, 640х480 и все их производные. И сейчас я не готов это применять. Поэтому давайте оставим знакогенератор в покое и на 11ю функцию поставим заглушку
Да, фиг с ним. Можно просто не сообщать программам что это VGA, а они уже там пускай сами разбираются что в этом случае делать. По идее тогда они не должны использовать загрузку фонтов и прочие прелести VGA. Ничо, нормально будет.
Тогда на выходных нарисую схему, покажу. И можно к плате приступать. А загружаемый ЗГ и графические режимы оставим на будущее.
https://yadi.sk/i/k_l5dyz0KbCM6Q
Вот нарисовал. Изменений много и проект сложный, поэтому, чтоб не перегружать мозг, я буду описывать поэтапно выполненные изменения. Вы, не торопясь, по мере проверки правильности моих мыслей и соответствия их текущей схеме, высказывайте дополнения, исправления, задавайте вопросы или просто говорите далее. Я буду переходить к описанию следующего изменения. И так, пока не выяснится, что пора разводить плату.
Сегодня начну с дешифрации адресов: Из сигналов управления, задействован только AEN. Вдруг у кого то звуковая карта есть или контроллер дисковода. Если он активен, то дешифратор адресов памяти и портов заблокирован. И реакция на сигналы чтения и записи не возможна. На схеме выходы дешифратора адресов памяти подписаны диапазонами, проверьте чтоб все было так как написано. Дешифратор портов работает в два этапа. Сперва выделяет базовый адрес 32-адресного блока (u3b,u17), а потом этот блок дешифруется на внутренней шине на 8 4-адресных блоков (u16) и распределяется.