Когда-то давно, Юрий Калмыков
писал эмулятор БК-0010(01) под Windows. Но позже видимо забросил это дело
и выложил исходники всем желающим.
Здесь находятся доработанный и улучшенный эмулятор Юрия Калмыкова на
основе его исходников. Относительно оригинала добавлена эмуляция БК-0011,
БК-0011М, AY-8910, FDD контроллеры: стандартный, A16M, СМК-512, Самарский
контроллер HDD + эмуляция HDD.
Не забываем про необходимость
VC redistributable 2015/2017/2019/2022 разрядности, соответствующей
используемой разрядности программ. Не Windows. При запуске 32х разрядной
проги на 64х разрядной винде, нужен 32х разрядный VC_redist.exe.
Данный пакет для x86 не запускается в Windows XP, поэтому пользователям
Windows XP нужен вот такой
VC Redist 2015/2017/2019
и больше никакой.
Известные ошибки и проблемы:
Играть в игры для БК-0010 затруднительно из-за не синхронизированной
обработки клавиатуры и эмуляции выполнения инструкций процессора. Клавиатура
обрабатывается в реальном времени, а инструкции - пакетом, за как можно
короткое время, между ожиданиями обработки звуковой подсистемой Windows
звуковых буферов.
Режим построчной эмуляции экрана работает не полностью корректно,
в обычной работе это не заметно, а вот на некоторых демках, использующих
эффекты мультиколора и синхронизированного с ходом луча переключения
экранов даже очень заметно.
Как оказалось тайминги и их коррекция под разные частоты совершенно
неправильные. Нужно писать новый эмулятор, с принципиально иным алгоритмом
эмуляции.
Со звуком всё таки что-то неладно. Но не у всех и не всегда. Есть
люди, у которых звук эмулятора работает стабильно плохо.
Эмуляция мыши путём захвата ПКшной мыши работает ужасно. Поэтому
не вынесена в опции и включается/выключается или вручную в ini файле,
или в окне настроек.
Добавлены EIS/FIS инструкции на будущее, но они отключены, т.к. в ВМ1 их нет. (Кому интересно - смотрите исходники)
Исправлена ошибка дизассемблирования некоторых FIS инструкций.
Найдено и сэмулировано аппаратное отличие ПЛИС реплики СМК от оригинала, по которому можно программно определить реплика у нас или оригинал.
Управление эмулятором конденсатора добавлено к фильтру спикера, т.е. теперь отключается, чтобы своими ушами могли услышать разницу в работе.
Переделка обработки клавиатуры в связи с безфреймовым алгоритмом, такие сложности больше не нужны.
Исправлена ошибка в выводе размера файла в менеджере лент.
Добавлена возможность выбора формата bin сохраняемого файла - длинный или короткий, по умолчанию используется короткий. Переключение - правка параметров в ini файле.
Добавлена поддержка ещё одного формата bin: 4 байта заголовок (адрес длина) и в конце файла - 2 байта контрольная сумма.
Откорректировано изображение плёночной клавиатуры.
Если при сохранении такой bin,wav,tap файл уже существует, то создаётся файл с номером в скобках в конце имени.
Внутренняя обработка звука полностью в double, чтоб не перекодировать туда-сюда в разных местах.
Убрано автовыравнивание звука.
Фикс драгндропа и запуска с командной строки, в этом случае принудительно запускается БК10, как задумывалось с самого начала. Этот метод поломался при введении кастомных настроек для каждой конфигурации.
Изменён формат и структура скрипта. См документацию.
Фикс модального окошка сообщений. Оно иногда пряталось под основным окном, теперь всегда на переднем плане.
Проверка имён сохраняемых файлов на запрещённые в Windows символы. И корректировка естественно. При этом обратно такой bin файл уже не прочитается. Например: если в файле есть символ ':' - "ABC:DEF" то оно заменится на символ '_'. Но эмуляция чтения кассеты БК будет искать на диске файл именно с именем "ABC:DEF" и не найдёт естественно. Решения разрешения такого конфликта пока не найдено.
Уточнена эмуляция битов 2 и 3 регистра 177716.
Сделана возможность свернуть полноэкранное окно в некоторых режимах. А в Direct3D - не получилось.
Более корректный вывод информации в диалогах выбора выбора образа дискеты, менеджере лент, и диалоге выбора bin,wav,tap файлов в менеджере лент.
Усовершенствован парсер wav в bin. Но лучше не стало.
Автовыравнивание добавлено к принимаемому wav при эмуляции кассеты. Улучшения микроскопические, почти незаметно.
Любая клавиша клавиатуры WIN теперь работает как переключатели раскладки РУС/ЛАТ. Это немного облегчит жизнь людям, не имеющим классической 102 кнопочной клавиатуры. Т.к. хоть одна клавиша WIN на клавиатуре всё же есть.
BKDE:
Исправлена ошибка при работе с дисками Андос.
Уточнение обрезки имён файлов при импорте файлов с длинными именами в образы.
Добавлена возможность выбора формата bin сохраняемого файла - длинный или короткий, по умолчанию используется короткий.
Добавлена поддержка ещё одного формата bin: 4 байта заголовок (адрес длина) и в конце файла - 2 байта контрольная сумма.
Фикс дрангдропа, теперь нельзя дропнуть файлы в ещё не открытый образ.
BKTurbo8:
Метка может начинаться с символа $, теперь это буква.
Фикс парсера чисел в формате float.
Исправлена ошибка с комментариями после .ascii.
Добавлена псевдокоманда .include, позволяющая включать в текст программы другие тексты программ. Вложенность ограничена доступным ОЗУ системы, но с защитой - нельзя повторно включить уже однажды включенный файл в цикле вложенности.
Исправлена ошибка в обработке команды "." (текущий PC).
Дополнения в документации, и исправление опечаток.
В качестве эксперимента, данный релиз собран в Visual Studio 2017, поэтому для работы может понадобитьсяVC redistributable 2017. Хотя для Windows XP и без него всё работает, видимо VC_redist 2015 достаточно.
Изменения в эмуляторе:
Изменён алгоритм эмуляции на безфреймовый, поэтому решено увеличить номер версии эмулятора.
Немного доработан скриптообработчик, и в него добавлен код, выполняющий нажатие на кнопку "СТОП". Пример прилагается.
Исправлен очень старый баг - не отображались иконки в отладчике под Windows XP, причиной оказались файлы иконок не той системы, слишком современные для такой древней ОС
В HDDImageMaker добавлена полноценная реализация нового формата образа HDD - hdix, но с внедрением его в эмулятор возникли сложности, поэтому он пока бесполезен. Попутно найдены и исправлены грамматические ошибки в пользовательском интерфейсе.
Из исходников удалена версия BKDE v1, оставлена только v2, потому что она лучше, и наконец-то более-менее отлажена.
В BKTurbo8 уточнены методы работы с числами с плавающей точкой и исправлены ошибки в командах кодирования в формат RADIX-50.
Везде, где было, поправлены даты в строчках копирайта, поэтому всё пересобрано.
Уточнено действие поля для ручного ввода текущей частоты ЦП, и заодно пересмотрены граничные значения частот ЦП.
Исправлена ошибка в эмуляции HDD для операций с 256 секторами за раз.
Уточнена эмуляция работы с магнитофоном для БК-0010, теперь в точности как в ПЗУ записано.
Добавлено немного асинхронности, нагрузка на процессор РС возросла, зато весь пользовательский интерфейс рисуется вне цикла фрейма, что теоретически должно привести к устранению дедлоков.
В эмулятор добавлена опция сохранения дампа регистров музыкального сопроцессора AY-3-8910 (YM2149). Как это делается, смотрите в документации. Вот там.
В HDDImgMaker улучшена логика работы, очень незначительно.
Возвращён прежний способ синхронизации видео. Тот, что тайно от всех был применён в версии 06.06.2018, оказался очень уж неудачным.
v3.9.1806.xxxx
Дата: 06.06.2018 00:00:00
Файлы этого релиза удалены и заменены следующим релизом.
В эмулятор везде, где возможно добавлен вывод сообщения, при неудаче выделения памяти. После этого будет либо крах программы, либо неадекватное поведение, либо не произойдёт действие, которое ожидалось. Зато будет понятно, из-за чего это случилось.
В эмуляторе исправлены неприятные ошибки эмуляции клавиатуры и виртуальной клавиатуры, наконец проявившие себя после нововведений сборки 3.9.1803.6475.