Skip to content
Nikita Zimin edited this page Nov 13, 2021 · 5 revisions

Руководство пользователя эмулятора BKBTL

BKBTL -- это эмулятор семейства советских компьютеров БК, в частности, БК-0010 и БК-0011М.

Установка

TODO

Командная строка

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

  • /autostart /autostarton — Включение автозапуска эмуляции
  • /noautostart /autostartoff — Выключение автозапуска эмуляции
  • /debug /debugon /debugger — Включение отладчика
  • /debugoff /nodebug — Выключение отладчика
  • /sound /soundon — Включение звука
  • /nosound /soundoff — Выключение звука

БК-0010: Загрузка и запуск BIN

Сначала убедитесь, что включена одна из конфигураций БК-0010. Теперь нужно перейти в Монитор. Для этого, если вы находитесь в Бейсике, введите MO{Ввод}; если вы находитесь в Фокале, введите P M{Ввод}; если загружена конфигурация без Бейсика и Фокала -- нажмите клавишу СТОП. В результате должно появиться приглашение Монитора -- в виде знака вопроса.

В меню эмулятора выберите File > Load BIN. Укажите .bin-файл для чтения. Диалог загрузки покажет вам, с какого адреса будет загружена программа и какой она длины. Нажмите ОК. Большинство программ загружается с адреса 1000; меньший адрес скорее всего говорит от том что программа стартует автоматически -- для запуска таких программ достаточно нажать любую клавишу. Если адрес 1000 или больше -- нужно запустить программу -- обычно, командой S{Ввод}.

БК-0010: Команды монитора

  • любая буква от A до K -- возврат из Монитора
  • L -- ???
  • M либо M имяфайла -- загрузка с магнитофона
  • S адрес -- выполнение программы с указанного адреса. Команда S без адреса запустит только что загруженную программу с адреса, указанного в её заголовке. В конфигурации BK 0010.01 FDD командой S160000 запускается начальный загрузчик КНГМД.
  • T -- выполнение программы тестов из ПЗУ блока МСТД, данное ПЗУ подключено в конфигурации BK 0010.01 FOCAL. При переходе к программе тестов, приглашение меняется на +. Тесты запускаются вводом номера теста: 1 -- тест ОЗУ и ПЗУ, 2 -- тест клавиатуры, 3 -- интерфейс, 4 -- непрерывный вывод на экран, 5 -- магнитофон, K -- выход из программы тестирования.

БК-0011М: Команды монитора

Признаком готовности монитора к приему очередной команды оператора является символ @ в первой позиции строки экрана. Числа вводятся в восьмеричной системе счисления. Набирать незначащие нули необязательно.

  • XXXXXX/ -- открыть ячейку с восьмеричным адресом XXXXXX. По этой команде на экран выводится восьмеричное содержимое ячейки ОЗУ, ПЗУ или регистра внешнего устройства с адресом XXXXXX. Если такой регистр отсутствует или страница ОЗУ не подключена к заданному адресу, выводится сообщение об ошибке -- символ ? и команда игнорируется.
  • XXXXXX\ -- открыть байт с адресом XXXXXX. Содержимое байта или слова можно изменить, введя восьмеричное число (новое содержимое) и подав одну из команд: ВВОД (клавиша <─┘), "открыть следующую ячейку", "открыть предыдущую ячейку", "открыть косвенно", "открыть по смещению".
  • RX/ - открыть регистр X, где X = 0..7 или S. Открывает регистр общего назначения процессора (R0 - R7) или регистр состояния процессора (RS).

Команды / и \ без аргумента открывают "текущую", то есть последнюю открывавшуюся ячейку.

  • ВВОД (<─┘) -- закрыть слово, байт или регистр. Если пользователем было введено новое содержимое, оно будет записано.
  • Клавиша TODO -- закрыть слово, байт или регистр (если надо, модифицировать содержимое как по команде ВВОД) и открыть следующее слово, байт или регистр (при этом печатается адрес открываемой ячейки). После ячейки с адресом 177777 открывается ячейка 000000, после R7 - R0, после RS -- команда работает, как команда ВВОД.
  • Клавиша TODO -- закрыть (с модификацией) и открыть предыдущее слово, байт, регистр.
  • Клавиша TODO -- закрыть (с модификацией) ячейку, вычислить адрес по формуле: АДРЕС = < АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ > + ее новое содержимое + 2 и открыть (как слово) ячейку с соответствующим адресом. Эта команда используется для открытия аргумента команды ЭВМ, использующей метод адресации 67.
  • Клавиша TODO -- закрыть (с модификацией) ячейку, вычислить адрес по формуле: АДРЕС = < АДРЕС ЯЧЕЙКИ > + < СОДЕРЖИМОЕ МЛАДШЕГО БАЙТА > * 2 + 2 и открыть (как слово) ячейку с соответствующим адресом. Содержимое байта рассматривается как число со знаком. Команда используется для открытия ячейки, на которую выполняется переход по команде типа BR.
  • @ -- закрыть (с модификацией) ячейку, открыть ячейку по адресу, равному (новому) содержимому закрытой ячейки.
  • N;MC -- отобразить страницу номер N с адреса, задаваемого аргументом M. Страницы с восьмеричными номерами 10, 11, 12, 13 относятся к страницам ПЗУ 0, 1, 2, и 3 соответственно. Значение M, равное нулю, означает адреса 40000-100000, равное 1 -- адреса 100000-140000.
  • XXXB -- загрузить операционную систему с НГМД номер XXX и запустить ее. Если номер не задан, производится загрузка с автоматическим поиском системного диска.
  • XXXXXXL -- загрузить с адреса XXXXXX двоичный файл с магнитной ленты. Если адрес не задан, загрузка осуществляется с адреса, заданного в заголовке файла. Базовая операционная система поддерживает формат записи на магнитной ленте, совместимый с ЭВМ БК-0010. После выдачи этой команды на экран выдается вопрос имя файла?. Оператор должен ввести имя файла на магнитной ленте длиной до 16 символов. Если необходимо просмотреть каталог ленты,необходимо ввести ? вместо имени файла. Если нажать клавишу ВВОД без ввода имени, будет загружен первый встретившийся файл.
  • <ОБЛАСТЬ>;U -- вывести в файл информацию из ОЗУ. <ОБЛАСТЬ> -- конструкция вида XXXXXX-YYYYYY, где XXXXXX и YYYYYY -- начальный и конечный (включительно) адреса записываемой области ОЗУ, или вида XXXXXX+YYYYYY, где XXXXXX -- начальный адрес записываемой области ОЗУ, а YYYYYY -- длина в байтах. После выдачи команды задается вопрос имя?, на который оператор должен ввести имя файла, который он хочет записать на ленту.
  • XXXXXXM -- включить/выключить двигатель магнитофона (используется при перемотке). Если XXXXXX не равно 0, двигатель включается, иначе выключается. Отсутствие аргумента соответствует нулевому.
  • XXXXXXG -- запустить программу с адреса XXXXXX. При отсутствии аргумента запуск производится со стартового адреса прграммы, который должен содержаться в ячейке USERPC (адрес 000040).
  • P -- продолжить выполнение программы с адреса, на котором оно было прервано командой HALT или клавишей СТОП.
  • Клавиша ШАГ -- выполнить одну команду программы и вернуться в монитор.
  • Клавиша [<--] (забой) -- аннулировать последнюю введенную цифру. Другие символы не аннулируются. Команда не выполняется, если вводимое число = 0.
  • СУ/E -- переход в непосредственный режим. Используется для настройки драйвера экрана. В драйвер экрана передается символ ESC (код 33), после чего монитор все вводимые символы передает драйверу экрана. Монитор остается в непосредственном режиме до ввода комбинации СУ/@. ESC -- последовательности, воспринимаемые драйвером экрана.

Конфиграции

BK 0010.01 BASIC

БК-0010.01 с языком Бейсик в ПЗУ.

Карта памяти:

Адреса
000000-077777 32 КБ ОЗУ
100000-117777 8 КБ ПЗУ Монитора
120000-137777 8 КБ ПЗУ Бейсика 1
140000-157777 8 КБ ПЗУ Бейсика 2
160000-177577 8 КБ ПЗУ Бейсика 3
177600-177777 регистры

BK 0010.01 FOCAL

БК-0010.01 с блоком МСТД -- Фокал и тесты в ПЗУ.

Карта памяти:

Адреса
000000-077777 32 КБ ОЗУ
100000-117777 8 КБ ПЗУ Монитора
120000-137777 8 КБ ПЗУ Фокала
140000-157777 8 КБ не используется
160000-177577 8 КБ ПЗУ тестов
177600-177777 регистры

BK 0010.01 FDD

БК-0010.01 с блоком КНГМД с дополнительными 16 КБ ОЗУ.

Карта памяти:

Адреса
000000-077777 ОЗУ 32 КБ
100000-117777 ПЗУ Монитора
120000-137777 ОЗУ КНГМД 1
140000-157777 ОЗУ КНГМД 2
160000-167777 4 КБ ПЗУ драйвера НГМД
170000-177777 регистры

BK 0011M FDD

Карта памяти:

Адреса
000000-037777 16 КБ ОЗУ -- всегда страница ОЗУ 0
040000-077777 16 КБ окно №0 -- страница ОЗУ 0..7
100000-137777 16 КБ окно №1 -- страница ОЗУ 0..7 или ПЗУ 8..11
140000-157777 8 КБ системное ПЗУ
160000-167777 4 КБ ПЗУ драйвера НГМД
170000-177777 регистры

Встроенный отладчик

Встроенный отладчик включается/отключается по команде View > Debug.

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

Слева вверху -- экран БК. Слева внизу -- отладочная консоль, в которой можно вводить команды; краткий список команд выдается по команде h. Справа вверху -- окно состояния текущего процессора: вверху в боксе его регистры, справа от них содержимое стека, ниже дизассемблированный блок возле адреса PC; правее вверху -- состояние портов, внизу -- состояние каналов обмена данными между процессорами. Справа внизу -- окно состояния памяти.

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

Список команд отладочной консоли выдается по команде h:

Console command list:
  c          Clear console log
  dXXXXXX    Disassemble from address XXXXXX
  g          Go; free run
  gXXXXXX    Go; run processor until breakpoint at address XXXXXX
  m          Memory dump at current address
  mXXXXXX    Memory dump at address XXXXXX
  mrN        Memory dump at address from register N; N=0..7
  r          Show register values
  rN         Show value of register N; N=0..7,ps
  rN XXXXXX  Set register N to value XXXXXX; N=0..7,ps
  s          Step Into; executes one instruction
  so         Step Over; executes and stops after the current instruction
  u          Save memory dump to file memdumpXPU.bin

TODO

Clone this wiki locally