# Руководство пользователя.
Эмулятор БК 0010(01) и БК 0011(М) для Windows XP / 7 / 8 / 10.
Версия 3.9.

# Аннотация

Данный эмулятор работает под управлением 32/64 битной операционной системы Windows XP SP3 и выше (однако поддержка Windows XP вскоре будет прекращена, и минимальной ОС будет Windows 7), и эмулирует компьютеры «БК 0010(01)» и «БК 0011(М)» в различных конфигурациях. В состав эмулятора входят две утилиты «BK Disk Explorer» - утилита для работы с образами дисков БК и «HDD Image Maker» - утилита для создания образов винчестеров, применимых к контроллеру СМК-512.Образ винчестера имеет свой формат и жёстко заданный размер, определяемый параметрами: количество дорожек, головок, секторов на дорожке, в соответствии со спецификацией ATA.

После успешной инсталляции, создаются следующие служебные папки:

Bin\ | – программы БК в формате BIN
Docs\ | – документация к эмулятору.
Img\ | – образы дисков БК
Memory\ | – записанные состояния памяти
Rom\ | – прошивки ПЗУ
Scripts\ | – скрипты эмулятора
Tapes\ | – wav и tap файлы кассет для загрузки с магнитофона.
Tools\ | – служебные утилиты
UserSaves\ | – файлы, сохранённые пользователем

# Системные требования

Минимальные требования: Двухядерный процессор, видеокарта с аппаратным ускорением OpenGL или Direct3D.

Рекомендуемые требования: Чем больше, тем лучше.

Обязательно наличие установленной библиотеки DirectX 9.0 или более поздней версии, для эмуляции экрана БК с рендером Direct3D, с остальными рендерами - не обязательно.

Эмулятор на данный момент не точно совместим с реальной БК. Точность эмуляции составляет по оценкам автора примерно 80%. Но несмотря на это в нём правильно работает огромное количество программ разработанных на БК. Данная оценка является более объективной по сравнению с некоторыми другими эмуляторами, авторы которых заявляют, что они совместимы на 90% или даже 99%, хотя при первой же проверке выясняется, что по разным причинам под ними не работает большее количество программ.

Убедительная просьба: если вы обнаружили какое-либо несоответствие или вы программировали на БК, и знаете некоторые нюансы или просто обнаружили откровенные ляпы в эмуляции, сообщить об этом автору.

Автор считает своей целью оттачивание эмуляции БК вплоть до 99%, если это конечно возможно, и что приступать к эмуляции БК11М без достижения хотя бы 90% бессмысленно.

Однако следующий автор на практике убедился, что без эмуляции БК11М дальнейшее улучшение точности эмуляции было просто невозможно, поэтому была реализована эмуляция БК11М и КНГМД А16М, а затем и СМК-512 и эмуляция HDD.

Все пожелания, замечания обязательно будут замечены и учтены. Но не обязательно применены.

## Характеристики

Данная программа является программным эмулятором отечественных бытовых компьютеров БК-0010(01) и БК-0011(М). Поддерживаются конфигурации:

- БК 0010-01 + стандартный БЕЙСИК «Вильнюс 1986»
- БК 0010-01 + блок МСТД (Фокал и подпрограммы тестов)
- БК 0010-01 + блок дополнительной памяти 32Кб
- БК 0010-01 + стандартный КНГМД + расширитель памяти 16Кб
- БК 0010-01 + блок КНГМД А16М
- БК 0010-01 + блок КНГМД СМК-512 + HDD
- БК 0010-01 + блок КНГМД + расширитель памяти 16Кб + SamaraHDD + HDD
- БК 0011 + блок МСТД
- БК 0011 + стандартный КНГМД
- БК 0011 + блок КНГМД А16М
- БК 0011 + блок КНГМД СМК-512 + HDD
- БК 0011 + стандартный КНГМД + SamaraHDD + HDD
- БК 0011М + блок МСТД
- БК 0011М + стандартный КНГМД
- БК 0011М + блок КНГМД А16М
- БК 0011М + блок КНГМД СМК-512 + HDD
- БК 0011М + блок КНГМД + SamaraHDD + HDD

Примечания.

1. Для запуска конфигурации «БК 0011 + блок КНГМД А16М» необходимо при старте удерживать нажатой клавишу «4», для перехода в БОС БК11 и загрузки с дискеты вручную.
2. Для запуска конфигурации «БК 0011 + блок КНГМД СМК-512» необходимо удерживать нажатыми клавиши «Шифт»+«4», для перехода в БОС БК11 и загрузки с дискеты вручную.

Данный эмулятор корректно эмулирует все команды процессора БК, включая недокументированные команды: NOP с кодом 0260, команды останова, групповой установки и сброса битов состояния процессора, команды MARK, START, STEP, а так же биты 11 и 10 слова состояния процессора. При эмуляции команд учитывается реальное время их выполнения, и оно примерно соответствует времени выполнения на реальной БК. В секунду выполняется примерно 250 тыс. команд (точное значение зависит от самих команд и методов адресации). Также корректно эмулируются системные регистры, с учётом особенностей БК-0010 и БК-0011(М):

177660 | – регистр состояния клавиатуры полностью
177662 | – регистр кода клавиатуры полностью
177664 | – регистр рулонного сдвига полностью
177706, 177710, 177712 | – регистры таймера полностью
177714 | – сам регистр эмулируется, но вывод регистра на внешние порты в/в PC в настоящий момент не реализован.
177716 | – полностью
177130 | – регистр управления НГМД полностью
177132 | – регистр данных НГМД полностью

Эмулируется звук динамика БК через систему Windows WaveOut, реализован захват звука для оцифровки аудиоплёнок через систему Windows WaveIn.

Реальное поведение клавиатуры БК, имеется возможность подключения джойстика со стандартной распайкой через регистр параллельного порта. (Прим. нового автора: что-то по исходникам этого не наблюдается, джойстик просто эмулируется с клавиатуры)

Поддерживается два режима дисплея БК – чёрно-белый и цветной, причём чёрно-белый режим существует в двух вариантах нормальном, и адаптированном. Адаптированный вариант даёт более реальное изображение (более схожее с чёрно-белым режимом БК) в полноэкранном режиме. Эмулируется рулонный сдвиг и режим расширенной памяти.

Имеется мощный (Прим. нового автора: не такой уж и мощный, хотелось бы и мощнее) встроенный отладчик с возможностью установки точек останова по условию (Прим. нового автора: нет таких, есть только простые точки останова) и пошагового выполнения программы (данный отладчик использовался автором в процессе создания этого эмулятора).

Корректно обрабатывается обращение по нечётным адресам, а также обрабатывается попытка записи в ПЗУ и обращения по несуществующим адресам.

Эмулятор поддерживает распечатку экрана БК на принтере в двух режимах обычном и инверсном (для экономии тонера), а также распечатку ассемблерного кода из ОЗУ в заданном диапазоне адресов.

Поддерживается возможность сохранения текущего состояния БК, а также сохранения файлов БК на жёстком диске в широко распространённом бинарном формате «.bin», или в оригинальных звуковых форматах «.wav» (фактически является копией звуковых данных и по этой причине файл в данном формате занимает много места, примерно 44100 байт умноженных на количество секунд) и «.tap» (специально изобретённый для данного эмулятора формат, файлы в данном формате примерно в 60 раз меньше чем аналогичные в «.wav»).

Реализована возможность чтения данных с кассет БК. Теперь вывод из звуковых файлов дублируется на бит 5 (код 040) регистра 177716. Имеется встроенный менеджер кассет БК с возможностью конвертации одного формата в другой, а также захватом с линейного входа звуковой платы.

Эмулируется работа с НГМД. Поддерживается формат слепка дискеты БК. Расширения «.img», «.bkd» и «.dsk». В настоящий момент поддерживается до четырёх дисков одновременно на стандартном КНГМД и двух - на контроллерах АльтПро.

Для контроллера СМК-512 эмулируется HDD в соответствии со стандартом ATA. Реализован IDE канал, поддерживающий два HDD - Master и Slave. Но т.к. в прошивке СМК-512 не реализована работа с двумя винчестерами, корректность работы с ними не проверена.

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

Рис.1. Общий вид эмулятора, сокращённый вид.

Рис.2. Общий вид эмулятора, полный вид.

Главное окно – это окно представляет экран БК. В любой момент клик мышки на этом окне приводит к перемещению ввода клавиатуры с PC на БК. Вывод в данное окно производится в зависимости от выбранного рендера с помощью OpenGL, Direct2D, VFW или Direct3D и в большинстве случаев производится аппаратно, но не всегда. Алгоритм интерполяции при уменьшении окна, зависит от конкретной видеокарты. По этой причине качественное изображение не всегда гарантируется.

Главное меню – основное меню программы, состоящее из следующих пунктов:

Файл | – операции загрузки и сохранения данных эмулятора, печать, скриншот.
Конфигурация | – управление режимами процессора и конфигурациями БК.
Опции | – различные опции эмулятора.
Отладка | – команды встроенного отладчика.
Вид | – управление окнами эмулятора и внешним видом.
Инструменты | – вызов вспомогательных утилит.
Справка | – информация об эмуляторе.

Панель инструментов – некоторые часто используемые команды выведены на данную панель. Большинство представленных там команд дублируют соответствующие пункты меню. Для быстрого доступа к основным функциям управления из меню, соответствующие горячие клавиши выведены на дополнительную цифровую клавиатуру. Клавиша Alt перехвачена для эмуляции клавиши АР2. Поэтому все стандартные горячие клавиши больше не работают.

Все команды разбиты на три группы.

Стандартная

  Описание команд будет представлено ниже. Здесь стоит сказать, что на данной панели представлено четыре кнопки, посредством которых выбирается и монтируется или отмонтируется образ дискеты в соответствующий дисковод. Все остальные кнопки дублируют соответствующие пункты меню.

  Рис.3. Диалог открытия образа.

  Образы по умолчанию ищутся в директории, заданной ключом «IMG directory» в файле «bk.ini», но возможен выбор образа в любом месте компьютера, даже находящегося на сетевых дисках.

Звук

  Описание команд будет представлено ниже. На данной панели присутствует слайдер, для быстрого доступа к регулировке громкости звука эмулятора. Все остальные кнопки дублируют соответствующие пункты меню.

Отладка

  В процессе работы |  | Во время отладки

  Описание команд будет представлено в подробном описании отладчика. (которого нигде нет, а писать самостоятельно пока нет желания)

Панель состояния – на данной панели показываются текущие внутренние параметры эмулятора:

- Scr: X x Y – отображается текущий размер экрана. 1024 х 768 - максимум, размер экрана свободно масштабируется в сторону уменьшения, для увеличения существует полноэкранный режим. При повсеместном распространении 4K мониторов эта ситуация будет изменена.
- FPS: N – текущее количество кадров в секунду. Это плавающий параметр, но среднее его значение должно соответствовать жёстко заданному числу 50, т.е. 20мс. Если долго отличается от заданного, то существует два объяснения. Первое: если оно больше – то это значит, что что-то не так с Windows или материнской платой. Главным образом из-за того, что полностью отсутствует или неисправна звуковая подсистема. Второе: если оно меньше – это значит, что ваш компьютер не справляется. Обычно это происходит от того, что какое-то другое приложение активно использует ресурсы процессора, но может быть и действительно - ваш компьютер слишком слаб.
- Uptime hh:mm:ss. – внутренние часы, показывают, сколько времени запущена программа. Зачем это нужно, не знаю, но убирать не хочется.
- CPU: Z Hz – текущая частота работы процессора. Её можно произвольно увеличивать / уменьшать в заданных пределах, либо из меню с шагом 1000 Гц, либо из панели дампа регистров произвольно.

# Руководство по запуску программ

### Загрузка и запуск на БК-0010(01)

После запуска эмулятора в любой конфигурации, первое что необходимо сделать для запуска программы в кодах, это перейти в монитор БК. Монитор визуально отличается своим приглашением ввода пользователя которое выглядит как вопросительный знак «?». Из БЕЙСИКа выход в монитор осуществляется командой «МО » (MONIT). Из Фокала можно выйти по команде «P_M ». Монитор БК поддерживает следующие команды:

От «А» до «K» - переход обратно в Бейсик или Фокал, в зависимости от конфигурации. На самом деле происходит вызов подпрограммы по адресу 120000. В общем случае по данному адресу может находится что угодно.

«M » - загрузка файла с магнитофона. В эмуляторе загрузка осуществляется с диска PC. По умолчанию из директории «Bin». Имя данной директории можно поменять изменив ключ «Program directory» в файле «bk.ini». На приглашение «Имя ?» можно просто нажать «», после чего появится стандартный диалог открытия файла. Также вместо простого нажатия «ввода», можно набрать имя запускаемой программы. Файлы программ обычно имеют расширение «.bin».

«S [адрес] » – запуск загруженной программы с указанного адреса. Запускает только что загруженную программу с адреса указанного после команды «S». Например команда «S 1000 » запускает программу с адреса 1000 (типичный адрес запуска программ на БК). Также можно после «S» сразу нажать «» ничего не указывая. При этом программа начнёт выполнение с адреса указанного в заголовке загруженного файла. Это наиболее рекомендуемый способ запуска, т.к. далеко не все программы имеют адрес запуска 1000. Только для конфигураций БК 0010 + КНГМД (БК 0010(01) с FDD): команда «S 160000» запускает начальный загрузчик системной дискеты. Поиск системной дискеты осуществляется сначала в приводе «A:», а потом в приводе «B:».

«Т » – запуск программы тестов зашитой в ПЗУ. Данная команда запускает тесты различных узлов БК. Тесты зашиты в ПЗУ блока МСТД. В эмуляторе данная конфигурация называется «БК 0010-01 + блок Фокал-МСТД». На самом деле команда вызывает подпрограмму зашитую в ПЗУ по адресу 160100, и в других конфигурациях её действие может отличаться.

Более подробно об этом читайте в документе 00001-01.32.03.

Клик на любом «.bin» или «.msf» файле приводит к запуску эмулятора (если он не загружен), загрузке содержимого этого файла и запуску на исполнение. Клик на файле скрипта, также приводит к запуску данного скрипта. Скрипты могут быть использованы для автоматизации набора часто используемых команд или для быстрого набора текста. Скрипты обычно имеют расширение «.bkscript».

Но гораздо проще воспользоваться эмулятором дисковода, загружаться с образа дискеты и использовать возможности файлового менеджера какой-нибудь ОС, какая находится на дискете.

### Загрузка и запуск на БК-0011(M)

Для БК11(М) не реализована эмуляция чтения с магнитофона как для БК10. Поэтому для работы с магнитофоном на БК11(М) нужно выполнить или убедиться, что выполнены следующие действия:

- Необходимо отключить в опциях пункт «Эмулировать загрузку ленты». Если нужна ещё и запись на магнитофон - отключить «Эмулировать сохранение на ленту»
- После этого в панели инструментов и меню «Файл» станет доступен пункт «Загрузить ленту...»
- В мониторе или Бейсике запускаем загрузку файла и жмём на «Загрузить ленту...»
- Выбираем нужный .wav файл (по умолчанию - .tap, надо переключить фильтр) и слушаем как он загружается.

Прервать воспроизведение можно кнопкой «Стоп» на панели управления чтением/записью лент.

Как делать загрузку файлов в мониторе или Бейсике, смотрите в соответствующей документации:

- для БК-0011 в документе 00008-01.32.01.
- для БК-0011М в документе 00015-01.32.01.

# Подробное описание функций эмулятора

### Меню «Файл»

Загрузить состояние... – загрузить, ранее сохранённое, состояние БК с диска. Файлы состояния БК имеют расширение «.msf», и по умолчанию хранятся в директории «Memory». Путь к данной директории можно изменить в файле настроек «bk.ini», поменяв строку с именем ключа «Memory directory». Эмулятор считывает конфигурацию, слепок памяти БК и состояние всех регистров. После загрузки выполнение программы тут же начинается с записанного места, причём именно в нужной конфигурации (т.е. если состояние было сохранено как БК 0010-01, а текущая конфигурация БК 0010-01 + блок Фокал-МСТД, то будет включена конфигурация с Бейсиком). В диалоге выбора файла состояния имеется окно «Preview», в котором показывается уменьшенная копия экрана БК на момент сохранения.

Рис.4. Диалог выбора и загрузки состояний.

Сохранить состояние... – сохранить текущее состояние БК на диск. Файлы состояния БК имеют расширение «.msf», и по умолчанию хранятся в директории «Memory». Путь к данной директории можно изменить в файле настроек «bk.ini», поменяв строку с именем ключа «Memory directory». Эмулятор сохраняет конфигурацию, записывает слепок памяти БК и состояние всех регистров. После записи выполнение программы продолжается дальше.

Загрузить ленту... – загрузить содержимое кассеты и запустить на воспроизведение. Файлы кассет БК могут храниться в двух форматах: Microsoft PCM Wave 8/16бит Моно/Стерео с любой, поддерживаемой форматом, частотой дискретизации «.wav» или собственном формате Tape «.tap». При выделении файла показывается имя записи, адрес загрузки и длина записанного файла. По умолчанию файлы кассет лежат в каталоге «Tapes». Путь к данной директории можно изменить в файле настроек «bk.ini», поменяв строку с именем ключа «Tapes directory». После нажатия кнопки «Открыть» файл загружается и воспроизводится через звуковую плату. Загрузка таких файлов выполняется точно также, как на реальной БК. Прервать воспроизведение не нужного или ошибочного файла можно кнопкой «Стоп» на панели управления чтением/записью лент.

Скриншот – сделать снимок экрана эмулятора БК. По умолчанию скриншоты помещаются в директорию «Screenshots», имя директории можно поменять в файле настроек «bk.ini», поменяв строку с именем ключа «Screenshots directory». Формат скриншота - png, разрешение равно размеру экрана, 1024 х 768. Имя файла скриншота имеет следующий вид "screenshot_xxx.png", где xxx - инкрементный счётчик. Его значение сохраняется в файле настроек «bk.ini», в ключе «Screenshot number». Когда его значение достигнет невероятно больших величин, ему можно вручную задать желаемое значение.

Печать... – распечатка экрана БК или ассемблерного кода из ОЗУ на принтере. Появляется модифицированный диалог настройки принтера, с возможностью выбора принтера и изменения его стандартных настроек. Также предоставляется возможность выбора двух функций:

- «Print screen» – распечатка экрана БК в двух режимах. Если в поле «Inverse» не стоит галочка, то распечатка экрана будет производиться в обычном режиме, т.е. чёрный экран и на бумаге будет распечатан чёрным, а буквы белым или серым цветами, что приводит к неэкономному расходу тонера. Если же в поле «Inverse» стоит галочка, то экран БК будет распечатан в инвертированном режиме, экран белым (т.е. никаким), а буквы чёрным цветами. Соответственно тонера израсходуется намного меньше. Рекомендуется ставить эту опцию при распечатке большого количества листов для экономии тонера, и не ставить если необходимо получить более похожую на реальный экран БК картинку.
- «Print code» – распечатка ассемблерного текста из ОЗУ БК. В поле «From address» нужно ввести начальный адрес программы в ОЗУ БК, а в поле «то» конечный адрес. При этом в окне «Pages» показывается точное (не примерное) рассчитанное количество листов бумаги, необходимое для распечатки всего листинга программы, что очень полезно для оценки расхода бумаги для распечатки большого кода.

Для обеих возможностей распечатки «Print screen» и «Print code», если необходимо, можно указать название программы или любую другую полезную информацию, которая будет распечатана в левом верхнем углу каждого листа. Также на каждом листе будет распечатан его номер и общее количество страниц программы.

Настройка печати... – настройка параметров принтера.

Выход – выход из эмулятора. По данной команде осуществляется выход из эмулятора так же, как если кликнуть мышкой по кнопке с крестиком в правом верхнем углу окна. Alt-F4 не работает, т.к. это обычное сочетание клавиш АР2 + на БК.

### Меню «Конфигурация»

Рестарт БК – перезагрузка БК. При выборе данного пункта меню перезапускается текущая конфигурация эмулятора, при этом осуществляется так называемый «мягкий» перезапуск, т.е. не происходит полной потери данных в памяти БК и её регистрах. Выполнение программ начинается с адреса зашитого в старших битах регистра 177716. На реальной БК10 это значение равно 100000, БК11(М) - 140000. При необходимости его можно поменять в файле конфигурации «bk.ini», изменив значение ключа «CPU start address». По умолчанию, значение в файле конфигурации равно 0, т.е. берётся стандартный адрес соответствующей конфигурации. После перезагрузки восстанавливается конфигурация, а также все точки останова.

Реализована модификация СУ+Ресет. Это когда на БК-0011(М) необходимо перезагрузиться по адресу 100000. Для этого необходимо удерживать нажатой клавишу СУ (Ctrl) при выполнении команды Рестарт БК только из панели инструментов. Данная модификация не работает с контроллерами А16М и СМК-512, т.к. эти контроллеры помещают в регистр 177716 свои стартовые значения.

СУ+Рестарт БК – перезагрузка БК-0011(М) с адреса 100000. Специальный пункт меню для поддержки эмуляции модификации СУ+Ресет, для того, чтобы можно было перезагрузиться так же из меню «Конфигурация», и с помощью комбинации горячих клавиш, а не только кликая мышкой по иконке на панели инструментов.

Длинный рестарт БК – специальный режим перезапуска для контроллера А16М. Работает только в конфигурациях с контроллером А16М, в остальных конфигурациях полностью аналогичен пункту Рестарт БК. На контроллере А16М обычный ресет работает как описано выше, но если нужно, чтобы перезапуск начинался со старта ПЗУ АльтПро, где обрабатываются специальные комбинации клавиш и происходит установка режима работы контроллера А16М, то необходим длинный ресет. На реальном устройстве - пятисекундное удержание кнопки Ресет перед тем, как её отпустить.

Старт БК 0010-01 – запуск обычной конфигурации БК 0010-01 с БЕЙСИКом «Вильнюс 1986». Данная версия БЕЙСИКа была хорошо документирована и на 80% совпадает по синтаксису с GW Basic на PC. Карта памяти:

Адреса | Описание | Объём Кб.
--- | --- | ---
000000 – 000377 | прерывания и системные данные | 0.5
000400 – 037777 | ОЗУ пользовательской программы | 15.5
040000 – 077777 | ОЗУ экрана | 16.0
100000 – 177777 | Монитор | 8.0
120000 – 137777 | 1-е ПЗУ БЕЙСИКа | 8.0
140000 – 157777 | 2-е ПЗУ БЕЙСИКа | 8.0
160000 – 177577 | 3-е ПЗУ БЕЙСИКа | 7.5
177600 – 177777 | область системных регистров | 0.5

Старт БК 0010-01 + Фокал-МСТД – запуск конфигурации БК 0010-01 с блоком МСТД – ПЗУ с интерпретатором Фокала и тестами. Карта памяти:

Адреса | Описание | Объём Кб.
--- | --- | ---
000000 – 000377 | прерывания и системные данные | 0.5
000400 – 037777 | ОЗУ пользовательской программы | 15.5
040000 – 077777 | ОЗУ экрана | 16.0
100000 – 177777 | Монитор | 8.0
120000 – 137777 | ПЗУ Фокала | 8.0
140000 – 157777 | Не используется | 8.0
160000 – 177577 | ПЗУ тестов | 7.5
177600 – 177777 | область системных регистров | 0.5

Старт БК 0010-01 + доп. 32Кб ОЗУ – запуск конфигурации БК 0010-01 с дополнительным блоком ОЗУ 32 Кб. Данный блок ОЗУ расширял стандартные 16 Кб ОЗУ, дополнительными 32 Кб., причём общий объём ОЗУ становился равным 48 Кб. Блок проецировался на адреса памяти 120000 – 140000. Карта памяти:

Адреса | Описание | Объём Кб.
--- | --- | ---
000000 – 000377 | прерывания и системные данные | 0.5
000400 – 037777 | ОЗУ пользовательской программы | 15.5
040000 – 077777 | ОЗУ экрана | 16.0
100000 – 177777 | Монитор | 8.0
120000 – 137777 | Одна из 8 кб страниц блоку ДОЗУ 32К | 8.0
140000 – 157777 | Не используется | 8.0
160000 – 177377 | Не используется | 7.5
177400 – 177777 | область системных регистров | 0.5

Старт БК 0010-01 + стандартный КНГМД – запуск БК 0010-01 со стандартным контроллером НГМД и блоком ДОЗУ 16 Кб. В этой конфигурации эмулируется БК с подключённым к ней стандартным контроллером НГМД. Максимальное число приводов для данного контроллера - 4. Их имена «A:» и «B:», «C:» и «D:». Соответствующие имена образов дисков можно указать в файле «bk.ini». Имена ключей: «Drive A:», «Drive B:», «Drive C:» и «Drive D:».

Старт БК 0010-01 + контроллер A16M – запуск БК 0010-01 с контроллером НГМД А16М и блоком ДОЗУ 16 Кб. В этой конфигурации эмулируется БК с подключённым к ней контроллером А16М. Максимальное число приводов для данного контроллера - 2. Их имена «A:» и «B:». Соответствующие имена образов дисков можно указать в файле «bk.ini». Имена ключей: «Drive A:», «Drive B:». Ключи «Drive C:» и «Drive D:» игнорируются. Обычно образ диска имеет расширение «.img» или «.bkd», но может иметь и другое расширение. Естественно, что для загрузки операционной системы диск должен быть загрузочным. Все изменения, правила запуска файлов и работы с ними читайте в руководстве к конкретной операционной системе. Начальная карта памяти:

Адреса | Описание | Объём Кб.
--- | --- | ---
000000 – 000377 | прерывания и системные данные | 0.5
000400 – 037777 | ОЗУ пользовательской программы | 15.5
040000 – 077777 | ОЗУ экрана | 16.0
100000 – 177777 | Монитор | 8.0
120000 – 137777 | 1-я страница расширенного ОЗУ НГМД | 8.0
140000 – 157777 | 2-я страница расширенного ОЗУ НГМД | 8.0
160000 – 176777 | ПЗУ контроллера НГМД | 7.5
177000 – 177777 | область системных регистров | 0.5

В соответствии с режимами А16М карта памяти может изменяться.

Старт БК 0010(01) + контроллер СМК-512 – запуск БК 0010-01 с контроллером НГМД СМК-512 и блоком ДОЗУ 512 Кб с поддержкой винчестера. Количество дисководов здесь 2, «A:» и «B:», значения ключей «Drive C:» и «Drive D:» игнорируются, т.к. приоритет отдан винчестеру.

Старт БК 0010(01) + контроллер Samara – запуск БК 0010-01 со стандартным контроллером НГМД и блоком ДОЗУ 16 Кб и самарским контроллером винчестера. Количество дисководов здесь 2, «A:» и «B:», значения ключей «Drive C:» и «Drive D:» игнорируются, т.к. приоритет отдан винчестеру. Конфигурация работоспособна, но при наличии более удобных контроллеров АльтПро представляет чисто академический интерес.

Старт БК 0011 + МСТД – Запуск БК 0011 в стандартной конфигурации + блок тестов МСТД, для запуска тестов надо набрать 160000G. Для запуска бейсика надо набрать 11;1C100000G.

Старт БК 0011 + стандартный КНГМД – Запуск БК 0011 с контроллером НГМД с прошивкой 253. Но из-за отсутствия софта, эта конфигурация малополезна. Вообще, БК 0011 добавлен для того, чтобы иметь представление, что это такое.

Старт БК 0011 + контроллер A16M – Запуск БК 0011 с контроллером НГМД А16М и блоком ДОЗУ 16 Кб. Для запуска этой конфигурации необходимо при старте удерживать нажатой клавишу «4», для перехода в БОС БК11 и загрузки с дискеты вручную. Работоспособность не гарантируется, потому что контроллеры АльтПро не рассчитаны на работу с компьютерами БК-0011.

Старт БК 0011 + контроллер СМК-512 – Запуск БК 0011М с контроллером НГМД СМК-512 и блоком ДОЗУ 512 Кб с поддержкой винчестера. Для запуска этой конфигурации необходимо удерживать нажатыми клавиши «Шифт»+«4», для перехода в БОС БК11 и загрузки с дискеты вручную. Работоспособность не гарантируется, потому что контроллеры АльтПро не рассчитаны на работу с компьютерами БК-0011.

Старт БК 0011 + контроллер Samara – Запуск БК 0011 со стандартным контроллером НГМД с прошивкой 253 и самарским контроллером винчестера. Конфигурация работоспособна, но из-за отсутствия софта, эта конфигурация малополезна и представляет чисто академический интерес.

Старт БК 0011M + МСТД – Запуск БК 0011М в стандартной конфигурации + блок тестов МСТД, для запуска тестов надо выйти из бейсика в монитор и набрать 160000G.

Старт БК 0011M + стандартный КНГМД – Запуск БК 0011М с контроллером НГМД с прошивкой 326.

Старт БК 0011M + контроллер A16M – Запуск БК 0011М с контроллером НГМД А16М и блоком ДОЗУ 16 Кб.

Старт БК 0011M + контроллер СМК-512 – Запуск БК 0011М с контроллером НГМД СМК-512 и блоком ДОЗУ 512 Кб с поддержкой винчестера.

Старт БК 0011M + контроллер Samara – Запуск БК 0011М со стандартным контроллером НГМД с прошивкой 326 и самарским контроллером винчестера. Здесь более интересно, поскольку софт для контроллера работает только из-под CSIDOS.

Ускорить – увеличить частоту процессора на 1 кГц. По умолчанию, среднее количество команд обрабатываемых процессором, составляет 250 000 в секунду, что соответствует реальной скорости БК.

Примечание: скорость воспроизведения файлов с ленты БК остаётся строго постоянной. По этой причине сильное изменение скорости процессора может привести к ошибкам чтения.

Замедлить – уменьшить частоту процессора на 1 кГц. По умолчанию, среднее количество команд обрабатываемых процессором, составляет 250 000 в секунду, что соответствует реальной скорости БК.

Примечание: скорость воспроизведения файлов с ленты БК остаётся строго постоянной. По этой причине сильное изменение скорости процессора может привести к ошибкам чтения.

Стандартная скорость – установить частоту, заданную конфигурацией БК, для БК 0010(01) это 3 МГц, для БК 0011(М) - 4 МГц. Частоту по умолчанию можно переопределить в файле «bk.ini» в ключе «CPU frequency». Этот ключ переопределяет частоту процессора заданной конфигурации, если определён в кастомной секции, либо глобально, частоту всех конфигураций, если задан в основной секции.

### Меню «Опции»

Включить Speaker – данная опция включает эмуляцию динамика реальной БК через звуковую плату. Обновление звуковых буферов осуществляется 50 раз в секунду. При этом звук довольно хорошо синхронизирован с изображением на экране, т.е., например, между каким-то событием в игре и звуком задержка порядка 20 мс, что естественно не улавливается на слух. При этом, на медленных компьютерах (зависит не только от компьютера, но и от звуковой платы) могут быть слышны трески и хрипы.

Включить Covox - опция включает Covox. При этом если был включён AY-3-8910, он выключается.

Stereo Covox - переключает виды ковоксов моно или стерео. В моно ковоксе используется только младший байт, при этом зачастую в старшем байте оказывается мусор. В стерео ковоксе используются оба байта, младший - левый канал, старший - правый канал.

Включить AY8910 - опция включает музыкальный сопроцессор AY-3-8910. При этом если был включён Covox, он выключается.

Дамп регистров AY8910 - опция включает дамп регистров AY в файл в формате PSG. Регистры дампятся в файл пока включена эта опция. Файл дампа сохраняется в директорию, заданную параметром «User Saves directory», по умолчанию это UserSaves.

> Speaker - включить фильтрацию звука пищалки. При включённом фильтре чтение/запись программ из/в «.wav» файлов чаще всего становится невозможным. т.к. вносятся серьёзные искажения, с которыми алгоритмы эмулятора не справляются.

> Covox - включить фильтрацию звука ковокса. Вот тут фильтрация особенно полезна.

> AY8910 - включить фильтрацию звука музыкального сопроцессора AY-3-8910. На любителя, кому-то нравится отфильтрованный звук, кому-то - нет.

Эмулировать клавиатуру БК – опция задаёт, будет ли эмулироваться реальное поведение клавиатуры БК. Если данная опция включена, то клавиатура PC начинает работать также, как и реальная клавиатура БК, т.е. при нажатии любой клавиши в мониторе автоповтора не происходит, а обработка кода новой клавиши не производится, пока не отпущена старая. При выключенной опции автоповтор работает стандартным образом, а клавиатура ведёт себе так же, как в Windows.

Включить джойстик – опция включает эмуляцию джойстика. Включение данной опции рекомендуется в играх, поддерживающих джойстик. При этом в играх становится возможной обработка нажатия нескольких клавиш одновременно, что делает управление более плавным. Клавиши, эмулирующие джойстик, эмулируются на дополнительной клавиатуре (при выключенном NumLock):

- NumPad 6 – вправо
- NumPad 4 – влево
- NumPad 2 – вниз
- NumPad 8 – вверх
- NumPad 7 – кнопка 1
- NumPad 9 – кнопка 2
- NumPad 5 – кнопка 3
- NumPad 1 – кнопка 4
- NumPad 3 – кнопка 5

Примечание: Включение джойстика отключает Блок нагрузок, если он был подключен. При выключении джойстика Блок нагрузок обратно сам не подключается, его необходимо включать вручную.

Эмулировать ввод-вывод дисковода – опция включает эмуляцию функции чтения-записи блока на дискету. Включение - существенно ускоряет скорость обмена с дисководом. При выключении опции - скорость чтения-записи становится такой же медленной, как на настоящем дисководе и происходит с помощью эмуляции портов контроллера дисковода 177130, 177132.

При эмуляции производится проверка ПЗУ КНГМД, и если оно нестандартное, то эмуляции не происходит, несмотря на то, что опция включена.

Исп. папку Saves по умолчанию (Basic или Focal) – использовать директорию UserSaves как директорию для чтения файлов по умолчанию. По умолчанию, если данная опция не установлена, чтение файлов происходит из текущей директории, если программа запущена из командой строки (указана в строке параметров, или просто запущена двойным щелчком) или из директории Bin, если эмулятор запущен без параметров. Сохранение файлов, по умолчанию, производится в каталог UserSaves. Данный путь содержится в файле «bk.ini», ключ «User Saves directory». В том случае, если вы постоянно сохраняете и загружаете файлы, установка данной опции изменит папку по умолчанию на UserSaves.

Эмулировать загрузку ленты – данный пункт включает или выключает загрузку данных с кассет БК. Если данная опция включена, то при обращении к EMT 36 (операции ввода/вывода) выводится диалог, и предлагается загрузка данных из «.bin» файла, а бит 5 (код 40) регистра 177716 не эмулируется. Если опция отключена, то чтение происходит как на реальной БК. Опцию можно поменять изменив ключ «Emulate load tape operations» в файле «bk.ini». Работает только на БК0010(01).

Эмулировать сохранение на ленту – данный пункт включает или выключает запись данных в формате кассет БК. Если данная опция включена, то при обращении к EMT 36 (операции ввода/вывода) выводится диалог, и предлагается запись данных в формате «.bin» файла, а бит 6 (код 100) регистра 177716 не эмулируется. Если опция отключена, то запись происходит как на реальной БК. Опцию можно поменять изменив ключ «Emulate save tape operations» в файле «bk.ini». Работает только на БК0010(01).

Менеджер лент БК... – вызвать менеджер кассет БК. Данный диалог позволяет переносить информацию с магнитных лент и компакт-кассет реальной БК на PC и конвертировать из одного формата в другой. Для начала переноса файлов, требуется только подключить выход магнитофона к вашей звуковой плате и нажать кнопку «Пуск» (возможно понадобиться переключить ваш магнитофон в режим MONO и поставить галочку под ползунком микрофона на панели микширования звука в Windows). Если со звуковой карты есть сигнал, то на мониторе «Монитор» вы увидите чёрные полоски. Чтобы были устройства ввода, в звуковой подсистеме Windows должен быть включён Микшер.

В окне «Информация» вы можете видеть информацию о текущем файле, его имя, адрес и длину, а также другую сопутствующую информацию. Имена «захваченных» файлов появляются в списке в порядке их следования на ленте. После захвата файла подсчитывается его контрольная сумма и выдаётся информация в колонке CRC. С помощью кнопки «Обзор» вы может выбрать директорию, в которую будут сохраняться «захваченные» файлы.

После выделения файлов в списке, активизируется пункт «Сохранить как…», где вы можете выбрать формат сохранения. Закрытие диалога приводит к потере информации обо всех не сохранённых файлах. См. рис. 5.

Рис.5. Менеджер кассет БК.

Конвертация в формат «.bin» файла с неправильной контрольной суммой в настоящий момент не поддерживается и приводит к ошибке копирования.

Настройки эмулятора – Открывается диалог, в котором можно изменить такие настройки, которые нельзя изменить на ходу: тип рендера, частоту дискретизации звука, образы HDD, подключённые в заданной конфигурации, а так же модель музыкального сопроцессора и его рабочую частоту.

Рабочую частоту можно выбрать как из заданного списка, так и вручную, вписав своё значение. Все значения меньше 1 МГц и больше 2 МГц заменяются на частоту по умолчанию 1714286 Гц.

Рис. 6. Диалог настроек эмулятора.

### Меню «Отладка»

Данный пункт меню подробно описан в отдельном руководстве по Отладчику (Прим. следующего автора: которого нигде нету). В Отладчике предоставляются следующие возможности:

- Остановка выполнения программы на текущей команде
- Продолжение выполнения программы с текущего места
- Трассировка программы по шагам
- Трассировка программы до заданного места
- Установка точек останова с условиями (например, когда по заданному адресу изменилось значение, или когда значение в регистре больше чем заданное) (Прим. следующего автора: условные точки останова недоработаны, есть только безусловные).

Данные возможности предназначены для специфических задач и не представляют интереса для обычных пользователей. Поэтому описание меню «Отладка» не представлено в данном руководстве.

Добавлю краткое описание опций, которые ввёл я:

Карта памяти... – вызывает окно, в котором по две штуки на вкладку отображается графическое представление страниц памяти БК. Под страницей понимается 16 килобайтный кусок памяти. Таким образом для БК 0010(01) отображается две страницы: 0..16 кб и экранная область 16..32 кб. Кроме памяти БК отображается и содержимое дополнительной памяти контроллеров АльтПро.

Рис.7. Карта памяти.

Особенности загрузки / сохранения.

1. Возможные форматы файлов: .bmp, .png, .gif, .tiff, .jpg
2. Сохраняется вся страница целиком пиксель в пиксель. В режиме отображения цветного изображения, сохраняется файл 256 х 256 пикселей, в четырёх цветах: чёрном, синем, зелёном и красном. В режиме отображения чёрно-белого изображения, сохраняется файл 512 х 256 пикселей, в двух цветах: чёрном и белом.
3. Загружается также вся страница целиком. Если файл больше размера страницы - он обрезается по размеру страницы, если меньше - размещается как есть с верхнего левого угла
4. Алгоритмы обработки загружаемых изображений зависят от текущего режима отображения страницы. Для цветного режима ожидается изображение 256 х 256 пикселей, состоящее из точек четырёх цветов: чёрного, синего, зелёного, и красного, для чёрно-белого - 512 х 256 пикселей, состоящее из точек двух цветов: чёрного и любого не чёрного.
5. Загрузка в цветном режиме чёрно-белого изображения даст чёрный экран, поскольку алгоритм не найдёт в изображении ни красных, ни синих, ни зелёных точек, все остальные точки алгоритмом игнорируются и рассматриваются как чёрные. Загрузка в цветном режиме полноцветного изображения даст результат, скорее всего далёкий от ожидания.
6. Загрузка в чёрно-белом режиме любого изображения в любом случае что-то даст, но не всегда в приемлемом виде.

Интервал обновления дампа регистров – при работе эмулятора в реальном времени в окошке «Дамп регистров» можно смотреть текущие значения большинства регистров. Но это довольно сильно нагружает систему и приводит к ухудшению звука. Поэтому данной опцией можно задать желаемый интервал в миллисекундах, или совсем отключить вывод. Этой опции соответствует ключ «Registers dump interval» в файле «bk.ini»

Диалог при ошибке доступа к памяти – если включить данную опцию, то при любой исключительной ситуации, которая на БК вызывает прерывание по вектору 4 (даже при нажатии клавиши «СТОП»), будет выводиться окошко сообщения, в котором будет задаваться вопрос, что делать дальше: игнорировать, остановиться для отладки или прекратить работу. Не включайте эту опцию без крайней на то необходимости. Этой опции соответствует ключ «Show dialog on access violation» в файле «bk.ini»

Останов CPU после запуска эмулятора – если включить данную опцию, то после создания конфигурации БК сработает точка останова на стартовом адресе. Это полезно для отладки всяких необычных конфигураций, самодельных прошивок и т.п. В обычной жизни - надобности в этой опции не возникает. Этой опции соответствует ключ «Pause CPU after emulator start» в файле «bk.ini»

Блок нагрузок – специально для прохождения отладочных тестов БК-0010(11) сделана эмуляция блока нагрузок, заключающаяся в простой передаче данных из выходного порта УП, во входной. При этом два раздельных порта: порт ввода и порт вывода объединяются в один порт ввода-вывода, в котором хранится 16-разрядное слово, доступное для чтения и записи, как в обычной ячейке памяти.

Примечание: Включение Блока нагрузок отключает джойстик, если он был включён, и не включает его обратно, при выключении блока нагрузок, джойстик при необходимости потом нужно включать вручную..

### Меню «Вид»

Панели инструментов и закрепляемые окна – возможность показать/скрыть разные окна и панели

> Стандартная, Звук, Отладка – показать/скрыть соответствующие панели инструментов.

> Окно отладки – показывать или не показывать окно Отладчика. В данном окне можно увидеть то, какая команда выполняется в данный момент и её операнды, или код программы по заданному адресу. Подробнее см. руководство по Отладчику.

> Рис.8. Окно Отладчика.

> Поле ввода в левом верхнем углу служит для задания начального адреса дизассемблера.

> Дамп регистров CPU – показывать или не показывать окно состояния регистров процессора, системных регистров и коды режимов работы контроллеров А16М/СМК. В первом окошке отображаются значения регистров общего назначения R0, R1, R2, R3, R4, R5, SP (указатель стека), PC (указатель текущей команды) и PS (биты слова состояния процессора). Во втором - системные регистры БК 177660 – 177716. В третьем - регистры КНГМД и в четвёртом - коды режимов работы контроллера А16М или СМК.

> Рис.9. Окно дампа регистров CPU.

> Двойной клик на значении регистра позволяет изменить его значение.

> Дамп регистров FDD – показывать или не показывать окно состояния регистров КНГМД и регистров HDD. Регистр 1F0 - словный, все остальные - байтовые, просто отображаются как словные для простоты вывода.

> Рис.10. Окно дампа регистров FDD.

> Дамп памяти - показывать или не показывать окно дампа памяти. В данном окне можно увидеть значение заданной ячейки памяти и соответствующие им коды КОИ-8, а также изменить данные значения. Возможно просмотр в режиме Слова или Байта. Подробнее см. руководство по Отладчику (Прим. следующего автора: которого нигде нет).

> Рис.11. Окно дампа памяти.

> Поле ввода в левом верхнем углу служит для задания начального адреса дампа. Кнопка справа от него - переключает режимы отображения WORD или BYTE. Двойной клик на значении позволяет изменить значение ячейки. Колесо прокрутки мыши - скроллинг содержимого памяти. Вид закольцован, т.е. за адресом 0177770 идёт снова 000000.

> Управление чтением / записью лент – показать окно с панелью управления кассетными записями БК. С помощью данной панели можно остановить проигрывание или запись ленты, а также включить запись. При этом существуют две дополнительные опции позволяющие автоматически определить начало и конец записи на ленту («Автоопределение начала ленты» и «Автоопределение конца ленты» соответственно. Если установлена опция «Автоопределение начала ленты», то после нажатия на кнопку записи, запись не начинается до тех пор, пока эмулятор не определит начало синхроимпульса, если установлена опция «Автоопределение конца ленты», то запись автоматически прекратится по достижению конца. В случае, ели данные опции не установлены, то запись начинается сразу после нажатия на кнопку «Запись», а прекратится при нажатии на кнопку «Стоп».

> Рис.12a. Панель управления лентой БК.

> Кнопки на панели становятся активными, если снять галку с опции Эмулировать сохранение на ленту. Т.е. в этом случае, сохранение на ленту делается вручную, посредством кнопок Начать запись, и остановить запись.

> Если снять галку с опции Эмулировать загрузку ленты, то станет активной только кнопка «Стоп», чтобы можно было прервать воспроизведение загружаемого .wav или .tap файла, если он окажется не тем, который нужен.

> Рис.12б. Панель управления лентой БК.

> Рекомендуется включать опции «Автоопределение начала ленты» и «Автоопределение конца ленты» только при использовании стандартной подпрограммы записи EMT 36. В случае нестандартной подпрограммы записи, правильная работа автодетектора не гарантируется.

> При включённой фильтрации спикера автоопределение не срабатывает, и обычно теряется синхронизация. Поэтому, чтобы всё это работало, фильтрацию нужно выключать.

> У этой функции есть одна полезная побочная возможность. Если выключить все автоопределения, можно сохранить в wav формате все воспроизводимые звуки, например записывать музыку, играемую на AY-3-8910 или Covox. После нажатия кнопки «Стоп», файл надо записать в формате .wav, а не .tap, как предлагается по умолчанию, .tap, не пригоден для хранения музыки.

> Осциллограф – показать панель осциллографа. Наглядно отображает, что звучит в динамиках. Верхняя осциллограмма - левый канал, нижняя - правый.

> Виртуальная клавиатура – показать панель виртуальной клавиатуры, причём клавиатура реализована двух видов: плёночная и кнопочная.

> Рис. 13. Виртуальная клавиатура.

> Клавиатура масштабируемая, желаемый размер можно задать изменением размера окошка клавиатуры.

Строка состояния – показывать строку состояния в нижней части окна. На ней обычно отображается различная служебная информация, например, текущее количество кадров в секунду, или режим работы клавиатуры.

Вид приложения – выбор визуального стиля приложения.

Виртуальная клавиатура – выбор вида виртуальной клавиатуры, плёночная или кнопочная.

Установить размер экрана – выбрать один из заданных размеров экрана, чтобы не подгонять его вручную. Размеры со значениями в скобках - пропорциональные, без искажений, кроме (х0.5), он нормально работает только в Direct3D. Пункт "Свой" - установить размеры, которые были перед выбором одного из заданных размеров. Изменяются только размер экрана и размер главного окна программы. Размеры всех вспомогательных окошек не изменяются.

Во весь экран – перевести эмулятор в полноэкранный режим работы. При этом используется текущее разрешение рабочего стола Windows.

Цветной режим – переключает цветной и чёрно-белый режим экрана. Для чёрно-белого , возможно два варианта:

- чёрно-белый – нормальный
- чёрно-белый – адаптивный

Адаптивный Ч/Б режим – меняет чёрно-белый режим с адаптивного на точный и обратно. Адаптивный режим не полностью соответствует реальному чёрно-белому режиму БК, но визуально выглядит более похоже. Какой именно режим будет применяться, определяет ключ «Adapt black & white mode» в файле «bk.ini».

Эмуляция затухания люминофора – опция эмулирует поведение слоя люминофора ЭЛТ. Подозреваю, что на самом деле люминофор гаснет не линейно, поэтому поведение неточное. Когда включена, за движущимися объектами на экране остаётся слабый быстро гаснущий шлейф. На LCD мониторах с медленной матрицей эффект заметнее, чем на быстрых.

### Меню «Инструменты»

В данном меню отображаются имена утилит поставляемых вместе с эмулятором. По умолчанию утилиты находятся в папке Tools заданной ключом «Tools directory» в файле «bk.ini». Подробнее утилиты будут описаны в приложении 4.

## Полезные возможности.

### Сохранение музыки, звучащей на AY-3-8910 или Covox в формате WAV

Перед тем, как начать сохранять музыку, необходимо выполнить следующие действия:

1. Выключить опцию «Эмулировать сохранение на ленту», при этом станут активными кнопки в панели управления кассетными записями в окне «Управление чтением / записью лент».
2. Если окна «Управление чтением / записью лент» нет на экране, то его необходимо вывести на экран. Для этого нужно зайти в меню «Вид»->«Панели инструментов и закрепляемые окна» и задействовать данное окно.

В окне «Управление чтением / записью лент» следует снять галочки с обеих опций: «Автоопределение начала ленты» и «Автоопределение конца ленты».

После этого можно приступать к сохранению. Для этого нужно нажать кнопку перед началом мелодии, которую вы хотите сохранить. Затем, дождавшись конца мелодии, следует нажать кнопку . Это приведёт к появлению диалога выбора сохраняемого файла. Обратите особое внимание, что файл надо сохранять в формате .wav, а не .tap, который задан по умолчанию. Не забывайте каждый раз переключать формат сохраняемого файла.

### Создание лога(дампа) данных, посылаемых в регистры AY-3-8910 в формате PSG

Чтобы сохранить мелодию, звучащую на AY-3-8910, в виде дампа значений, посылаемых в регистры AY-3-8910, необходимо нажать кнопку в панели инструментов Звук. Или выбрать опцию «Дамп регистров AY8910» в меню «Опции».

Как только данная опция будет включена или кнопка будет нажата, сразу же начнётся вывод дампа в лог файл. Поэтому не следует нажимать её слишком заранее, чтобы не было в начале лога пустых циклов.

Файл дампа создаётся в директории, заданной параметром «User Saves directory», по умолчанию это UserSaves и имеет вид "AYlog{timestamp}.psg", чтобы гарантировать уникальность имени файла. Переименование его в нужный вид является задачей пользователя.

Выключение данной опции или отжатие кнопки на панели инструментов приводит к прекращению ведения лога и закрытию и фиксации файла.

Если забыть выключить вовремя эту опцию, можно получить весьма большой и ненужный файл .PSG.

## Приложение 1. Соответствия раскладки клавиатур PC и БК и горячие клавиши

Табл.1. Соответствие раскладки клавиатуры.
Клавиша БК | Клавиша PC | Клавиша БК | Клавиша PC
--- | --- | --- | ---
ПОВТ | F1 |  | Backspace
KT | Esc | ВС | Insert
| F2 | ГРАФ | Delete
| F3 | УСТ ТАБ | Home
| F4 | ЗАП | End
ИНД СУ | F5 | СБР ТАБ | Page Up
БЛОК РЕД | F6 | СТИР | Page Down
ШАГ | F7 | СТР | CapsLock выкл.
СБР | F8 | ЗАГЛ | CapsLock вкл.
СТОП | Pause или num. / | РУС | Левый Win
СУ | Любой Ctrl | ЛАТ | Правый Win
АР2 | Любой Alt |  |

Цифро-буквенные клавиши полностью соответствуют знакам, нарисованным на клавишах, кроме клавиши ~/` в русской раскладке. Т.к. Буквы Ё/ё на БК нет, то выводится результат прямой перекодировки PC-скан кода в БК-скан код (буквы Ю/Ч)

Поскольку клавиши Ctrl и Alt заняты под эмуляцию СУ и АР2, то привычные сочетания клавиш Ctrl-<клавиша>, Alt-<клавиша>, если клавиша относится к цифро-буквенным, работают не как горячие клавиши приложения Windows, а как соответствующие клавиши клавиатуры БК.

Интерактивную карту раскладки клавиатуры можно посмотреть тут.

Табл.2. Сочетания горячих клавиш.
Сочетание клавиш | Пункт меню | Функция
--- | --- | ---
F12 | Скриншот | Сделать снимок экрана БК, файлы сохраняются в директории, заданной ключом «Screenshots directory» файла настроек.
Num. 5 | Рестарт БК | Перезапустить текущую конфигурацию БК - это обычная кнопка ресет
Ctrl+Num. 5 | СУ+Рестарт БК | Перезапустить текущую конфигурацию БК - это вариант модификации СУ+ресет. Не работает с контроллерами АльтПро. Как с эмулируемыми так и с реальными.
Alt+Num. 5 | Длинный рестарт БК | Перезапустить конфигурацию БК с контроллером А16М. Обработка длинного и короткого нажатия кнопки ресет реализовано только в контроллере А16М. Во всех остальных конфигурациях действует аналогично обычному рестарту БК.
Num. + | Ускорить | Увеличить частоту процессора на 1000 Гц
Num. - | Замедлить | Уменьшить частоту процессора на 1000 Гц
Num. * | Стандартная скорость | Восстановить частоту процессора по умолчанию
Num. 7 | Включить Speaker | Включить/Выключить звук пищалки
Num. 8 | Включить Covox | Включить/Выключить Covox, при включении автоматически отключается AY-3-8910.
Alt+Num. 8 | Стерео Covox | Переключить Моно Covox / Стерео Covox
Num. 9 | Включить AY8910 | Включить/выключить AY-3-8910, при включении автоматически отключается Covox.
Ctrl+Num. 7 | Фильтр Speaker | Включить/Выключить фильтрацию звука пищалки
Ctrl+Num. 8 | Фильтр Covox | Включить/Выключить фильтрацию звука Covox
Ctrl+Num. 9 | Фильтр AY8910 | Включить/Выключить фильтрацию звука AY-3-8910
Num. 1 |  | Эмулировать загрузку ленты
Num. 2 |  | Эмулировать сохранение на ленту
Num. 3 | Менеджер лент БК | Запустить менеджер виртуальных кассет БК, там можно прослушать как звучат старые кассетные записи программ, а так же можно конвертировать между собой .wav, .tap, .bin файлы. Естественно в .bin можно преобразовать одиночный .wav, .tap, а не всю оцифрованную кассету.
Num. 6 | Карта памяти | Вызвать окно карты памяти
Alt+F9 | Стоп/Продолжить | Прервать/ Продолжить выполнение программы
F9 | Точка останова | Поставить точку останова без условия
Ctrl+F9 | Точка останова с условием | Поставить точку останова с условием (не работает, т.к. отсутствует функционал)
F11 | Шаг с заходом | Выполнить одну команду с заходом в подпрограмму
F10 | Шаг с обходом | Выполнить одну команду без захода в подпрограмму
Shift+F11 | Шаг с выходом | Выйти из текущей подпрограммы
Ctrl+F10 | Выполнить до строки | Выполнить программы до указанной команды
Scroll Lock | Режим цвета | Переключение Цветной/Чёрно-белый режим экрана
Shift+Scroll Lock | Адаптивный Ч/Б режим | Переключить Ч/Б режим с адаптивного на точный
Ctrl+Alt+Scroll Lock | Во весь экран | Переключение полноэкранного/оконного режим экрана

## Приложение 2. Описание ключей в файле «bk.ini»

Все ключи делятся на две категории, информативные и директивные. Информативные ключи содержат информацию о параметрах, которые изменять можно, но нежелательно, поскольку они в общем-то предназначены для хранения внутренних параметров эмулятора. Директивные ключи содержат информацию о параметрах, которые можно менять по своему усмотрению и надобностям, тем более, что некоторые параметры, можно задать только вручную, редактированием ini файла.

Например, BK11M Monitor BOS - директивный ключ, содержит имя файла дампа ПЗУ БОС 11М, при необходимости его можно заменить на имя файла своего модифицированного ПЗУ БОС 11М, чтобы посмотреть, что из этого выйдет, или с другими целями.

Табл.3. Описание ключей файла конфигурации.
Название ключа | Значение по умолчание | Описание | Тип
--- | --- | --- | ---
[Rom modules]
BK10 Monitor | bk10_017_mon.rom | Имя модуля с ПЗУ монитора БК 0010 | Д
BK10 Focal | bk10_018_focal.rom | Имя модуля с ПЗУ Фокала | Д
BK10 MSTD | bk10_019_mstd.rom | Имя модуля с ПЗУ блока МСТД | Д
BK10 Basic1 | bk10_106_basic1.rom | Имя модуля с 1-ым ПЗУ Бейсика | Д
BK10 Basic2 | bk10_107_basic2.rom | Имя модуля с 2-ым ПЗУ Бейсика | Д
BK10 Basic3 | bk10_108_basic3.rom | Имя модуля с 3-им ПЗУ Бейсика | Д
BK11 Monitor BOS | bk11_201_bos.rom | Имя модуля с ПЗУ БОС 11 | Д
BK11 Monitor EXT | bk11_202_ext.rom | Имя модуля с ПЗУ расширения БОС 11 | Д
BK11 MSTD | bk11_203_mstd.rom | Имя модуля с ПЗУ блока МСТД 11 | Д
BK11 Basic1 | bk11_198_basic1.rom | Имя модуля с 1-ым ПЗУ Бейсика БК11 | Д
BK11 Basic2 | bk11_199_basic2.rom | Имя модуля с 2-ым ПЗУ Бейсика БК11 | Д
BK11 Basic3 | bk11_200_basic3.rom | Имя модуля с 3-им ПЗУ Бейсика БК11 | Д
BK11M Monitor BOS | bk11m_324_bos.rom | Имя модуля с ПЗУ БОС 11М | Д
BK11M Monitor EXT | bk11m_325_ext.rom | Имя модуля с ПЗУ расширения БОС 11М | Д
BK11M MSTD | b11m_mstd.rom | Имя модуля с ПЗУ блока МСТД 11М | Д
BK11M Basic1 | basic11m_0.rom | Имя модуля с 1-ым ПЗУ Бейсика БК11М | Д
BK11M Basic2 | basic11m_1.rom | Имя модуля с 2-ым ПЗУ Бейсика БК11М | Д
BK11M Basic3 | basic11m_1.rom | Имя модуля с 3-им ПЗУ Бейсика БК11М | Д
FDD KNGMD | DISK_326.rom | Имя модуля с ПЗУ блока КНГМД | Д
FDD A16M | DISK_A16M_v2.41.rom | Имя модуля с ПЗУ контроллера А16М | Д
FDD SMK512 | DISK_SMK512_v2.05.rom | Имя модуля с ПЗУ контроллера СМК-512 | Д
BK11 Optional Page12.1 | <empty> | Имя опционального модуля с ПЗУ, подгружаемого в 012(10.) страницу БК11(М) по адресам 0100000-0117777 | Д
BK11 Optional Page12.2 | <empty> | Имя опционального модуля с ПЗУ, подгружаемого в 012(10.) страницу БК11(М) по адресам 0120000-0137777 | Д
BK11 Optional Page13.1 | <empty> | Имя опционального модуля с ПЗУ, подгружаемого в 013(11.) страницу БК11(М) по адресам 0100000-0117777 | Д
BK11 Optional Page13.2 | <empty> | Имя опционального модуля с ПЗУ, подгружаемого в 013(11.) страницу БК11(М) по адресам 0120000-0137777 | Д
[Directories]
Program directory | Bin | Путь к программам в формате Bin | Д
Tools directory | Tools | Путь к утилитам | Д
Memory directory | Memory | Путь к файлам состояния | Д
User Saves directory | UserSaves | Путь к записываемым файлам | Д
Tapes directory | Tapes | Путь к кассетам БК | Д
Scripts directory | Scripts | Путь к клавиатурным скриптам | Д
Rom directory | ROM | Путь к модулям ПЗУ | Д
IMG directory | Img | Путь к образам дискет | Д
Screenshots directory | Screenshots | Директория для хранения скриншотов | Д
[Main]
BK model | BK-0010-01 | Конфигурация БК, которая стартует при запуске эмулятора. Возможные значения:

- BK-0010-01

- BK-0010-01_MSTD

- BK-0010-01_EXT32RAM

- BK-0010-01_FDD

- BK-0010-01_A16M

- BK-0010-01_SMK512

- BK-0010-01_SAMARA

- BK-0011

- BK-0011_FDD

- BK-0011_SAMARA

- BK-0011M

- BK-0011M_FDD

- BK-0011M_A16M

- BK-0011M_SMK512

- BK-0011M_SAMARA

Если здесь будет записано что-либо другое, то по умолчанию будет запущена конфигурация BK-0010-01. (не меняйте вручную, вообще не трогайте)

И

Screenshot number | 1 | Инкрементный счётчик для файлов скриншотов. Увеличивается с каждым сделанным скриншотом. Если число станет слишком большим, можно вручную установить своё значение, которое больше нравится. | Д
Screen render type | 1 | Тип движка прорисовки для экрана. Поддерживаемые режимы: 0 - OpenGL, 1 - Direct2D, 2 - VFW, 3 - Direct3D. В Windows XP Direct2D не поддерживается, его поддержка начинается с Windows Vista, поэтому при запуске эмулятора в Windows XP номер 1 автоматически заменяется на 2, любой другой режим остаётся прежним. Режим Direct3D в настоящее время работает не совсем удовлетворительно. | Д
Oscilloscope render type | 1 | Тип движка прорисовки для осциллографа. Поддерживаемые режимы: 0 - OpenGL, 1 - Direct2D. В Windows XP Direct2D не поддерживается, его поддержка начинается с Windows Vista, поэтому для XP остаётся единственный вариант: 0 - OpenGL, при запуске эмулятора в Windows XP номер автоматически устанавливается в 0. | Д
Sound Sample Rate | 44100 | Частота дискретизации звука. Чем выше частота, тем лучше работают фильтры пищалки, ковокса и AY. Но и тем больше требования к производительности. На данный момент поддерживается три значения: 44100, 48000, 96000, 192000 Гц. Все другие значения заменяются на значение по умолчанию 44100. | Д
SoundChip Frequency | 1714286 | Рабочая частота музыкального сопроцессора. Можно задать значение от 1000000 до 2000000 Гц. Значения вне этого диапазона заменяются частотой по умолчанию 1714286 ≈ 12МГц / 7 | Д
SoundChip Model | 1 | Модель музыкального сопроцессора. 0 - AY-3-8910, 1 - YM2149F. Различие моделей в том, что амплитуда огибающей формируется 4-х битным ЦАПом у AY-3-8910 и 5-ти битным у YM2149F. Разница в алгоритмах формирования шума не эмулируется, и используется алгоритм, как у YM2149F.

Все другие значения заменяются значением по умолчанию - 1.

Д

[Parameters]
CPU start address | 0 | Адрес начального запуска, если 0 - берётся стандартный для заданного типа БК, иначе - БК стартует с данного адреса | Д
CPU frequency | 0 | Начальная частота процессора БК, если 0 - берётся стандартная для заданного типа БК | Д
Registers dump interval | 0 | Частота обновления содержимого регистров в окне Дампа регистров, по умолчанию 0 - выключено. Допустимые значения: 0, 1, 2, 3, 4, 5, 10, 15, 20, 25, 50. Означает, через сколько фреймов длительностью 20 мс необходимо обновлять значения регистров и дампа памяти. | И
Sound volume | 30% | Громкость звука. Задаётся в процентах от 0 до 100. | И
[Options]
Use Saves directory as default | No | Поменять директорию для записи | Д
Speaker enabled | Yes | Включить звук пищалки | Д
Covox enabled | No | Включить звук приставки Covox | Д
AY8910 enabled | Yes | Включить звук муз. сопроцессора AY-3-8910 | Д
Speaker filter enabled | Yes | Фильтровать звук пищалки | Д
Covox filter enabled | Yes | Фильтровать звук ковокса | Д
AY8910 filter enabled | Yes | Фильтровать звук сопроцессора | Д
Stereo covox | No | Включить стерео ковокс | Д
Emulate BK keyboard | Yes | Эмулировать клавиатуру БК. Т.е. отключить аппаратный автоповтор | Д
Joystick enabled | Yes | Эмулировать джойстик | Д
Run in color mode | Yes | Запуск в цветном режиме | Д
Adapt black & white mode | Yes | Включить адаптированный ч/б режим | Д
Run in fullscreen mode | No | Запуск в полноэкранном режиме | Д
Emulate load tape operations | Yes | Эмулировать чтение с кассеты | Д
Emulate save tape operations | Yes | Эмулировать запись на кассету | Д
Tape auto start detection | Yes | Автоматически определять начало записи кассеты | Д
Tape auto end detection | Yes | Автоматически определять конец записи кассеты | Д
Pause CPU after emulator start | No | Остановить процессор сразу после запуска эмулятора (полезно для отладки) | Д
Show performance string | Yes | Показать строку состояния | Д
Show dialog on access violation | No | При попытке записи в ПЗУ или чтения из несуществующего адреса, показывать диалог с вопросом, что делать в возникшей ситуации (Не рекомендуется включать без крайней надобности) | Д
Emulate FDD IO | Yes | Эмулировать процедуру чтения/записи блока на дискету | Д
Start dump address | 0 | Начальный адрес в окне дампера | Д
Start disasm address | 01000 | Начальный адрес в окне дизассемблера | Д
Virtual Keyboard Type | 0 | Внешний вид виртуальной клавиатуры: 0 - кнопочная, 1 - плёночная | Д
Screen fade emulation | No | Эмуляция затухания люминофора | Д
IC Load Block | No | Включить блок нагрузок в порт УП | Д
[Drives]
Drive A: | <empty> | Имя образа, монтируемого в диск А: | Д
Drive B: | <empty> | Имя образа, монтируемого в диск B: | Д
Drive C: | <empty> | Имя образа, монтируемого в диск C: | Д
Drive D: | <empty> | Имя образа, монтируемого в диск D: | Д
HDD0 | <empty> | Имя образа HDD, подключаемого как Master | Д
HDD1 | <empty> | Имя образа HDD, подключаемого как Slave | Д

Секция [Directories] используется только для чтения, и никак не изменяется эмулятором.

Секция [Main] является самой важной и общей для всех конфигураций.

Все остальные секции поддерживают кастомизацию. Кастомной является секция, в которой хранятся индивидуальные настройки для определённой конфигурации. Она имеет вид [SectionName.ConfigName], например [Options.BK-0010-01]. ConfigName должен совпадать со значением ключа BK model из секции [Main]

Алгоритм работы следующий: При чтении настроек, нужное значение сперва ищется в кастомной секции, и если там его нет, берётся из основной секции.

При сохранении настроек, в кастомную секцию сохраняется значение только в том случае, если оно не совпадает со значением из основной секции. За исключением кастомной секции [Drives.ConfigName], эти значения всегда сохраняются в кастомную секцию, чтобы проще было жить - в каждой конфигурации свои настройки дисководов и винчестеров.

Для каждой конфигурации можно создать свой собственный набор модулей ПЗУ. Для этого нужно вручную создать заданную кастомную секцию [Rom modules] и прописать там свои имена фалов дампов ПЗУ.

Примечание.

> В секции [Directories] все пути задаются относительно пути к исполняемому файлу эмулятора.

> В секции [Drives] можно указывать полный путь к имени файла образа, находящегося в любом месте. Если образ находится в директории по умолчанию, задаваемой для образов дисков, в секции [Directories] в ключе «IMG Directory», то полный путь указывать не нужно. Подключение можно осуществлять как вручную, так и с помощью специальных кнопок на стандартной панели инструментов.

> Образ винчестера можно подключить как вручную, редактированием файла bk.ini, так и через специальный диалог "Настройки эмулятора", находящийся в меню "Опции". Т.к. винчестер штука сложная и не поддерживает горячее отключение-подключение.

> Все изменения, вручную вносимые в файл bk.ini во время работы эмулятора не учитываются и заменяются теми, значениями, которые были использованы эмулятором на момент выхода, так что будьте внимательны.

## Приложение 3. Описание параметров командной строки

Bk.exe [/Флаг].

Флаги:

/?, /H | - помощь (не реализовано)
/B «путь» | - загрузка указанного файла в формате «.bin» (Binary file).
/M «путь» | - запуск указанного файла состояния в формате «.msf» (Memory state file).
/S «путь» | - запуск указанного скрипта «.bkscript» (Файл клавиатурного скрипта). Данный ключ может быть использован совместно с другими ключами.
/T «путь» | - включить указанную кассету на воспроизведение (расширение «.tap» или «.wav»). Данный ключ может быть использован совместно с другими ключами.

«путь» - может быть как относительным, так и абсолютным.

Например:

bk.exe /m c:\my_saves\my_prog.msf – загрузить сохранённое состояние эмулятора из файла: c:\my_saves\my_prog.msf

bk.exe /s my_scripts\basic.bkscript – запустить файл скрипта, который находится в директории: «каталог эмулятора»\ my_scripts\

bk.exe /b game.bin /s autorun\monitor_load.bkscript – загрузить и запустить файл из директории: «каталог эмулятора»\bin\

bk.exe /t mytape.wav – запустить файл mytape.wav из каталога по умолчанию: «каталог эмулятора»\tapes\

Данные ключи используются не только при запуске эмулятора, но и при регистрации файловых расширений. Одновременно в памяти Windows может находится только одна копия эмулятора. При запуске второй копии с данными ключами, она передаёт параметры запущенному эмулятору и выгружается из памяти. Если эмулятор не загружен в память, то он автоматически загружается при клике на любом файле с зарегистрированным расширением (при этом текущей каталог для файлов данного типа становится каталогом, в котором лежит данный файл). Вышеприведённое свойство можно использовать для автоматизации загрузки файлов указанного типа:

Табл.4. Файловые расширения.
Иконка | Тип файла | Действие
--- | --- | ---
| Файл БК в формате bin. Расширение: «.bin» | Клик на иконке с таким файлом приводит к перезапуску текущей копии эмулятора и запуску скрипта из директории: autorun\monitor_load.bkscript.
| Сохранённое состояние БК. Расширение: «.msf» | Клик на иконке с таким файлом приводит к мгновенной загрузке выбранного состояния в текущую копию эмулятора.
| Образ кассеты БК. Расширение: «.tap» | Клик на иконке с таким файлом приводит к запуску данной кассеты на воспроизведение в текущей копии эмулятора.
| Вспомогательный клавиатурный скрипт. Расширение: «.bkscript» | Клик на иконке с таким файлом приводит к выполнению выбранного скрипта в текущей копии эмулятора.

Загружать файлы в эмулятор также можно, просто перетаскивая их мышкой на виртуальный экран, с помощью технологии Drag&Drop (в общем-то пока не должно работать, но если работает, то это случайно).

## Приложение 4. Описание вспомогательных утилит

В директории Tools находятся дополнительные утилиты, которые могут быть полезны. Чтобы утилиты были видны из меню эмулятора, они снабжены особым модулем проверки свой-чужой, с помощью которого обмениваются параметрами с эмулятором при его инициализации. Так что совершенно любую программу туда поместить можно, но видна она из меню не будет.

На данный момент есть две утилиты:

BKDE - утилита для работы с образами дискет, позволяет извлекать файлы из образов и записывать файлы на некоторые образы.

HDDImgMaker - утилита для создания образа винчестера формата эмулятора, либо чистого, либо из существующего образа - посекторной копии винчестера.