Комментарии 79
По поводу копирайта микрософта — «проблема» в файле autoexec.bat. Когда он есть, на экран при загрузке ничего не выводится и сразу начинают исполняться команды из него.

Наверняка у вас там что-нибудь типа

echo off


(тут могу ошибиться) А зажатый шифт при загрузке заставляет ms-dos игнорировать autoexec.bat
Блин… Блин! Блиииинн!!!

А я начал с самого простого — с трассировки процесса загрузки DOS :)
Блин, это монументальный труд. Такая объемная статья… И да, стало интересно, что там было с магией VHDL в этом моменте?
В этом модуле все было очень красиво и хорошо, за исключением одной маленькой детали – он не работал.
Там вообще почти каждая красивость была неправильной… Например, попытка заставить регистр работать как по восходящему, так и ниспадающему фронту тактового импульса (и тому подобные вещи).
А там не MS регистры, которые по верхнему принимают, по нижнему продвигают в S часть?
Это просто нечто. Напомнило долгие часы переделывания заглушек в системные вызовы, когда я в свое время писал linux-совместимую ОС с нуля…
НЛО прилетело и опубликовало эту надпись здесь
Читал взахлеб! Вот она, движущая сила, главное следовать за мечтой!
Мне тут уже несколько раз задали вопрос насчет того, какую отладочную плату FPGA я порекомендую… Так вот, сделать это (порекомендовать) в общем случае просто невозможно. Все зависит от того, какие ресурсы и периферия требуются. Цены на платы находятся в диапазоне от 10-30 долларов до 20 тыс долларов, что наглядно демонстрирует широту имеющегося выбора.

Единственное, что мог бы посоветовать — брать плату нормального производителя, так как с многочисленными китайскими noname у многих наблюдалось большое количество проблем. Мне кажется, это последнее, чего хочется — чтобы в процессе обучения нужно было разбираться, ошибка ли это в твоей системе, или же это просто глюк платы.

Производитель моей платы делает очень неплохие вещи, но вроде есть и другие нормальные производители.

я натолкнулся на долго тянущуюся тему о том, как запустить 8086 процессор с минимумом обвязки. Странно было то, что тема обсуждалась больше года


Офигигеть, уже оказывается больше года прошло с момента, когда я ее запостил…
А вы — молодец. Статья — блестящее резюме проделанной работы. Прочитал на одном дыхании. А я так и не удосужился светодиодом помигать.
Теперь осталось засунуть и процессор в FPGA, чтобы ничего не болталось :)
Как тут уже успели заметить, весь смысл проекта заключался в том, чтобы иметь настоящее «железное» ядро, гарантированно обеспечивающее полную аутентичность сигналов шины и выполнения команд, а вокруг этого уже можно строить все остальное.

Примеров систем с «софтовым» х86 достаточно, некоторые упоминались на Хабре, но ни одна из реализаций процессора не гарантирует 100% соответствие оригинальному процессору.

Наверное, более-менее о соответствии можно говорить, если пойти по пути, пройденному недавно энтузиастом с 8080 (вернее, 580ВМ80А) — была восстановлена полная топология кристалла, и по ней уже сделана HDL-реализация.

P.S. А еще мне так просто хотелось, и это — основное :)
Насчет «просто хотелось» — полностью поддерживаю :)

На протяжении всего текста думал про порты клавиатуры — ведь многие программы обращаются к ним напрямую.
А собственный BIOS означает, что порты могут быть другими.
Но раз в конце получилось использовать оригинальный BIOS, значит все же с клавиатурой все в порядке.
Это так?
А собственный BIOS означает, что порты могут быть другими.
Это ничего не означает. Порты и биос — абсолютно разные вещи, как, например, клеммы и автомобиль. Порты — штука аппаратная, когда программа пишет в какой-то порт, процессор на шине адреса выставляет номер порта и выдает управляющие сигналы IOWR (запись) или IORD (чтение) и еще несколько, в том числе что идет обращение не по DMA (забыл название). Что делать в таком случае (при записи или чтении в такой-то порт) — решает разработчик схемы, организуя дешефрацию адресов с учетом сигналов IORW, IORD.

BIOS при этом ни сном ни духом что кто куда пишет, ему плевать. BIOS же обслуживает прерывания, в каждом прерывании есть его программная обработка, вот ей и занимается BIOS.
Чтобы обслуживать программные прерывания, BIOS обращается к портам.
Не святой дух же ему помогает с клавиатурой общаться.
Основной порт клавиатуры (60h) у меня с самого начала располагался по своему законному адресу и выполнял главную функцию по выдаче скан-кодов. В принципе, одного этого порта (вместе с вызовом прерывания 09) уже достаточно, чтобы подавляющее большинство программ (включая BIOS) работало нормально напрямую.

Вот со скан-кодами до определенного момента была проблема, но об этом (и о решении проблемы) я вроде довольно подробно рассказал в статье.
Отличная статья. После таких начинаешь думать, насколько скудны мои знания хотя бы в том же VHDL, несмотря на годы изучения. Вы — мастер! :)
Часто думал, насколько человечество зависит от носителей информации. Как быстро человечество восстановит технический потенциал, если надо будет начинать с чистого листа. Возможно ли в пределах одного-друх поколений нагнать и не растерять знания по дороге. И вот такие люди, которые с нуля за два месяца скрутили из проводков и палок компьютер мне вселяют уверенность, что какой-нибудь сверхмощный всплеск солнечной активности, который уничтожит все магнитные носители, не разрушит нашу хваленую цивилизацию.
Все-таки разрушит. Восстановление потребует огромной массы информации. А она вся пропала… считай что надо начинать сначала, а если уже нет и заводов по производству микросхем и все что с этим связано — дело гиблое, восстанавливать технологии придется лет 100 начиная с ламп… а там кто знает, может в этот раз именно ламповая технология возьмёт верх, а транзисторы будут нишевым продуктом.
И вот такие люди, которые с нуля за два месяца скрутили из проводков и палок компьютер мне вселяют уверенность, что какой-нибудь сверхмощный всплеск солнечной активности, который уничтожит все магнитные носители, не разрушит нашу хваленую цивилизацию.
Конечно разрушит. Да, есть много компонент, которые мы уже не умеем создавать с нуля, можем только копировать, но, чёрт побери, одним из таких компонентов является, собственно, человек. Причём многие воздействия, которых наше железо толком и «не заметить» (ну там банальное кратковременное повышение температуры воздуха градусов так до ста) этот компонент угробит. Так что вспышка, способная уничтожить все магнитные носители, все винчестеры, все компьютеры где-нибудь глубоко под землёй заодно изведёт также и всех людей под корень. И? Кто потом это всё восстанавливать будет?
>При максимально допустимой для оригинального 8088 тактовой частоте в 5МГц
Вообще 10. Были 5,8 и 10.

Еще был NEC V20, который сам по себе был быстрее на 20% стандартного 8088.
Максимальная тактовая частота оригинального 8088 согласно документации была именно 5МГц.

Все остальные процессоры не подпадают под понятие «оригинальный 8088», у них даже название другое (например, 8088-2).
Вы сделали мой вечер ))
Завидую вашей усидчивости и целеустремленности ))
Особенно порадовало утверждение автора о том, что он не имеет образования в области электроники и вообще любитель. Тогда откуда все это?
Меня больше интересует прочная убежденность людей в том, что успех в какой-то области прямое следствие проф. образования.
Отвечаю сразу и на комментарии ниже…

Меня увлекают довольно различные сферы деятельности — еще в детстве по кругу переходил между электроникой, физикой, химией, астрономией… При этом очень интересуют не только «внешние эффекты», но и (наверное, даже в первую очередь) понимание глубинных процессов, вызывающих эти самые внешние эффекты.

Без понимания сути, даже если удалось что-то сделать, я все-равно буду чувствовать некую ущербность происходящего, и удовольствия от процесса не получу. Например, некоторое время назад забросил процентов на 80 готовый проект (на который потратил почти год) только потому, что так и не смог окончательно осилить понимание (на уровне формул) всех происходящих процессов (в основном, это ядерная физика и электромагнитное поле). Хотя практически не сомневаюсь, что смог бы все запустить, наверное, вообще без формул — методом ненаучного тыка и слепого копирования.

Насчет профессионального образования у меня какое-то двойственное мнение. Думаю, оно просто дискредитировано самой методикой преподавания (в большинстве случаев). Полная оторванность от реальных задач не только вызывает вопрос «нахрена это все нужно ???», но и крайне усложняет само понимание предмета. За примером далеко ходить не нужно — пытаясь изучить VHDL по университетским учебникам, я натолкнулся на обе эти проблемы — вообще не мог представить, к чему все эти теоретизирования, плюс вообще не понимал очень многие объяснения — о чем они вообще говорят? Зато при появлении реальной задачи все вдруг стало на свои места, и я вдруг неожиданно стал понимать даже идею, заложенную автором в тот самый учебник по VHDL.

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

Плюс (наверное, повторюсь) лично мне намного больше нравится делать все вещи осознанно. Даже если я и решу сделать что-то не так, как нужно, то предпочитаю отдавать себе полный отчет в том, что я делаю (и что мне за это будет).
Ну вааще! Привозите в конце августа к нам, в Питер, на Chaos Constructions, хочется вживую увидеть-пощупать. Да и спецы по VHDL у нас есть, можно IRL обменяться опытом. Вот, например семинар Тима Ташпулатова, про альтеру и Amiga.

Да, ЕМНИП в фидо он был. Так что скорее всего он. А в каких эхах он был активен?
=) Мир имеет форму чемодана, а фидошный мир — чемодана Мёбиуса.
Да, с Тимом будет о чем вам поговорить) думаю, что его эмулятор флоппи дисков будет неплохо дополнять эту работу)
Насчет смешения точек разных цветов у Майкрософта — этому сейчас не удивился бы ни один человек из пытавшихся использовать MS Paint при 16-цветном режиме экрана в 95 win :-) Как сейчас помню поиски цветов, в которых эти точки не так в глаза бросаются.
Я в восхищении. Но черт, сколько же бывает у людей свободного времени…
Жаль что все в схеме и для квартуса. Переписать бы на чистом hdl — было бы очень полезно для будущих поколений…
80% времени, использованного на проект, было в районе от 10 часов вечера до 3 часов ночи. Остальное — выходные (маленькими кусочками) и пару дней валялся больным, решил использовать как отмазку для самого себя, чтобы вообще не думать о работе, зато много чего сделал с проектом.

Насчет схемного дизайна — вроде в статье я довольно подробно описывал, как постепенно уходил от этого и, в конечном итоге, полностью перевел все на VHDL…
Ясно. В открытый доступ (на opencores иль еще куда) нет планов выложить?
Это просто мега-круто. А насколько доступна оригинальная документация к таким древним процам? Т.е. оно у самого Интела где-нибудь лежит или только методом научного тыка и ковыряния в исходниках того, что кто-то уже расковырял до вас?
Никаких проблем с документацией нет. Все доступно в самых разнообразных вариантах — документация от производителя, книги «на тему», исходники, сайты «на тему» и т.д.
А почему форма сигнала зависит от разной «земли»? Сказывается емкость и индуктивность платы?
Такое впечатление, что пробовал, но чем-то не подошло (хотя могу ошибаться).
Попробовал посмотреть внимательнее и обнаружил, что, похоже, есть несколько проектов с таким названием. Один из них, наверное, действительно мог бы подойти, но я пока не могу найти его концы (типа официального сайта с нормальным описанием) — только архивы для скачивания…
Прочитал как роман. У Вас отлично получается передавать события. Даже столь техническая тема, раскрыта вами и прочитана мною с огромным удовольствием. Спасибо Вам большое.
С удовольствием прочитал, как раз совпало с тем что я снова начал ковыряться со своей DE1 и Verilog.
Спасибо за статью!
Немного дополнил статью (практически в самом конце) относительно этого вопроса.
Очень интересный проект!
Как назвали получившийся компьютер?
Насколько реально доработать этот компьютер до совместимости с i80386?
Честно говоря, не считаю этот проект настолько выдающимся, чтобы присваивать ему имя собственное :)

Слово «доработать», наверное, не очень подходит, если говорим о том, чтобы сделать PC-совместимый компьютер, на котором будут работать программы, требующие 386 процессор. Для начала, нужно сделать, как минимум, EGA адаптер (не думаю, что хоть одна из таких программ поддерживает CGA). Я смотрел в сторону EGA — полноценная аппаратная эмуляция потребует ОЧЕНЬ большого объема работы. Далее, память нужна 32-битная, что уже вызовет серьезное изменение структуры всего устройства, и т.д.

Понятно, что сделать можно все, но мне кажется, что проще не переделывать имеющееся, а начать с чистого листа. Тем более, что даже в этом проекте я уже вижу, как можно сделать многие вещи красивее и эффективнее.
Спасибо за ответ.
У меня был не совсем праздный интерес, потому что 32 бита подразумевает гораздо больший выбор процессоров. Причём, не только x86. Т.ч. очень было бы интересно узнать о дальнейших планах.

Что касается собственного имени, то имя никогда не помешает. Если проект простой, то и имя можно дать простое. Ну и не настолько он простой, тут ведь такое дело — чем больше человек понимает в предметной области, тем больше понимает что за внешней простотой скрывается большая работа.

Кстати, на opencores.org/projects есть несколько VGA контроллеров. Не уверен в качестве тех проектов, но, вероятно, с помощью «напильника» можно было бы собрать что-то подходящее.

В общем, чтобы не ходить вокруг да около, скажу что мне была бы интресна 32-х битная платформа для тестрования (и возможно использования) своего процессора.
Похоже, не туда ткнул, поэтому ответ на Ваше сообщение оказался ниже…
Я не совсем понимаю, о чем речь — о компьютере на x86-совместимом 32-битном процессоре, совместимым с линейкой IBM PC, или о произвольном компьютере на произвольном 32-битном процессоре ???

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

Второе, наверное, в минимальном варианте (мигание светодиодом, или даже вывод на монитор с помощью уже имеющегося у меня видеоконтроллера) смогу сделать за день (не считая времени изготовления печатной платы), но вообще не представляю себе практической или интеллектуальной ценности такого устройства (разве что поставить самому себе «галочку», что и такое делал)…
Например, Ваш проект можно рассматривать как оригинальную IBM PC/XT материнскую плату. Оборудование на котором выросла современная индустрия.

Кстати, а i386SX запустится? Внезапно подумалось, что нет никаких серьёзных причин, по которым нельзя заставить 32-х битное оборудование управлять 16-битным железом.

А их и не должно быть. Насколько я знаю, порты очень долго оставались 16-битными. И начиная с 286-го процессора начинали тормозить всю систему, являясь тяжелым грузом… но совместимость, та самая пресловутая аппаратная совместимость!
Не знаю как сейчас обстоят дела с современными процессорами, есть ли расширения портов хотя бы до 32 бит? Или порты оставили лишь для относительно редких операций по низкоуровневой конфигурации железа, а все ресурсоемкие операции проводят через окна в адресном пространстве RAM?
НЛО прилетело и опубликовало эту надпись здесь
Не понял насчет осцилографа. Это тот, который стоит несколько сот тысяч рублей и его можно походя прикупить для разовых хобби проектов?
Очень круто! Завидую такой скорости, это совершенно невероятный объём проделанной работы для пары месяцев.

Кроме этого, на выходных была синхронистично выпущена довольно интересная демка как раз для IBM PC на базе 8088: 8088 MPH by Hornet+CRTC+DESiRE. Она примечательна среди всего прочего тем, что выворачивает CGA так, что получает запредельные сотни (до тысячи на статике) цветов вместо четырёх, по пути ломая все известные эмуляторы, естественно. Было бы интересно узнать, справится ли ваш агрегат с подобным.
Посмотрел видео — даже пробовать не буду, не прокатит… Я не стал эмулировать целую кучу регистров, ответственных за развертку — делать это имеет смысл только при наличии реального CGA монитора.
В демке большая часть «магии» происходит на мониторе NTSC. Поскольку pixel-rate CGA составляет кратные частоты канала цветности, то при тщательном подборе точек на мониторе NTSC возникают цветовые артефакты, которые видны как multicolor. Такая техника известна как «color fringing». На RGB мониторах и на эмуляторах это не работает.

Так что нужен NTSC монитор и точное поклоковое соответствие CGA :)
Спасибо, что просветили — а то я сегодня утром работать спокойно не мог, все пытался понять, как на CGA можно такое сделать. Уже планировал вечером за дизассемблер браться…

Честно говоря, есть некоторое разочарование — чуда очередной раз не случилось… Но, конечно, изобретательности, знаний и целеустремленности у людей — остается только позавидовать.
В принципе, существуют реализации чипа 6845 на VHDL, например
www.cpcwiki.eu/index.php/VHDL_implementation_of_the_6845
может еще есть. Это фактически набор программируемых счетчиков.

CRT телевизоры последних поколений и некоторые PCI TV тюнеры понимали NTSC.

Подробнее про цвета:
en.wikipedia.org/wiki/Composite_artifact_colors

И личку (мои диалоги) взгляните pls.
О! А вот и демка, которая если корректно пойдёт, то будет являться прекрасным хардтестом на соответствие спекам оригинального PC. Бинарник живёт на Pouet-е.



Это CGA!!! Я когда ЭТО увидел, просто выпал в осадок!!!
Блин… Вот что значит тред не читал, сразу отвечал… Но если сделать совместимым, с оригинальным CGA, то ИМХО олдскульщики должны сказать спасибо.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.