Эмуляторов IBM PC/XT в сети навалом, но для Мурмулятора (https://murmulator.ru) пока есть только один: https://github.com/xrip/pico-xt.
Вопросы на тему «Зачем вообще нужен этот ваш мурмулятор?» мы тут обойдём, т.к. данное устройство относится к разряду «хобби», и по уровню полезности можно сравнивать только с такими же хобби, как собирание марок или монет. Хотя, некоторые умудряются включить сборку Мурмулятора своими руками в работу радио‑кружка. Но это - другая история.
Сам эмулятор не придерживается строгих стандартов и просто пытается вытянуть всё, что можно из достаточно ограниченных возможностей микроконтроллера RP2040 (на котором и построен Мурмулятор). Например, эмуляция процессора реализует часть команд, добавленных только в процессор 80186, или даже 80286, поэтому часть утилит определяю его некорректно:
RP2040 содержит всего 264 КБ памяти, поэтому для pico-xt реализован swap-файл, который позволяет расширить доступную для DOS память до 640 КБ, дополнительно реализована эмуляция EMS (LIM 4.0):
Реализация XMS в pico-xt недоступна, т.к. для нормальной реализации требует процессора минимум 80386, но некоторая обрезанная XMS-логика в эмуляторе всё же присутствует, что позволяет DOS адресовать HMA и UMB.
У владельцев Мурмулятора v1.4, или Мурмулятора с навесной PSRAM, своп не включается, а задействуется внешняя память.
VGA и EGA режимы на pico-xt поддерживаются крайне ограничено (мало памяти в микроконтроллере) и 90% игрушек в них работать не будет, хотя, некоторые утилиты и определят наличие соответствующего видеоадаптера, а стандартные для PC/XT MDA и CGA крайне убоги. Но! Разработчик прошивки предусмотрел поддержку TGA, поддержку которой, в свою очередь, имеют почти все игры тех лет.
А вот, например, культовый Принц Персии запускается в VGA режиме:
Со звуком в pico-xt тоже всё в порядке - эмулируются Tandy Sound и Disney Sound Source. Т.е. игрушки, которые шли на Tandy 1000 (клоне ХТ) пойдут и на эмуляторе. Поддержки Sound Blaster'ов пока не завезли ((.
Wolf 3D тоже вполне можно запустить, но только в TGA режиме (wolf3d tandy), и он даже относительно играбелен:
Для фанатов CP/M - её тоже можно запустить на pico-xt:
Последняя версия эмулятора доступна тут: https://github.com/xrip/pico-xt/releases
Сам Мурмулятор: https://murmulator.ru/types
Пишите вопросы ниже, буду рад ответить, а возможно, что и ещё статью напишу...
Комментарии (51)
Javian
10.09.2024 19:02+1Надо наверное было на King's Bounty (1990) продемонстрировать видеорежимы - игра запускается в Hercules/CGA/EGA/VGA
Advisers
10.09.2024 19:02Интересно! Как насчет какого-нибудь браузера, походить по интернету?
mikeveng73 Автор
10.09.2024 19:02С этим пока никак - сетевых карточек и модемов в комплекте эмуляции не имеется.
tormozedison
10.09.2024 19:02Можно приделать проводной сетевой интерфейс примерно так, как это сделано на платформе КРИСС, затем попробовать пробросить сеть в Arachne.
mikeveng73 Автор
10.09.2024 19:02Я думаю, что если делать, то уже нормальный способ - эмуляцию NE2000 или COM-порт+модем. Но пока оно неактуально. Почти всем хватает обычной SD-Card и связи с хост-компом по USB. Оно же пока игрушка, чтобы поиграть в старые игрушки, а не терминальная станция. Есть сборка VersaTerm под RP2040 - вот там - терминальная станция (насколько я помню)
tormozedison
10.09.2024 19:02Некоторые мало требовательные к объёму ОЗУ вещи (например, GW-BASIC) пойдут и без свопа, полезно приделать функцию его отключения в таких случаях для предотвращения износа флеша.
mikeveng73 Автор
10.09.2024 19:02Там своп на внешнюю SD-card, которые сейчас стоят копейки, т.е. смысла не имеет заморачиваться с этой кастрацией (имхо).
tormozedison
10.09.2024 19:02Это ещё терпимо, хотя тоже не очень, главное, не прямо на флэш самого RP2040.
tormozedison
10.09.2024 19:02+1О как, можно, оказывается, подключить внешнее ОЗУ, и своп отключается, вот это круто реально.
n2dt4qd2wg9b
10.09.2024 19:02+2Это класс, за это спасибо. Давно мечтал о мелком XT/AT совместимом.
С интересом слежу за развитием вашего проекта.
Молодцы, что опубликовали на Хабре, иначе бы я вас не узнал бы
n2dt4qd2wg9b
10.09.2024 19:02А когда подключаешь 8МБайт PSRAM ESP-PSRAM64H то сколько её становится доступной внутри 8088 машины? Что ещё она облегчает?
mikeveng73 Автор
10.09.2024 19:02Ну, если внимательно читать статью, то там написано, что своп отключается при подключении PSRAM ;)
В текущей сборке доступно 4 метра памяти в сумме (пофиг какой, psram или swap). Если надо заюзать именно 8, можно подсобрать отдельный билд, но я не вижу для ХТ необходимости в таком количестве памяти. Просто нет программ, которым столько нужно.
Ну и опять, если внимательно читать статью, то там есть 2 скриншота: один - перформанс со свопом, второй - с псрам. И с псрам оно изрядно быстрее.
n2dt4qd2wg9b
10.09.2024 19:02Заявлена поддержка USB flash. Её в OTG? Какую ФС на флешке и какой макс объем?
ps2_keyboard подключать GP0,1?
А PS2_mouse GP14-15? она в XT поддерживается?
Какой i2c rtc поддерживается?
По звуку, есть два: PCM5102(А) к GP26-28 или TDA1387 к GP26-28 какой предпочтительнее на будущее?
Есть leftout=GP23; rightout=GP21; beepout=GP25. beepout это PC Speaker? а leftout и rightout d XT не используется?
COM port к GP16,17 он в XT поддерживается?
Спасибо
mikeveng73 Автор
10.09.2024 19:02USB-flash - в данном случае, это режим, когда Мурмулятор становится внешней флешкой для хост-компа, т.е. оттуда можно записывать напрямую на SD-card, подключенную к пике, и можно писать на диски, примонтированные к XT.
Да, PS/2 клавиатура на первых двух PIO, см. схему мурмулятора.
Мышь пока не поддерживается. Есть версии прошивки с эмуляцией мышки на джойстике, но оно не прижилось, т.к. реально на ХТ мышь нигде не нужна по большому счёту. Но если возникнет нужда, прикрутим.
RTC не поддерживается. А нужен?
PCM5102 звучит громче (если прямо на уши), но он не доступен к прямой напайке на Мурмулятор - только внешним блоком, TDA1387 - разведен на плату версии 1.4
GP23; rightout=GP21; beepout=GP25 - все используются. Пищалка - это пищалка, а звук - это звук, там Disney Sound Source (стерео-Covox) и прочие ништяки живут.
COM-порт тоже пока никому не понадобился на ХТ, хотя, были позывы с подключением модема. Пока - нереализовано. Эти пины пока занимает джойстик, но если проект будет развиваться, не исключено, что там появится и поддержка COM-порта.
jobless
10.09.2024 19:02Пару раз на рубеже 80-90хх сталкивался с проектами по реализации сети на COM-портах.
Причём речь не о мультиплексоре, а о общей шине по аналогии с эзернет на коаксиальном кабеле. В такую сетку можно шлюз включить из "взрослой" Rpi :)
strvv
10.09.2024 19:02В принципе можно сделать по аналогии к k-line, совмещая rx и tx в одном. И скорости таковы, что, имхо, отражения не будут критичны. Можно, конечно согласовать концы ,100 ом резисторами.это если использовать витую в качестве медиа среды.
mikeveng73 Автор
10.09.2024 19:02есть стандарт - I²C, по которому вполне можно соединить платы физически,
но внутри ДОС надо будет какой-то драйвер подключать, проще всего использовать от NE2000, физический уровень которого уже завести на I²C. Но это надо сильно заморочаться... Пока оно не сильно нужно, но перспективно - это да.
strvv
10.09.2024 19:02Попробую сделать на макетке обвязку для пико и собрать мурмулятор. Как раз для экспериментов купил psram...
Можно связать и с большим братом-компьютером и как бк для авто.
И2с очень сильно не любит помехи.
Я в принципе предлагаю вам для простой 2х проводной, вешающейся на uart, с развязкой или через чип интерфейса клайн или 2х транзисторов или ОУ типа lm358..
Снаружи внешняя подтяжка.
И расстояние определяется собственно скоростями уарт.
В автомобилях этот интерфейс с 90х связывает блоки между собой.
Ох, номер протокола iso с ходу не вспомню. Но крайне дуракоустойчивый интерфейс, пока не пробьет транзисторы.
Можно тогда мурмулятор использовать и как бортовой компьютер.mikeveng73 Автор
10.09.2024 19:02Ну, пока оно никому не нужно. Опять же, чтобы такое отлаживать, надо иметь оборудование, которым с мурмулятора управлять. И вот конкретно для автомобиля я бы лично не взялся что-то ваять... безопасность важнее всяких фишечек и рушечек.
strvv
10.09.2024 19:02Я не говорю как критичный компонент в авто, это удобный, настраиваемый показометр.
А предлагалась шина связи очень простая, развязанная и очень дуракоустойчивая.
Например https://static.chipdip.ru/lib/454/DOC014454810.pdf L9637, iso9141, предшественник CAN и параллельно с ним продолжающий использоваться, максимум на сигнальной шине 36 вольт и переполюсовка 24 вольта.mikeveng73 Автор
10.09.2024 19:02Зря вы это "предлагаете". Он просто никому не нужно. Если будете себе делать, а потом всем покажете готовое решение, с разводкой и софтом - скажут спасибо.
mikeveng73 Автор
10.09.2024 19:02Зря вы это "предлагаете". Он просто никому не нужно. Если будете себе делать, а потом всем покажете готовое решение, с разводкой и софтом - скажут спасибо.
marshallab
10.09.2024 19:02+1сом порт я бы заюзал для принтера epson lx300
интересно бейсик может в порт отправлять данные...
... это чисто для демонстрации, покопаться, научить, детям показать, но эта возня так мило затягивает!
Документация у вас на высоте!
n2dt4qd2wg9b
10.09.2024 19:02Если я пикаю pc-speaker-ом, то этот звук выйдет из: pcm5102/tda1387 или GP25=beepout или из Диснея?
mikeveng73 Автор
10.09.2024 19:02Нет, в i2s спикер не работает, как я помню, только в режиме без внешнего DAC. Надо бы починить...
xrip
10.09.2024 19:02В I2S все звуки это PCM поток который транслируется на лево/право, бипер там не задействован в принципе, потому что не задействован физически :)
В вот в режиме PWM спикер удостоен своего персонального пина, и звучит прямо очень аутентично.
mikeveng73 Автор
10.09.2024 19:02Не, я про то, что можно это "пофиксить", т.е. вплести пищалку в существующий PCM канал. Я что-то такое где-то уже делал, но не помню где ))
tormozedison
10.09.2024 19:02Blackstrip Shell ведь потянет? С какой скоростью?
mikeveng73 Автор
10.09.2024 19:02Не пробовал. Запускал Windows 2.0 - тормоза изрядные, но с натяжкой можно считать работоспособной.
vit1251
10.09.2024 19:02А что насчет замены RPI2040 если платформа такая кривая может быть связаться с разработчиками RepkaPi и попросить ребят выпустить что-то посодержательнее по памяти? Ну 256КБ это сегодня совсем печальная история.
mikeveng73 Автор
10.09.2024 19:02+1Ну, не такая она и кривая, за свои деньги )) + Raspberry выпустила уже новый чип RP2350/54, там памяти в два раза больше, на нём уже можно заказать Raspberry Pi Pico 2, и ребята собираются выпустить Мурмулятор 2.0.
vit1251
10.09.2024 19:02Глянул у них спеку на сайте, но для PC/XT нужно хотя бы 640 KB, а лучше 1 MB ;)
А заменить Raspbery Pico можно на какую-то железку где побольше SRAM?
mikeveng73 Автор
10.09.2024 19:02Если вы читали статью, то там написано, что данный вопрос на пике решён тем, что добавлен своп-файл на сд-карточку, или подключением PSRAM.
vit1251
10.09.2024 19:02Да, читал. Видел, что сделано оверлеями, но это какое-то костыльное решение. Понятное дело, что наверное для MS-DOS там производительности SD карточки вполне достаточно, но как-то это некрасиво.
strvv
10.09.2024 19:02В конце 80х встретил и такую редкость как pc jr. И там 128кб было. И 512 и 256 штатно можно было выбрать на материнской плате перемычками.
Так что это нормально.
UranusExplorer
10.09.2024 19:02+2а стандартные для PC/XT MDA и CGA крайне убоги
но-но! вы недооцениваете CGA.
8088 MPH: мы сломаем все ваши эмуляторы / Хабр (habr.com)
Area 5150 — демо для PC XT/CGA и музыка для PC Speaker / Хабр (habr.com)
8088 Domination: Video capture from an IBM PC 5160 (youtube.com)
mikeveng73 Автор
10.09.2024 19:02Ну, вы же не будете спорить, что если игра позволяет отображение в CGA и TGA, то TGA всегда симпатичнее ))
xrip
10.09.2024 19:02+1Это все очень крутая, но изотэрика, к тому-же родившееся далеко позже платформа потеряла актуальность. Даже игр которые использовали 160х100 16 цветовой режим, который описан как официальный и тех нет. Да даже композитные цвета мало кто юзает (я кроме маньяк мэншен то и не вспомню). Так что CGA оценена очень точно )
EvilTeacher
10.09.2024 19:02Я прекрасно осознаю, что мне сейчас напихают три метра минусов в панамку, но... А что-то немного более полезное не пробовали?
tormozedison
10.09.2024 19:02Реально ли добавить поддержку клавиатуры, не поддерживающей обратную совместимость со стандартом PS/2 (только USB)? Рано или поздно они все такими будут.
mikeveng73 Автор
10.09.2024 19:02Реально. Есть прошивки для Мурмулятора с поддержкой USB-клавиатур, джойстиков и мышей
А ещё есть переходник с USB на PS/2, который можно самостоятельно сваять на ещё одной пике: https://github.com/No0ne/ps2x2pico
tormozedison
10.09.2024 19:02Если здесь есть представители проекта КРИСС, было бы интересно и эту платформу перевести на такой вид внешнего ОЗУ, как здесь.
xrip
Только я бы сказал, что поддержка VGA очень хорошая, EGA никакая, TGA почти на 100%, CGA тоже близко к 100% если не лезть в извращения с знакогенераторами и прочими вещами свойственным больше демкам, чем реальным продуктам.
mikeveng73 Автор
Данному нику - верим )) Так как он и есть основной разработчик pico-xt.