Данный эмулятор работает под управлением любой 32-х битной операционной системы типа Windows и эмулирует компьютер «БК 0010(01)» в различных конфигурациях. В состав эмулятора входят две утилиты «BK Disk Explorer» - утилита для работы с образами дисков БК и «BK Memory Viewer» - утилита для визуального просмотра и получения слепков экрана и памяти БК. Создаются следующие служебные папки.
Bin – программы БК в формате BIN
Img – образы дисков БК
Memory – записанные состояния памяти
Rom – прошивки ПЗУ
Tools – служебные утилиты
UserSaves – файлы сохраненные пользователем
Самая минимальная тестируемая конфигурация: Pentium 200Mhz/32M Ram/2M SVGA.
Минимальный требования: Pentium II 350Mhz/64M Ram/4M SVGA/1M HDD, желательно DirectX 4.0 или более позднюю версию, для поддержки полноэкранного режима и эмуляции динамика БК.
Рекомендуемые требования: Pentium III 800Mhz/64M Ram/8M SVGA/1M HDD, желательно DirectX 4.0 или более позднюю версию, для поддержки полноэкранного режима и эмуляции динамика БК.
Данная программа является программным эмулятором отечественного бытового компьютера БК 0010(01). Поддерживаются конфигурации:
БК 0010(01) + стандартный БЕЙСИК «Вильнюс 1986»
БК 0010(01) + блок МСТД (Фокал и подпрограммы тестов)
БК 0010(01) + блок дополнительной памяти 32Кб
БК 0010(01) + блок КНГМД с дополнительной памятью 16Кб
Данный эмулятор корректно эмулирует все команды процессора БК, включая недокументированные команды установки и сброса битов состояния процессора, команду MARK. Также корректно эмулируются системные регистры:
177660 – регистр состояния клавиатуры полностью
177662 – регистр кода клавиатуры полностью
177664 – регистр рулонного сдвига полностью
177706, 177710, 177712 – регистры таймера частично
177714 – регистр внешнего порта в/в в настоящий момент не работает
177716 – полностью
177130 – регистр управления НГМД частично
177132 – регистр данных НГМД частично
Эмулируется звук динамика БК через звуковую плату, реальное поведение клавиатуры БК, имеется возможность подключения джойстика со стандартной распайкой через регистр параллельного порта. Поддерживается два режима дисплея БК – черно-белый и цветной, причем черно-белый режим существует в двух вариантах нормальном, и адаптированном. Адаптированный вариант дает более реальное изображение (более схожее с черно-белым режимом БК) в полноэкранном режиме. В оконном режиме оба варианта идентичны. Эмулируется рулонный сдвиг и режим расширенной памяти. Имеется мощный встроенный отладчик с возможностью установки точек останова по условию и пошагового выполнения программы (данный отладчик использовался автором в процессе создания этого эмулятора). Корректно срабатывает обращение по нечетным адресам, а также обрабатывается запись в ПЗУ. Эмулятор поддерживает распечатку экрана БК на принтере в двух режимах обычном и инверсном (для экономии тонера), а также распечатку ассемблерного кода их ОЗУ в заданном диапазоне адресов. Поддерживается возможность сохранения текущего состояния БК, а также сохранения файлов БК на жестком диске.
После запуска эмулятора в любой конфигурации, первое что необходимо сделать для запуска программы в кодах, это перейти в монитор БК. Монитор визуально отличается своим приглашением ввода пользователя которое выглядит как вопросительный знак «?». Из БЕЙСИКа выход в монитор осуществляется командой «МО ?» (MONIT). Из Фокала можно выйти по команде «P_M ?». Монитор БК поддерживает следующие команды:
От «А» до «K» ? - переход обратно в Бейсик или Фокал, в зависимости от конфигурации. На самом деле происходит вызов подпрограммы по адресу 120000. В общем случае по данному адресу может находится что угодно.
«M ?» - загрузка файла с магнитофона. В эмуляторе загрузка осуществляется с диска PC. По умолчанию из директории «Bin». Имя данной директории можно поменять изменив ключ «Program directory» в файле «bk.ini». На приглашение «Имя ?» можно просто нажать «ввод», после чего появится стандартный диалог открытия файла. Также вместо простого нажатия «ввода», можно набрать имя запускаемой программы. Файлы программ обычно имеют расширение «.bin».
«S [адрес] ?» – запуск загруженной программы с указанного адреса. Запускает только что загруженную программу с адреса указанного после команды «S». Например команда «S 1000 ?« запускает программу с адреса 1000 (типичный адрес запуска программ на БК). Также можно после «S» сразу нажать «ввод» ничего не указывая. При этом программа начнет выполнение с адреса указанного в заголовке. Это наиболее рекомендуемый способ запуска, т.к. далеко не все программы имеют адрес запуска 1000. Только для конфигурации БК 0010 + КНГМД (BK 0010(01) with FDD): команда «S 160000» запускает начальный загрузчик системной дискеты. Поиск системной дискеты осуществляется сначала в приводе «A:», а потом в приводе «B:».
«Т ?» – запуск программы тестов зашитой в ПЗУ. Данная команда запускает тесты различных узлов БК. Тесты зашиты в ПЗУ блока МСТД. В эмуляторе данная конфигурация называется «Run BK 0010(01) with Focal». На самом деле команда вызывает подпрограмму зашитую в ПЗУ по адресу 160100, и в других конфигурациях ее действие может отличаться.
Load State – загрузить, ране сохраненное, состояние БК с диска. Файлы состояния БК имеют расширение «.mfs», и по умолчанию хранятся в директории memory. Путь к данной директории можно изменить в файле настроек «bk.ini», поменяв строку с именем ключа «Memory directory». Эмулятор считывает конфигурацию, имидж памяти БК и состояние всех регистров. После загрузки выполнение программы тут же начинается с записанного места, причем именно в нужной конфигурации (т.е если состояния было сохранено как БК 0010(01) + Бейсик, а текущая конфигурация БК 0010(01) + МСТД, то будет включена конфигурация с Бейсиком). В диалоге выбора файла состояния имеется окно «Preview», в котором показывается уменьшенная копия экрана БК на момент сохранения.
Save State - сохранить текущее состояние БК на диск. Файлы состояния БК имеют расширение «.mfs», и по умолчанию хранятся в директории memory. Путь к данной директории можно изменить в файле настроек «bk.ini», поменяв строку с именем ключа «Memory directory». Эмулятор сохраняет конфигурацию, записывает имидж памяти БК и состояние всех регистров. После записи выполнение программы продолжается дальше.
Print – распечатка экрана БК или Ассемблерного кода из ОЗУ на принтере. Появляется модифицированный диалог настройки принтера, с возможностью выбора принтера и изменения его стандартных настроек. Также предоставляется возможность выбора двух функций:
«Print screen» - распечатка экрана БК в двух режимах. Если в поле «Inverse» не стоит галочка, то распечатка экрана будет производится в обычном режиме, т.е. черный экран и на бумаге будет распечатан черным, а буквы белым или серым цветами, что приводит к неэкономному расходу тонера. Если же в поле «Inverse» стоит галочка, то экран БК будет распечатан в инвертированном режиме, экран белым (т.е. никаким), а буквы черным цветами. Соответственно тонера израсходуется намного меньше. Рекомендуется ставить эту опцию при распечатке большого количества листов для экономии тонера, и не ставить если необходимо получить более похожую на реальный экран БК картинку.
«Print code» - распечатка ассемблерного текста из ОЗУ БК. В поле «From address» нужно ввести начальный адрес программы в ОЗУ БК, а в поле «то» конечный адрес. При этом в окне «Pages» показывается точное (не примерное) рассчитанное количество листов бумаги необходимое для распечатки всего листинга программы, что очень полезно для оценки расхода бумаги для распечатки большого кода.
Для обеих возможностей распечатки «Print screen» и «Print code», если необходимо, можно указать название программы или любую другую полезную информацию, которая будет распечатана в левом верхнем углу каждого листа. Также на каждом листе будет распечатан его номер и общее количество страниц программы.
Exit – выход из эмулятора. По данной команде осуществляется выход их эмулятора также, как по команде Alt + F4.
Reset CPU – перезагрузка БК. При выборе данного пункта меню перезапускается текущая конфигурация эмулятора, при этом осуществляется так называемый «мягкий» перезапуск, т.е. не происходит полной потери данных в памяти БК и ее регистрах. Выполнение программ начинается с адреса зашитого в старших битах регистра 177716. На реальной БК это значение равно 100000. При необходимости его можно поменять в файле конфигурации «bk.ini», изменив значение ключа «CPU start address». После перезагрузки восстанавливаются конфигурация, а также все точки останова.
Run BK 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 – 177377 |
3-е ПЗУ БЕЙСИКа |
7.5 |
177400 – 177777 |
область системных регистров |
0.5 |
Run BK 0010(01) with Focal – запуск конфигурации БК 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 – 177377 |
ПЗУ тестов |
7.5 |
177400 – 177777 |
область системных регистров |
0.5 |
Run BK 0010(01) extended 32K – запуск конфигурации БК 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 |
Run BK 0010(01) with FDD + extended 16K – запуск БК 0010(01) с контроллером НГМД и блоком ДОЗУ 16К. В этой конфигурации эмулируется БК с подключенными к ней диковводами. В настоящее время максимальное число приводов может достигать 4-х. Их имена «A:», «B:», «C:» и «D:». Соответствующие имена образов дисков можно указать в файле «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 – 177377 |
ПЗУ контроллера НГМД |
7.5 |
177000 – 177777 |
область системных регистров |
0.5 |
Accelerate – увеличить скорость трансляции команд в два раза. По умолчанию количество команд обрабатываемых процессором составляет 100000 в секунду, что примерно соответствует реальной скорости БК. При необходимости можно поменять ключ «Instructions per second» в файле «bk.ini» и поменять данное число.
Slow Down – уменьшить скорость трансляции команд в два раза. По умолчанию количество команд обрабатываемых процессором составляет 100000 в секунду, что примерно соответствует реальной скорости БК. При необходимости можно поменять ключ «Instructions per second» в файле «bk.ini» и поменять данное число.
Enable Sound – данная опция включает эмуляцию динамика реальной БК через звуковую плату. По умолчанию обновление звуковых буферов осуществляется 25 раз в секунду. При этом звук довольно хорошо синхронизирован с изображением на экране, т.е., например, между каким-то событием в игре и звуком задержка порядка 40мс, что естественно не улавливается на слух. При этом, на медленных компьютерах (зависит не только от компьютера, но и от звуковой платы) могут быть слышны трески и хрипы. Для данных машин рекомендуется уменьшить количество обновлений звуковых буферов путем изменения ключа «FPS divider» на более большое число. Например, с 2 по умолчанию, на 3 или 4, что приведет к более плавному воспроизведению звука. Также стоит иметь ввиду, что данный ключ меняет и количество кадров, воспроизводимых эмулятором за секунду. По умолчанию количество кадров в секунду рано 25, а параметр «FPS divider» 2. Количество кадров в секунду вычисляется по формуле:
Количество кадров в секунду = 50 / divider
Emulate BK Keyboard – опция задает будет ли эмулироваться реальное поведение клавиатуры БК. Если данная опция включена, то клавиатура PC начинает работать также как и реальная клавиатура БК, т.е. при нажатии любой клавиши в мониторе автоповтора не происходит, а обработка кода новой клавиши не производится, пока не отпущена старая. При выключенной опции автоповтор работает стандартным образом, а клавиатура ведет себе также как в Windows.
Enable Joystick – опция включает эмуляцию джойстика. Включение данной опции рекомендуется в играх поддерживающих джойстик. При этом в играх становится возможной обработка нажатия нескольких одновременно, что делает управление более плавным. Клавиши эмулирующие джойстик эмулируется на дополнительной клавиатуре:
NumPad 6 – вправо
NumPad 4 – влево
NumPad 5 – вниз
NumPad 8 – вверх
NumPad 7 – кнопка 1
NumPad 1 – кнопка 2
NumPad 9 – кнопка 3
NumPad 3 – кнопка 4
Use Saves directory as default – использовать директорию UserSaves как директорию для чтения файлов по умолчанию. По умолчанию, если данная опция не установлена, чтение файлов происходит из текущей директории, если программа запущена из командой строки (указана в строке параметров, или просто запущена двойным щелчком) или из директории Bin, если эмулятор запущен без параметров. Сохранение фалов, по умолчанию, производится в каталог UserSaves. Данный путь содержится в файле «bk.ini», ключ «User Saves directory». В том случае, если вы постоянно сохраняете и загружаете файлы, установка данной опции изменит папку по умолчанию на UserSaves.
Disk Image Manager – показать диалог настройки образов дисков. С помощью данного диалога можно изменить соответствие образов дисков и логических приводов в БК. Каждый образ представляется в таблице где отображаются соответствующий ему логический диск, его имя, его формат, а также системный он или нет. Возможна сортировка по любому из этих полей. Изменить букву диска можно простым вывозом контекстного меню, по нажатию правой клавиши мыши. В файле «bk.ini» каждому логическому диску соответствуют ключи из секции [Drives].
Show Perfomance on Status Bar – включает информацию о текущем количестве кадров выводимых в секунду, и текущем количестве команд исполняемых в секунду. Данные числа не обязательно совпадают со значениями заданными в файле «bk.ini», и могут отличатся в меньшую или большую стороны в зависимости от мощности процессора и его текущей загруженности. Если значения постоянно не совпадают с заданными в «bk.ini», то необходимо уменьшить их до состояния, когда данные показатели будут стабильны. В противном случае возможна сильная рассинхронизация процессора БК и звука. Ключи отвечающие за количество воспроизводимых кадров в секунду и количество исполняемых команд в секунду:
FPS divider – задает количество выводимых кадров в секунду по формуле: FPS = 50 / divider
Instructions per second – задает количество исполняемых команд в секунду.
Данный пункт меню подробно описан в отдельном руководстве по Debugеру. В Debugере предоставляются следующие возможности:
- Остановка выполнения программы на текущей команде
- Продолжение выполнения программы с текущего места
- Трассировка программы по шагам
- Трассировка программы до заданного места
- Установка точек останова с условиями (например, когда по заданному адресу изменилось значение, или когда значение в регистре больше чем заданное).
Данные возможности предназначены для специфических задач и не представляют интереса для обычных пользователей. Поэтому описание меню «Debug» не представлено в данном руководстве.
Status Bar – показывать строку статуса в нижней части окна. На ней обычно отображается различная служебная информация, например, текущее количество кадров в секунду.
СPU Registers – показывать или не показывать окно состояния регистров процессора. В первой строке отображаются значения регистров общего назначения R0, R1, R2, R3, R4, R5, во второй регистров SP (указатель стека), PC (указатель текущей команды) и PS (биты слова состояния процессора). Подробнее см. руководство по Debugеру. По умолчанию, значение данного пункта меню можно установит изменив ключ «Show CPU registers» в файле «bk.ini».
System Registers – показывать или не показывать состояние системных регистров. Подробнее см. раздел «Характеристики» и руководство по Debugеру. По умолчанию, значение данного пункта меню можно установит изменив ключ «Show system registers» в файле «bk.ini».
Debug Window – показывать или не показывать окно Debugера. В данном окне можно увидеть то, какая команда выполняется в данный момент и ее операнды, или код программы по заданному адресу. Подробнее см. руководство по Debugеру. По умолчанию, значение данного пункта меню можно установить изменив ключ «Show memory dump» « в файле «bk.ini».
Memory Dump – показывать или не показывать дамп памыти. В данном окне можно увидеть значение заданный ячейки памяти и соответствующее ему коды ASCII, а также изменить данное значение. Подробнее см. руководство по Debugеру. По умолчанию, значение данного пункта меню можно установить изменив ключ «Show debug window» « в файле «bk.ini».
Color Mode – переключает цветной и черно-белый режим экрана. В полноэкранном режиме, возможно два варианта:
черно-белый – нормальный
черно-белый – адаптированный
Адаптированный режим не полностью соответствует реальному черно-белому режиму БК, но визуально выглядит более похоже. Какой именно режим будет применяться определяет ключ «Adapt black & white mode» в файле «bk.ini».
Fullscreen mode – перевести эмулятор в полноэкранный режим работы. При этом устанавливается разрешение 1024х768х16bit с частотой вертикальной развертки по умолчанию для данного режима. По умолчанию количество кадров в секунду рано 25. За это отвечает ключ «FPS divider» (по умолчанию равен 2) в файле . Количество кадров в секунду вычисляется по формуле:
Количество кадров в секунду = 50 / divider
Также необходимо иметь ввиду, что данный параметр влияет на плавность звука. Обновление звуковых буферов, на данный момент жестко синхронизировано с выводом кадров. При большом FPS возможно, что будут слышны трески или хрипы при эмуляции звука. В таком случае количество кадров в секунду необходимо понизить, увеличив значение ключа «FPS divider» в файле «bk.ini».
В данном меню отображаются имена утилит поставляемых вместе с эмулятором. По умолчанию утилиты находятся в папке Tools заданной ключом «Tools directory» в файле «bk.ini». Подробнее утилиты будут описаны в приложении 4.
Название клавиш(и) на
БК |
Название клавиш(и) на
PC |
Алфавитно-цифровая клавиатура |
Алфавитно-цифровая клавиатура |
Стрелки |
Стрелки |
СТОП |
Break (Pause) |
Лат |
End |
Рус |
Home |
BC |
Insert |
СБР |
Delete |
KT |
Esc |
ТАБ |
Tab |
Ctrl |
АР2 |
c (сдвижка) |
Ins (Num.) |
e (раздвижка) |
Del (Num.) |
Сочетание клавиш |
Пункт меню |
Функция |
Alt+F4 |
Exit |
Выход их эмулятора |
F11 |
Reset CPU |
Перезапустить процессор |
+ (Num.) |
Accelerate |
Увеличить скорость процессора в два раза |
- (Num.) |
Slow Down |
Уменьшить скорость процессора в два раза |
Alt+S |
Enable Sound |
Включить/Выключить звук |
F5 |
Break |
Прервать выполнение программы |
Shift+F5 |
Continue |
Продолжить выполнение программы |
F10 |
Step Over |
Выполнить одну команду |
Ctrl+F10 |
Step to Cursor |
Выполнить программы до указанной команды |
PageUp |
One Instruction
Up |
Скролировать окно отладки на одну позицию вверх |
PageDown |
One Instruction
Down |
Скролировать окно отладки на одну позицию вниз |
Ctrl+F9 |
Breakpoint
Condition |
Поставить точку останова по условию |
Alt+C |
CPU Registers |
Показать/Спрятать окно регистров процессора |
Alt+R |
System Registers |
Показать/Спрятать окно системных регистров |
Alt+D |
Debug Window |
Показать/Спрятать окно отладки |
Alt+M |
Memory Dump |
Показать/Спрятать окно просмотра памяти |
Scroll Lock |
Color Mode |
Переключение Цветной/Черно-белый режим экрана |
Alt+Enter |
Fullscreen Mode |
Переключение полноэкранного/оконного режим экрана |
Название ключа |
Значение по умолчание |
Описание |
[Rom modules] | ||
Monitor |
ROM\Monit10.rom |
Путь к ПЗУ монитора БК 0010 |
First Basic
module |
ROM\Basic10first.rom |
Путь к 1му ПЗУ Бейсика |
Second Basic
module |
ROM\Basic10second.rom |
Путь к 2му ПЗУ Бейсика |
Third Basic and
registers module |
ROM\Basic10third.rom |
Путь к 3му ПЗУ Бейсика |
Focal module |
ROM\Focal.rom |
Путь к ПЗУ Фокала |
Tests module |
ROM\Tests.rom |
Путь к ПЗУ блока МСТД |
Floppy disk driver
module |
ROM\Disk_327.rom |
Путь к ПЗУ блока КНГМД |
[Directories] | ||
Program
directory |
Bin |
Путь к программам в формате Bin |
Tools directory |
Tools |
Путь к утилитам |
Memory directory |
Memory |
Путь к файлам состояния |
User Saves
directory |
UserSaves |
Путь к записываемым файлам |
[Options] | ||
Speaker enabled
|
Yes |
Включить звук |
Run in color
mode |
Yes |
Запуск в цветном режиме |
Adapt black &
white mode |
Yes |
Вкл. адаптированный ч/б режим |
Run in fullscreen
mode |
No |
Запуск в полноэкранном режиме |
Emulate BK
Keyboard |
No |
Эмулировать клавиатуру БК |
Joystick enabled |
Yes |
Эмулировать джойстик |
Use Saves directory
as default |
No |
Поменять директорию для записи |
Enable Window
Wrapped mode |
No |
Включить встроенный режим |
Pause CPU after
emulator start |
No |
Остановить процессор |
CPU start
address |
100000 |
Адрес начального запуска |
FPS divider |
2 |
Делитель частоты кадров |
Instructions per
second |
100000 |
Скорость выполнения команд/сек. |
Show CPU
registers |
No |
Показать окно процессора |
Show system
registers |
No |
Показать окно регистров |
Show debug
window |
No |
Показать окно отладчика |
Show memory dump |
No |
Показать окно листинга памяти |
[Drives] | ||
Drive A: |
Img\Не определено |
Путь к имиджу диска А: |
Drive B: |
Img\Не определено |
Путь к имиджу диска B: |
Drive C: |
Img\Не определено |
Путь к имиджу диска C: |
Drive D: |
Img\Не определено |
Путь к имиджу диска D: |
Bk.exe [/Флаг].
Флаги:
/?, /H - помошь
/B путь - запуск указанного файла в формате .BIN (Binary File).
/M путь - запуск указанного файла состояния в формате .MSF (Memory state file).
/W - запуск в режиме встраивания в окно (усеченный интерфейс). Только при включенном ключе «Enable Window Wrapped mode».
Перейдти на страницу эмулятора: Эмулятор БК 0010(01) версия 2.3 для Windows 95/98/ME/2000/XP