Эмуляторов IBM PC/XT в сети навалом, но для Мурмулятора (https://murmulator.ru) пока есть только один: https://github.com/xrip/pico-xt.

Вопросы на тему «Зачем вообще нужен этот ваш мурмулятор?» мы тут обойдём, т.к. данное устройство относится к разряду «хобби», и по уровню полезности можно сравнивать только с такими же хобби, как собирание марок или монет. Хотя, некоторые умудряются включить сборку Мурмулятора своими руками в работу радио‑кружка. Но это - другая история.

IBM PC/XT эмулятор (pico-xt) на Мурмуляторе
IBM PC/XT эмулятор (pico-xt) на Мурмуляторе

Сам эмулятор не придерживается строгих стандартов и просто пытается вытянуть всё, что можно из достаточно ограниченных возможностей микроконтроллера RP2040 (на котором и построен Мурмулятор). Например, эмуляция процессора реализует часть команд, добавленных только в процессор 80186, или даже 80286, поэтому часть утилит определяю его некорректно:

Norton Utilities на pico-xt - О системе
Norton Utilities на pico-xt - О системе
CheckIt на pico-xt - бенчмарк
CheckIt на pico-xt - бенчмарк

RP2040 содержит всего 264 КБ памяти, поэтому для pico-xt реализован swap-файл, который позволяет расширить доступную для DOS память до 640 КБ, дополнительно реализована эмуляция EMS (LIM 4.0):

CheckIt на pico-xt - тест памяти
CheckIt на pico-xt - тест памяти

Реализация XMS в pico-xt недоступна, т.к. для нормальной реализации требует процессора минимум 80386, но некоторая обрезанная XMS-логика в эмуляторе всё же присутствует, что позволяет DOS адресовать HMA и UMB.

MS DOS 6.22 результат команды mem
MS DOS 6.22 результат команды mem
Norton Utilities на pico-xt (XMS)
Norton Utilities на pico-xt (XMS)

У владельцев Мурмулятора v1.4, или Мурмулятора с навесной PSRAM, своп не включается, а задействуется внешняя память.

Производительность в режиме swap
Производительность в режиме swap
Производительность с подключеной PSRAM
Производительность с подключеной PSRAM

VGA и EGA режимы на pico-xt поддерживаются крайне ограничено (мало памяти в микроконтроллере) и 90% игрушек в них работать не будет, хотя, некоторые утилиты и определят наличие соответствующего видеоадаптера, а стандартные для PC/XT MDA и CGA крайне убоги. Но! Разработчик прошивки предусмотрел поддержку TGA, поддержку которой, в свою очередь, имеют почти все игры тех лет.

А вот, например, культовый Принц Персии запускается в VGA режиме:

Принц Персии на pico-xt (VGA)
Принц Персии на pico-xt (VGA)
Принц Персии на pico-xt
Принц Персии на pico-xt

Со звуком в pico-xt тоже всё в порядке - эмулируются Tandy Sound и Disney Sound Source. Т.е. игрушки, которые шли на Tandy 1000 (клоне ХТ) пойдут и на эмуляторе. Поддержки Sound Blaster'ов пока не завезли ((.

Wolf 3D тоже вполне можно запустить, но только в TGA режиме (wolf3d tandy), и он даже относительно играбелен:

Wolf 3D на pico-xt TGA EMS/XMS
Wolf 3D на pico-xt TGA EMS/XMS
Секрет Острова Обезьян на pico-xt (VGA)
Секрет Острова Обезьян на pico-xt (VGA)

Для фанатов CP/M - её тоже можно запустить на pico-xt:

CP/M-86 ver.1.1 на pico-xt
CP/M-86 ver.1.1 на pico-xt

Последняя версия эмулятора доступна тут: https://github.com/xrip/pico-xt/releases

Сам Мурмулятор: https://murmulator.ru/types

Пишите вопросы ниже, буду рад ответить, а возможно, что и ещё статью напишу...

Комментарии (51)


  1. xrip
    10.09.2024 19:02
    +11

    Только я бы сказал, что поддержка VGA очень хорошая, EGA никакая, TGA почти на 100%, CGA тоже близко к 100% если не лезть в извращения с знакогенераторами и прочими вещами свойственным больше демкам, чем реальным продуктам.


    1. mikeveng73 Автор
      10.09.2024 19:02
      +5

      Данному нику - верим )) Так как он и есть основной разработчик pico-xt.


  1. Javian
    10.09.2024 19:02
    +1

    Надо наверное было на King's Bounty (1990) продемонстрировать видеорежимы - игра запускается в Hercules/CGA/EGA/VGA


    1. xrip
      10.09.2024 19:02
      +1

      King's Bounty какраз не запускается, толи я не подобрал версию, толи там есть какие то хитрости. Лучше Monkey Island


      1. Javian
        10.09.2024 19:02

        Может в VGA не стартовать, если ОЗУ не хватает для 256 цветов.


  1. Advisers
    10.09.2024 19:02

    Интересно! Как насчет какого-нибудь браузера, походить по интернету?


    1. mikeveng73 Автор
      10.09.2024 19:02

      С этим пока никак - сетевых карточек и модемов в комплекте эмуляции не имеется.


      1. tormozedison
        10.09.2024 19:02

        Можно приделать проводной сетевой интерфейс примерно так, как это сделано на платформе КРИСС, затем попробовать пробросить сеть в Arachne.


        1. mikeveng73 Автор
          10.09.2024 19:02

          Я думаю, что если делать, то уже нормальный способ - эмуляцию NE2000 или COM-порт+модем. Но пока оно неактуально. Почти всем хватает обычной SD-Card и связи с хост-компом по USB. Оно же пока игрушка, чтобы поиграть в старые игрушки, а не терминальная станция. Есть сборка VersaTerm под RP2040 - вот там - терминальная станция (насколько я помню)


  1. tormozedison
    10.09.2024 19:02

    Некоторые мало требовательные к объёму ОЗУ вещи (например, GW-BASIC) пойдут и без свопа, полезно приделать функцию его отключения в таких случаях для предотвращения износа флеша.


    1. mikeveng73 Автор
      10.09.2024 19:02

      Там своп на внешнюю SD-card, которые сейчас стоят копейки, т.е. смысла не имеет заморачиваться с этой кастрацией (имхо).


      1. tormozedison
        10.09.2024 19:02

        Это ещё терпимо, хотя тоже не очень, главное, не прямо на флэш самого RP2040.


      1. tormozedison
        10.09.2024 19:02
        +1

        О как, можно, оказывается, подключить внешнее ОЗУ, и своп отключается, вот это круто реально.


  1. n2dt4qd2wg9b
    10.09.2024 19:02
    +2

    Это класс, за это спасибо. Давно мечтал о мелком XT/AT совместимом.

    С интересом слежу за развитием вашего проекта.

    Молодцы, что опубликовали на Хабре, иначе бы я вас не узнал бы


  1. n2dt4qd2wg9b
    10.09.2024 19:02

    А когда подключаешь 8МБайт PSRAM ESP-PSRAM64H то сколько её становится доступной внутри 8088 машины? Что ещё она облегчает?


    1. mikeveng73 Автор
      10.09.2024 19:02

      Ну, если внимательно читать статью, то там написано, что своп отключается при подключении PSRAM ;)
      В текущей сборке доступно 4 метра памяти в сумме (пофиг какой, psram или swap). Если надо заюзать именно 8, можно подсобрать отдельный билд, но я не вижу для ХТ необходимости в таком количестве памяти. Просто нет программ, которым столько нужно.
      Ну и опять, если внимательно читать статью, то там есть 2 скриншота: один - перформанс со свопом, второй - с псрам. И с псрам оно изрядно быстрее.


      1. n2dt4qd2wg9b
        10.09.2024 19:02

        Да, сорри, был невнимателен.


  1. 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 поддерживается?

    Спасибо


    1. mikeveng73 Автор
      10.09.2024 19:02

      USB-flash - в данном случае, это режим, когда Мурмулятор становится внешней флешкой для хост-компа, т.е. оттуда можно записывать напрямую на SD-card, подключенную к пике, и можно писать на диски, примонтированные к XT.

      Да, PS/2 клавиатура на первых двух PIO, см. схему мурмулятора.

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

      RTC не поддерживается. А нужен?

      PCM5102 звучит громче (если прямо на уши), но он не доступен к прямой напайке на Мурмулятор - только внешним блоком, TDA1387 - разведен на плату версии 1.4

      GP23; rightout=GP21; beepout=GP25 - все используются. Пищалка - это пищалка, а звук - это звук, там Disney Sound Source (стерео-Covox) и прочие ништяки живут.

      COM-порт тоже пока никому не понадобился на ХТ, хотя, были позывы с подключением модема. Пока - нереализовано. Эти пины пока занимает джойстик, но если проект будет развиваться, не исключено, что там появится и поддержка COM-порта.


      1. jobless
        10.09.2024 19:02

        Пару раз на рубеже 80-90хх сталкивался с проектами по реализации сети на COM-портах.

        Причём речь не о мультиплексоре, а о общей шине по аналогии с эзернет на коаксиальном кабеле. В такую сетку можно шлюз включить из "взрослой" Rpi :)


        1. strvv
          10.09.2024 19:02

          В принципе можно сделать по аналогии к k-line, совмещая rx и tx в одном. И скорости таковы, что, имхо, отражения не будут критичны. Можно, конечно согласовать концы ,100 ом резисторами.это если использовать витую в качестве медиа среды.


        1. mikeveng73 Автор
          10.09.2024 19:02

          есть стандарт - I²C, по которому вполне можно соединить платы физически,

          Пример схемотехники шины I2C. Показаны один ведущий (master) и три ведомых (slave) устройства.
          Пример схемотехники шины I2C. Показаны один ведущий (master) и три ведомых (slave) устройства.

          но внутри ДОС надо будет какой-то драйвер подключать, проще всего использовать от NE2000, физический уровень которого уже завести на I²C. Но это надо сильно заморочаться... Пока оно не сильно нужно, но перспективно - это да.


          1. strvv
            10.09.2024 19:02

            Попробую сделать на макетке обвязку для пико и собрать мурмулятор. Как раз для экспериментов купил psram...
            Можно связать и с большим братом-компьютером и как бк для авто.
            И2с очень сильно не любит помехи.
            Я в принципе предлагаю вам для простой 2х проводной, вешающейся на uart, с развязкой или через чип интерфейса клайн или 2х транзисторов или ОУ типа lm358..
            Снаружи внешняя подтяжка.
            И расстояние определяется собственно скоростями уарт.
            В автомобилях этот интерфейс с 90х связывает блоки между собой.
            Ох, номер протокола iso с ходу не вспомню. Но крайне дуракоустойчивый интерфейс, пока не пробьет транзисторы.
            Можно тогда мурмулятор использовать и как бортовой компьютер.


            1. mikeveng73 Автор
              10.09.2024 19:02

              Ну, пока оно никому не нужно. Опять же, чтобы такое отлаживать, надо иметь оборудование, которым с мурмулятора управлять. И вот конкретно для автомобиля я бы лично не взялся что-то ваять... безопасность важнее всяких фишечек и рушечек.


              1. strvv
                10.09.2024 19:02

                Я не говорю как критичный компонент в авто, это удобный, настраиваемый показометр.
                А предлагалась шина связи очень простая, развязанная и очень дуракоустойчивая.
                Например https://static.chipdip.ru/lib/454/DOC014454810.pdf L9637, iso9141, предшественник CAN и параллельно с ним продолжающий использоваться, максимум на сигнальной шине 36 вольт и переполюсовка 24 вольта.


                1. mikeveng73 Автор
                  10.09.2024 19:02

                  Зря вы это "предлагаете". Он просто никому не нужно. Если будете себе делать, а потом всем покажете готовое решение, с разводкой и софтом - скажут спасибо.


                1. mikeveng73 Автор
                  10.09.2024 19:02

                  Зря вы это "предлагаете". Он просто никому не нужно. Если будете себе делать, а потом всем покажете готовое решение, с разводкой и софтом - скажут спасибо.


        1. Javian
          10.09.2024 19:02

          Наверное это "Стык С2" у УКНЦ. https://habr.com/ru/articles/80078/


      1. marshallab
        10.09.2024 19:02
        +1

        сом порт я бы заюзал для принтера epson lx300

        интересно бейсик может в порт отправлять данные...

        ... это чисто для демонстрации, покопаться, научить, детям показать, но эта возня так мило затягивает!

        Документация у вас на высоте!


      1. n2dt4qd2wg9b
        10.09.2024 19:02

        Если я пикаю pc-speaker-ом, то этот звук выйдет из: pcm5102/tda1387 или GP25=beepout или из Диснея?


        1. mikeveng73 Автор
          10.09.2024 19:02

          Нет, в i2s спикер не работает, как я помню, только в режиме без внешнего DAC. Надо бы починить...


          1. xrip
            10.09.2024 19:02

            В I2S все звуки это PCM поток который транслируется на лево/право, бипер там не задействован в принципе, потому что не задействован физически :)

            В вот в режиме PWM спикер удостоен своего персонального пина, и звучит прямо очень аутентично.


            1. mikeveng73 Автор
              10.09.2024 19:02

              Не, я про то, что можно это "пофиксить", т.е. вплести пищалку в существующий PCM канал. Я что-то такое где-то уже делал, но не помню где ))


  1. tormozedison
    10.09.2024 19:02

    Blackstrip Shell ведь потянет? С какой скоростью?


    1. mikeveng73 Автор
      10.09.2024 19:02

      Не пробовал. Запускал Windows 2.0 - тормоза изрядные, но с натяжкой можно считать работоспособной.


  1. vit1251
    10.09.2024 19:02

    А что насчет замены RPI2040 если платформа такая кривая может быть связаться с разработчиками RepkaPi и попросить ребят выпустить что-то посодержательнее по памяти? Ну 256КБ это сегодня совсем печальная история.


    1. mikeveng73 Автор
      10.09.2024 19:02
      +1

      Ну, не такая она и кривая, за свои деньги )) + Raspberry выпустила уже новый чип RP2350/54, там памяти в два раза больше, на нём уже можно заказать Raspberry Pi Pico 2, и ребята собираются выпустить Мурмулятор 2.0.


      1. vit1251
        10.09.2024 19:02

        Глянул у них спеку на сайте, но для PC/XT нужно хотя бы 640 KB, а лучше 1 MB ;)

        А заменить Raspbery Pico можно на какую-то железку где побольше SRAM?


        1. mikeveng73 Автор
          10.09.2024 19:02

          Если вы читали статью, то там написано, что данный вопрос на пике решён тем, что добавлен своп-файл на сд-карточку, или подключением PSRAM.


          1. vit1251
            10.09.2024 19:02

            Да, читал. Видел, что сделано оверлеями, но это какое-то костыльное решение. Понятное дело, что наверное для MS-DOS там производительности SD карточки вполне достаточно, но как-то это некрасиво.


        1. strvv
          10.09.2024 19:02

          В конце 80х встретил и такую редкость как pc jr. И там 128кб было. И 512 и 256 штатно можно было выбрать на материнской плате перемычками.
          Так что это нормально.


  1. UranusExplorer
    10.09.2024 19:02
    +2

    1. mikeveng73 Автор
      10.09.2024 19:02

      Ну, вы же не будете спорить, что если игра позволяет отображение в CGA и TGA, то TGA всегда симпатичнее ))


    1. xrip
      10.09.2024 19:02
      +1

      Это все очень крутая, но изотэрика, к тому-же родившееся далеко позже платформа потеряла актуальность. Даже игр которые использовали 160х100 16 цветовой режим, который описан как официальный и тех нет. Да даже композитные цвета мало кто юзает (я кроме маньяк мэншен то и не вспомню). Так что CGA оценена очень точно )


  1. EvilTeacher
    10.09.2024 19:02

    Я прекрасно осознаю, что мне сейчас напихают три метра минусов в панамку, но... А что-то немного более полезное не пробовали?


    1. mikeveng73 Автор
      10.09.2024 19:02
      +1

      Пробовал. Не помогает ))


    1. xrip
      10.09.2024 19:02
      +2

      Витаминки и сок сельдирея?


  1. tormozedison
    10.09.2024 19:02

    Реально ли добавить поддержку клавиатуры, не поддерживающей обратную совместимость со стандартом PS/2 (только USB)? Рано или поздно они все такими будут.


    1. mikeveng73 Автор
      10.09.2024 19:02

      Реально. Есть прошивки для Мурмулятора с поддержкой USB-клавиатур, джойстиков и мышей

      Табличка с сайта https://murmulator.ru/do
      Табличка с сайта https://murmulator.ru/do

      А ещё есть переходник с USB на PS/2, который можно самостоятельно сваять на ещё одной пике: https://github.com/No0ne/ps2x2pico


      1. tormozedison
        10.09.2024 19:02

        Спасибо!


  1. tormozedison
    10.09.2024 19:02

    Если здесь есть представители проекта КРИСС, было бы интересно и эту платформу перевести на такой вид внешнего ОЗУ, как здесь.