# Руководство Пользователя
Эмулятор БК 0010(01) для Windows XP/7/8 версия 3.6

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

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

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

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

Минимальные требования: Athlon 64 x2 2200Mhz/512M Ram/Geforce 800GTS 320/HDD (У меня просто нету более слабых конфигураций для проверки).

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

Обязательно наличие установленной библиотеки DirectX 9.0 или более поздней версии, для эмуляции экрана БК. Это условие будет необходимо в случае, если рендер экрана будет изменён на D3D или D2D. На данный момент DirectX не требуется.

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

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

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

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

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

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

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

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

Данный эмулятор корректно эмулирует все команды процессора БК, включая недокументированные команды: NOP, команды останова, установки и сброса битов состояния процессора, команду MARK. При эмуляции команд учитываются реальное время их выполнения и оно в точности соответствует времени выполнения на реальной БК. В секунду выполняется примерно 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». В настоящий момент поддерживается до 4х дисков одновременно. Имеется встроенный менеджер дисков БК.

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

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

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

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

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

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

Панель быстрых команд – некоторые часто используемые команды выведены на данную панель. Данные команды дублируют соответствующие пункты меню. Также любой пункт меню можно вызвать горячей клавишей, указанной после его названия или нажатием Alt + Подчёркнутая буква в названии меню (для русских букв почему-то не работает).

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

- Экран – отображается текущий размер экрана. 768 х 576 - максимум, размер экрана свободно масштабируется в сторону уменьшения, для увеличения существует полноэкранный режим.
- МClock – внутренний таймер. Работает только если в данный момент работает процессор БК.
- CPU Speed – текущая частота работы процессора. Её можно произвольно увеличивать / уменьшать в заданных пределах, с шагом 1000Гц
- FPS – текущее количество кадров в секунду. Это плавающий параметр, но среднее его значение должно соответствовать жёстко заданному числу 50, т.е. 20мс. Если долго отличается от заданного, то существует два объяснения. Первое: если оно больше – то это значит, что что-то не так с Windows или материнской платой. Второе: если оно меньше – это значит, что ваш компьютер не справляется. Обычно это происходит от того, что какое-то другое приложение активно использует ресурсы процессора, но может быть и действительно - ваш компьютер слишком слаб.

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

После запуска эмулятора в любой конфигурации, первое что необходимо сделать для запуска программы в кодах, это перейти в монитор БК. Монитор визуально отличается своим приглашением ввода пользователя которое выглядит как вопросительный знак «?». Из БЕЙСИКа выход в монитор осуществляется командой «МО ←┘» (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, и в других конфигурациях её действие может отличаться.

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

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

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

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

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

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

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

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

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

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

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

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

Выход – выход из эмулятора. По данной команде осуществляется выход их эмулятора также, как по команде Alt + F4.

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

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

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

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

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

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

Старт БК 0011M + стандартный КНГМД

Старт БК 0011M + контроллер A16M

Старт БК 0011M + контроллер SMK-512

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

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

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

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

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

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

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

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

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

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

Фильтры

> Speaker – включить фильтрацию звука пищалки.

> Covox – включить фильтрацию звука ковокса.

> AY8910 – включить фильтрацию звука музыкального сопроцессора AY-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» файла, а бит 100 регистра 177716 не эмулируется. Если опция отключена, то запись происходит как на реальной БК. Опцию можно поменять изменив ключ «Emulate save tape operations» в файле «bk.ini». Работает только на БК0010(01).

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

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

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

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

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

Менеджер образов дисков – показать диалог настройки образов дисков. С помощью данного диалога можно изменить соответствие образов дисков и логических приводов в БК. Каждый образ представляется в таблице где отображаются соответствующий ему логический диск, его имя, его формат, а также системный он или нет. Возможна сортировка по любому из этих полей. Изменить букву диска можно простым вызовом контекстного меню, по нажатию правой клавиши мыши. В файле «bk.ini» каждому логическому диску соответствуют ключи из секции [Drives]. См. рис 3.

Рис. 3 Окно менеджера дисков.

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

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

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

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

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

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

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

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

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

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

## Меню «Вид»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## Соответствие раскладки табл.1.

Клавиша БК | Клавиша PC | Клавиша БК | Клавиша PC
--- | --- | --- | ---
ПОВТ | Num 7 (Num Lock вкл.) | <== | Backspace
KT | Esc | ВС | Insert
=|=>| | Num 1 (Num Lock вкл.) | СУ | Правый Ctrl
|<== | Num 2 (Num Lock вкл.) | СТР | CapsLock вкл.
|==> | Num 3 (Num Lock вкл.) | ЗАГЛ | CapsLock выкл.
ИНД СУ | Num 4 (Num Lock вкл.) | РУС | Page Down
БЛОК РЕД | Num 5 (Num Lock вкл.) | ЛАТ | Page Up
ШАГ | Num 6 (Num Lock вкл.) | АР2 | Левый Ctrl
СБР | Delete | резерв | Home
СТОП | Pause | резерв | End

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

## Горячие клавиши табл.2.

Так как кнопки Control заняты под эмуляцию АР2 и СУ, то привычные Ctrl-L, Ctrl-S заменяются на Alt-L, Alt-S и т.п.

Сочетание клавиш | Пункт меню | Функция
--- | --- | ---
Alt+L | Загрузить состояние... | Загрузить состояние эмулятора
Alt+S | Сохранить состояние... | Сохранить состояние эмулятора
Alt+T | Загрузить ленту БК | Загрузить ленту БК, это может быть как файл Wav 8/16бит моно/стерео, так и .tap файл, для эмуляции работы с магнитофоном.
Alt+P | Печать... | Печать копии экрана или ассемблерного листинга.
F12 | Скриншот | Сделать снимок экрана БК, файлы сохраняются в директории, заданной ключом «Screenshots directory» файла настроек.
Alt+F4 | Выход | Выход их эмулятора
F7 | Рестарт CPU | Перезапустить процессор
Num. + | Ускорить | Увеличить скорость процессора на 1000Гц
Num. - | Замедлить | Уменьшить скорость процессора на 1000Гц
Num. * | Стандартная скорость | Восстановить скорость процессора по умолчанию
F2 | Включить Speaker | Включить/Выключить звук пищалки
F3 | Включить Covox | Включить/Выключить Covox, при включении автоматически отключается AY-8910.
Alt+F3 | Стерео Covox | Переключить Моно Covox/Стерео Covox
F4 | Включить AY8910 | Включить/выключить AY-8910, при включении автоматически отключается Covox.
Alt-K | Эмулировать клавиатуру БК | Эмулировать поведение клавиатуры БК - при нажатии на клавишу нет автоповтора.
Alt-J | Включить джойстик | Включить эмуляцию джойстика
Ctrl+F2 | Фильтр Speaker | Включить/Выключить фильтрацию звука пищалки
Ctrl+F3 | Фильтр Covox | Включить/Выключить фильтрацию звука Covox
Ctrl+F4 | Фильтр AY-8910 | Включить/Выключить фильтрацию звука AY-8910
F6 | Менеджер образов дисков | Запустить менеджер виртуальных дисков БК
Alt+F6 | Менеджер лент БК | Запустить менеджер виртуальных кассет БК
F5 | Стоп/Продолжить | Прервать/ Продолжить выполнение программы
F8 | Задать адрес | Установить начальный адрес дампа и/или отладчика
F9 | Точка останова | Поставить точку останова без условия
Ctrl+F9 | Точка останова с условием | Поставить точку останова c условием (не работает, т.к. отсутствует функционал)
F11 | Шаг с заходом | Выполнить одну команду с заходом в функцию
F10 | Шаг с обходом | Выполнить одну команду без захода в функцию
Shift+F11 | Шаг с выходом | Выйти из текущей функции
Ctrl+F10 | Выполнить до строки | Выполнить программы до указанной команды
Scroll Lock | Режим цвета | Переключение Цветной/Чёрно-белый режим экрана
Alt+Scroll Lock | Адаптивный Ч/Б режим | Переключить Ч/Б режим с адаптивного на точный
Alt+Enter | Во весь экран | Переключение полноэкранного/оконного режим экрана
Alt+M | Окно дампа памяти | Показать/Спрятать окно просмотра регистров и памяти (глючит)
Alt+C | Управление лентами | Показать/Спрятать управление лентой БК (глючит)
Alt+O | Осциллограф | Показать/Спрятать окно осциллографа (глючит)
Alt+D | Окно отладки | Показать/Спрятать окно отладки (глючит)

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

## Описание ключей табл.3.

Название ключа | Значение по умолчание | Описание
--- | --- | ---
[Rom modules]
BK10 Monitor | bk10_mon.rom | Имя модуля с ПЗУ монитора БК 0010
BK10 Basic1 | Basic10_1.rom | Имя модуля с 1м ПЗУ Бейсика
BK10 Basic2 | Basic10_2.rom | Имя модуля с 2м ПЗУ Бейсика
BK10 Basic3 | Basic10_3.rom | Имя модуля с 3м ПЗУ Бейсика
BK10 Focal | bk10_focal.rom | Имя модуля с ПЗУ Фокала
BK10 MSTD | bk10_mstd.rom | Имя модуля с ПЗУ блока МСТД
FDD KNGMD | Disk_327.rom | Имя модуля с ПЗУ блока КНГМД
FDD A16M | DISK_A16M_v2.41.rom | Имя модуля с ПЗУ контроллера А16М
FDD SMK512 | DISK_SMK512_v2.05.rom | Имя модуля с ПЗУ контроллера SMK512
BK11M Monitor BOS | b11m_bos.rom | Имя модуля с ПЗУ БОС 11М
BK11M Monitor EXT | b11m_ext.rom | Имя модуля с ПЗУ расширения БОС 11М
BK11M MSTD | b11m_mstd.rom | Имя модуля с ПЗУ блока МСТД 11М
BK11M Basic0 | basic11m_0.rom | Имя модуля с 1м и 2м ПЗУ Бейсика
BK11M Basic1 | basic11m_1.rom | Имя модуля с 3м ПЗУ Бейсика
[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 | Директория для хранения скриншотов
Use Saves directory as default | No | Поменять директорию для записи
[Parameters]
CPU start address | 0 | Адрес начального запуска, если 0 - берётся стандартный для заданного типа БК, иначе - БК стартует с данного адреса
CPU speed | 1,000000e+000 | множитель частоты процессора (не меняйте вручную, вообще не трогайте). По этому множителю вычисляется текущая частота работы процессора. Стандартная или заданная в опции CPU Frequency частота умножается на этот множитель и получается текущая частота.
CPU Frequency | 0 | Начальная частота процессора БК, если 0 - берётся стандартная для заданного типа БК

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-0011M
- BK-0011M_FDD
- BK-0011M_A16M
- BK-0011M_SMK512

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

Registers Dump Interval | 0 | Частота обновления содержимого регистров в окне Дампа регистров, по умолчанию 0 - выключено. Допустимые значения: 0, 1, 2, 3, 4, 5, 10, 15, 20, 25, 50. Означает, с какой частотой внутри фрейма длительностью 20мс будут обновляться значения регистров.
Screenshot Number | 1 | Инкрементный счётчик для файлов скриншотов. Увеличивается с каждым сделанным скриншотом. Если число станет слишком большим, можно вручную установить своё значение.
Sound volume | 30% | Громкость звука.
[Options]
Speaker enabled | Yes | Включить звук пищалки
Covox enabled | No | Включить звук приставки Covox
AY8910 enabled | Yes | Включить звук муз. сопроцессора AY-8910
Speaker filther enabled | Yes | Фильтровать звук пищалки
Covox filther enabled | Yes | Фильтровать звук ковокса
AY8910 filther 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 perfomance string | Yes | Показать строку состояния
Show dialog on access violation | No | При попытке записи в ПЗУ или чтения из несуществующего адреса, показывать диалог с вопросом, что делать в возникшей ситуации. (Не рекомендуется включать без крайней надобности.)
Emulate FDD IO | Yes | Эмулировать процедуру чтения/записи блока на дискету.
[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] все пути задаются относительно пути к исполняемому файлу эмулятора.

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

> Образ винчестера можно подключить только вручную, только редактированием файла .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 - утилита для создания образа винчестера формата эмулятора, либо чистого, либо из существующего образа - посекторной копии винчестера.