8086+FPGA

16-битные ПЦ-совместимые компьютеры с процессорами 8086/8088/80286 работающие под управлением ДОС

Moderator: Shaos

newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: Реальный 8086/88 + FPGA

Post by newold86 »

Vic3Dexe wrote:В данный момент дописываю видео-биос (int 10h).
А почему, если адаптеры совместимые, не взять родные BIOS'ы ???
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

newold86 wrote: А почему, если адаптеры совместимые, не взять родные BIOS'ы ???
И держать их 3 штуки почти одинаковых в памяти? Тем более в ега-биосе МОРЕ багов. Обнаруживаются простым сравнением с VGA-биосом. Тем более, что они рассчитаны на возможную установку вторым номером CGA/MDA. Да плюс ненужные тесты памяти и отдельных чипов ега. Зачем это все себе тащить?
Last edited by Vic3Dexe on 16 Feb 2016 16:48, edited 1 time in total.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: Реальный 8086/88 + FPGA

Post by newold86 »

Насколько я понял, при создании адаптеров пошли по пути не моделирования функциональности (как у меня в CGA), а по пути (практически) полного воссоздания внутренней структуры адаптеров ? Если так, откуда брали подробную информацию по всему этому ?
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

Нет, я как раз повторял функционал, но кое-где для этого понадобилось понять структуру карты.
В сети полно инфы по организации EGA/VGA (оттуда и брал), но стоит копнуть чуть глубже - начинаются нестыковки. Поэтому месяца два ушло просто на понимание как оно работает до регистров включительно. Единственный регистр, который я не знаю как оформить - byte panning в CRT-контроллере у VGA. Ну и фиг с ним.
Last edited by Vic3Dexe on 16 Feb 2016 16:48, edited 1 time in total.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

Подумал, что будет нелишним список литературы. Не упоминаю тут всякие взаимокопипасты разных Фроловых и пр. википедий. Неинтересно и очевидно. Только хардкор :)

Во-1 первоисточники:
- IBM EGA tech ref
Несмотря на приличное кол-во ошибок и иногда просто бессмысленные фразы, содержит сокровище, а именно схему электрическую принципиальную оригинального EGA. Оттуда я почерпнул бОльшую часть инфы. На той же страничке можно стащить аналогичные доки (со схемами!) на CGA и MDA.
- IBM VGA/XGA tech ref
Увы, без схемы, да она и не помогла бы по причине изначальной однокристалльности VGA. Описания регистров похожи на таковые из егашного мануала - расплывчато, но если подумать...

Во-2 по мотивам:
- VGA Programmers Master Reference Manual by Andrew Scott
Документ на 90% состоит из воды, причем первая половина - на 100% (ее можно не читать вообще). Зато вторая половина дает представление о некоторых неочевидных моментах (сдвиговые регистры в GC как пример). Впрочем, тоже не без бредятины.
- INTRODUCTION TO MODE X by Robert Schmidt
Несмотря на всю попсовость (а также наличие ОЧЕНЬ серьезной ошибки) сей опус, точнее его картинки, помогли мне повернуть мозги в правильное русло. За что и отмечен.
- О том, почему в CGA-режимах EGA-монитор не покажет 64 цвета.
Многое объясняет, несмотря на непритязательный вид - маст хэв.


Буду дописывать по мере борьбы со склерозом.
Last edited by Vic3Dexe on 16 Feb 2016 16:48, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Реальный 8086/88 + FPGA

Post by Lavr »

Вот тут несколько сомнительные сведения... За давностью времени проверять уже смысла нет,
хотя всё железо у меня в полной сохранности в кладовке. :lol:

На своем 286-м компьютере с EGA-картой наблюдал очень интересные режимы! :o
Поскольку монитор у меня был в то время - "Электроника 32 ВТЦ 202", то характерные для EGA
режимы разверток он не понимал, а я не стал вмешиваться в его электронику.

На типичных EGA режимах синхронизация срывалась просто, но вот на игре "Поле Чудес"
синхронизация была устойчивой, только часть картинки уходила за экран вниз. :wink:

И такой-же режим я наблюдал еще в одном интересном эксперименте. Когда уже я сам
работал на приличной машине под Win 98, я на этой 286-й делал эксперименты по различной
установке Win 3.1, поскольку оказался у меня оригинальный дистрибутив на дискетах.
Так самый интересный эксперимент заключался в том, что на 286-ю машину с EGA-картой
можно поставить Win 95! :o , хотя все утверждают об невозможности такого.
Win 95 должна ставиться не из дистрибутива, а как апгрейд Win 3.1 - был такой вариант.
При этом синхронизация на "Электронике 32 ВТЦ 202" устойчивая, но весь низ рабочего стола -
также внизу за экраном вместе с кнопкой "Start". :D
Если помнить горячие клавиши Win 95, то он даже пытался шевелиться! :o Хотя вызов
того же Проводника приводил к краху системы. А вот Блокнот и Пейнт - тужились поработать,
как, впрочем, и Пасьянс. :roll:


P.S. Черт возьми.. когда даешь ссылку на древние игры, вечно начитаешься чего-то, чего сам не знал! :lol:
Краткий курс истории фирмы SIERRA ON-LINE
iLavr
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Реальный 8086/88 + FPGA

Post by jdigreze »

[offtop]
Lavr wrote:Так самый интересный эксперимент заключался в том, что на 286-ю машину с EGA-картой
можно поставить Win 95! :o
Хм. Первый раз о таком слышу, ибо вроде бы как Win95 позиционировалась аки 32bit only.
А вот 16bit версию тогда ещё Windows Commander, в последнее время известного как Total Commander, я запускал в Win 3.1.
[/offtop]
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

Lavr wrote: На своем 286-м компьютере с EGA-картой наблюдал очень интересные режимы! :o
Поскольку монитор у меня был в то время - "Электроника 32 ВТЦ 202", то характерные для EGA
режимы разверток он не понимал, а я не стал вмешиваться в его электронику.

На типичных EGA режимах синхронизация срывалась просто, но вот на игре "Поле Чудес"
синхронизация была устойчивой, только часть картинки уходила за экран вниз. :wink:
Не совсем понял, что именно сомнительно по ссылке.
Если предположить (я просто не в курсе), что Электроника была CGA-подобной, то вполне логично, что EGA-режимы она не умела (частоты повыше) или умела не до конца.
И в статье речь немного о другом - что если подключен EGA монитор к EGA-карте, но заказан 200-строчный режим (полярности синхры NN), то монитор забивал на R'B' линии, а G' воспринимал как интенсивность, т.е. вел себя как CGA с 4 линиями цвета, итого имея 16 цветов, хотя карта способна отдать 64. Что объясняет разницу в значениях регистров ATC для нативных EGA-режимов и CGA-эмуляции.

Или я чего-то не так понял?

А у Вас оригинальная IBM EGA или клон? Потому что с регистрами курсора у меня беда. Оно-то работает, но 100% не так, как надо бы. А проверить мне не на чем, самое старое железо - целерон 2 ГГц :(
Last edited by Vic3Dexe on 16 Feb 2016 16:49, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Реальный 8086/88 + FPGA

Post by Lavr »

jdigreze wrote:вроде бы как Win95 позиционировалась аки 32bit only.
А вот это я с удивлением слышу! :o Win95, Win98 и вроде даже WinМе - это смесь
32-битного и 16-битного кодов у них даже основные библиотеки в 2-х экземплярах,
это уже я сам проверил на своей Win98.

Собственно, поэтому эту линию Win и бросили развивать - нельзя обеспечить устойчивость
системы при таком "винигрете".
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Реальный 8086/88 + FPGA

Post by Lavr »

Vic3Dexe wrote:Не совсем понял, что именно сомнительно по ссылке.
...
Или я чего-то не так понял?
Я предполагаю, что программированием EGA, вероятно, можно достичь и желаемой глубины цвета,
раз уж можно сделать EGA режимы с CGA разверткой.
Сейчас просто это всё неактуально получается - на современном нелучевом мониторе изыски настройки не увидишь.
Мне почему интересно было - из документации вроде как получалось, что можно программированием EGA
загнать её в режим сходный с разверткой "Специалиста" - хотел в эмуляторе такой режим сделать...
Vic3Dexe wrote:А у Вас оригинальная IBM EGA или клон? Потому что с регистрами курсора у меня беда.
Полагаю, что клон... ибо кто бы мне припас оригинальную IBM EGA на Горбухе за приемлемую цену в то время...

Вот типа такой EGA-карта у меня была:

Image

Оригинал сейчас глянуть не смогу - далеко это все уже сложено, разбирать шкаф неохота...
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

Lavr wrote: Я предполагаю, что программированием EGA, вероятно, можно достичь и желаемой глубины цвета,
раз уж можно сделать EGA режимы с CGA разверткой.
Можно вполне. Карта будет отдавать полный 6-битный цвет. Затык ведь в мониторе, который думает, что он подключен к CGA-адаптеру при 200 строках.
Меня другое смущает - в EGA-биосе нет защиты от включения EGA-режимов (т.е. 350 строк) при CGA-мониторе. Я понимаю что баги, но не до такой же степени...
Lavr wrote: Сейчас просто это всё неактуально получается - на современном нелучевом мониторе изыски настройки не увидишь.
Мне почему интересно было - из документации вроде как получалось, что можно программированием EGA
загнать её в режим сходный с разверткой "Специалиста" - хотел в эмуляторе такой режим сделать...
EGA будет выдавать любую развертку - и CGA, и спектрум, и что угодно, что влезет в регистры. Там есть ограничения на минимальные значения (напр. для VGA длина строки мин. 25 символов), но они не сильно мешают. Вопрос в том, на каком мониторе это смотреть. У меня старых мониторов нет, поэтому я и сделал 2 фиксированных растра - 640х480 и 720х400 для 8- и 9-битных символов соотв.
Что касается изысков настройки... Ну да, многое не увидишь. Но кое-что можно сделать - оверскан (он же бордер), "полосатые" CGA-символы, имитация MDA-монитора с любым VGA-доступным цветом люминофора и т.п. Да и вышеупомянутый эффект (EGA-монитор на CGA-карте) - все это уже есть.
Lavr wrote: Вот типа такой EGA-карта у меня была:
Клон, на оригинале поболее микрух было.
Last edited by Vic3Dexe on 16 Feb 2016 16:49, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Реальный 8086/88 + FPGA

Post by Lavr »

Vic3Dexe wrote:У меня старых мониторов нет...
A у меня они, наверное уже к сожалению, все сохранились... :osad: Трудное наследие прошлого, блин... :-?
Начиная с этой самой CGA-"Электроники", настоящими EGA, VGA и заканчивая SVGA.
Все в рабочем состоянии, и рука выкинуть не поднимается - я же их "с трудом доставал"! :o
Чертовы "чемоданы без ручки"! :lol:
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Реальный 8086/88 + FPGA

Post by Vic3Dexe »

Да, проблема известная. Место занимают, а выкинуть жалко/невозможно.
У самого когда-то было то ли 8 то ли 9 ч/б ламповых телеков. Служили донорами друг для друга, т.к. купить нормальный в 90х мы не могли.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

Видеокарта более-менее готова, по крайней мере, в ближайшее время я ее трогать не буду.

Работают все режимы, вроде даже безглючно, горизонтальный паннинг, подчеркивание. Не проверял line compare, я не знаю точно как оно должно быть.

Биос толком не тестил, не падает - и ладно, детально буду смотреть, когда будет с чего загрузить тестилки.

Код карты выкладываю, рассчитана на работу совместно с процом на одну микруху SRAM 1Mx16 <20 ns, причем на 16-битную шину. 8-битные обращения надо соотв. пускать по младшей или старшей половине в зав. от адреса.

В принципе, там все или почти все комментировано, если что - спрашивайте.

Распаял все оставшееся, общий вид ниже. Плата не отмыта, не заморачивался. В панельки пока не ставил тиньку, RTC и контроллер флопа.
You do not have the required permissions to view the files attached to this post.
Last edited by Vic3Dexe on 16 Feb 2016 16:49, edited 1 time in total.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

Закончил 8042 и Int09/Int16, модуль прикручиваю, прерывания не так интересны, т.к. слизаны с оригинального биоса с некоторым причесыванием и допиливанием управления светодиодами.
Есть все необходимое, нет управления резетом (не суть важно), команд теста интерфейсов клавомыши и остальных откровенно бесполезных команд.
Не тестил одновременную работу клавы и мыши, пока не до того.

Я всех обманул. Память у меня работает на 25 МГц, а не на 50. Запутался в собственных частотах.
А обнаружил я сие, когда решил-таки победить глюк, терзавший меня довольно давно - при копировании BIOS из сериальной флешки циклона в основную память (перед стартом машины), данные рандомно бились. Особенно хорошо это было заметно на искажениях шрифтов.
Грешил на signaltap (встроенный анализатор в циклоне), т.к. небольшие изменения его конфига то устраняли проблему, то возвращали.
И только когда я озаботился подсчетом и проверкой CRC того, что, копировалось, я осознал масштабы проблемы - данные портились ВСЕГДА!

Причина банальна - данные я читал на 14 МГц, а писал в память на 12.5 (задействован только один из двух "DDR"-контроллеров). Соотв., контроллер тупо не успевал складировать то, что сыпалось из флешки. Решение также банально - снижение частоты чтения до 10 МГц.

Запустил контроллер флопа (i82077A-1). Процессорный интерфейс успешно взлетел, команды выполняет. Приводы пока не цеплял, надо раскурить int13, там IBM наворотила (не иначе как с целью запутать вероятного меня). Здорово помогло вот это. Несмотря на то, что я и бинарник неплохо читаю, комментарии были нелишними.

И вопрос:

Code: Select all

	MOV	DX,3F1H 		; I.D. PORT
	IN	AL,DX
	NOP
	MOV	BX,0FFFFH		; BUS PRECHARGE
	AND	AL,0F8H 		; KEEP I.D. BITS
	AND	@HF_CNTRL,11111110B	; RESET DUAL BIT
	CMP	AL,CARD_ID       ;это 50h
	JNE	NO_ID
	OR	@HF_CNTRL,1		; SET DUAL BIT
откуда в 3F1h (это "FDC status B", существующий сугубо у ps/2) некие ID биты? Я так понимаю, это какой-то особенный контроллер, но гугл также в растерянности.
You do not have the required permissions to view the files attached to this post.
Last edited by Vic3Dexe on 16 Feb 2016 16:50, edited 1 time in total.