В этой статье я собрал обобщающую информацию по некоторым программным эмуляторам советских компьютерных систем - начиная от больших ЭВМ типа БЭСМ-6 и заканчивая микропроцессорными электронными играми.
Эмуляция - это воспроизведение работы одного устройства на другом, зачастую полностью не совместимому с ним.
Сейчас сложилась терминология, отличающая термины "эмуляция" от "симуляция". В симуляции происходит приблизительное воспроизведение работы одного устройства на другом. Например, есть популярная в СССР игра "Ну, погоди!". Программист, игравший в игру, может написать симулятор на современном железе, и почти точно её воспроизвести. Однако, он может либо не учесть каких-то особенностей, либо немного изменить геймплей по своему усмотрению. В эмуляции же используется точное воспроизведение оригинала. Это обеспечивается за счёт использования оригинальной прошивки с программным обеспечением и эмуляции работы оригинального процессора. В этом случае игра происходит точно так же, как и в оригинале, потому что программист не вносит каких-то субъективных артефактов.
Сами же прошивки добываются различными способами. Для каких-то можно просто взять микросхему ПЗУ, заботливо установленную производителем на панельку, считать её на программаторе и потом написать эмулятор. Для других извлечение прошивки - это отдельный увлекательный квест, порой очень сложный. Например, для эмуляции микрокалькулятора "Электроника МК-61" пришлось вскрывать микросхему, добираться до кристалла и через микроскоп считывать прошивку.
Написание эмуляторов наверно можно отнести к отдельному виду компьютерного искусства. Если с простыми устройствам, например, с x86 или 8080 совместимым процессором всё ясно, то для того же калькулятора архитектура бывает порой настолько загадочной, что не помогают описания в литературе, где она описывается. Да и в создании одного эмулятора может понадобиться помощь не одного человека. Например, коллекционер где-то раздобудет редкий экспонат. Но коллекционер может не быть электронщиком. Электронщик знает как извлечь прошивку, но может не знать, как сделать эмулятор. И наконец, программист делает сам эмулятор. Но чаще эмуляторы делают в одном лице - и коллекционер, и электронщик, и программист - один потрясающе крутой человек.
Итак, на верхней картинке вы видели скриншот калькулятора - записной книжки "Электроника МК 87". Сами машинки довольно редки - их было выпущено что-то около 7000 штук, и все раздарены депутатам очередного съезда КПСС. Для их производства была закуплена в Японии целая линия по штамповке таких корпусов.
Эмулятор этой машинки написан Piotr Piatek. Его очень известный сайт. Сам эмулятор доступен по ссылке. Прошивка для Электроники МК 87 была написана Подоровым А.Н. - тем же программистом, который писал прошивку для Электроники МК 85. Известен факт, что фамилию разработчика можно в МК 85 вывести командой WHO. И только месяц назад мы узнали, что в МК 87 тоже заложена фича, которая выводит эту фамилию. Вы можете это проверить в эмуляторе.
Кроме эмулятора для МК 87, Piotr Piatek так же написал эмуляторы для "Электроники МК 85" и "Электроники МК 90".
"Электроника МК-85" - наш ответ Casio с его Casio fx-700P. Ответ на задачу разработчикам "сделать такой же". В итоге наши сделали как бы симулятор fx-700P, повторив внешний вид и принцип работы японского прототипа. Но в то же время, своё железо с 16-битным процессором и оригинальной прошивкой (добавив туда кириллицу и другие прикольные фичи) - сделали сами.
Эмулятор "Электроники МК 85" доступен там.
Эмулятор "Электроники МК 90" доступен там.
Три описанных выше машинки работают на микропроцессорах с системой команд, аналогичной системе команд DEC PDP-11.
У калькулятора "Электроника МК-90" было продолжение - "Электроника МК-98". Их было выпущено совсем мало - порядка десяти штук - эту модель не успели довести до серийного изготовления. Зато недавно появился и её эмулятор, и можно посмотреть примерно как она работала. В отличие от МК-90, в МК-98 стоял отечественный микропроцессор, совместимый с Intel 80С86.
Эмулятор.
Продолжая эмуляторы наших систем нельзя не упомянуть про эмулятор калькуляторов семейства "Электроника МК-61".
Наверно самый сложный эмулятор, которые я встречал. Сделан благодаря Феликсу Лазареву - он смог извлечь и прошивку из скана кристалла, и понять как работает процессор, и написать основу эмулятора.
Примерно узнать, как работает его процессор, архитектура которого в его предшественнике "Электроника Б3-09" заработала аж в 1973-м году, вы можете в моей статье на Хабре.
В начале статьи я написал об эмуляторе БЭСМ-6. Советский суперкомпьютер 1960-х годов, в своё время конкурировавший с американскими и европейскими компьютерами, ближе всего с CDC 1604 или Atlas. Их архитектурные решения имели общие детали, но БЭСМ-6 не является близкой копией ни того, ни другого.
Эмулятору БЭСМ-6 посвящен целый сайт.
Игры типа "Ну, погоди!" нельзя назвать отечественной микропроцессорной системой из-за того, что внутри неё стоит прошивка от Nintendo. Сейчас пока нет сведений, получена ли технология выпуска этих игр по лицензии от самой Nintendo (как например, в своё время закупили завод по производству калькуляторов у General Instrument или в Японии линию по производству Электроники МК-87) или сами справились.
Однако, и для этого семейства тоже удалось сделать эмулятор. Это оказалось возможным из-за того, что процессор может войти в режим отладки с возможностью считывания прошивки. http://www.emu-land.net/forum/index.php/topic,73493.0.html
Кроме эмулятора семейства "Ну, погоди!" есть даже отладчик.
То ли калькулятор, то ли компьютер "Электроника Д3-28" тоже обзавёлся эмулятором (имитатором, как его называют авторы). Он вышел от Wang 700, но доработан нашими разработчиками до такой степени, что на нём стало возможно запускать интерпретатор языка Бейсик, чем активно и пользовались.
Первый советский персональный компьютер - ПЭВМ "АГАТ" сделан на основе Apple ][. Но из-за того, что там другая графика, другие дисководы на 840 килобайт, другая организация памяти, его можно считать копией Apple ][ суммарно где-то только на 50%. Из-за этих отличий на АГАТе не шли напрямую программы от Apple ][, и их либо приходилось переделывать, либо использовать дополнительные аппаратные платы совместимости, либо режим совместимости с Apple ][, реализованным в модификации "АГАТ-9". Соответственно эмулятор Apple и АГАТ - не одно и тоже.
Лучший ресурс по этому компьютеру находится по этому адресу: http://agatcomp.ru/
Наиболее известен эмулятор Олега Одинцева
Как же без эмуляторов семейства ДВК?
Вот один из них: https://zx-pk.ru/threads/18351-emulyator-dvk.html
Никита Зимин https://github.com/nzeemin написал несколько эмуляторов для наших оригинальных компьютеров на базе процессоров с системой команд DEC PDP-11.
Эмулятор компьютера "Электроника МС0511" УКНЦ, очень популярного школьного компьютера.
Компьютер "Электроника МС0515" очень нечастый компьютер, и тем интереснее для него посмотреть эмулятор.
Компьютер "Немига" разрабатывался в Белоруссии тоже для школ, и тоже есть для него эмулятор.
Шахматный компьютер "Интеллект 02" сделан на базе процессора КР580ВМ80А (аналог Intel 8080A). Прошивка для игр - шахматы, калах и гран находились в ПЗУ, оформленных в виде картриджей.
И ещё один эмулятор шахматного компьютера "Электроника ИМ-01". Он выпущен на базе платформы "Электроника С5-41" объединением "Светлана" с использованием микропроцессора К1801ВМ1, таким же как в семействе ДВК.
Эмулятор: https://github.com/nzeemin/elektronika-im01
Эмуляторов на самом деле много. Нет возможности все запустить и все описать. Вот несколько ссылок, пройдя по которым вы можете узнать и о других эмуляторах:
Эмулятор многих отечественных компьютеров EMU80.
Обсуждение эмуляторов на форуме zx-pk.
Обсуждение эмуляторов на emu-land.
Возможно есть и другие источники с эмуляторами типа MESS, MAME и других.
Коллекционирование компьютеров - увлекательное занятие. Хотелось бы конечно, всем показать компьютеры не только в виде сайта. Но хорошо, что есть эмуляторы, и можно "погонять" эти компьютеры в виртуале.
Если у вас есть информация о каком-нибудь интересном эмуляторе, напишите в комментарии. Также можно обсудить их в ретрочате.
Спасибо за внимание.
Комментарии (47)
Javian
27.11.2021 19:44+2офф Проходя мимо и увидев людей в теме, хочу спросить как внешне выглядел "дисплей ЕС-7920"? Есть плата дисплея, из которой хочу сделать часы.
sfrolov Автор
27.11.2021 19:49Javian
27.11.2021 21:13Это нечто другое - матрица 14*5 из светодиодов . Типа такого:
sfrolov Автор
27.11.2021 23:33А это от какой ЭВМ картинка?
Javian
28.11.2021 19:56Некий интерфейс к ЭВМ Минск-22 или М-220. Возможно СТИ-90.
Косвенно про эти "Ж-16 и И-17" можно увидеть на Хабре здесь https://habr.com/ru/news/t/574126/
А на этом черно-белом фото на листке можно разглядеть, что написано от руки "Начало работы" и пара первых команд.
DrPass
28.11.2021 00:31+1Ммм, нет, не должно. Дисплей ЕС 7920 — это не совсем корректное название. ЕС 7920, это комплекс из восьми терминалов ЕС 7927 (один — справа на фото Сергея Фролова выше), двух АЦПУ и коммутационного шкафа. Светодиодных матриц там, насколько я знаю, не было.
В реальности выглядело оно вот так (скрин из фильма «Чародеи»):Javian
28.11.2021 07:10Видимо по этому я не могу нагуглить, что это за 14*5 светодиодная матрица с маркировкой "EC-7920/C000".
RalphMirebs
28.11.2021 07:52+5Это индикатор внешнего диагностического пульта. Коробочка, ставится сверху тумбы, что на фото выше.
Число светодиодов 14 на 5
Radon17
27.11.2021 19:50+1Пожалуй самая существенная вещь, которой мне не хватает среди эмуляторов, это мульти-эмулятора различных терминалов, в частности отечественных.
Терминалки типа Putty, Xterm и т.д. всё-таки являются больше симуляторами терминалов, и зачастую не поддерживают русский язык в кодировке КОИ-7. Про графику и говорить не приходится.
Да, есть EmuStudio от Titus'а, но там терминалы подключены к… УКНЦ. Очень странным получается использование их в такой конфигурации. Есть ещё MAME/MESS, но мне эта среда не нравится ещё больше. Терминалы там вроде есть некоторые благодаря трудам shattered, но всё равно всё очень криво.
Так вот, был бы именно эмулятор большинства терминалов с использованием оригинальных образов ПЗУ и эмуляцией всех процессоров и особенностей, в котором были бы реализованы минимум: отечественные КЦГД, КСД + КГД, 15ИЭ-00-013, МС 7105, ВТА-2000, СМ 7209, СМ 7238 и DECовские VT52, VT100, VT220, VT240.
Чтобы такой эмулятор терминала можно было подключить к эмулятору ДВК или Simh через IP-порт, или к реальному компьютеру по RS-232.
corvair
27.11.2021 20:23+2Ныне выпускаемые МК-152 и -161 являются наследниками советских калькуляторов или независимыми разработками?
HardWrMan
27.11.2021 20:27+1Сейчас сложилась терминология, отличающая термины "эмуляция" от "симуляция". В симуляции происходит приблизительное воспроизведение работы одного устройства на другом.
Как раз наоборот: симуляция это точное воспроизведение, а эмуляция - приблизительное функциональное. Иначе мы бы сейчас играли в гоночные эмуляторы а не симуляторы.
lamerAlex
28.11.2021 16:43-1симуляция это точное воспроизведение, а эмуляция - приблизительное функциональное. Иначе мы бы сейчас играли в гоночные эмуляторы а не симуляторы.
гоночные симуляторы точно воспроизводят работу устройства "гоночный автомобиль", серьезно?
QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ. - видимо приблизительно
HardWrMan
28.11.2021 17:52+2Парирую тем, что указанный QEMU так же имеет погрешности и ошибки в эмуляции, точность которой тоже имеет свой показатель. А лётные и автомобильные симуляторы это не только программное обеспечение для запуска на обычном ПК, но и вполне себе сильный набор отдельного аппаратного обеспечения. Такой кокпит никаким эмулятором не повторить:
И, внезапно, это называют симулятором, а не эмулятором. Да даже на хабре есть статья: https://habr.com/ru/post/194150/
К тому же, в статье говориться:
В симуляции происходит приблизительное воспроизведение работы одного устройства на другом.
Ключевой момент: одно устройство (хост) имитирует работу другого устройства (гость). И опять же, пассаж в статье:
Это обеспечивается за счёт использования оригинальной прошивки с программным обеспечением и эмуляции работы оригинального процессора. В этом случае игра происходит точно так же, как и в оригинале, потому что программист не вносит каких-то субъективных артефактов.
...есть подмена понятий, потому как программист может некорректно "сэмулировать" железо и тогда пусть у него трижды правильный дамп программного обеспечения эмулируемой системы, она будет работать неверно (а особенностей работы тех процессоров столько, что без полного реверса и не узнаешь, как это было с тем же 6502).
Если честно, то я согласен о том, что граница между "симулятор" и "эмулятор" довольно-таки нечёткая. И есть только крайне малое количество случаев, которые однозначно дифференцируются:
1 - "эмуляция" это когда одно интеллектуальное устройство своим родным программным обеспечением имитирует другое устройство, которое тоже может быть интеллектуальным и иметь своё программное обеспечение или быть тупым куском железа.
2 - "симуляция" это когда устройство имитируется только на аппаратуре без использования интеллектуального устройства-носителя (ПЛИС, рандомная логика и прочее).
PS Даже вика говорит в статье про эмулятор, что симулятор точнее эмулятора:
Разработчики программ для встраиваемых систем и игровых приставок часто создают свои продукты на особо точных эмуляторах, называемых симуляторами, перед запуском на физическом оборудовании. Это делается для возможности создания и тестирования до запуска в производство окончательной ревизии оборудования, а также для возможности быстрой отладки программы без затрат времени на копирование и внесения побочных эффектов отладчика. Во многих случаях симулятор создается и предоставляется изготовителем оборудования, что теоретически должно повышать его точность
lamerAlex
29.11.2021 01:19Четыре буквы, которые, имхо, отражают разницу :)
GNS3 - Graphical Network Simulator использующий эмуляцию выполнения оригинальной фирмвари на QEMUHardWrMan
29.11.2021 11:36А вот дефиниция от Вики:
Graphical Network Simulator-3 (shortened to GNS3) is a network software emulator first released in 2008.[1][2][3] It allows the combination of virtual and real devices, used to simulate complex networks. It uses Dynamips emulation software to simulate Cisco IOS.[1]: 55 [4]
Эмулятор, который называется симулятор. Это как в некоторых рекламах, у которых %SOMETHING% это не объективный параметр а трэйдмарк (который часто используется для обмана с целью привлечения клиентов).
lamerAlex
29.11.2021 12:19Симулирует Cisco IOS?
Воспользуйтесь дефиницией от авторов GNS:
GNS3 supports both emulated and simulated devices.
Emulation: GNS3 mimics or emulates the hardware of a device and you run actual images on the virtual device. For example, you could copy the Cisco IOS from a real, physical Cisco router and run that on a virtual, emulated Cisco router in GNS3.
Simulation: GNS3 simulates the features and functionality of a device such as a switch. You are not running actual operating systems (such as Cisco IOS), but rather, a simulated device developed by GNS3, like the built-in layer 2 switch.
HardWrMan
29.11.2021 13:37И что не так? Это всё так же не чистый симулятор, чтобы S в его названии заявляла как объективный параметр.
hecategram
27.11.2021 22:05+1А есть ли где нибудь эмуляторы для Правец? Был такой аналог Аппл 2 с зеленым экраном.
GospodinKolhoznik
27.11.2021 23:28Эх, не завелась set panel в
BESM6 - сам эмулятор запустился, но без графики.
А жаль, такая красота!
GospodinKolhoznik
28.11.2021 13:23Ура, завелась графика, после того как доустановил ещё разные libsdl пакеты, и перекомпилил besm6. Сейчас у меня такой набор, на нём работает, что из этого реально необходимо, а что нет не знаю:
libsdl-console-dev libsdl-console libsdl-image1.2-dev libsdl-image1.2 libsdl-ttf2.0-0 libsdl-ttf2.0-dev libsdl1.2-dev libsdl1.2debian libsdl2-2.0-0 libsdl2-2.0-0 libsdl2-dev libsdl2-gfx-1.0-0 libsdl2-image-2.0-0 libsdl2-image-dev libsdl2-ttf-2.0-0 libsdl2-ttf-dev
Grommy
28.11.2021 10:08+2Спасибо, шикарная подборка!!!
Будет время - буду бродить по ссылкам и пробовать, пробовать, пробовать!!:)))
saipr
28.11.2021 10:20+2После написания статьи мне предложили написать эмулятор для ЭЦВМ М-220 на основе эмулятора М-20:
Вот этот проект эмулятора М-20.Javian
01.12.2021 10:46Вам наверное надо пообщаться с разработчиками, пока есть с кого спросить http://kazan-computer-museum.blogspot.com/
Например Ярмурахетов Азат Усманович (он в ВК)
Принимал участие в разработке и освоении в производстве ЭВМ М-220М, М-222, ЕС-1033.
Я у него по email пару вопросов по ЭВМ в космонавтике спрашивал.
saipr
01.12.2021 11:40+1пока есть с кого спросить
Тут я Вас поправля. Не "С КОГО" спросить, а У КОГО спросить.
Им, разработчикам, наш низкий поклон!!!Javian
01.12.2021 12:04+1:) в ходе нескольких итераций текст поменял смысл, а артефакт остался. Первоначальная мысль была о том, что может быть еще где-то у кого-то валяется в гараже старая литература по теме.
И надо спешить объявить, что она ищется - может кто увидит и отсканирует/отфотографирует/перешлет.
Lirix_vladimir
28.11.2021 11:20+1Статья увлекательная. В стиле старого доброго хабра
Например, для эмуляции микрокалькулятора "Электроника МК-61" пришлось вскрывать микросхему, добираться до кристалла и через микроскоп считывать прошивку.
А можно где то более подробно про это почитать?
engine9
28.11.2021 13:32+2Кто знает название вот этого компьютера и что за планшет в нём применяется?
Сам фильм 1986 года про САПР в хорошем качестве (на четвёртой минуте появляется этот комп): https://www.youtube.com/watch?v=7Td559kHnA0pavel_raskin
28.11.2021 23:52+2Вероятнее всего это не компьютер как таковой, а терминал от чего-то "не очень персонального". Забавно, что клавиатура исключительно с латиницей, т.е. это что-то импортное, не советской разработки, скорее всего даже не из восточной Европы, т.к. на клавише 4 виден знак доллара. При этом ПО русифицированное, но метки меню и некоторые размерные обозначения (параметризованные?) задаются латиницей (иного на клавиатуре и нет).
pavel_raskin
29.11.2021 00:36+2Планшет очень похож на BitPad от Summagraphics Corp (когда-то была куплена Apple).
Javian
29.11.2021 06:55+1Есть видео про "советский фотошоп". В комментариях к которому, опознали французский Pericolor 1000 и Apple III. Скорее всего здесь тоже самое, особенно характерная клавиатура со специфичным спиральным кабелем.
DrPass
30.11.2021 17:58+3Компьютер там рассмотреть толком не получается, но терминалы там стоят DataGeneral 6345, и скорее всего, это одна из модификаций вот этой малютки:
pavel_raskin
30.11.2021 18:29+1Если ещё интересно, то стильный монитор с тёмны ободком справа и клавиатура очень похожи на терминал "Data General Dasher D460", а вот к чему он подключён большой вопрос. На некоторых кадрах видно, что в помещении их несколько штук, три точно: один используется непосредственно в фильме, второй стоит рядом на соседнем столе справа на "постаменте" (накопитель?), третий слева на большем удалении от оператора в кадре. Учитывая, что Data General часто работала по схеме контрактного производства со своими заказчиками, то оригинальное название техники из фильма можно и не узнать вовсе.
Sensei_SunSay
01.12.2021 12:03+1Первым в мире эмулятором был эмулятор компьютера "Днепр" (УМШН), разработанный на Адресном языке программирования.
На этом эмуляторе, еще до момента готовности компьютера "Днепр" (УМШН), был разработан компилятор с Адресного языка программирования. Этот компилятор использовался для разработки программного обеспечения для компьютера "Днепр".
Это позволило: сразу после готовности компьютера "Днепр" (УМШН) приступить к его использованию с заранее созданным программным обеспечением.
Подтверждение - цитата [стр. 107]:
Программирующая программа для управляющей машины широкого назначения (УМШН) с входным адресным языком, основанная на принципе поэлементной расшифровки исходной информации. ПП составляет рабочие программы только для работы в режиме фиксированной запятой. Объем ПП около 290 адресных строк или 600 команд машины «Киев». ПП обрабатывает следующие адресные формулы: засылки, предикатные, вхождения, метки безусловного перехода, нестандартные формулы, записанные в кодах УМШН, формулы печати, формулы останова.
После обработки программирующей программой исходной информации каждой зоны на печать выводится программа задачи в кодак машины УМШН, причем приказы рабочей программы печатаются с их истинными номерами. Программа составлена Р. А. Годзь, Г. А. Полищук, А. И. Стиранной под рукодством Е. Л. Ющенко.
Источник: Глушков В.М., Вычислительная машина "Киев". Математическое описание / В.М. Глушков, Е.Л. Ющенко. // К. : – Гостехиздат УССР, 1962. – 183 c. : ил., – URL: Vychislitelnaya-mashyna-Kiev_VHlushkov_EYushchenko_1962.pdf (infoua.net)
https://files.infoua.net/yushchenko/Vychislitelnaya-mashyna-Kiev_VHlushkov_EYushchenko_1962.pdf
В 1966г. эта монография была переведена на английский язык и опубликована в США:
Glushkov V.M., & Yushchenko E.L., D 1966, The Kiev Computer; a Mathematical Description, USA, Ohio, Translation Division, Foreign Technology Div., Wright-Pattenon AFB, 234p.
На страницах 82-160 описано разработанное на компьютере "Киев" программное обеспечение. Потрясает не только объём этого программного обеспечения, а и сегодняшняя актуальность задач.
Это малая часть от всех программ, которые разработаны на компьютере "Киев".
Подробности о компьютере "Киев" (на украинском):
Чуть позднее на компьютере "Киев" были разработаны эмуляторы компьютеров "Проминь" и компьютеров серии "МИР".
Работы по разработке эмулятора компьютера БЕСМ-6 и компилятора с Адресного языка для БЕСМ-6 были остановлены на этапе их завершения.
drWhy
01.12.2021 12:52Всегда приятно открывать для себя всё новые факты об утерянных цивилизациях. Но Ада Лавлейс, известная как мать программирования, описала алгоритм вычисления чисел Бернулли для ещё не построенной машины Бэббиджа веком ранее.
А Грейс Хоппер вероятно смогла бы сэмулировать кобол-машину у себя в голове хоть во сне.
AntonioCerutti
Спасибо, очень интересно!