Эмулятор МК90
Программа эмулирует процессор, совместимый с PDP-11, и использует дамп ПЗУ оригинального калькулятора, поэтому она должна работать почти так же, как настоящий.
Работает на ПК с ОС Windows.
Файлы
Версия программы 21, обновление 21.12.2021
💾 mk90emex.zip - исходники Delphi
💾 mk90emsr.rar - скомпилированный .exe
Распакуйте файлы в пустой каталог, затем запустите программу mk90.exe
💾 mk90ro10.zip - образ ПЗУ более ранней версии с BASIC V1.0 (более распространенный на настоящих машинах)
Использование:
- Заменить файл rom.bin
- Переформатировать модули памяти с помощью команды INIT
Скриншоты

Советы по использованию
- Файлы rom.bin и romt.bin содержат образы ROM (по умолчанию BASIC V2.0). Нет никакого файла, представляющего образ ОЗУ, так как МК90 не сохраняет содержимое ОЗУ при выключении
- Файлы smp0.bin и smp1.bin содержат образы памяти съемных модулей памяти СМП. Если файл отсутствует, эмулируемый калькулятор предполагает, что модуль отсутствует. Размер файла указывает размер памяти СМП; файлы размером более 64 КБ представляют собой образы ПЗУ.
- Эмулятором можно управлять с помощью мыши или клавиатуры. Специальные функциональные клавиши:
- курсорные клавиши и PageUp/Down
- Backspace:____[ЗВ]
- Enter:_____[ВК]
- F2:________накладка клавиатуры
- F3:________вызов отладчика и приостановка программы
- F6:______[СУ]
- F7:______[Р/Л] - переключение между кириллицей и латиницей
- F8:______[ФК] - альтернативные функции клавиш (ключевые слова)
- F9:______[В/Н] - альтернативные функции клавиш (регистр)
Отладчик
Дизассемблер
- При вводе начальный адрес соответствует счетчику программ. Его можно изменить, нажав на адрес в первой строке. Допустимые значения: $0000..$3FFE для области ОЗУ и $4000..$FEFE для области ПЗУ. Новое значение должно быть подтверждено нажатием Enter.
- Доступ к области ввода/вывода $E800..$EBFE может нарушить связь с модулями памяти СМП.
- После нажатия на дизассемблированную инструкцию можно набрать новую инструкцию. Как и в случае с начальным адресом, нажмите Enter, чтобы принять изменения. Изменения не сохраняются после закрытия программы.
Окно бинарного редактора
- Окно бинарного редактора позволяет просматривать/изменять только содержимое ОЗУ.
- Можно изменить начальный адрес и содержимое ОЗУ, нажав на них. Enter для принятия изменений.
Регистры
- Содержимое регистров можно изменить, щелкнув по ним. Enter для принятия изменения.
- Нижняя строка в поле регистра показывает биты TNZVC регистра PSW.
Контроль выполнения программы
- Закрытие окон отладчика возобновляет выполнение программы без трассировки.
- Нажатие кнопки [Run] в окне Single step выполняет одну инструкцию машинного кода, не обслуживая прерывания.
- Чтобы выполнить несколько инструкций машинного кода, введите требуемое значение в поле Number of steps, затем нажмите соответствующую кнопку [Run].
- Поле Breakpoint позволяет указать условие, определяющее, когда выполнение программы должно быть прервано. В настоящее время он сравнивает только адрес точки останова, введенный в поле, с программным счетчиком. Когда они совпадают, выполнение программы останавливается и снова появляется окно отладчика.
mk90.ini
Некоторые параметры эмулятора можно настроить, отредактировав файл mk90.ini в любом текстовом редакторе.
Описание содержимого этого файла:
CpuSpeed=1000
Этот параметр управляет скоростью выполнения эмулируемого процессора (количество инструкций, выполняемых каждые 10 мс).
RamSize=16384
Этот параметр определяет физический размер эмулируемой оперативной памяти. Он предназначен только для тестовых целей! Значение по умолчанию не следует изменять, так как система поддерживает только фиксированный размер ОЗУ 16 КБ. Поскольку все адресное пространство занято, дополнительное ОЗУ имеет приоритет над ПЗУ, содержащим тестовые программы.
Radix=16
Этот параметр изменяет основу системы счисления, используемой отладчиком (16 для шестнадцатеричной системы, 8 для восьмеричной системы).
SaveRom=0
Значение, отличное от 0, вызывает при выходе из программы диалоговое окно, позволяющее пользователю сохранить измененный образ ПЗУ.
Удаление
Чтобы удалить эмулятор, просто удалите каталог, в котором он был установлен. Программа ничего не изменяет за его пределами.
Благодарности
Значительная часть кода основана на эмуляторе PDP-11/03, написанном Овсиенко В.А.
Дизассемблер основан на программе pinst.c, написанной Мартином Миноу.
В состав программы входит бесплатный компонент ThreadedTimer, разработанный Карлосом Барбосой.
Ограничения текущей версии
- Программа эмулирует процессор (1806ВМ2)1806vm2.pdf
, который может незначительно отличаться от реального (в основном системой прерываний и в непользовательском режиме).
- Звук пока не поддерживается.
- Настройки скорости последовательной передачи игнорируются.
- Немного оперативной памяти с батарейным питанием намеренно эмулируется как энергозависимая память.
- BASIC V1.0 - сбой самотестирования модуля памяти. Проблема не связана с эмулятором, а вызвана ошибкой в исходном системном программном обеспечении. Ее можно исправить, заменив неисправную инструкцию по адресу $EEF8 на DEC 33CA.
Утилита копирования файлов
💾 mk90util.zip - исходники и исполняемые файлы, DOS и Windows (в окне DOS)
В архиве две отдельные программы для каждой версии Бейсика:
- tosmp10.com- для Бейсика версии 1.0
- tosmp20.com- для Бейсика версии 2.0
Утилита копирует указанный в командной строке список программ BASIC в формате ASCII (кириллица предполагается в кодировке Windows-1251) в образ памяти картриджа МК-90. Пример:
tosmp10.com prog1.bas [prog2.bas prog3.bas …]
В результате создается выходной файл SMP0.BIN , который может быть использован эмулятором или записан на реальный картридж.
Чтобы загрузить программу на BASIC 2.0, используйте команду LOAD с параметром A, например:
LOAD “PROG1.BAS”,A