История развития одного эмулятора
1. Почему?
Можно сказать, что всю свою программистскую жизнь я был программистом приложений.Участвовал в разработке как коробочных, так и заказных продуктов, как в небольших, так и в крупных компаниях.
Это интересная и разнообразная работа.
Но я никогда раньше не писал ничего, тесно связанного с аппаратным обеспечением, и у меня были довольно поверхностные знания о цифровых схемах, если не сказать вообще никаких.
Но моя юность в программировании прошла за освоением C++ под Win32/MFC :) В какой-то степени мне хотелось проверить свои силы, смогу ли я это сделать.
2. Почему UKSC?
На этих машинах я работал в школе (это было еще в 1992-93 годах), хотя ничего сложнее Бейсика и ползания по дискетам на машине учителя мне делать не приходилось.Те.
Никаких серьезных знаний об эмулируемой машине у меня не было.
Своего УКСК в моем распоряжении тоже не было и нет до сих пор.
Толчком к созданию эмулятора послужило Сайт Арсения Гордина , на котором он уже несколько лет собирает всю доступную информацию об UKNC и других PDP-11-совместимых машинах.
Точнее, не столько сам сайт, сколько тот факт, что на нем был обнаружен архив «Удаление образа ПЗУ и ОЗУ» , автор - Александр Стрелец (кстати, спасибо ему большое!).
В архиве была описана процедура получения образов ПЗУ на реальной машине, и (о чудо!) были обнаружены захваченные образы.
Тут у меня довольно заметно начали чесаться руки.
Это было где-то в июне 2006 года.
Кстати, на тот момент не было ни одного эмулятора UKSC. (Да и сейчас их вообще не очень много.
)
3. Первые попытки
После этого я начал искать, с чего начать — написать все с нуля для меня (на тот момент) было бы просто невыполнимой задачей.Поиск показал, что в наличии нет ни одного эмулятора процессора VM2, ни одного в реальной жизни, не говоря уже об исходном коде.
Но уже давно существуют эмуляторы с реализацией ВМ1 — как нетрудно догадаться, это эмуляторы До нашей эры .
Выбор пал на Эмулятор Юрия Калмыкова — во-первых, это было в исходниках, а во-вторых, мне было ближе, потому что писалось под MFC. Из эмулятора Калмыкова были взяты только код процессора и дизассемблер, а от исходной версии сейчас, наверное, практически ничего не осталось - код много раз переделывался.
Через полторы недели будущий эмулятор уже показывал состояния процессоров, памяти, дизассемблированный фрагмент и в ручном режиме я бодро прошёл первые команды .
Дальше предстоял долгий путь доработки процессора, программирования всех устройств UKSC. Некоторое время я медленно топтался в этом направлении, не демонстрируя особых результатов.
Где-то в январе 2007 года я пришел к выводу, что начал не с той стороны — мне очень не хватало информации об устройстве машины и детального понимания работы процессора.
Поэтому я сел писать документ, обобщающий и систематизирующий мои знания по этому вопросу.
4. Совместное творчество
А уже в феврале 2007 года работа над эмулятором резко ускорилась.Феликс Лазарев, уже имевший писательский опыт, связался с Арсением Гординым.
3DO эмулятор , который хочет написать эмулятор UKSC и ищет коллег.
Развернул SVN для совместной работы и понеслось .
В понимании работы УКСК я был на два порядка слабее, поэтому в основном работал над интерфейсом и отладчиком, пока Феликс перетрясал процессор и устройства.
К концу февраля было рендерер экрана сделан .
К середине марта мы уже увидел текст об ошибках RAM и ROM , полученный в ходе стартового теста.
Примерно в это же время проекту начал активно помогать Алексей Кислый.
У Алексея настоящий УКСК, который он изучил буквально от и до.
Он предоставил нам тексты программы UKNC ROM, дизассемблированные вручную - то, чего так существенно не хватало в то время для отладки эмулятора.
Более того, у Алексея даже был эмулятор UKNC (!), который он писал на ассемблере.
Его эмулятор работал как «половина» настоящей машины: он эмулировал только ЦП и межпроцессорные каналы, для ЦП моделировалось наличие процессора.
Последние 2,5 года Алексей консультирует нас по всем тонкостям эксплуатации машины; его вклад в проект просто неоценим.
19 марта 2007 г.
впервые увидел загрузочное меню .
20 марта 2007 г.
- пройден встроенный тест. Ближе к концу марта Арсению удалось раздобыть дамп единственного известного ПЗУ-картриджа для UKNC — со специальной «кассетной» версией Бейсика.
А 27 марта 2007 года уже загружался в эмуляторе.
А 28 марта загрузка с дискеты (только чтение, без записи на диск) уже работала.
А после этого оба разработчика взяли тайм-аут, глубоко погрузившись в свою основную работу.
В июне 2007 года я сделал установщик и скрипты сборки проекта.
21 июня 2007 г.
я разослал бета-тестерам первый установщик.
Целью было убедиться в правильности моих действий и собрать отзывы об эмуляторе.
В августе 2007 года я получил от Влада Жигалова рукопись «Ресурсы UKSC» — его исследование того, что эта машина дает программисту.
Значит, я не досканировал этот документ, а надо было.
То, что отсканировали - Здесь .
28 сентября 2007 года я опубликовал первую публичную бета-версию — ту самую версию, которую я разослал ограниченным тиражом.
В октябре-ноябре 2007 года вышло три релиза.
Утилита rt11dsk создана для работы с образами дисков без запуска эмулятора.
С помощью Алексея я начал детально разбираться в конструкции контроллера УКНЦ НГМД, чтобы записать его на диск.
27 января 2008 г.
— бета 6 .
Запись на диск началась!
5. На открытом воздухе
3 марта 2008 г.— бета 9 .
Проект переходит в открытый исходный код. code.google.com/p/ukncbtl Летом 2008 года вышло еще два релиза, и авторы в очередной раз отказались от проекта.
4 апреля 2009 г.
— Феликс выпустил бета-12. Улучшены тайминги процессора, что обеспечивает реалистичный звук.
Затем мы снова вставили большой болт. Наконец, с ноября 2009 года последние два месяца работа шла почти каждые выходные, вышло три релиза.
Обнаружены приемочные испытания процессоров ВМ1 и ВМ2, которые тщательно проверяют работу во всех режимах.
Благодаря коммитам Алексея мы уже проходим эти тесты.
6. Выводы
- Нет ничего невозможного – в общем, я доказал себе, что «я могу».
- Но, строго говоря, в одиночку я «могу» слишком медленно, а по-настоящему «могу» только в команде со знающими людьми.
В ретрокомпьютинге сотрудничество имеет большое значение.
- Работа не закончена, и сложно сказать, когда на ней можно будет поставить точку: 99% программного обеспечения уже работает, но эмулятор еще далек от идеала и не доработан.
Есть возможности для улучшения как с точки зрения точности и полноты эмуляции (магнитофон, принтер, интерфейс C2, сеть.
), так и с точки зрения удобства (полноэкранный режим, сохранение состояния.
), а также с точки зрения переносимости (Qt , СДЛ.
).
Сайт проекта: code.google.com/p/ukncbtl Скриншоты: code.google.com/p/ukncbtl/wiki/Скриншоты P.S. 14 ноября 2009 года на базе кода UKNCBTL был запущен проект BKBTL, как минимум эмулирующий BK-0010: code.google.com/p/bkbtl Теги: #retrocomputing #uknc #эмуляция #эмулятор #pdp-11 #Старое оборудование
-
Алюминиевая Промышленность
19 Oct, 24 -
Маленькая Радость Питона №2: Старлетт
19 Oct, 24 -
Не Баг, А Особенность Вконтакте
19 Oct, 24 -
Вторая Жизнь Проводного Радио
19 Oct, 24 -
Орден Кризалис
19 Oct, 24 -
Стартапы
19 Oct, 24