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

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

Moderator: Shaos

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

Post by newold86 »

Заработал нормально текстовый режим 640х400 с матрицей 8х16, плюс задел на байт атрибута. На этом с видео пока все, позже видно будет.

Подцепил в первом приближении PS/2 клавиатуру - работает пока как-то странно, неустойчиво...
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Причесал клавиатуру, вроде работает нормально. Пока, правда, только в одну сторону (посылать команды в клавиатуру сходу не заработало, а разбираться пока лень).

Сделал нормальный (более-менее) обработчик INT9, а также функции 0, 1 и 2 для INT16, так что минимальный набор для общения с внешним миром присутствует.

Пока в раздумьях, что делать дальше...
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Вариант на подумать: доступ к SD/MMC через порты IDE/ATA.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

jdigreze wrote:Вариант на подумать: доступ к SD/MMC через порты IDE/ATA.
А зачем ? SPI я еще окончательно до ума не довел, но даже в первом приближении скорость вполне нормальная. Могу довольно легко добавить аппаратное чтение/запись не одного байта, а блока, тогда вообще скорость будет выше, чем в принципе может понадобиться для подобной системы.

Если же просто попробовать, то сначала нужно найти в себе желание :)
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Для попробовать какую-нибудь DOSину запустить...
Хотя, вот не припомню, чтобы системы AT/XT имели BIOS для IDE/ATA, так что, видимо просто для попробовать.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Так чтобы DOS запустить, я думал потихоньку INT13 писать до тех пор, пока функций для DOS'а достаточно не наберется. Т.е. использовать свой BIOS, а не пытаться подогнать железо под стандартный.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Сделал основные функции INT10...

Из проблем - вдруг обнаружил, что способ реализации аппаратных прерываний у меня в корне неверный (при одновременных нескольких запросах на прерывание получается полная фигня). Думаю, что делать - попробовать написать свой простейший контроллер прерываний, найти где-то готовый на VHDL или же сделать новую плату с 8259 ?
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Имхо, зачем городить огород, когда стоит плис, наверняка на VHDL есть готовые 59-е.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

jdigreze wrote:Имхо, зачем городить огород, когда стоит плис, наверняка на VHDL есть готовые 59-е.
Кстати, бесплатных сходу не нашел. Есть пара коммерческих, но процедуры покупки крайне сложные.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

newold86 wrote: Кстати, бесплатных сходу не нашел. Есть пара коммерческих, но процедуры покупки крайне сложные.
Я тоже, кстати искал когда-то, и то же не нашел. Зато натыкался на инфу, что есть некий пакет Aldec's Active-HDL и в нем есть тулза IP Core, которая может генерить в VHDL по щелчку мыши начиная от простейшей логики заканчивая драйверами UARTов и всякими i82xx, в том числе и i8259. Не знаю что там у них насчет лицензий и демоверсий, но если одним глазком охота посмотреть - то всем известно где взять.
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

newold86 wrote:Кстати, бесплатных сходу не нашел. Есть пара коммерческих, но процедуры покупки крайне сложные.
Гугление вывело на такой вот проект SoC x86 под LGPL. В описании присутствует simple 8259 pic. Может это поможет дальше двинуться.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

jdigreze wrote:
newold86 wrote:Кстати, бесплатных сходу не нашел. Есть пара коммерческих, но процедуры покупки крайне сложные.
Гугление вывело на такой вот проект SoC x86 под LGPL. В описании присутствует simple 8259 pic. Может это поможет дальше двинуться.
Спасибо за ссылку, но даже смотреть там не буду по двум причинам:

1. Я даже VHDL еле-еле 'со словарем' понимаю, а там вообще Verilog

2. Мой проект - просто детский лепет по сравнению с тем, что там реализовано. Боюсь, потеряю вообще все остатки мотивации...
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Как говорится, нет худа без добра... Из-за простуды остался дома и решил немного повозиться с проектом, к которому уже начал остывать. Дописал некоторое количество процедур BIOS'а (если честно, в основном затычки пока ставил), и получил следующее (это с SD карты):

Image

Пока не знаю, поднимутся ли у меня руки допилить остальное, чтобы DOS все-таки загрузилась...
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Круто, чо еще сказать. Нет, круто это мягко сказано. Это офигенно!
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

В очередном остром приступе программизма посидел очередные пару часов над проектом. Результат, как говорится, налицо:

Image

Все, естественно, крайне сырое и с огромным количеством заплаток (сам не понимаю, как такое может работать), поэтому при попытке запустить Norton Commander на половине дороги система перезагружается, но это дело времени (вернее, в первую очередь, желания).

Немного странно, что еще пару недель назад я говорил, что сделать что-то типа PC XT для меня нереально, а тут и железо, и BIOS реально заработали :)

Конечно, возможности отладки при полном контроле над железом и софтом просто офигительные. Вылезла проблема с порчей места в памяти - тут же добавил узел, вызывающий NMI при записи в то место (ну и много других подобных вещей). Соорудил примитивный отладчик с учетом возможности подгонять железо под него, все стало очень удобно и эффективно.

Вообще, думаю, результат получился потому, что была возможность легко выбирать, чем добиваться нужной совместимости в том или ином случае - аппаратным или программным обеспечением. В одном направлении затык - пойдем с другой стороны.