БК-0011М - Руководство системного программиста

Набил 13.08.1992 В. Усович. Подготовил к печати и перевёл из RT-11 в MKDOS 31.07.1993 Чурин Д.М. (Asfalt software).

 

 

УТВЕРЖДЕН
00015-01.32.01-ЛУ




ПЕРСОНАЛЬНАЯ ЭВМ 'ЭЛЕКТРОНИКА МС 0513'
('ЭЛЕКТРОНИКА БК-0011М')
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
БАЗОВАЯ ОПЕРАЦИОННАЯ СИСТЕМА
РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА
00015 - 01.32.01


1 9 9 0

Содержание


Аннотация

Настоящее руководство рассчитано на пользователей микроЭВМ "Электроника МС 0513" ("Электроника БК-0011М", далее ЭВМ), программирующих на уровне языка Ассемблера.

В руководстве описаны состав и функции базовой операционной системы ЭВМ (далее БОС) и способы обращения к ним из пользовательских программ.

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

1. Краткое описание микроЭВМ БК-0011

1.1. Архитектура ЭВМ

ЭВМ построена на основе микропроцессорного комплекта серии К1801 и включает в себя:

Отдельные функциональные узлы ЭВМ соединены с помощью межмодульного параллельного интерфейса МПИ ОСТ 11.305.903-80.

Обслуживание перечисленных устройств, а также внешних дополнительных блоков контроллеров локальной сети и НГМД осуществляется соответствующими программами-драйверами, расположенными в системном ПЗУ ЭВМ и в дополнительных блоках.

1.1.1. Распределение адресного пространства ЭВМ

Виртуальное адресное пространство ЭВМ определяется возможностями процессора К1801ВМ1 и составляет 64К байт. Распределение адресного пространства показано на рис.1.

Переключаемые страницы ОЗУ и ПЗУ

/

\

Стр. ОЗУ 0

. . . . .

. . . . .

СИСТ. ПЗУ

РЕГИСТРЫ ВУ

0

40000

100000

140000

160000

177777

|

|

Стр. ОЗУ 0...7 

 Стр. ОЗУ 0...7

 ПЗУ контроллера НГМД

или

или

ПЗУ

 ПЗУ блока МСТД

или

Сменный блок ПЗУ

Рис.1.

Переключение страниц ОЗУ/ПЗУ осуществляется программно с использованием системного регистра ЭВМ.

Следует обратить внимание, что каждая страница ОЗУ может быть одновременно подключена к двум окнам виртуального адресного пространства, а статическая страница (адреса 0 - 40000) - даже к 3-м. Переключение страниц из пользовательской программы может осуществляться только с помощью запросов базовой операционной системы.

Две страницы ОЗУ являются буферами экрана графического дисплея. Один из буферов постоянно отображается на экране телевизионного приёмника. Управление отображением того или иного буфера экрана также возложено на базовую операционную систему, причём имеется возможность "скрытого" вывода на экран, т.е. формирование изображения из программы пользователя в одном буфере в то время,как на экран выводится другой.

Одна из страниц ОЗУ является служебной страницей базовой операционной системы ЭВМ и недоступна пользователям. Однако часть ее, не используемая базовой операционной системой, доступна для чтения-записи с помощью запросов драйвера ОЗУ/ПЗУ.

1.2. Регистры внешних устройств ЭВМ

Работа ЭВМ с периферийными (внешними) устройствами выполняется через регистры внешних устройств, для которых выделен диапазон 170000 - 177777 адресного пространства. Ниже описаны регистры стандартных периферийных устройств.

1.2.1. Регистр состояния клавиатуры

Адрес регистра - 177660

 Формат регистра:

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 готовность маскирование прерываний
Разряд 7

- "1" в этом разряде означает, что в регистре данных клавиатуры находится код нажатой клавиши. Устанавливается при нажатии на клавишу, сбрасывается при чтении регистра данных клавиатуры. При нулевом состоянии 6-го разряда установка в "1" вызывает прерывание. Доступен только по чтению.

Разряд 6

- "0" в этом разряде разрешает выработку сигнала требования прерывания по единичному значению разряда 7.

Остальные разряды регистра не используются, читаются как 0. По сигналу сброса магистрали разряд 6 устанавливается в "1", разряд 7 обнуляется.

ПРИМЕЧАНИЕ. См.также информацию о бите 6 системного регистра ЭВМ.

1.2.2. Регистр данных клавиатуры

Адрес регистра - 177662

 Формат регистра:

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 код символа

Разряды 0 - 6 содержат код нажатой клавиши. Разряды 7 - 15 не используются, читаются нулями.

 Регистр доступен только по чтению. Данные сохраняются в регистре до нажатия следующей клавиши клавиатуры. При установленном в "1" 7-м разряде регистра состояния запись в регистр данных блокируется и нажатия клавиш игнорируются.

1.2.3. Регистр управления палитрами

Адрес регистра - 177662

 Формат регистра:

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 код палитры управление таймером управление буфером экрана

Регистр доступен только по записи.

Разряд 15

- управляет отображением буферов экрана. При значении 0 отображается буфер 0 (страница 5), при 1 - буфер 1 (страница 6).

Разряд 14

- управляет включением системного таймера. При значении 0 таймер выключен, при 1 - включен.

Разряды 11 - 8

- в эти разряды записывается код палитры, которая задаёт кодировку цветов на экране в режиме 256 точек/строка.

Текущее состояние регистра можно определить с помощью запросов БОС.

1.2.4. Регистр смещения

Регистр смещения предназначен для управления "рулонным" сдвигом информации на экране по вертикали путём задания адреса в буфере экрана, с которого должна начинаться регенерация изображения.

Адрес регистра - 177664

 Формат регистра:

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 смещение режим "малого" экрана
Разряд 9

- при записи "1" в этот разряд на экране отображается весь буфер экрана (256 телевизионных строк). При нулевом значении в верхней части растра отображается 1/4 часть (старшие адреса) экранного ОЗУ, нижняя часть экрана не отображается. Данный режим не используется базовой операционной системой.

Разряды 7 - 0

- в этом поле задаётся адрес строки экранного ОЗУ, с которой начинается отображение экрана.

ОЗУ буфера экрана считается "замкнутым в кольцо". Экран состоит из 256 строк по 64 байта в каждой. Строки начинаются с адресов, кратных 100 (восьмеричное). Первый байт строки расположен в левом конце строки, байты отображаются, начиная с младшего бита. Смещение задаётся в строках, т.е. изменение кода смещения на 1 приводит к кольцевому сдвигу информации на экране на одну строку растра. Исходному состоянию (первый байт буфера экрана отображается в самой верхней строке растра) соответствует значение смещения 330 восьмеричное. Увеличение значения соответствует сдвигу информации вверх, уменьшение - вниз.

Остальные разряды не используются. Регистр доступен по записи и чтению.

1.2.5. Регистр параллельного программируемого интерфейса

Этот 16-разрядный регистр предназначен для записи информации в выходной порт и чтения информации с входного порта.

Адрес регистра - 177714

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

1.2.6. Системный регистр

Используется при начальном запуске процессора, для переключения страниц ОЗУ/ПЗУ, управления внешними устройствами ЭВМ.

Адрес регистра - 177716

Фактически по указанному адресу расположены три регистра:

  1. регистр, доступный только по чтению;
  2. два регистра, доступных только по записи (регистр управления памятью и регистр управления магнитофоном).

1.2.6.1. Регистр чтения

Формат регистра:

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 1 1 0 0 0 0 0 0 1 X X 0 0 X 0 0 адрес начального пуска признак отсутствия арифметического расширителя флаг нажатия клавиши данные с магнитофона признак записи в системный регистр
Разряды 15 - 8

 - определяют адрес начального пуска ЭВМ по включению питания (140000);

Разряд 7

 - должен быть равен "1";

Разряд 6

 - установлен в "0", если нажата любая клавиша клавиатуры ЭВМ. Устанавливается в "1" по отпускании клавиши;

Разряд 5

 - разряд данных контроллера магнитофона;

Разряд 2

 - этот разряд устанавливается в "1" по любой операции записи в системный регистр. Сбрасывается в "0" по окончанию операции чтения системного регистра. Об использовании этого разряда см. в разделе, посвящённом особенностям выполнения некоторых команд ЭВМ.

Остальные разряды не используются и читаются нулями.

1.2.6.2. Регистр управления памятью

Формат регистра:

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 . X X X 1 X X X . . . X X . X X 40000 - 100000 100000 - 140000 управление переключением страниц ОЗУ по адресам разрешение записи в системный регистр разрешение работы страниц ПЗУ
Разряды 14 - 12

 - определяют номер страницы ОЗУ, подключаемой на адреса 40000 - 100000 (см. ниже).

Разряд 11

 - должен содержать 1.

Разряды 10 - 8

 - определяют номер страницы ОЗУ, подключаемой на адреса 100000 - 140000.

Разряд 4

 - разрешает подключение к адресному пространству 100000 - 140000 страницы ПЗУ номер 3, отключает страницу ОЗУ с соответствующих адресов.

Разряд 3

 - разрешает подключение к адресному пространству 100000 - 140000 страницы ПЗУ номер 2, отключает страницу ОЗУ.

Разряд 1

 - разрешает подключение к адресному пространству 100000 - 140000 страницы ПЗУ номер 1, отключает страницу ОЗУ.

Разряд 0

 - разрешает подключение к адресному пространству 100000 - 140000 страницы ПЗУ номер 0, отключает страницу ОЗУ.

Кодировка переключаемых страниц ОЗУ:

Бит 14 13 12
(10 9 8)
  1 1 0 страница 0 (постоянно отображена 0...40000)
  0 0 0 страница 1
  0 1 0 страница 2
  0 1 1 страница 3
  1 0 0 страница 4
  0 0 1 страница 5 (буфер экрана 0)
  1 1 1 страница 6 (буфер экрана 1)
  1 0 1 страница 7 (системная страница)


ПРИМЕЧАНИЕ. Запись в регистр возможна только при установленном 11-м бите, только по командам, работающим с регистром, как с целым словом.

Страницы 0, 1 и 2 ПЗУ зарезервированы:

страница 0 и адресное пространство 100000 - 117777 страницы 1 предназначены для ПЗУ языка программирования BASIC. В адресах 120000 - 137777 страницы 1 расположены программы БОС. Адреса 100000 - 117777 страницы 2 предназначены для ПЗУ драйвера локальной сети. Страница 3 ПЗУ предназначена для подключения внешних блоков ПЗУ к магистрали ЭВМ.

1.2.6.3. Регистр управления магнитофоном

Формат регистра:

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 . . . X 0 . . . X X X . . X . . блокировка клавиши "стоп" управление двигателем магнитофона данные записи на магнитофон

Регистр доступен только по записи при значении разряда 11 равном "0".

1.3. Особенности выполнения команд

Система команд микроЭВМ соответствует системе команд ЭВМ "ЭЛЕКТРОНИКА - 60" и определяется применяемым процессором 1801ВМ1.

Однако в связи с рядом особенностей архитектуры существуют некоторые отличия от ЭВМ семейств СМ ЭВМ, ЭЛЕКТРОНИКА-60, ЭЛЕКТРОНИКА-85 и ДВК.

Команда HALT (код 000000) вызывает прерывание выполнения программы и переход по вектору прерывания 4, причём при этом устанавливается бит - признак записи в системный регистр. БОС различает обычное прерывание по 4 вектору и останов. Программа пользователя имеет возможность перехватить только обычное прерывание по 4 вектору. При останове произойдёт переход в монитор БОС с выводом на экран содержимого счётчика команд ЭВМ. Следует заметить, что правильная обработка клавиши "стоп" возможна только при корректном значении указателя стека. Кроме этого, из-за особенностей аппаратуры может выдаваться неправильное значение счётчика команд. В некоторых случаях (нажатие "стоп" во время выполнения запроса БОС) невозможно продолжение программы по команде "P". Исходя из сказанного, клавишей "стоп" следует пользоваться очень осторожно.

1.4. Вектора прерываний и зарезервированные ячейки БОС

Обработка прерываний в ЭВМ производится по векторам, размещённым в области 0 - 376. Некоторые ячейки этой области используются БОС для внутренних целей.

4, 6

- вектор прерывания по ошибке обращения к каналу, команде HALT и клавише "стоп";

10, 12

- вектор прерывания по несуществующей команде (в БОС не используется);

14, 16

- вектор прерывания по команде BPT и Т-БИТУ (используется при нажатии клавиши "ШАГ");

20, 22

- вектор прерывания по команде IOT (не используется);

24, 26

- вектор прерывания по аварии питания (не используется);

30, 32

- вектор прерывания по команде EMT;

34, 36

- вектор прерывания по команде TRAP (не используется);

40

- адрес пуска по команде монитора "G" (используется при операциях с магнитофоном);

52 (младший байт)

код возврата системных вызовов;

60, 62

- вектор прерывания клавиатуры (алфавитно-цифровые и управляющие коды);

100, 102

- вектор прерывания таймера;

110, 112

- программный вектор клавиатуры (адрес пользовательской программы завершения);

114

- копия по записи системного регистра (управление памятью);

116

- копия по записи системного регистра (управление магнитофоном);

150-156, 164, 250, 252

- используются для внутренних нужд БОС;

166

- используется в качестве псевдовектора EMT для перехвата пользовательской программой команд EMT, не обработанных БОС;

270, 272

- вектор прерывания параллельного порта;

274, 276

- вектор прерывания клавиатуры (регистр АР2 и функциональные клавиши).

2. Функции базовой операционной системы

БОС состоит из следующих программ:

  1. программа начального пуска;
  2. клавиатурный монитор;
  3. таблица системных вызовов;
  4. обработчик команд EMT;
  5. драйвер ОЗУ/ПЗУ;
  6. драйвер клавиатуры;
  7. драйвер экрана;
  8. драйвер кассетного магнитофона;
  9. драйвер принтера;
  10. драйвер накопителя на ГМД.

2.1 Программа начального пуска

Программа начального пуска предназначена для инициализации БОС при включении ЭВМ, определения конфигурации ЭВМ и запуска других программ.

При включении ЭВМ программа определяет наличие дополнительных блоков ПЗУ, устанавливая соответствующие флаги. Если в момент пуска нажата и удерживается какая-либо клавиша на клавиатуре, программа начального пуска передаёт управление клавиатурному монитору. Если ни одна клавиша не нажата,производятся следующие действия: если к ЭВМ подключён контроллер НГМД, программа начального пуска вызывает дисковый загрузчик,расположенный в контроллере НГМД по адресу 160000. Дисковый загрузчик поочерёдно пытается загрузить операционную систему (ОС) с 0, 1 привода. Если все попытки оказались неудачными (в дисковод не вставлена дискета с ОС, дискета запорчена и т.д.), загрузчик возвращает управление программе начального пуска. Затем программа поочерёдно пытается запустить блоки ПЗУ, начиная с блока с наибольшим номером. Первое слово программы в ПЗУ должно быть командой NOP (код 240). Вызов ПЗУ производится командой JSR PC, поэтому программа в ПЗУ может вернуть управление программе начального пуска командой RTS PC для продолжения загрузки. Если программ в ПЗУ нет или они вернули управление, производится переход в клавиатурный монитор.

2.2 Клавиатурный монитор

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

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

Язык команд монитора максимально приближен ко входному языку режима пультового терминала ЭВМ "ЭЛЕКТРОНИКА-60" и "ДВК".

2.2.1. Команды монитора

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

XXXXXX/

 - открыть ячейку с восьмеричным адресом XXXXXX.

По этой команде на экран выводится восьмеричное содержимое ячейки ОЗУ, ПЗУ или регистра внешнего устройства с адресом XXXXXX. Если такой регистр отсутствует или страница ОЗУ не подключена к заданному адресу, выводится сообщение об ошибке - символ "?" и команда игнорируется.

XXXXXX\

 - открыть байт с адресом XXXXXX.

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

RX/

 - открыть регистр X, где X = 0...7 или "S". Открывает регистр общего назначения процессора (R0 - R7) или регистр состояния процессора (RS).

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

"ВВОД" ()

 - закрыть слово, байт или регистр. Если пользователем было введено новое содержимое, оно будет записано.

""

 - закрыть слово, байт или регистр (если надо, модифицировать содержимое как по команде "ВВОД") и открыть следующее слово, байт или регистр (при этом печатается адрес открываемой ячейки). После ячейки с адресом 177777 открывается ячейка 000000, после R7 - R0, после RS - команда работает, как команда "ВВОД".

""

 - закрыть (с модификацией) и открыть предыдущее слово, байт, регистр.

""

 - закрыть (с модификацией) ячейку, вычислить адрес по формуле:

АДРЕС = < АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ > + её новое содержимое + 2

и открыть (как слово) ячейку с соответствующим адресом. Эта команда используется для открытия аргумента команды ЭВМ, использующей метод адресации "67".

""

 - закрыть (с модификацией) ячейку, вычислить адрес по формуле:

АДРЕС = < АДРЕС ЯЧЕЙКИ > + < СОДЕРЖИМОЕ МЛАДШЕГО БАЙТА > * 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 - последовательности, воспринимаемые драйвером экрана, см. в приложении 2.

Пример:

2.3. Таблица системных вызовов

Таблица системных вызовов располагается в ПЗУ, начиная с адреса 140010 и является массивом адресов программ - обработчиков системных вызовов. Вызов функции БОС производится командой:

      JSR PC , @ADDR

где ADDR - адрес одного из слов таблицы, например

      JSR PC , @140010

Для передачи параметров используется R0 процессора, а в некоторых случаях и R1. При возврате из БОС содержимое регистров процессора сохраняется, за исключением особо оговорённых случаев.Содержимое таблицы рассматривается ниже.

2.4. Диспетчер EMT

Диспетчер EMT позволяет наряду со способом вызова по JSR использовать команды EMT. Способ передачи параметров совпадает с вызовами JSR.При обработке команды EMT с номером, превышающим допустимый, диспетчер проверяет содержимое ячейки 166. Если оно не равно нулю, управление передаётся по адресу, находящемуся в этой ячейке. Регистр PS процессора устанавливается в соответствии с содержимым 32 ячейки. Возврат из пользовательского обработчика производится непосредственно в вызвавшую программу командой RTI.

Достоинства использования EMT:

Недостатки:

2.5. Драйвер ОЗУ/ПЗУ

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

2.6. Драйвер клавиатуры

Драйвер клавиатуры обеспечивает приём символов с клавиатуры, перекодировку символов в соответствии с таблицами КОИ-8, КОИ-7Н0, КОИ-7Н1, КОИ-7Н2, запись символов во внутренний буфер, выдачу по запросу и по прерыванию символов в программу пользователя с ожиданием и без, программирование и подстановку функциональных клавиш, автоповтор последнего символа, редактирование вводимой и существующей строки, акустическую обратную связь при нажатии на клавиши. Драйвер может работать в двух режимах: прямом, когда коды функциональных клавиш передаются в программу без изменений, и режиме перекодировки, в котором некоторые функциональные клавиши выдают другие коды (см. приложение 1).

2.7. Драйвер экрана

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

Вывод символьной и графической информации возможен в трех режимах:

Вывод алфавитно-цифровой информации производится в соответствии с одной из таблиц: КОИ-8,КОИ-7Н0, КОИ-7Н1, КОИ-7Н2. Знакогенератор символов располагается в системной странице ОЗУ, начиная со смещения 10000. Хотя системная страница не может быть подключена, область знакогенератора доступна по чтению и записи с помощью запросов драйвера ОЗУ/ПЗУ. Описание каждого символа состоит из 10 байт, соответствующих телевизионным строкам. Байт с младшим адресом соответствует верхней строке символа, младший бит байта -левой точке в строке. Таблица начинается с изображения символа с восьмеричным кодом 040.Далее подряд идут изображения символов с кодами от 041 до 377. При начальном пуске ЭВМ в ОЗУ переписывается стандартный знакогенератор из ПЗУ. Программа пользователя может заменить любую часть знакогенератора.

В режиме 80 символов в строке на экран выводятся первые 6 бит каждого байта.

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

При выводе в последней строке символа ПС (код 12) или ПФ (код 14) сдвиг экрана вверх может производиться либо скачком либо плавно.

Возможно задание атрибутов выводимых символов: двойная ширина, подчёркивание, инверсия, возможен также вывод символов двойной высоты в 2 приёма: сначала выводится верхняя часть буквы, затем курсор позиционируется на строку ниже в той же позиции и выводится нижняя часть буквы. Двойная высота может сочетаться с любой шириной, подчёркивание символов двойной высоты не производится.

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

2.8. Драйвер кассетного магнитофона

Драйвер кассетного магнитофона обеспечивает поиск, запись и считывание файлов с бытового кассетного магнитофона в формате, совместимом с БК - 0010.

2.9. Драйвер принтера

Драйвер принтера обеспечивает вывод на печатающее устройство алфавитно-цифровой информации с перекодировкой по таблицам КОИ-8, КОИ-7Н0, КОИ-7Н1, КОИ-7Н2, определение готовности ПУ, отслеживание позиции печатающей головки.

2.10. Драйвер НГМД

Драйвер НГМД обеспечивает запись и считывание информации с гибких магнитных дисков в формате, совместимом с контроллером КМД от ДВК-3, а также форматирование дискет.

3. Описание системных запросов БОС

В этой главе содержится краткое и подробное описание запросов БОС БК-0011М. Для облегчения программирования на языке Ассемблера под управлением операционной системы ОС БК-11, поставляется макробиблиотека, содержащая макроопределения системных вызов. При описании функций БОС приводится 2 формата вызовов: макрокоманда и макрорасширение, которое может использоваться при программировании без макробиблиотеки. По умолчанию используются команды JSR. Для использования EMT следует присвоить служебной переменной ...EMT значение, отличное от нуля.

БОС поддерживает следующие вызовы:

Имя Вызов через
JSR
Вызов через
EMT
Адрес Описание
.BINIT JSR PC,@140010 EMT 0 150414 инициализация БОС;
.BEXIT JSR PC,@140012 EMT 1 147712 выход в клавиатурный монитор;
.BTRPS JSR PC,@140014 EMT 2 147742 перехват 4 вектора;
.BTIM JSR PC,@140016 EMT 3 150070 управление таймером;
.BEMT JSR PC,@140020 EMT 4 152202 управление обработкой EMT;
  JSR PC,@140022   150164 зарезервировано
  JSR PC,@140024   150164 зарезервировано
  JSR PC,@140026   150164 зарезервировано
.BMEM JSR PC,@140030 EMT 10 150474 чтение состояния памяти;
.BTEST JSR PC,@140032 EMT 11 150504 чтение статуса страницы;
.BPAGE JSR PC,@140034 EMT 12 150514 подключение страницы ОЗУ/ПЗУ;
.BWORK JSR PC,@140036 EMT 13 150530 назначение/чтение рабочей страницы;
.BGETW JSR PC,@140040 EMT 14 150540 чтение слова из рабочей страницы;
.BGETB JSR PC,@140042 EMT 15 150564 чтение байта из рабочей страницы;
.BPUTW JSR PC,@140044 EMT 16 150612 запись слова в рабочую страницу;
.BPUTB JSR PC,@140046 EMT 17 150654 запись байта в рабочую страницу;
.BMOVE JSR PC,@140050 EMT 20 151140 пересылка массива слов;
.BMOVB JSR PC,@140052 EMT 21 151156 пересылка массива байтов;
.BJSR JSR PC,@140054   151006 вызов подпрограммы из рабочей страницы;
.BJMP JSR PC,@140056 EMT 23 151114 переход в рабочую страницу без возврата;
.BKINI JSR PC,@140070 EMT 30 146704 инициализация драйвера клавиатуры;
.BKSET JSR PC,@140072 EMT 31 146752 установка режима драйвера клавиатуры;
.BKGET JSR PC,@140074 EMT 32 146764 чтение режима драйвера клавиатуры;
.BTTIN JSR PC,@140076 EMT 33 147550 ввод символа с ожиданием;
.BINKEY JSR PC,@140100 EMT 34 147406 ввод символа без ожидания;
.BGLIN JSR PC,@140102 EMT 35 151336 ввод строки с редактированием;
.BEDIT JSR PC,@140104 EMT 36 151266 редактирование существующей строки;
.BKRES JSR PC,@140106 EMT 37 147636 сброс буфера клавиатуры;
.BSFUN JSR PC,@140110 EMT 40 147672 установка функциональных клавиш;
.BGFUN JSR PC,@140112 EMT 41 147702 чтение функциональных клавиш;
  JSR PC,@140114   150164 зарезервировано
  JSR PC,@140116   150164 зарезервировано
  JSR PC,@140120   150164 зарезервировано
  JSR PC,@140122   150164 зарезервировано
  JSR PC,@140124   150164 зарезервировано
  JSR PC,@140126   150164 зарезервировано
.BTINI JSR PC,@140130 EMT 50 143456 инициализация драйвера экрана;
.BTSET JSR PC,@140132 EMT 51 143446 установка режима драйвера экрана;
.BTGET JSR PC,@140134 EMT 52 143434 чтение режима драйвера экрана;
.BSCOL JSR PC,@140136 EMT 53 143274 установка цветов;
.BGCOL JSR PC,@140140 EMT 54 143414 чтение цветов;
.BPAL JSR PC,@140142 EMT 55 150000 установка/чтение палитры;
.BBUF JSR PC,@140144 EMT 56 143466 переключение буферов экрана;
.BSPOS JSR PC,@140146 EMT 57 143476 установка координат Алфавитно-цифрового курсора;
.BGPOS JSR PC,@140150 EMT 60 143560 чтение координат Алфавитно-цифрового курсора;
.BSCRL JSR PC,@140152 EMT 61 143572 сдвиг экрана;
.BCLS JSR PC,@140154 EMT 62 143622 очистка экрана;
.BTOUT JSR PC,@140156 EMT 63 143070 вывод символа;
.BPRIN JSR PC,@140160 EMT 64 143142 вывод строки символов, (формат RT - 11);
.BSTR JSR PC,@140162 EMT 65 143130 вывод строки символов;
.BSGRF JSR PC,@140164 EMT 66 152470 установка текущих графических координат;
.BGGRF JSR PC,@140166 EMT 67 152506 чтение текущих графических координат;
.BSCGR JSR PC,@140170 EMT 70 152524 установка графического цвета;
.BGCGR JSR PC,@140172 EMT 71 152546 чтение графического цвета;
.BSMOD JSR PC,@140174 EMT 72 152564 установка/чтение режима рисования;
.BSPNT JSR PC,@140176 EMT 73 152230 вывод графической точки;
.BGPNT JSR PC,@140200 EMT 74 152372 чтение цвета графической точки;
.BVECT JSR PC,@140202 EMT 75 152460 вывод вектора;
.BRECT JSR PC,@140204 EMT 76 153424 вывод закрашенного прямоугольника;
.BCIRC JSR PC,@140206 EMT 77 152722 вывод дуги или окружности;
.BFILL JSR PC,@140210 EMT 100 154202 закраска гранично - определённой области;
.BSOUN JSR PC,@140212 EMT 101 143636 выдача звука;
.BSWIN JSR PC,@140214 EMT 102 153000 установка графического окна;
.BGWIN JSR PC,@140216 EMT 103 153134 чтение графического окна;
  JSR PC,@140220   146404 - секретный вызов
.BSTYP JSR PC,@140222 EMT 105 152614 установка типа вектора;
.BGTYP JSR PC,@140224 EMT 106 152660 чтение типа вектора;
.BGOSET JSR PC,@140226 EMT 107 153166 установка/чтение ориентации графических символов;
.BGOUT JSR PC,@140230 EMT 110 153226 графический вывод символа;
  JSR PC,@140232   150164 зарезервировано
  JSR PC,@140234   150164 зарезервировано
  JSR PC,@140236   150164 зарезервировано
.BMOT JSR PC,@140240 EMT 114 154550 управление двигателем магнитофона;
.BMB10 JSR PC,@140242 EMT 115 154614 вызов формата БК-0010;
  JSR PC,@140244   150164 зарезервировано
  JSR PC,@140246   150164 зарезервировано
  JSR PC,@140250   150164 зарезервировано
  JSR PC,@140252   150164 зарезервировано
  JSR PC,@140254   150164 зарезервировано
  JSR PC,@140256   150164 зарезервировано
.BPINI JSR PC,@140260 EMT 124 156560 инициализация драйвера принтера;
.BPSET JSR PC,@140262 EMT 125 156612 установка режима печати;
.BPGET JSR PC,@140264 EMT 126 156664 чтение режима печати;
.BPOUT JSR PC,@140266 EMT 127 156736 вывод символа на печать;
.BPRDY JSR PC,@140270 EMT 130 156676 определение готовности принтера;
.BPPOS JSR PC,@140272 EMT 131 156724 определение позиции печатающей головки;
  JSR PC,@140274   150164 зарезервировано
  JSR PC,@140276   150164 зарезервировано
.BABOOT JSR PC,@#160000     автоматическая загрузка с НГМД;
.BBOOT JSR PC,@#160002     загрузка с выбранного привода НГМД;
.BBLCK JSR PC,@#160004     чтение/запись по номеру блока;
.BSECT JSR PC,@#160006     чтение/запись по номерам сектора и дорожки;
.BDINI JSR PC,@#160010     инициализация драйвера НГМД;
.BFORM JSR PC,@#160012     форматирование дорожки НГМД.

3.1. Общесистемные запросы

3.1.1. Инициализация базовой операционной системы .BINIT

Макрокоманда: .BINIT
Расширение:
JSR PC,@140010 (EMT 0)


Производится инициализация драйверов БОС.

Драйвер клавиатуры:

Драйвер экрана:

Драйвер магнитофона:

Драйвер принтера:

Драйвер НГМД:

3.1.2. Выход в клавиатурный монитор .BEXIT

Макрокоманда: .BEXIT
Расширение:
JSR PC,@140012 (EMT 1) 


Производится выход из программы пользователя в клавиатурный монитор. Настраиваются вектора клавиатуры, при этом возможен возврат в программу пользователя по команде "P".

3.1.3. Перехват вектора 4 .BTRPS

Макрокоманда: .BTRPS ADDR
Расширение:
MOV ADDR,R0
JSR PC,@140014 (EMT 2)


Устанавливается адрес пользовательской программы для обработки 4 вектора. Состояние останова (команда HALT и клавиша "СТОП") не перехватывается, в этом случае всегда происходит выход в монитор. Программа обработки должна заканчиваться командой RTI. Вызов с нулевым значением аргумента ADDR отменяет обработку 4 вектора в пользовательской программе. В обоих случаях вектор 4 настраивается на обработчик БОС.

3.1.4. Управление таймером .BTIM

Макрокоманда: .BTIM ARG
Расширение:
MOV ARG,R0
JSR PC,@140016 (EMT 3)


Если бит 15 ARG равен 1, то в R0 возвращается признак: 0 - таймер выключен, 1 - таймер включен, если бит 15 ARG равен 0, то при нулевом значении ARG происходит выключение таймера, при ненулевом - включение. Перед включением таймера следует подготовить вектор 100.

3.1.5. Управление обработкой EMT .BEMT

Макрокоманда имеет две формы запроса. Первая:

Макрокоманда: .BEMT ON
Расширение:
JSR PC,@140020
...EMT = 1

Содержимое вектора EMT (если оно не равно адресу диспетчера EMT) помещается в ячейку 166 (настраивается пользовательский обработчик EMT). Макробиблиотека настраивается на использование команд EMT (ниже по тексту программы).

Вторая:

Макрокоманда: .BEMT OFF
Расширение:
MOV @#166,@#30
...EMT = 0

Восстанавливается прямая обработка EMT пользовательской программой. Макробиблиотека настраивается на использование команд JSR (ниже по тексту программы).

3.2 Запросы драйвера ОЗУ/ПЗУ

3.2.1. Чтение состояния памяти .BMEM

Макрокоманда: .BMEM
Расширение:
JSR PC,@140030 (EMT 10)


В младший байт R0 помещается номер страницы, подключенной к адресу 40000, в старший - номер страницы, подключенной к адресу 100000. Номера страниц 0 - 7 относятся к ОЗУ, страницы 10 - 13 (восьмеричное) относится к страницам ПЗУ с номерами 0, 1, 2 и 3 соответственно.

3.2.2. Чтение статуса страницы ОЗУ/ПЗУ .BTEST

Макрокоманда: .BTEST PAGE
Расширение:
MOV PAGE,R0
JSR PC,@140032 (EMT 11)


Выдаётся состояние страницы ОЗУ/ПЗУ. В R0 помещается код:

Примечание. Страница ПЗУ считается подключенной, если в ней присутствует хотя бы одна микросхема ПЗУ.

3.2.3. Подключение страницы ОЗУ/ПЗУ .BPAGE

Макрокоманда: .BPAGE PAGE,ADDR
Расширение:
MOV #<ADDR * 400> + PAGE,R0
JSR PC,@140034 (EMT 12)


В младший байт R0 помещается номер подключаемой страницы. Код адреса подключения страницы помещается в старший байт R0. Нулевое значение означает область адресов 40000 - 100000, любое ненулевое значение - область 100000 - 140000.

Возможно нормальное завершение запроса и завершение запроса с ошибкой. В случае нормального завершения бит "C" в слове состояния процессора сброшен, по ошибке - установлен в 1. В этом случае в байт с адресом 52 (восьмеричное) помещается код ошибки:

3.2.4. Назначение рабочей страницы .BWORK

Макрокоманда: .BWORK ARG
Расширение:
MOV ARG,R0
JSR PC,@140036 (EMT 13)


Если бит 15 аргумента равен 0, то происходит назначение рабочей страницы: если бит 7 равен 0,то страница с номером в младшем байте аргумента назначается в качестве рабочей для записи/чтения. Если бит 7 равен 1, то страница назначается в качестве рабочей для макрокоманд .BJSR и .BJMP. Если бит 15 аргумента равен 1, то в R0 помещается код рабочих страниц: в младшем байте номер рабочей страницы чтения-записи, в старшем - номер страницы вызовов (со старшим битом, равным 0).

3.2.5. Чтение слова из рабочей страницы .BGETW

Макрокоманда: .BGETW ADDR
Расширение:
MOV ADDR,R0
JSR PC,@140040 (EMT 14)


Из рабочей страницы по указанному адресу читается слово и помещается в R0. При попытке прочесть слово из несуществующей страницы R0 не изменяется, а бит "C" слова состояния процессора устанавливается в 1.

Старшие два бита адреса игнорируются.

3.2.6. Чтение байта из рабочей страницы .BGETB

Макрокоманда: .BGETB ADDR
Расширение:
MOV ADDR,R0
JSR PC,@140042 (EMT 15)


Из рабочей страницы по указанному адресу читается байт и помещается в младший байт R0. Старший байт R0 обнуляется. При попытке прочесть байт из несуществующей страницы R0 не изменяется, а бит "C" слова состояния процессора устанавливается в 1.

3.2.7. Запись слова в рабочую страницу .BPUTW

Макрокоманда: .BPUTW ADDR,DATA
Расширение:
MOV ADDR,R1
MOV DATA,R0
JSR PC,@140044 (EMT 16)


В рабочую страницу по указанному адресу записывается слово. При попытке записи в ПЗУ, несуществующую страницу или системную область ОЗУ устанавливается бит "C". Системной областью считается область системной страницы с относительными адресами 0 - 7777.

3.2.8. Запись байта в рабочую страницу .BPUTB

Макрокоманда: .BPUT ADDR,DATA
Расширение:
MOV ADDR,R1
MOVB DATA,R0
JSR PC,@140046 (EMT 17)


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

3.2.9. Пересылка массива слов .BMOVE

Макрокоманда: .BMOVE AREA
Расширение:
MOV AREA,R0
JSR PC,@140050 (EMT 20)


Производится пересылка массива слов между текущим адресным пространством пользователя и заданным скрытым пространством. В R0 помещается адрес области параметров.

Формат области:

.WORD MEMADR   ; начальный адрес в памяти
.WORD HIDADR   ; начальный адрес в скрытой памяти
.BYTE LOW,HIGH ; номера страниц скрытой памяти
.WORD BCOUNT   ; счётчик слов

Начальные адреса в памяти должны лежать выше адреса 400, конечные адреса (начальный адрес + счётчик) в памяти не должны превышать 160000. Параметры LOW и HIGH задают номера страниц, подключаемых к адресам 40000 и 100000 соответственно. Выходной массив (в который осуществляется запись) не должен лежать в ПЗУ или системной области ОЗУ. Положительное значение счётчика слов задаёт пересылку из рабочей страницы в память (чтение),отрицательное (при этом используется абсолютное значение счётчика) - обратную операцию (запись). При правильно заданных параметрах и успешной пересылке бит "C" слова состояния процессора и байт 52 обнуляются. Возможны следующие случаи неуспешного завершения (при этом бит "C" устанавливается в 1 и в байт 52 помещается соответствующий код):

  1. неверно задан начальный адрес (код 1) - пересылка не производится;
  2. неверно задан конечный адрес (код 2) -пересылка производится до достижения допустимого конечного адреса, в R0 помещается число непереданных слов;
  3. при пересылке возникло прерывание по 4 вектору (попытка записи в ПЗУ или несуществующую область) (код 3) - пересылка прекращается, в R0 помещается число непереданных слов.

3.2.10. Пересылка массива байтов .BMOVB

Макрокоманда: .BMOVB AREA
Расширение:
MOV AREA,R0
JSR PC,@140052 (EMT 21)


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

3.2.11. Вызов подпрограммы из рабочей страницы .BJSR

Макрокоманда: .BJSR ADDR
Расширение:
MOV ADDR,-(SP)
JSR PC,@140054


Рабочая страница подключается по адресу, определённому аргументом ADDR (если он находится в диапазоне 40000 - 47776, то к 40000, если в диапазоне 100000 - 140000, то к 100000) и производится вызов командой JSR PC,ADDR.

Регистры общего назначения и слово состояния процессора (кроме бита "C") при выполнении вызова не изменяются. Стек не должен находиться в переключаемой странице. В стек помещается следующая информация:

SP до вызова ————
адрес перехода
адрес возврата 1
старая карта
SP после перехода — адрес возврата 2

При выходе из подпрограммы регистры общего назначения и слово состояния программы сохраняются.

При попытке обращения к подпрограмме в несуществующей странице или системной странице ОЗУ обращение к подпрограмме выполняться не будет и выполнится выход в монитор с соответствующей диагностикой.

После выхода из подпрограммы восстанавливается старое подключение обеих страниц ОЗУ/ПЗУ, даже если подпрограмма переключала одну или обе страницы. Допускается вложенное использование макрокоманды ".BJSR". Параметр вызова из стека удаляется.

3.2.12. Переход в рабочую страницу без возврата .BJMP

Макрокоманда: .BJMP ADDR
Расширение:
MOV ADDR,-(SP)
JSR PC,@140056 (EMT 23)


Макрокоманда выполняется аналогично макрокоманде .BJSR, но дополнительная информация в стек не помещается, адрес возврата не сохраняется. Если страница не существует или занята системой, параметры вызова из стека удаляются и происходит выход в монитор с соответствующей диагностикой.

ПРИМЕЧАНИЯ:

  1. В диагностических сообщениях, выдаваемых по .BJMP, .BJSR и прерыванию по 4 вектору выдаётся содержимое PC после выполнения запроса, т.е. адрес следующей за JSR или недопустимой командой ячейки.
  2. В связи с использованием стека для передачи параметра для вызова следует использовать только команды JSR, а не EMT.

3.3. Запросы драйвера клавиатуры

3.3.1. Инициализация драйвера клавиатуры .BKINI

Макрокоманда: .BKINI
Расширение:
JSR PC,@140070 (EMT 30)


Выполняется инициализация драйвера клавиатуры, описанная в макрокоманде .BINIT.

3.3.2 Установка режима драйвера клавиатуры .BKSET

Макрокоманда: .BKSET MODE
Расширение:
MOV MODE,R0
JSR PC,@140072 (EMT 31)


Устанавливается режим драйвера клавиатуры в соответствии со словом MODE. Назначение разрядов слова:

Разряд Значение
0 0 - КОИ-8, 1 - КОИ-7
1 для КОИ-7: 1 - КОИ7-Н2
6 0 - "щелчок" клавиатуры разрешён, 1 - запрещён
7 0 - прямая передача кодов, 1 - перекодировка (см. приложение 1)


Кроме этого, программа пользователя имеет возможность задать подпрограмму завершения при нажатии каждой клавиши. Программным вектором считаются ячейки 110 и 112. При нулевом содержимом 110 ячейки считается, что подпрограмма завершения отсутствует. В ячейку 112 записывается значение регистра управления памятью для подпрограммы завершения или 0 для текущего распределения. При вызове подпрограммы завершения в R0 передаётся код нажатой клавиши. Выход из подпрограммы выполняется командой "RTS PC". В подпрограмме завершения можно использовать все регистры общего назначения.

Если при выходе из подпрограммы завершения бит "C" установлен в 1, драйвер считает, что символ с клавиатуры не обработан и передаст его программе пользователя по .BTTIN.

Если при выходе из подпрограммы завершения бит "C" установлен в 0, то символ считается обработанным и в буфер не записывается.

3.3.3. Чтение режима работы клавиатуры .BKGET

Макрокоманда: .BKGET
Расширение:
JSR PC,@140074 (EMT 32)


Текущий режим клавиатуры помещается в R0. Формат слова режима см. макро .BKSET.

3.3.4. Ввод символа с ожиданием .BTTIN

Макрокоманда: .BTTIN
Расширение:
JSR PC,@140076 (EMT 33)


В младший байт R0 помещается очередной символ из буфера ввода клавиатуры, старший байт R0 обнуляется.

3.3.5. Ввод символа без ожидания .BINKEY

Макрокоманда: .BINKEY
Расширение:
JSR PC,@140100 (EMT 34)


В случае отсутствия символов в буфере, R0 обнуляется, бит "C" устанавливается в 1, в противном случае бит "C" сброшен, в R0 передаётся код очередного символа.

3.3.6. Ввод строки с редактированием .BGLIN

Макрокоманда: .BGLIN ADDR,LENGTH
Расширение:
MOV ADDR,R0
MOV LENGTH,R1
JSR PC,@140102 (EMT 35)


Осуществляется ввод с клавиатуры строки символов с редактированием. Ввод строки заканчивается при нажатии клавиши "ВВОД", необязательно в конце строки. Код клавиши "ВВОД" в буфер не помещается, в конце строки добавляется нулевой байт. Параметр ADDR задаёт адрес буфера, куда помещается строка, параметр LENGTH задаёт максимальную длину вводимой строки. При длине, равной 0, длина принимается равной максимально возможной длине - 128 символов. При вводе строки отрабатывается клавиша "забой". После возврата из функции в R0 находится адрес байта, следующего за нулевым, а в R1 - длина введённой строки.

3.3.7. Редактирование существующей строки .BEDIT

Макрокоманда: .BEDIT ADDR,LENGTH
Расширение:
MOV ADDR,R0
MOV LENGTH,R1
JSR PC,@140104 (EMT 36)


Строка, находящаяся по адресу ADDR и заканчивающаяся нулевым байтом, выводится на экран, курсор помещается в конец выведенной строки, после чего осуществляется ее редактирование, аналогичное .BGLIN. Отредактированная строка помещается на место исходной.

3.3.8. Сброс буфера клавиатуры .BKRES

Макрокоманда: .BKRES
Расширение:
JSR PC,@140106 (EMT 37)


Осуществляется инициализация кольцевого буфера клавиатуры.

3.3.9. Установка функциональных клавиш .BSFUN

Макрокоманда: .BSFUN KEY,ADDR
Расширение:
MOV KEY,R0
MOV ADDR,R1
JSR PC,@140110 (EMT 40)


Макрокоманда позволяет присвоить 10 функциональным клавишам (аргумент KEY [1...10] - номер клавиши) текстовые строки, которые будут вводиться при нажатиях этих клавиш.Функциональные клавиши вводятся при одновременном нажатии клавиши АР2 и соответствующей цифровой клавиши (номеру 10 соответствует клавиша 0). Аргумент KEY, равный 0, вызывает сброс всех функциональных клавиш. Аргумент ADDR задаёт адрес строки, которая должна заканчиваться нулевым байтом. Максимальная длина присваиваемой строки - 64.

3.3.10. Чтение функциональных клавиш .BGFUN

Макрокоманда: .BGFUN KEY,ADDR
Расширение:
MOV KEY,R0
MOV ADDR,R1
JSR PC,@140112 (EMT 41)


Производится пересылка строки, соответствующей клавише с номером KEY, в пользовательскую область по адресу ADDR.

3.4. Запросы драйвера экрана

3.4.1. Инициализация драйвера экрана .BTINI

Макрокоманда: .BTINI
Расширение:
JSR PC,@140130 (EMT 50)


Производится инициализация драйвера экрана, описанная в макрокоманде .BINIT.

3.4.2. Установка режима драйвера экрана .BTSET

Макрокоманда: .BTSET MODE
Расширение:
MOV MODE,R0
JSR PC,@140132 (EMT 51)


Устанавливается режим работы экрана, соответствующий слову MODE. Формат слова приведён в приложении 3.

3.4.3. Чтение режима драйвера экрана .BTGET

Макрокоманда: .BTGET
Расширение:
JSR PC,@140134 (EMT 52)


В R0 помещается слово управления режимом драйвера экрана.

3.4.4. Установка цветов .BSCOL

Макрокоманда: .BSCOL FORE,BACK
Расширение:
MOV #<BACK * 400>+FORE,R0
JSR PC,@140136 (EMT 53)


Задаются цвета для символьного вывода на экран. Аргумент FORE задаёт код цвета для символов и помещается в младший байт R0, аргумент BACK - код цветов фона и помещается в старший байт R0. Код, больший 200 (восьмеричное), означает сохранение текущего цвета. В зависимости от режима рассматриваются младшие 1 или 2 бита кода.

3.4.5. Чтение цветов .BGCOL

Макрокоманда: .BGCOL
Расширение:
JSR PC,@140140 (EMT 54)


В R0 помещается код текущих цветов, как описано в макрокоманде .BSCOL.

3.4.6. Установка/чтение палитры .BPAL

Макрокоманда: .BPAL PALET
Расширение:
MOVB PALET,R0
JSR PC,@140142 (EMT 55)


Устанавливается палитра, соответствующая аргументу PALET (0...15). Если PALET >200 (восьм.), то палитра не изменяется, а в R0 помещается код текущей палитры.

3.4.7. Переключение буферов экрана .BBUF

Макрокоманда: .BBUF WRITE,VIDEO
Расширение:
MOV #<WRITE * 400>+VIDEO,R0
JSR PC,@140144 (EMT 56)


Устанавливаются буфера экрана для отображения (VIDEO) и для записи (WRITE). Номер буфера (0 или 1) отображения помещается в младший байт R0, записи - в старший. Если бит 15 R0 установлен в "1", в R0 возвращается текущий код буферов.

3.4.8. Установка координат алфавитно-цифрового курсора .BSPOS

Макрокоманда: .BSPOS LINE,POS
Расширение:
MOV #<LINE * 400>+POS,R0
JSR PC,@140146 (EMT 57)


Алфавитно-цифровой курсор устанавливается в заданной позиции POS заданной строки LINE. Если номер строки или позиции в строке превышает допустимый, то соответствующая координата не изменяется.

3.4.9. Чтение координат Алфавитно-цифрового курсора .BGPOS

Макрокоманда: .BGPOS
Расширение:
JSR PC,@140150 (EMT 60)


В R0 помещается текущее положение курсора, причём в младшем байте содержится номер позиции, а в старшем - номер строки.

3.4.10. Сдвиг экрана .BSCRL

Макрокоманда: .BSCRL NUM
Расширение:
MOV NUM,R0
JSR PC,@140152 (EMT 61)


Производится сдвиг изображения на указанное число телевизионных строк, положительное число означает сдвиг вверх, отрицательное - вниз.

3.4.11. Очистка экрана .BCLS

Макрокоманда: .BCLS
Расширение:
JSR PC,@140154 (EMT 62)


Производится очистка экрана (заполнение цветом фона). Курсор устанавливается в левый верхний угол.

3.4.12. Вывод символа .BTOUT

Макрокоманда: .BTOUT CHAR
Расширение:
MOVB CHAR,R0
JSR PC,@140156 (EMT 63)


Производится вывод символа на экран, если он печатаемый. Управляющие символы, интерпретируемые драйвером, описаны в приложении 2. Управляющие символы, отсутствующие в таблице, игнорируются. В режиме "БЛОКРЕД" все управляющие символы не обрабатываются, а выводятся в виде инверсных изображений латинских букв.

3.4.13. Вывод строки символов (формат RT-11) .BPRIN

Макрокоманда: .BPRIN ADDR
Расширение:
MOV ADDR,R0
JSR PC,@140160 (EMT 64)


Производится вывод на экран строки символов. Строка должна начинаться с адреса ADDR и заканчиваться байтом 0 (курсор переводится в начало следующей строки) или 200 (курсор располагается за последним выведенным символом). После возврата в R0 находится адрес байта, следующего за конечным.

3.4.14 Вывод строки символов .BSTR

Макрокоманда: .BSTR ADDR
Расширение:
MOV ADDR,R0
JSR PC,@140162 (EMT 65)


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

3.4.15. Установка текущих графических координат .BSGRF

Макрокоманда: .BGRF X,Y
Расширение:
MOV X,R0
MOV Y,R1
JSR PC,@140164 (EMT 66)


Устанавливаются текущие графические координаты, которые используются в других графических вызовах. Аргумент X - номер точки в строке. Y - задаёт номер строки растра, верхняя левая точка имеет координаты (0,0), правая нижняя - (255,255) или (511,255) в зависимости от режима.

3.4.16. Чтение текущих графических координат .BGGRF

Макрокоманда: .BGGRF
Расширение:
JSR PC,@140166 (EMT 67)


В R0 и R1 помещаются текущие графические координаты в том же формате, что и в .BSGRF.

3.4.17. Установка графического цвета .BSCGR

Макрокоманда: .BSCGR COLOR
Расширение:
MOVB COLOR,R0
JSR PC,@140170 (EMT 70)


Устанавливается цвет для графического вывода. COLOR может принимать значения 0...3:

3.4.18 Чтение графического цвета .BGCGR

Макрокоманда: .BGCGR
Расширение:
JSR PC,@140172 (EMT 71)


В R0 помещается код текущего графического цвета.

3.4.19 Установка/чтение режима рисования .BSMOD

Макрокоманда: .BSMOD MODE
Расширение:
MOVB MODE,R0
JSR PC,@140174 (EMT 72)


Устанавливается режим рисования для всех графических вызовов. При MODE=0 устанавливается режим замещения текущим цветом. MODE=1 - режим инверсии содержимого буфера, MODE=200 - режим не меняется, а в R0 помещается код текущего режима.

3.4.20. Вывод графической точки .BSPNT

Макрокоманда: .BSPNT X,Y
Расширение:
MOV X,R0
MOV Y,R1
JSR PC,@140176 (EMT 73)


На экран по заданным координатам выводится графическая точка текущего цвета. Текущие координаты перемещаются в заданную точку.

3.4.21. Чтение цвета графической точки .BGPNT

Макрокоманда: .BGPNT X,Y
Расширение:
MOV X,R0
MOV Y,R1
JSR PC,@140200 (EMT 74)


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

3.4.22. Вывод графического вектора .BVECT

Макрокоманда: .BVECT X,Y
Расширение:
MOV X,R0
MOV Y,R1
JSR PC,@140202 (EMT 75)


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

3.4.23. Вывод закрашенного прямоугольника .BRECT

Макрокоманда: .BRECT X,Y
Расширение:
MOV X,R0
MOV Y,R1
JSR PC,@140204 (EMT 76)


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

3.4.24. Вывод дуги или окружности .BCIRC

Макрокоманда: .BCIRC ADDR
Расширение:
MOV ADDR,R0
JSR PC,@140206 (EMT 77)


Выводится окружность, дуга или сектор текущего цвета. Аргумент ADDR задаёт адрес блока параметров вызова.

Начальный и конечный углы задаются следующим образом:

Аргумент Значение угла (градусы)
000000 0
077777 360


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

3.4.25. Закраска гранично-определённой области .BFILL

Макрокоманда: .BFILL COLOR
Расширение:
MOVB COLOR,R0
JSR PC,@140210 (EMT 100)


Производится закраска гранично - определённой 4-связной области текущим цветом, начиная с текущей точки. Область должна быть ограничена одним заданным цветом (COLOR).

3.4.26. Выдача звука .BSOUN

Макрокоманда: .BSOUN LENGTH,TONE
Расширение:
MOV LENGTH,R0
MOV TONE,R1
JSR PC,@140212 (EMT 101)


Выдаётся звук периодом TONE и длиной LENGTH периодов.

3.4.27. Установка графического окна .BSWIN

Макрокоманда: .BSWIN AREA
Расширение:
MOV AREA,R0
JSR PC,@140214 (EMT 102)


Производится установка границ окна для графического вывода. Аргумент AREA задаёт адрес области параметров. Формат области:

.WORD MINX  ;левая граница по X 
.WORD MAXX  ;правая граница по X
.WORD MINY  ;верхняя граница по Y 
.WORD MAXY  ;нижняя граница по Y 		

Если какая - либо из границ задана вне экрана, вместо неё устанавливается граница экрана.

3.4.28. Чтение графического экрана .BGWIN

Макрокоманда: .BGWIN AREA
Расширение:
MOV AREA,R0
JSR PC,@140216 (EMT 103)


По адресу, заданным параметром AREA, помещается таблица, описанная в .BSWIN.

3.4.29. Установка типа вектора .BSTYP

Макрокоманда: .BSTYP ARG
Расширение:
MOV ARG,R0
JSR PC,@140222 (EMT 105)


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

3.4.30 Чтение типа вектора .BGTYP

Макрокоманда: .BGTYP
Расширение:
JSR PC,@140224 (EMT 106)


В R0 помещается текущий шаблон рисования векторов. Значение может быть циклически сдвинуто относительно заданного (см. .BSTYP).

3.4.31 Установка и чтение ориентации графических символов .BGOSET

Макрокоманда: .BGOSET ARG
Расширение:
MOVB ARG,R0
JSR PC,@140226 (EMT 107)


Производится установка ориентации для графического вывода символов. ARG, равный 0 означает нормальный вывод, 1 - повёрнутый на 180 градусов, 2 - на 90 влево, 3 - на 90 вправо; 200 - чтение ориентации графических символов (в R0 помещается код ориентации).

3.4.32 Графический вывод символа .BGOUT

Макрокоманда: .BGOUT CHAR
Расширение:
MOV CHAR,R0
JSR PC,@140230 (EMT 110)


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

3.5. Запросы драйвера магнитофона

3.5.1. Управление двигателем .BMOT

Макрокоманда: .BMOT ARG
Расширение:
MOV ARG,R0
JSR PC,@140240 (EMT 114)


При ARG=1 осуществляется включение двигателя магнитофона,при ARG=0 - выключение.

3.5.2. Вызов формата БК-0010 .BMB10

Макрокоманда: .BMB10 AREA
Расширение:
MOV AREA,R0
JSR PC,@140242 (EMT 115)


Выполняется операция с магнитофоном, используется формат магнитной ленты, совместимый с БК-0010. Параметр AREA - адрес области ОЗУ, через которую передаются параметры вызова.

Формат таблицы параметров вызова:

Смещение в байтах
XXXXX CODE 0
нач. адрес 2
длина в байтах 4
имя файла
. . . . . .
6
(16. байтов)
СТР 1 СТР 0 026
FILE ADDRESS 030
FILE LENGTH 032
FILE NAME
. . . . . .
034
(16. байтов)

Поле "CODE" (байт заполняется пользователем и содержит код операции:

Аргумент "начальный адрес" задаёт начальный адрес области ОЗУ, из которой выводится информация в файл или начальный адрес области ОЗУ, куда производится ввод информации. Если в команде чтения указан адрес 0,информация записывается, начиная с адреса, указанного в метке файла.

Аргумент "длина" используется только в операции "запись файла"и задаёт длину в байтах записываемой области ОЗУ.

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

Аргументы "СТР0" и "СТР1" задают номера страниц ОЗУ (ПЗУ), подключаемых к окнам 40000 - 100000 и 100000 - 140000 при передаче данных (задают страницы памяти буфера ввода - вывода). Отрицательные значения соответствующих байтов означают текущее распределение памяти.

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

При ошибочном завершении операции запрос возвращает установленный бит "C" и код ошибки в байте 52:

При ошибке типа 1 магнитофон останавливается после прочитанной метки файла.

3.6. Запросы драйвера принтера

3.6.1 Инициализация драйвера принтера .BPINI

Макрокоманда: .BPINI
Расширение:
JSR PC,@140260 (EMT 124)


Осуществляется инициализация драйвера принтера, описанная в макрокоманде .BINIT.

3.6.2. Установка режима печати .BPSET

Макрокоманда: .BPSET MODE
Расширение:
MOV MODE,R0
JSR PC,@140262 (EMT 125)


Устанавливается режим печати в соответствии со словом MODE. Назначение разрядов:

Младший байт MODE содержит число квантов ожидания готовности принтера, один квант соответствует одному полному циклу (65536 раз) команды SOB. При равенстве нулю время ожидания бесконечно.

3.6.3. Чтение режима печати .BPGET

Макрокоманда: .BPGET
Расширение:
JSR PC,@140264 (EMT 126)


В R0 помещается слово режима печати.

3.6.4. Вывод символа на печать .BPOUT

Макрокоманда: .BPOUT CHAR
Расширение:
MOVB CHAR,R0
JSR PC,@140266 (EMT 127)


Осуществляется вывод символа на печать. Если печать не выдаёт готовности больше установленного времени тайм-аута, возвращается управление с установленным битом "C".

3.6.5. Определение готовности принтера .BPRDY

Макрокоманда: .BPRDY
Расширение:
JSR PC,@140270 (EMT 30)


Если принтер готов, в R0 помещается 1, бит "C" сброшен, иначе R0 = 0, C = 1.

3.6.6. Чтение текущей позиции печати .BPPOS

Макрокоманда: .BPPOS
Расширение:
JSR PC,@140272 (EMT 131)


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

3.7. Запросы драйвера НГМД

Драйвер НГМД размещён в ПЗУ, находящемся в контроллере НГМД, и доступен при подключении контроллера к ЭВМ. Драйвер имеет несколько точек входа:

Адрес точки входа Функция
160000 Автоматическая загрузка
160002 Загрузка с выбранного привода
160004 Чтение-запись по номеру блока
160006 Чтение-запись по номеру сектора
160010 Инициализация рабочей области драйвера
160012 Форматирование дорожки

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

Для работы драйвера необходима область ОЗУ размером 66 байт для размещения параметров и рабочих ячеек.

Формат рабочей области:

Смещение от начала области Длина (байт) Символическое имя Начальное значение Назначение
0 2 CSRW 0 Копия по записи регистра состояния НГМД
2 2 CURTRK - Адрес текущей дорожки
4 4 TRKTAB 177777, 77777 Таблица текущих дорожек
10 2 TDOWN 20000 (для 6022) Время опускания головки (в циклах SOB)
12 2 TSTEP 20000 (для 6022) Время перехода с дорожки на дорожку
14 1 TRKCOR 36 (для 6022) Номер дорожки, с которой включается предкомпенсация при записи
15 1 BRETRY 30 (рекоменд.) Число повторных операций при ошибках
16 1 FLAGS 0 Рабочая ячейка драйвера
17 1 FILLB вх. параметр Код заполнения секторов при форматиров.
20 2 FLGPTR - Указатель на байт признаков
22 4 FLGTAB 0 Таблица признаков (см. ниже)
26 2 ADDR вх. параметр Адрес буфера ОЗУ
30 2 WCNT вх. параметр Число слов для пересылки
32 1 SIDE вх. параметр Номер стороны диска
33 1 TRK вх. параметр Номер дорожки
34 1 UNIT вх. параметр Номер привода
35 1 SECTOR вх. параметр Номер сектора
36 22   вх. параметр Рабочие ячейки драйвера
60 2 MAXSEC вх. параметр Число секторов на дорожке
62 4   вх. параметр Рабочие ячейки

Таблица FLGTAB содержит по одному байту на привод и используется для обработки нестандартных дисков. В каждом байте используется два бита для указания параметров операции:

3.7.1. Автоматическая загрузка

Вызов:
JSR PC,@160000


Можно также произвести загрузку непосредственно из монитора команд оператора командой "B". Входные параметры отсутствуют.

Действие: производится попытка загрузить операционную систему с привода 0. Если попытка загрузки была неудачной, то драйвер последовательно пытается загрузить систему с 1, 2 и 3 привода. Если все попытки оказались неудачными, драйвер возвращает управление с установленным битом "C" оператора.

Алгоритм загрузки:

  1. Инициализируется рабочая область драйвера в ОЗУ (базовый адрес - 2000) с параметрами для дисковода 6022.
  2. Считается 1 сектор 0 дорожки выбранного дисковода в ОЗУ, начиная с адреса 1000.
  3. В следующих случаях:

попытка загрузки считается неудачной, иначе драйвер передаёт управление по адресу 1000, при этом в R0 помещается номер привода, откуда произведена загрузка.

3.7.2. Загрузка с выбранного привода

Вызов:
MOV #N,R0
JSR PC,@#160002


Из монитора команд оператора:

<N>B,

где <N> — номер выбранного привода.

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

3.7.3. Чтение-запись логического блока

Вызов:
JSR PC,@#160004


Входные параметры:

Блок является логической единицей информации на внешних носителях и равен 512 байтам. В основном используемом формате записи на диск размер блока совпадает с размером сектора. Первый сектор нижней стороны нулевой дорожки соответствует блоку 0. Вычисление номера сектора и дорожки по номеру блока производится с учётом установленных признаков в таблице FLGTAB. Алгоритм этого вычисления совпадает с алгоритмом драйвера MY для микроЭВМ серии ДВК.

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

Перед самым первым вызовом драйвера поля CSRW, TRKTAB, FLAGS в рабочей области должны быть заполнены значениями, указанными в таблице, и не должны изменяться программой пользователя. Поля TDOWN, TSTEP, TRKCOR, BRETRY, FLGTAB рекомендуется заполнять значениями, указанными в таблице, однако они могут быть изменены в зависимости от конкретных условий.

Возврат из драйвера осуществляется командой RTS PC.

Содержимое регистров процессора R0, R1, R2, R4, R5 не сохраняется.

При возникновении ошибки бит "C" в слове состояния процессора устанавливается в 1 и в байт с абсолютным адресом 52 помещается код ошибки:

Код

Причина ошибки

1

при чтении - ошибка CRC в зоне данных, при записи - установлена защита записи;

2

ошибка CRC в зоне заголовка сектора

3

нет позиционирования на 0 дорожку

4

ошибка позиционирования

5

не найден сектор

6

нет диска или диск не вращается

7

прерывание по вектору 4 при операции

010

не найден адресный маркер

011

не найден маркер данных

012

недопустимые параметры команды или нестандартный формат диска.

После завершения операции драйвер оставляет двигатель дисковода включённым. Для остановки двигателя программа пользователя должна записать 0 по адресу 177130, а также в ячейку CSRW рабочей области.

3.7.4. Чтение-запись по номеру сектора и дорожки

Вызов:
JSR PC,@#160006


Входные параметры: R3 - адрес рабочей области

Поля рабочей области:

ADDR - начальный адрес массива данных
WCNT - длина массива данных
SIDE - номер стороны (0 - нижняя, 1 - верхняя)
TRK - номер дорожки
UNIT - номер привода (0..3)
SECTOR - номер сектора (1...12(8))


Действие аналогично предыдущему пункту.

3.7.5. Инициализация рабочей области

Эта точка входа является вспомогательной и служит для облегчения написания программ, использующих драйвер НГМД.

Вызов:
JSR PC,@#160010


Входной параметр: R3 - базовый адрес рабочей области.

Действие: заполняются следующие поля рабочей области:

CSRW 0
TRKTAB 177777, 177777
TDOWN 10000.
TSTEP 10000.
TRKCOR 30.
BRETRY 30.
FLAGS 0
FLGTAB 0,0


3.7.6. Форматирование дорожки

Вызов:
JSR PC,@160012


Входные параметры:

R3 - базовый адрес рабочей области
FILLB - код, которым будет заполнено поле данных сектора при форматировании
SIDE - номер стороны
TRK - номер дорожки
UNIT - номер привода


Действие: форматируется указанная дорожка с указанной стороны, поле данных всех секторов заполняется кодом FILLB.

Приложения

Приложение 1: кодировка клавиш БК-0011

Управляющие клавиши

Клавиша Прямой режим Перекодировка
АР2 АР2
ТАБ
11
11
11
11
КТ
3
203
3
203
(удал. правой части строки)
213
213
33 144
33 144
(сдвижка в строке)
26
226
33 145
226
(раздвижка в строке)
27
227
27
227
ИНД СУ
202
202
33 25
33 25
БЛОК РЕД
Код в программу не передаётся
ШАГ
220
220
33 10
33 10
СБР
14
214
14
214
(забой)
30
230
177
30
ВС
23
223
23
33
(ввод)
12
212
15
15*
(вверх)
32
232
33 101
33 121
(вниз)
33
233
33 102
12
(вправо)
10
210
33 103
33 120
(влево)
31
231
33 104
33 122

Примечание. * - в режиме дополнительной клавиатуры код 33 77

Коды функциональных клавиш в режиме перекодировки и дополнительной клавиатуры

Клавиша + АР2

Код

0 33 77 160
1 33 77 161
2 33 77 162
3 33 77 163
4 33 77 164
5 33 77 165
6 33 77 166
7 33 77 167
8 33 77 170
9 33 77 171
. 33 77 156


Приложение 2: управление экраном

Управляющие символы драйвера экрана

Код

Назначение

7 Звонок
10 Возврат на шаг (курсор влево)
11 Горизонтальная табуляция
12 Перевод строки (курсор вниз, сдвиг экрана вверх)
14 Перевод формата (пропуск 10 строк)
15 Возврат каретки (курсор в начало строки)
16 Переход на русский регистр (в КОИ-7)
17 Переход на латинский регистр (в КОИ-7)
33 ESCAPE (начало командной последовательности)


Командные последовательности

Команда

Назначение

ESC 0 (033 060) Устанавливает режим 32 символа в строке
ESC 1 (033 061) Устанавливает режим 64 символа в строке
ESC 2 (033 062) Устанавливает режим 80 символов в строке
ESC 3 (033 063) Двойная ширина символов
ESC 4 (033 064) Одинарная ширина символов
ESC 5 (033 065) Двойная высота символов (верхняя половина)
ESC 6 (033 066) Двойная высота символов (нижняя половина)
ESC 7 (033 067) Отмена двойной высоты
ESC 8 (033 070) Отображение курсора
ESC 9 (033 071) Запрет курсора
ESC : (033 072) Установка палитры (1)
ESC ; (033 073) Установка цветов (2)
ESC = (033 075) Вводит режим дополнительной клавиатуры
ESC > (033 076) Сбрасывает режим дополнительной клавиатуры
ESC @ (033 100) Раздвижка символов от курсора вправо
ESC A (033 101) Курсор вверх (в первой строке игнорируется)
ESC B (033 102) Курсор вниз (в последней строке игнорируется)
ESC C (033 103) Курсор вправо (зависит от режима автопереноса)
ESC D (033 104) Курсор влево (зависит от режима автопереноса)
ESC E (033 105) Стирание экрана
ESC H (033 110) Курсор в начало экрана
ESC I (033 111) "Обратный ПС" (сдвиг экрана вниз)
ESC J (033 112) Стирание от курсора до конца экрана
ESC K (033 113) Стирание от курсора до конца строки
ESC L (033 114) Раздвижка строк от курсора вниз
ESC M (033 115) Сдвижка строк к курсору вверх (строка, в которой находился курсор, исчезает)
ESC N (033 116) Подчёркивание символов
ESC O (033 117) Отмена подчёркивания символов
ESC P (033 120) Сдвижка символов к курсору влево
ESC Q (033 121) Курсор в начало следующей строки
ESC R (033 122) Курсор в начало текущей строки
ESC T (033 124) Инверсия символов
ESC U (033 125) Отмена инверсии
ESC Y (033 131) Прямая адресация курсора (3)
ESC Z (033 132) Идентификация (4)


Примечания.

Приложение 3: формат слова управления режимом экрана

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 X X X X отоб- ражение управл. символов индикация курсора разрешение автопереноса подчёркивание символов инверсия символов в коде КОИ-7 - КОИ7Н2, в КОИ-8 - совмещённый КОИ-7,8 0 - КОИ-7, 1 - КОИ-8 плавный сдвиг подчёркивающий курсор 80 символов в строке (не работает в режиме 256 точек в строке) двойная ширина (не работает в режиме 80 символов в строке) 0 - 512 точек в строке 1 - 256 точек в строке