Когда-то давно, Юрий Калмыков
писал эмулятор БК-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 файле,
или в окне настроек.
дамп регистров CPU, системных регистров и портов и регистров режимов работы контроллера АльтПро (чтобы сразу видеть, в каком режиме работает СМК);
дамп регистров FDD и HDD, который прячется за дампом памяти, поскольку нужен очень редко (да почти вообще не нужен).
Убраны не нужные информационные сведения, которые можно посмотреть в окне изменения настроек эмулятора.
На появившееся свободное место в дампе регистров добавлен дополнительный вид содержимого регистров CPU. Можно переключаться между десятичным и шестнадцатеричным представлением.
В связи с разными представлениями чисел отменены ненужные в общем-то ограничения на ввод в поля редактирования значений регистров. Теперь можно вводить всё что угодно, и оно потом пытается интерпретироваться в числа соответствующих систем счислений. С разной степенью удачности.
Взяты некоторые иконки SCALOlaza для улучшения внешнего вида.
Рабочую частоту и модель муз.сопроцессора теперь тоже можно задавать в настройках эмулятора. Я на слух разницы не заметил, т.к. различие в алгоритмах генерации шума не эмулируется. Используется тот, что в Ямахе.
Исправлена недоделка в умном сохранении параметров в ini файл, введённая в билде 1709.5847.
Продолжается борьба с последствиями введения разных доступных пользователю частот дискретизации звука. Почти всё исправлено. Не работает восприятие собственного звука, записанного на частоте 44100Гц и читаемого на частоте 48000 Гц, и наоборот, т.е. если кто-то использует wav файлы, то работать с ними лучше только на частоте 44100 Гц.
Заодно, теперь можно загружать как .wav ещё и .bin файлы. Не знаю, зачем, но возможность такая была изначально, просто не задействована была. Разве что из ностальгических чувств, слушать звуки с кассеты с играми.
Теперь после изменения настроек эмулятора тип рендера экрана и осциллографа и частота дискретизации звука изменяются по настоящему, а не фиктивно и не нужно перезапускать эмулятор полностью, чтобы применились новые настройки.
v3.9.1802.6026
Дата: 20.02.2018 00:00:00
Файлы этого релиза удалены и заменены следующим релизом.
Обновления.
Добавлена новая версия утилиты BKDE. Недоотлажена до конца, поэтому и старая никуда не делась.
Я закончил писать эту программу ещё в конце 2015 года, первую половину 2016 года урывками пытался отлаживать и отлавливать баги, но свободного времени становилось всё меньше и меньше, так эта версия и пролежала в незаконченном состоянии до 2018 года. Поскольку совсем непонятно, когда я снова смогу взяться за эту прогу, решил выложить как есть, пользуйтесь на свой страх и риск.
Точно без ошибок работает с АНДОС и МКДОС, возможно и с КСИДОС тоже без ошибок. С остальными, с RT-11 скорее всего работает, с АОДОС и НОРД могут быть проблемы, а может и не быть, так я и не смог по-нормальному там отладить. Работа с НС-ДОС совсем не гарантирована, может работает, может и нет.
При работе с АНДОС и МКДОС есть косяк - можно создавать одинаковые файлы в разных директориях и программа их различает. А настоящие АНДОС и МКДОС - нет. Они не позволяют создавать файлы с одинаковыми именами в разных каталогах, поэтому старайтесь тоже не создавать их во избежание проблем. Исправлять этот косяк поздно, очень много надо будет переписывать.
Программа умеет работать с реальными дискетами в реальном дисководе при наличии драйвера fdrawcmd.sys
Улучшения эмулятора:
Уточнена эмуляция экрана. Стало гораздо лучше.
Добавлено окно настройки эмулятора, в котором можно изменить те настройки, которые требуют перезапуска эмулятора. Такие как тип рендера, частоту дискретизации, образы HDD, подключённые в данной конфигурации. Идея и начальная реализация - SCALOlaz. Найти окно можно в меню "Опции" или на главной панели инструментов.
Добавлено так сказать устройство "Блок нагрузок", для эмуляции тестирования порта УП. Находится в меню "Отладка". Конфликтует с эмуляцией джойстика, поэтому одновременно может быть подключён или джойстик, или блок нагрузок.
В кроссассемблере Turbo8 чуточку улучшена совместимость псевдокоманд .ascii, .asciz, .rad50 с текстами для MACRO-11. Символами ограничителями текста теперь могут быть любые символы пунктуации, скобки и прочие не буквы и не цифры, кроме символов '<', '>', ';'. Коды из диапазонов 040..077 (без цифр), 0133..0137, 0173..0177.
После окончательного перехода на Windows10 оказалось что основной цикл эмулятора с таймерами работает коряво, и был заменён на старый цикл со счётчиками, который жрёт больше процессорного времени, но зато работает корректно.
Серьёзная реорганизация проектов и немного рефакторинга.
Частичный отказ от совместимости с Windows XP, в связи с чем сделан нормальный D3D рендер на Dx11. Для WinXP теперь будет отдельная специальная сборка.
Утилиты подверглись небольшому рефакторингу. Изменений нет.
Виртуальная клавиатура теперь масштабируется. У кого большие мониторы - видят большую клавиатуру, у кого маленькие - мелкую. Изображение клавиатуры предоставлено Voland'ом.
У виртуальной клавиатуры теперь можно отжать нажатые управляющие клавиши Шифт, СУ, АР2. И поправлена реакция этих клавиш на нажатие клавиши СТОП.
По просьбе уважаемых пользователей, в карту памяти добавлена возможность сохранения/загрузки содержимого страниц. Подробности и особенности работы смотрите в документации.
Андрей Терра сумел растормошить меня и сподвиг на добавление эмуляции самарского контроллера HDD. В связи с этим:
Добавлены конфигурации БК с самарским контроллером.
Из-за пункта 1 была уточнена эмуляция HDD.
Т.к. теперь стало два HDD контроллера, стало очень неудобно иметь общую конфигурацию на всё. Поэтому внедрена возможность хранить отдельные настройки для каждой конфигурации. Изменена структура файла конфигурации. Подробности в документации. Опять все старые сохранения состояний стали несовместимы с новой версией.
Ещё один фикс BKDE для Ксидос. Регистр импортируемых имён файлов становится строчным. К экспортируемым файлам к имени прицепляется хвост с информацией о страницах БК. Импортируемые файлы так же анализируются насчёт наличия этого хвоста в имени.
Уточнён формат структуры самарского винчестера, и исправлены утилиты HDDImgMakеr и BKHDDTool.
В HDDImgMakеr экспериментально добавлен новый формат образа винчестера для эмулятора, но в самом эмуляторе он пока не реализован. Нужно уточнение и эксперименты.
Небольшой фикс BKDE. Не меняем регистр символов расширения добавляемых файлов.
Остальные вещи без существенных изменений. Просто отрефакторены. И серьёзно переписаны утилиты, прилагающиеся только в виде исходников в архиве с исходниками эмулятора.
Исправлено падение при возникающих ошибках во время чтения-записи дискет.
Починена поломавшаяся карта памяти.
Заодно эмуляция затухания люминофора теперь опциональна. Включается в меню "Вид".
v3.8.1604.xxxx
Дата: 11.04.2016 00:00:00
Файлы этого релиза удалены и заменены следующим релизом.
Для сборки теперь используется VS2015.
Используется статическая компоновка, так что дополнительных dllок может и не понадобиться. Но и размер файлов увеличился.
Конфигурация i686 упразднена, потому как оказалось, что студия не хочет при оптимизации самостоятельно применять расширенные инструкции там, где это возможно, как когда-то было раньше.
Эмуляция всё усложняется, системные требования всё повышаются.
Изменения:
Изменения в эмуляторе БК.
Улучшена эмуляция спикера. Теперь он звучит как настоящий. Почти.
Немного улучшена эмуляция экрана. Некоторые демки теперь работают как на настоящей БК, те что не работают - требуют точных таймингов.
Экспериментально добавлена примитивная симуляция затухания люминофора экрана, в надежде, что это как-то решит проблему мерцания, но нет, мерцание почему-то осталось, но за движущимися объектами появился шлейф.
Курсор в окне дизассемблера теперь принудительно жёлтый, чтобы всем было видно, что там в строке написано было, а не только использующим стандартные цветовые схемы.
Починен когда-то давно поломавшийся ресет компьютера.
Исправлена ошибка чтения кассет (wav) при эмуляции работы с магнитофоном. Ошибка возникла в далёком 2014 году при неудачной оптимизации, и хорошо, что эмулятор никому не нужен, а то так и мучились бы.
Как обычно: рефакторинг и возня с разными внутренними компонентами, никак внешне не проявляемая.
Изменения в BKDE.
Починена возможность работы с повреждёнными образами. Пока сам на такое не наткнулся, даже не знал, что оно не работает.