БК-0010 - Руководство пользователя

Материал из Emuverse
Перейти к: навигация, поиск
Red copyright.png Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: Александр Лунев

Источник: http://www.vak.ru/doku.php/proj/bk/bk-0010-um

Содержание

    Программное обеспечение СМ ЭВМ

        Лист утверждения
        00001-01320-11-ЛУ

    Представители предприятия-разработчика

        "___"________1983 г.

        "___"________1983 г.

        "___"________1983 г.

        "___"________1983 г.

      1984 г.
    Перв. примен.                               Литера

В данном руководстве дается краткое описание архитектуры микро-ЭВМ “Электроника БК0010” и функциональных возможностей управляющих программ.

1. Введение

Настоящее руководство ориентировано на пользователей микро-ЭВМ “Электроника БК0010” (далее БК), применяющих для своей работы ассемблер, или составляющих программы в машинных кодах.

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

В приложении 1 дан перечень макрокоманд микропроцессора.

В приложении 2 приведены директивы отладки, которые позволяют отлаживать (писать) программы на уровне машинных кодов. в приложении 3 приводятся коды символов клавиатуры, используемые в микро-ЭВМ.

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

Функции, описанные в разделе 5.2.4 и главе 7 - работа с телеграфным каналом, а также в разделе 5.6.3.3 - работа с цветным изображением, поддержаны математическим обеспечением, однако, возможность их использования решается самим пользователем путем доработки микро-ЭВМ.

Приведенные в руководстве числа и коды в большинстве случаев исчисляются в восьмеричной системе счисления. числа, отмеченные буквой “д”, приведены в десятичной системе счисления. кроме чисел с буквой “д” в десятичной системе приведены те числа, написание которых не может быть истолковано иначе, например, 28, 99, 16к и т.д.

2. Состав БК0010

В состав БК0010 входят:

  • информационно-вычислительное устройство;
  • блок питания;
  • кабели связи с внешними устройствами.

В качестве устройства отображения информации можно использовать бытовой телевизионный (ТВ) приемник, имеющий видеовход. В качестве внешнего запоминающего устройства к ЭВМ может быть подключен кассетный монофонический магнитофон типа “Электроника 302”. Для записи и хранения информации используются компакт-кассеты типа МК-60. Допускается использование других типов магнитофонов, совместимых по входам и выходам с магнитофоном “Электроника 302”.

БК содержит устройство последовательного обмена, которое обеспечивает обмен по протоколу ИРПС в диапазоне скоростей от 50 до 9600 бод.

БК содержит 16-ти разрядный программируемый порт ввода-вывода, который можно использовать для управления периферийными устройствами.

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

Управление внешними устройствами БК осуществляет с помощью управляющих программ, размещенных в системном ПЗУ объемом 8к байт. Обращение к управляющим программам осуществляется с помощью системных запросов (команд ЕМТ с заданным аргументом) с указанием необходимых параметров.

Входной язык БК - “Фокал”. Интерпретатор языка “Фокал” занимает 8к байтов и размещен в одной микросхеме съемного ПЗУ. Кроме того, БК содержит колодку для подключения еще одной микросхемы съемного ПЗУ объемом 8к байт для размещения всевозможных пользовательских программ.

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

          ----------     ----------     ----------
          !  Прц   !     !  ОЗУ   !     !  ПЗУ   !
          ----a-----     -----a----     -----a----
             ! !             ! !            ! !
             ! !             ! !            ! !
  /-----------v---------------v--------------v------------\
 <                 системная  магистраль                   >
  \---a-----------a-----------a-----------a-----------a---/
     ! !         ! !         ! !         ! !         ! !
     ! !         ! !         ! !         ! !         ! !
  ----v-----  ----v-----  ----v-----  ----v-----  ----v-----
  !   УУ   !  !   УУ   !  !   УУ   !  ! 16-раз-!  !  Выход !
  ! клавиа-!  !   ТВ-  !  ! кассет-!  !  порт  !  ! на ТЛГ-!
  ! турой  !  !  мони- !  !ным маг-!  ! ввода- !  ! линию  !
  !        !  !   ром  !  ! нитофо-!  ! вывода !  !        !
  !        !  !        !  !  ном   !  !        !  !        !
  ----a-----  -----a----  -----a----  -----a----  -----a----
      !            !           !           !           !
  ----v-----  -----v----  -----v----  -----v----  -----v-/
  ! клавиа-!  !ТВ-мони-!  !кассет- !  !техноло-!        /----
  !тура ЭВМ!  !  тор   !  !ный маг-!  !гическая!  -------/
  !        !  !        !  !нитофон !  !установ-!        /----
  !        !  !        !  !        !  !   ка   !   ТЛГ-линия
  ----------  ----------  ----------  ----------

           Рис.1. Структура микро-ЭВМ.

3. Архитектура микро-ЭВМ

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

  • однокристальный 16-разрядный микропроцессор К1801ВМ1;
  • пользовательское ОЗУ емкостью 16к байт;
  • экранное ОЗУ емкостью 16к байт;
  • системное ПЗУ емкостью 8к байт;
  • сменное (резервное) системное ПЗУ емкостью 8к байт;
  • сменное ПЗУ пользователя емкостью 16к байт (две микросхемы по 8к байт);
  • устройство управления клавиатурой;
  • устройство формирования видеосигнала для ТВ-приемника;
  • устройство управления кассетным магнитофоном;
  • устройство последовательного обмена;
  • 16-разрядный программируемый порт ввода-вывода.

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

Распределение адресного пространства БК0010

1. Конфигурация без расширенной памяти.

 0         ------------------------------
           ! Область стека и системных  !
           ! переменных                 !
 1000      ------------------------------
           ! ОЗУ пользователя           !
 40000     ------------------------------
           ! ОЗУ экрана                 !
 100000    ------------------------------
           ! Системное ПЗУ              !
 120000    ------------------------------
           ! Сменное (съемное)          !
           ! ПЗУ (Фокал)                !
 140000    ------------------------------
           ! Сменное ПЗУ                !
 160000    ------------------------------
           ! Сменное системное  ПЗУ     !
 177600    ------------------------------
           ! Область  системных         !
           ! регистров                  !
 177777    ------------------------------

2. Конфигурация с расширенной памятью.

 0         ------------------------------
           ! Область стека и системных  !
           ! переменных                 !
 1000      ------------------------------
           ! ОЗУ пользователя           !
 40000     ------------------------------
           ! ОЗУ пользователя или       !
           ! экрана                     !
 70000     ------------------------------
           ! ОЗУ экрана                 !
 100000    ------------------------------
           ! Системное ПЗУ (монитор и   !
           ! драйверы)                  !
 120000    ------------------------------
           ! ПЗУ-интерпретатор Фокала   !
 140000    ------------------------------
           ! ПЗУ резервное              !
 160000    ------------------------------
           ! ПЗУ. тесты                 !
 177600    ------------------------------
           ! Область системных          !
           ! регистров                  !
 177777    ------------------------------

4. Распределение адресного пространства

Объем адресного пространства микро-ЭВМ определяется длиной слова микропроцессора К1801ВМ1 (16 разрядов) и составлет 64к байтов. Половину этого пространства занимает ОЗУ с адресами от 0 до 77777. Остальная часть отведена под ПЗУ и системные регистры микро-ЭВМ.

Область ОЗУ с адресами 0 - 777 отведена под системный стек и переменные драйверов. При этом стек может нарастать от ячейки с адресом 776 до ячейки с адресом 300. Однако при работе с драйвером магнитофона следует иметь в виду, что на время работы драйвер использует ячейки с адресами 300-352. Указатель стека устанавливается на адрес 1000 при запуске микро-ЭВМ пусковым монитором. Если объем стековой области недостаточен для работы пользовательской программы, то указатель стека может быть установлен на другое значение данной программой.

Область ОЗУ с адресами 1000 - 37777 является рабочей областью и используется для работы пользовательских программ.

Область ОЗУ с адресами 40000 - 77777 является экранной памятью и служит для формирования изображения, выводимого на экран ТВ-приемника.

Предусмотрен режим работы микро-ЭВМ с расширенным объемом рабочей области ОЗУ. В этом режиме часть ОЗУ экрана отводится под рабочую область, а формирование изображения осуществляется в области ОЗУ с адресами 70000 - 77777. Таким образом, рабочая область ОЗУ может быть увеличена с 16к до 28к байт. Переключение в режим расширенной памяти осуществляется специальной командой (код 214), Которую можно подать с клавиатуры или непосредственно из программы на драйвер ТВ-приемника.

Остальная часть адресного пространства предназначена для размещения 4-х микросхем ПЗУ (или ППЗУ) объемом 8к байт каждая с записанными в них системными и пользовательскими программами. Подключение микросхем осуществляется через колодки, размещенные на плате микро-ЭВМ. Распределение адресного пространства между микросхемами осуществляется следующим образом:

  • адреса 100000 - 117777 занимает ПЗУ с пусковым монитором и драйверами внешних устройств (системное ПЗУ, 8к);
  • адреса 120000 - 137777 занимает съемное ПЗУ, в которой может быть размещена управляющая система (в частном случае интерпретатор языка “Фокал”);
  • адреса 140000 - 157777 отведены под съемное ПЗУ, в которой может быть размещена часть управляющей системы либо может использоваться по усмотрению пользователя;
  • адреса 160000 - 177577 занимает резервное системное ПЗУ (также съемное, однако, не имеет доступа при собранном корпусе), в котором могут быть размещены системные программы (в частном случае драйверы внешних устройств);
  • область адресов 177600 - 177777 отведена под системные регистры микро-ЭВМ.

Поскольку область адресов, отведенная под системные регистры, попадает в адресное пространство, занимаемое четвертой микросхемой ПЗУ (объем ПЗУ - 8к байт), при подключении данного ПЗУ к микро-ЭВМ область ПЗУ с адресами 177600 - 177777 блокируется и, следовательно, не может быть использована. Это следует иметь в виду при подготовке программ для зашивки ПЗУ с адресами 160000.

4.1. Системные регистры

Для работы с внешними устройствами в микро-ЭВМ используется пять системных регистров.

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

Регистр предназначен для отображения состояния клавиатуры.

Адрес регистра: 177660.

Формат:

15070600


Разряды 0 - 5, 8 - 15 не используются.

Разряд 6 - маска прерываний от клавиатуры. разряд доступен по записи и чтению.

  • “0” - разрешено прерывание от клавиатуры;
  • “1” - запрещено прерывание от клавиатуры.

Разряд 7 - флаг состояния клавиатуры. Устанавливается в единицу при поступлении в регистр данных клавиатуры нового кода. Сбрасывается в “0” при чтении регистра данных клавиатуры. Доступен только по чтению. Если разряд “6” установлен в “0”, то при установке разряда 7 в “1” по системной магистрали идет запрос на прерывание от клавиатуры.

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

Предназначен для записи кодов клавиатуры.

Адрес регистра: 177662.

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

150600


Разряды 7 - 15 не используются.

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

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

Предназначен для рулонного сдвига информации на экране по вертикали путем задания адреса участка экранного ОЗУ, с которого должен начинаться экран.

Адрес регистра: 177664.

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

15090700


Разряды 0-7 предназначены для задания адреса экранного ОЗУ. Изменению младшего разряда регистра на 1 соответствует изменение адреса экранного ОЗУ на 100 байт, что соответствует длине информационного поля, помещаемого в одной телевизионной строке на экране. Таким образом, изменяя на 1 содержимое регистра рулона можно сместить изображение на экране на 1 телевизионную строку вверх или вниз. Число комбинаций, которое можно поместить в 8-ми разрядах равно 256д, что соответствует 256д-ти телевизионным строкам, отображаемым на экране. Для приведения экрана в исходное состояние в регистр смещения необходимо записать константу 330. В этом случае в верхней тв-строке экрана будет отображена информация, содержащаяся в начале экранного ОЗУ, т.е. с адреса 40000.

Разряд 9 используется для управления режимом расширенной памяти. “1” в разряде задает режим отображения на экране 1/4 части экранного ОЗУ с адресами 70000 - 77777 (режим расширенной рабочей области ОЗУ).

Разряды 8, 10-15 не используются.

Регистр доступен по записи и чтению.

4.1.4. Регистр программируемого порта ввода-вывода

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

Адрес: 177714.

Формат:

                   выходной  регистр  порта
      -------------------------------------------------
      |15|  |  |  |  |  |  |  |  |  |  |  |  |  |  |00|
      -------------------------------------------------
     \_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _/
       /
/- - - - - - - - - - - - - - - - - - - - - - - - -\
 -------------------------------------------------
 |15|  |  |  |  |  |  |  |  |  |  |  |  |  |  |00|
 -------------------------------------------------
\_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _/
      \ 177714
       \
        \ входной регистр порта
     /- - - - - - - - - - - - - - - - - - - - - - - - -\
      -------------------------------------------------
      |15|  |  |  |  |  |  |  |  |  |  |  |  |  |  |00|
      -------------------------------------------------

Все 16 разрядов регистра используются для записи и чтения информации.

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

4.1.5. Регистр системного порта

Используется для задания адреса начального пуска процессора, а также для управления внешними устройствами микро-ЭВМ.

Адрес: 177716.

Формат:

1508070605040300


Разряды 8-15 служат для задания адреса пуска процессора при включении питания, при этом младший байт адреса принимается равным 0. В данной микро-ЭВМ адрес начального пуска процессора равен 100000. Разряды доступны только по чтению.

Разряды 0-3 служат для задания режимов работы процессора. Доступны только по чтению.

Разряды 4-7 предназначены для управления внешними устройствами микро-ЭВМ и имеют выход на 4-х разрядный выходной регистр системного порта и 4-х разрядный входной регистр системного порта.

  
выходной регистр
  -------------
  |07|06|05|04|
  -------------
  \_ _ _ _ _ _ /
   /
/- - - - - -\
-------------
|07|06|05|04|
-------------
\_ _ _ _ _ _ /
    \ входной регистр
  /- - - - - - \
  -------------
  |07|06|05|04|
  -------------
Назначение разрядов выходного регистра

Разряд 4 используется для передачи информации на ТЛГ-линию (исходное состояние разряда - “лог.1”).

Разряд 5 используется для передачи информации на магнитофон либо сигнала готовности на ТЛГ-линию (исходное состояние - “лог.0”); одновременный обмен информацией с магнитофоном и по последовательному каналу недопустим.

Разряд 6 используется для передачи информации на магнитофон и сигнала при нажатии клавиши микро-ЭВМ (исходное состояние - “лог 0”).

Разряд 7 используется для управления двигателем магнитофона. “Лог 1” в разряде соответствует команде “стоп”, “лог.0” - команде “пуск”. Исходное состояние разряда -”лог 1”.

Выходной регистр порта доступен только по записи.

Назначение разрядов входного регистра

Разряд 4 используется для чтения информации с тлг-линии.

Разряд 5 используется для чтения информации с магнитофона.

Разряд 6 служит индикатором нажатия клавиши (”лог 0” - клавиша нажата, “лог 1” - клавиша отжата). Используется при реализации режима “повтор”.

Разряд 7 используется для чтения сигнала готовности с ТЛГ-линии.

5. Структура системного программного обеспечения

В состав системного программного обеспечения входят следующие управляющие программы:

  • пусковой монитор;
  • драйвер клавиатуры;
  • драйвер ТВ-монитора;
  • драйвер магнитофона;
  • драйвер ТЛГ-линии.

Пусковой монитор предназначен для инициализации микро-ЭВМ по включению питания (либо при запуске процессора с помощью тумблера) и запуска рабочей программы, размещенной в съемном ПЗУ с адресом 120000. Кроме этого пусковой монитор предоставляет пользователю средства для загрузки нужной программы с магнитофона или по тлг-линии и ее запуска.

Драйвер клавиатуры обеспечивает работу пользователя с клавиатурой микро-ЭВМ.

Драйвер ТВ-монитора обеспечивает формирование алфавитно-цифровой и графической информации на экране.

Драйвер магнитофона обеспечивает обмен информацией с магнитофоном.

Драйвер ТЛГ-канала обеспечивает обмен информацией по линии в рамках протокола ИРПС со скоростями от 50 до 9600 бод.

Все управляющие программы размещены в системном ПЗУ, занимающем адресное пространство 100000 - 117777.

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

При обработке программных запросов содержимое регистров общего назначения R0-R5, за исключением особо указанных случаев, не меняется.

        -------------            -------------
------->! Пусковой  !<---------->! Рабочая   !
        ! монитор   !            ! программа !
        -----------^-            -^-----------
                   !              !
                  _v______________v_
                  ! Диспетчер ЕМТ  !
                  ---------^--------
                           !
                           !
                   ________v________
                   ! Область свзи  !
                   --------^--------
                           !
команды пользователя       !
    !		       !
    !  ^------------^------v--^------------^-----------^
    !  !            !         !            !           !
    !  !            !         !            !           !
____v__v__  ________v__  _____v_____  _____v_____  ____v______
!Драйвер !  ! Драйвер !  ! Драйвер !  ! Драйвер !  !Резервное!
!клавиа- !  ! ТВ-при- !  ! магнито-!  ! ТЛГ-ка- !  !системное!
!  ры    !  !  емника !  !  фона   !  !  нала   !  !  ПЗУ    !
----------  -----------  -----------  -----------  -----------
   Рис.2. Структура системного ПО.

5.1. Адреса векторов прерывания

Обработка прерываний в микро-ЭВМ производится по векторам, размещенным в области ОЗУ с адресами 0-276.

В таблице 1 приведены адреса векторов прерываний микро-ЭВМ.

Источник прерывания Адрес вектора прерывания
Зависание при передаче данных по каналу или при нажатии клавиши “Стоп” 000004
Резервный код 000010
Прерывание по Т-разряду 000014
Прерывание по команде IOT 000020
Авария сетевого питания 000024
Прерывание по команде ЕМТ 000030
Прерывание по команде ТRAP 000034
Прерывание от клавиатуры 000060
Сигнал IRQ2 000100
Прерывание от клавиатуры (код нижнего регистра) 000274


5.2. Программные запросы

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

100742 — ЕМТ 4 — инициализация драйвера клавиатуры.

101010 — ЕМТ 6 — чтение кода символа с клавиатуры.

  • Выход R0 — код в младшем байте

101724 — ЕМТ 10 — чтение строки с клавиатуры.

  • Вход R1 — адрес буфера строки
  • Вход R2 — длина строки (мл. байт), символ-ограничитель (ст. байт)

102004 — ЕМТ 12 — установка ключей клавиатуры

  • Вход R0 — номер ключа (1-10)
  • Вход R1 — адрес текста ключа

5.2.2. Драйвер ТВ-монитора

100140 — ЕМТ 14 — инициализация драйверов системного ПЗУ.

102234 — ЕМТ 16 — формирование символов и переключение режимов.

  • Вход R0 — код в младшем байте

107050 — ЕМТ 20 — формирование строки символов.

  • Вход R1 — адрес строки символов
  • Вход R2 — длина строки (мл. байт), символ-ограничитель (ст. байт)

107106 — ЕМТ 22 — запись символа в служебную строку.

  • Вход R0 — код символа (0-сброс строки)
  • Вход R1 — номер позиции в служебной строке

107272 — ЕМТ 24 — установка курсора по координатам.

  • Вход R1 — координата х
  • Вход R2 — координата y

107502 — ЕМТ 26 —

107612 — ЕМТ 30 — формирование точки по координатам.

  • Вход R0: 1 — запись точки, 0 — стирание точки
  • Вход R1 — координата х
  • Вход R2 — координата y

107776 — ЕМТ 32 — формирование векторов.

  • Вход R0: 1 — формирование вектора, 0 — стирание вектора
  • Вход R1 — координата х — конца вектора
  • Вход R2 — координата y — конца вектора

110310 — ЕМТ 34 — чтение слова состояния дисплея.

  • Выход R0 — слово состояния дисплея

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

116076 — ЕМТ 36 — передача управления драйверу магнитофона.

  • Вход R1 — адрес блока параметров

5.2.4. Драйвер ТЛГ-канала

117462 — ЕМТ 40 — инициализация драйвера тлг-канала.

  • Вход R0 — номер скорости обмена

117474 — ЕМТ 42 — передача байта на линию.

  • Вход R0 — младший байт на передачу

117566 — ЕМТ 44 — прием байта с линии.

  • Выход R0 — младший байт с линии

117704 — ЕМТ 46 — передача массива на линию.

  • Вход R1 — адрес массива на передачу
  • Вход R2 — длина массива в байтах

117722 — ЕМТ 50 — прием массива с линии.

  • Вход R1 — адрес ОЗУ для массива
  • Вход R2 — длина массива в байтах

5.2.5. Резервные коды

команда адрес на передачу управления
ЕМТ 52 160000
ЕМТ 54 160004
ЕМТ 56 160010
ЕМТ 60 160014
ЕМТ 62 160020
ЕМТ 64 160024
ЕМТ 66 160030
ЕМТ 70 160034
ЕМТ 72 160040
ЕМТ 74 160044
ЕМТ 76 160050
ЕМТ 100 160054
ЕМТ 102 160060
ЕМТ 104 160064
ЕМТ 106 160070
ЕМТ 110 160074


6. Описание функций пускового монитора

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

Инициализация системы заключается в установке указателя стека на адрес 1000, установке векторов прерываний по команде ЕМТ. Кроме того производится установка рабочих ячеек управляющих программ, очистка экрана, установка скорости обмена по телеграфной линии 9600 бод, очистка пользовательского порта (адрес 177714), установка в исходное состояние системного порта, через который подключены магнитофон и телеграфная линия.

После инициализации системы управление передается системной программе, которая должна быть расположена в системном ПЗУ по адресу 120000. В качестве такой программы может быть любая программа, установленная пользователем. Конкретным примером является интерпретатор языка “Фокал”. Передача управления системной программе осуществляется с помощью команды jsr pc,@#120000, в результате выполнения которой адрес возврата запоминается в стеке. Таким образом, сохраняется возможность вернуться в пусковой монитор, который в этом случае переходит в диалоговой режим.

Если ПЗУ с системной программой отсутствует, то при выполнении команды передачи управления возникает прерывание по зависанию, и управление передается в пусковой монитор, который переходит в режим диалога с оператором. Признаком входа в диалоговый режим монитора является знак вопроса на экране.

6.1. Команды пускового монитора

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

1. Загрузка с МЛ

Маг <адрес загрузки> ввод
имя? <имя файла> ввод

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

В ответ на появление подсказки “имя”? необходимо ввести имя считываемого файла. Имя должно содержать не более 16 символов. Если имя не указано, то производится загрузка файла с именем, содержащим 16 пробелов. Если допущена ошибка при наборе имени, то исправить ее можно при помощи клавиши ←-+-, удалив часть имени вместе с ошибкой, после чего набрать оставшуюся часть имени.

После ввода имени файла необходимо подмотать МЛ к предполагаемому месту расположения файла и перевести магнитофон в режим чтения, нажав на клавишу “пуск” на клавиатуре магнитофона.

При поиске заданного файла на экране будут распечатаны имена файлов, просмотренных во время поиска. Если обнаружен требуемый файл, то имя его не распечатывается, а файл читается в заданную область ОЗУ. После окончания чтения на экране появится знак вопроса. Если файл был считан с ошибкой, то на экране выдается сообщение “ошибка”.

После загрузки файла в ячейке 264 содержится адрес ОЗУ, куда загружен файл, а в ячейке 266 - длина файла в байтах.

2. Загрузка с линии

Линия <адрес загрузки> ввод

Адрес загрузки задается в виде восьмеричного числа и определяет адрес ОЗУ, куда должен быть загружен файл с линии. Если адрес не задан или задан равным нулю, то загрузка производится по адресу, указанному в оглавлении файла. Исправление ошибок при вводе адреса осуществляется таким же образом, как и в предыдущей команде.

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

3. Запуск программы

Старт <стартовый адрес> ввод

По этой команде производится запуск программы с указанного адреса. Управление программе передается с помощью команды jsr pc,<адрес>, поэтому в вызванной программе есть возможность вернуть управление монитору без перезапуска системы.

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

4. Передача управления на пользовательское ПЗУ

Пуск ввод

По этой команде производится передача управления на ПЗУ, расположенное по адресу 140000. Адрес возврата при этом запоминается в стеке, и поэтому в вызванной программе есть возможность вернуть управление в монитор.

5. Запуск тестов

Если в составе микро-ЭВМ есть ПЗУ с тестами, расположенное по адресу 160000, то с помощью команды

Тест ввод

можно передать управление на тестовые программы. Адрес запуска тестов - 160100.

6. Перезапуск системной программы

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

Focal ввод

По этой команде произойдет перезапуск системы и управление будет передано на ПЗУ по адресу 120000.

Для того, чтобы прервать работу активной программы необходимо воспользоваться клавишей “СТОП” на клавиатуре микро-ЭВМ, которая обеспечивает формирование запроса на прерывание по зависанию. Если данное прерывание не обрабатывается активной программой, то управление будет передано на пусковой монитор, который устанавливает указатель стека на адрес 1000, устанавливает системный порт в исходное состояние, производит инициализацию драйвера клавиатуры по команде ЕМТ 4 и переходит в диалоговый режим.

7. Клавиатура

Клавиатура микро-ЭВМ предназначена для ввода информации в режиме диалога с пользователем.

7.1. Состав клавиатуры БК0010

В состав клавиатуры входят 86 клавиш, которые по функциональному назначению подразделяются на четыре группы.

7.1.1.

Группа регистровых клавиш обеспечивает переключение регистров клавиатуры:

  • РУС - включает русский регистр;
  • ЛАТ - включает латинский регистр;
  • ЗАГЛ - включает режим формирования кодов заглавных букв;
  • СТР - включает режим формирования кодов строчных букв;
  • НР - включает нижний регистр только в нажатом состоянии;
  • ПР - включает правый регистр только в нажатом состоянии;
  • СУ - включает режим формирования управлющих кодов только в нажатом состоянии.

7.1.2.

Группа управляющих клавиш предназначена для формирования управляющих кодов и управления режимами работы микро-ЭВМ

  • клавиша “стоп” обеспечивает формирование запроса на прерывание и используется для прерывания выполнения рабочей программы.
  • клавиша “шаг” обеспечивает формирование управляющего кода, который может быть использован для управления режимами работы рабочей программы.
  • клавиши “ису” и “блр” используются для управления режимами формирования информации на экране тв-монитора.
  • клавиши “граф”, “зап”, “стир” обеспечивают переключение режимов формирования графической информации на экране тв-приемника в ручном режиме.
  • клавиши “уст.таб”, “сбр.таб” обеспечивают управление аппаратом табуляции устройства отображения информации.
  • клавиша “повт” предназначена для многократной выдачи кода с клавиатуры.
  • клавиша “кт” обеспечивает формирование управляющего кода 3 (”конец текста”).
  • клавиша “ввод” обеспечивает формирование управляющих кодов 12 (”перевод строки”) или 15 (”возврат каретки”) в зависимости от установленного в драйвере клавиатуры режима.

7.1.3.

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

ввод кодов цифр осуществляется при нажатии на цифровые клавиши.

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

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

7.1.4.

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

7.1.5. Функционирование клавиатуры

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

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

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

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

признаком передачи кода по прерыванию является ненулевое содержание ячейки 260. в этом случае содержимое данной ячейки рассматривается как адрес, по которому необходимо передать управление при обработке прерывания от клавиатуры. получив управление, рабочая программа может прочитать код, выдав запрос на чтение кода (команда ЕМТ 6), выполнить необходимые действия, после чего должна выйти из прерывания, подав команду rts pc.

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

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

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

коды букв, полученные при включенном русском регистре, а также коды, полученные по вектору 274, перекодируются в восьмиразрядные.

при обработке кода, полученного при нажатии клавиши “ввод”, учитывается содержимое ячейки 262. если ячейка содержит 0, то в рабочую программу передается код 12 (”пс”), если содержимое ячейки отлично от 0, то передается код 15 (”вк”). при инициализации драйвера клавиатуры ячейка 262 обнуляется.

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

для сброса табуляции нужно подвести курсор в требуемую позицию и нажать клавиши “сбр.таб”. при этом будет сброшена соответствующая метка.

для многократного ввода одного и того же символа с клавиатуры служит клавиша “повтор”. при удержании этой клавиши в рабочую программу по ее запросу передается код последнего введенного символа.

для ввода с клавиатуры отдельных часто употребляемых слов или фраз пользователь может использовать аппарат программируемых ключей. драйвер позволяет запрограммировать 10 ключей с номерами 1-10. для этого используется команда ЕМТ 12 с соответствующими параметрами. выдача текста ключей осуществляется с помощью цифровых клавиш по нижнему регистру.

драйвер клавиатуры дает возможность пользователю приостановить работу процессора путем ввода символа @ по регистру “су”. при повторном вводе этого или любого другого символа процессор продолжит работу.

коды, вырабатываемые при нажатии клавиш “рус”, “лат”, “уст.таб”, “сбр.таб”, “таб”, “повтор”, используются только драйвером клавиатуры и в рабочую программу не передаются.

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

------------------------------------------------------------
нр  су  стоп шаг ису бл. граф зап стир уст сбр вс сбр кт сбр
ред таб таб    рп
------------------------------------------------------------
; + 1 ! 2 "  3 # 4 $ 5 % 6 &  7 ' 8 (9)  0 - =  [ а ]
32/64к1  к2  к3  к4  к5  к6  к7  к8  к9  к10 инвэ  \!/ повт
------------------------------------------------------------
й j ц c у u  к k е e н n г g  ш [ щ ]  з z х h : * <- г ->
 -   -   -    -  -   -   =    -   =  =   = курсор   \
------------------------------------------------------------
ф f ы y в w  а а п p р r о о  л l д d  ж v э \ . >  / ! \
 -   -   !    -  -   =   !!   -   =  -   = уст.инд v  ]
------------------------------------------------------------
я q ч ^ с s  м м и i т т ь x  б b ю @  , < / ?  зб   <-+ !->
<-- -->  !    ! инв.с подч  <-! ред
------------------------------------------------------------
пр  загл рус п  р  о  б  е  л  лат      стр пр таб ввод
-------------------------------------------------------------

рис.3. схема расположения символов на клавиатуре микро-ЭВМ “электроника БК0010”.

7.2. Команды драйвера клавиатуры

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

команда: ЕМТ 4

по данной команде производится установка векторов прерываний клавиатуры, в регистре состояния сбрасывается маска прерываний от клавиатуры, устанавливается режим передачи кодов по запросам рабочей программы, устанавливается режим передачи кода 12 при нажатии клавиши “ввод”.

содержимое R0 не сохраняется.

7.2.2. Чтение кода с клавиатуры

команда: ЕМТ 6

выходные данные: R0 - код в младшем байте

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

7.2.3. Чтение строки с клавиатуры

команда: ЕМТ 10

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

R1 - адрес ОЗУ для записи строки

R2 - ограничители строки: мл. байт - длина строки в байтах (если 0, то 200000 байтов) ст. байт - код символа - ограничителя строки

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

после ввода строки в R1 хранится адрес следующего за последним введенным байта . в R2 - разность между входным значением и длиной введенной строки.

7.2.4. Установка ключей клавиатуры

команда: ЕМТ 13

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

R0 - номер программируемого ключа (1-10)

R1 - адрес текста ключа (первый байт-длина текста)</pre>

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

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

8. Устройство отображения информации

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

8.1. Функционирование устройства отображения информации

отображение информации осуществляется на экране тв-приемника, подключенного к микро-ЭВМ через видеовход. формирование отображаемой информации производится в экранном ОЗУ объемом 16к байт. бис управления тв-монитором, размещенная на плате микро-ЭВМ, осуществляет сканирование экранного ОЗУ и формирование видеосигнала, передаваемого на тв-приемник.

при работе с черно-белым тв-приемником каждый бит экранного ОЗУ отображается в точку на экране. таким образом, можно отображать на экране 256д строк по 512д точек в каждой. это позволяет сформировать на экране 25д символьных строк, при этом верхняя строка является служебной и предназначена для формирования режимов формирования информации на экране, а также для вывода служебной информации пользователя.

каждая строка может содержать 64д символа обычной ширины и 32д - удвоенной ширины, когда каждой точке соответствуют два бита экранной памяти.

формирование символов осуществляется в матрице 10д * 8 точек, при этом за базовую матрицу для основного набора символов принята матрица 7 * 5 точек. исключение составляют некоторые символы строчных букв, элементы которых выходят за пределы базовой матрицы, а также символы табличной графики.

в случае работы в графическом режиме для формирования графического изображения используется поле 240д * 512д точек (либо 240д * 256д точек, в режиме формирования символов двойной ширины).

в микро-ЭВМ предусмотрен режим работы с расширенным объемом пользовательского ОЗУ, когда часть экранного ОЗУ используется для работы пользовательской программы. в этом режиме для формирования изображения отводится только 4к байта ОЗУ, в которых помещается служебная строка и 4 информационных, либо графическое поле 40д * 512д точек. информационное поле в данном режиме размещается в верхней части экрана.

формирование изображения и управление режимами работы осуществляется драйвером тв-приемника. для управления драйвером тв-приемника используется 9 команд, при этом управление основным потоком информации между рабочей программой и драйвером осуществляется командой ЕМТ 16.

8.2. Команды драйвера тв-приемника

8.2.1. Инициализация драйверного модуля

команда ЕМТ 14

команда обеспечивает инициализацию всех драйверов системного ПЗУ, осуществляет сброс рабочих ячеек драйверов в исходное состояние, установку всех векторов прерываний, очистку экрана, установку исходных режимов отображения информации, очистку порта ввода-вывода, установку системного порта в исходное состояние, установку скорости обмена по линии 9600 бод. стек в исходное состояние не устанавливается. содержимое R0-R4 не сохраняется.

8.2.2. Передача кодов на драйвер

команда ЕМТ 16

входные параметры

R0 - код в младшем байте

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

8.3. Кодировка символов БК0010

коды символов, используемые в БК, по наэначению можно разделить на две основные группы:

  • коды графических символов;
  • специальные коды, не вызывающие в обычном режиме формирование графических символов на экране.

Bk-charset.png

0001 0010 0011 0100 0101 0110 0111 1010 1011 1100 1101 1110 1111
....0000 пробел 0 @ P ` p ю п Ю П
....0001  ! 1 A Q a q а я А Я
....0010 " 2 B R b r б р Б Р
....0011 # 3 C S c s ц с Ц С
....0100 4 D T d t д т Д Т
....0101  % 5 E U e u е у Е У
....0110 & 6 F V f v ф ж Ф Ж
....0111 ' 7 G W g w г в Г В
....1000 ( 8 H X h x х ь Х Ь
....1001 ) 9 I Y i y и ы И Ы
....1010 *  : J Z j z й з Й З
....1011 +  ; K [ k { к ш К Ш
....1100 , < L \ l | л э Л Э
....1101 = M ] m } м щ М Щ
....1110 . > N n н ч Н Ч
....1111 /  ? O _ o о ъ О Ъ


8.3.1. Коды графических символов

данная группа включает в себя коды алфавитно-цифровых символов и символов полуграфики.

коды алфавитно-цифровых символов

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

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

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

коды символов полуграфики

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

8.3.2. специальные коды

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

8.3.2.1. управляющие коды

данная подгруппа включает в себя следующие коды:

“kt” (3) - “конец текста” - вырабатывается при нажатии клавиши “kt”. при передаче на драйвер тв-приемника никакого действия не вызывает. в режиме “ису” отображается на экране в виде инверсного символа с.

“зв” (7) - “звонок” - вырабатывается при вводе символа g по регистру “су”. при передаче на драйвер тв-приемника выдает сигнал такой же длительности, как при нажатии на клавишу. в режиме “блр” сигнал блокируется. если одновременно включен режим “ису”, код отображается в виде инверсного символа g.

“ввод” (12) - соответствует коду “пс” - перевод строки - кодировки кои-7, вырабатывается при нажатии на клавишу “ввод”, при передаче на драйвер тв-приемника вызывает перевод курсора в начало следующей строки. в режиме “ису” отображается в виде инверсного символа j.

“сбр” (14) - соответствует коду “пф” - перевод формата - вырабатывается при нажатии клавиши “сбр”, при передаче на драйвер тв-приемника вызывает очистку экрана и перевод курсора в начало экрана. в режиме “блр” действие кода блокируется. если включен режим “ису” при включенном режиме “блр”, то код отображается в виде инверсного символа l.

остальные коды в диапазоне 0-14 в микро-ЭВМ не используются, однако могут быть введены с клавиатуры на регистре “су” с помощью клавиш с символом @ и с символами от а до к латинского алфавита. в режиме “ису” данные коды отображаются в виде соответствующих инвертированных символов латинского алфавита.

коды “уст.таб” (15), “рус” (16), “лат” (17), “сбр.таб” (20) используются в драйвере клавиатуры и переданы в рабочую программу быть не могут. однако, при вводе данных кодов в драйвер тв-монитора они отображаются в виде соответствующих инвертированных символов латинского алфавита.

8.3.2.2. редактирующие символы

данная подгруппа включает в себя следующие коды:

<--(10),  -->(31), ! (32),  ! (33),  \ (34),  /  (35),

 \ (36),   / (37) - коды перемещения курсора на одну
г       позицию в направлении стрелки
 \ (22)           - код перемещения курсора в начало
        экрана
 a (23)           - код перемещения нижней от курсора
 !                  части экрана на одну строку вверх
 ! (24)           - код перемещения нижней от курсора
 v                  части экрана на одну строку вниз
<--(25)           - код перемещения курсора в начало
                    следующей строки (су/u)
!->(26)           - код перемещения правой от курсора
                    части строки на одну позицию влево
<-!(27)           - код перемещения на одну позицию вправо
                    правой от курсора части строки
<-+(30)           - код стирания последнего введенного
      символа
сбр!->(231)       - код очистки правой от курсора части
      строки

в режиме “блр” редактирующие коды соответствующих действий не вызывают, а отображаются на экране.

8.3.2.3. коды переключения режимов формирования информации

“32/64” (233) - код переключения режима формирования символов обычной и удвоенной ширины. цифры в обозначении кода определяют количество символов в строке в том или ином режиме. в режиме “64 символа в строке” каждой точке на экране соответствует один бит в экранном ОЗУ. в режиме “32 символа в строке” - два бита.

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

  "k"(221) - красный
  "з"(222) - зеленый
  "c"(223) - синий
  "ч"(224) - черный

ввод этих кодов с клавиатуры осуществляется с помощью клавиш 1, 2, 3, 4 при нажатых клавишах “нр”, “пр” соответственно.

работа возможна только в режиме “32 символа в строке” и с цветным тв-приемником.

“инвэ” (235) - код инверсии поля экрана, обеспечивает переключение темного фона экрана в светлый, а изображение символов наоборот. при повторном введении кода происходит обратное переключение.

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

“курсор” (232) - код гашения курсора, при повторном нажатии - включение. гашение курсора обеспечивает увеличение скорости вывода информации.

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

“подч” (237) - код переключения режима подчеркивания символов. в этом режиме символы, выдаваемые на экран, подчеркнуты. признак - индикатор в служебной строке. возврат - повторный ввод данного символа.

“инв.с” (234) - код переключения режима инверсии символов. в этом режиме символы выдаются на экран в инвертированном виде. признак - индикатор в служебной строке. сброс - повторный ввод данного символа.

при вводе кодов данной подгруппы с клавиатуры коды “32/64”, “инвэ”, “курсор”, “устинд” в рабочую программу не поступают, а передаются непосредственно в драйвер тв-приемника. однако, в случае необходимости могут быть сгенерированы рабочей программой и введены через общий вход драйвера тв-приемника. коды вводятся по нижнему регистру.

8.3.2.4. коды переключения режимов работы дисплея

данная подгруппа включает в себя следующие коды:

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

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

на коды “ису”, “блр”, “рп” режим “блр” не действует.

в режиме “блр” блокируется также выполнение функций, вызываемых управляющими кодами “зв” и “сбр”.

действие кода “ввод” в данном режиме не блокируется.

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

“рп” (214) - код переключения режима расширенной памяти. драйвер тв-приемника освобождает 12к байтов ОЗУ для рабочей программы. объем рабочей области ОЗУ увеличивается до 28к байт в непрерывном диапазоне адресов 0 - 67777. для формирования изображения на экране используется 4к байта ОЗУ, которые позволяют отображать на экране служебную строку и 4 информационных. при этом информация размещается в верхней части экрана. ввод кода “рп” осуществляется по нижнему регистру. признак - индикатор в служебной строке. сброс - повторный ввод кода после сброса экрана.

8.3.2.5. коды управления режимом текстовой графики

в состав данной подгруппы входят коды “граф”, “зап”, “стир”.

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

коды выполняют следующие функции:

“граф” (225) - код переключения режима текстовой графики.

в служебной строке появляется индикатор, и на месте символьного курсора - графический в виде символа “+”, центр которого указывает на адресуемую точку.

“зап” (226) - код переключения режима записи.

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

“стир” (227) - код переключения режима стирания.

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

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

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

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

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

для достижения максимальной скорости и минимального объема передаваемой информации при формировании изображения необходимо на вход драйвера тв- приемника информацию передавать в следующем виде:

  мл. байт R0 - код  направления;
  ст. байт R0 - длина  линии  данного
          направления - 1.

таким образом, максимальная длина линии - 256 точек. если в старшем байте R0 хранится 0, то формируется линия длиной в одну точку.

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

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

при вводе информации с клавиатуры коды поступают в системную программу или программу пользователя, которая в данный момент польbзуется драйверами клавиатуры и тв-приемника. для организации индикации введенных с клавиатуры символов на экране тв-приемника (режим “эхо”) программа должна использовать драйвер тв-приемника, передавая ему коды индицируемых символов. исключение составляют коды “ису” (202), “блр” (204), “курсор” (232), “32/64” (233), “инв.э” (235), “уст.инд” (236), которые передаются из драйвера клавиатуры в драйвер тв-приемника, минуя активную в данный момент рабочую программу.

8.4. формирование строки символов

команда ЕМТ 20

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

R1 - адрес строки

R2 - ограничитель строки - мл. байт - длина строки в байтах (если 0, то длина 200000 байт) ст. байт - символ-ограничитель

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

после завершения передачи в R1 хранится адрес следующего за последним переданным байта, в R2 - входное значение длины строки минус длина переданной строки.

8.5. запись символа в служебную строку

команда ЕМТ 22

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

R0 - код символа (если 0, то сброс строки)

R1 - номер позиции в служебной строке (начиная с 0)

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

при использовании данной команды следует помнить, что поле индикаторов размещается в правой части служебной строки и максимально может занимать 24д позиции. очистка служебной строки осуществляется с помощью указанной команды, а также при вводе кодов “уст.инд”, “рп”.

8.6. установка координат курсора

команда ЕМТ 24

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

R1 - значение координаты х

R2 - значение координаты y

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

8.7. съем координат курсора

команда ЕМТ 26

выходные данные:

R1 - значение координаты x

р2 - значение координаты y

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

8.8. формирование точки по координатам

команда ЕМТ 30

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

R0 - 1 - запись, 0 - стирание

R1 - значение координаты х

R2 - значение координаты y

по данной команде производится запись или стирание графической точки по координатам, указанным в качестве параметров. значениям координат (0,0) соответствует верхняя левая точка в информационном поле экрана. максимальное значение координаты y - 239, максимальное значение х зависит от режима, в котором находится в текущий момент драйвер тв-приемника. в режиме “64д символа в строке” оно равно 511д, “32 символа в строке” - 255д. с помощью этих команд можно установить цвет (тон) формируемой точки и фона. для выполнения команды не имеет значения - в символьном режиме или в режиме текстовой графики находится драйвер тв-приемника.

8.9. формирование вектора по координатам

команда ЕМТ 31

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

R0 - 1 - запись, 0 - стирание

R1 - значение координаты х конца вектора

R2 - значение координаты y конца вектора

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

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

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

8.10. чтение слова состояния дисплея

команда ЕМТ 34

выходные данные:

R0 - слово состояния дисплея

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

под состоянием дисплея понимается совокупность режимов, в которых находится дисплей. каждый разряд слова состояния отражает состояние соответствующего ему режима, при этом “1” свидетельствует о включенном состоянии данного режима, “0” - о выключенном.

формат слова состояния приведен в таблице 2.

таблица 2. формат слова состояния дисплея.

------------------------------------------------------------
номер разряда !          соответствующий режим
--------------!---------------------------------------------
     0        ! режим "32 символа в строке"
     1        ! инверсия фона
     2        ! режим расширенной памяти
     3        ! русский регистр
     4        ! подчеркивание символа
     5        ! инверсия символа
     6        ! индикация "су"
     7        ! блокировка редактирования
     8        ! режим текстовой графики "граф"
     9        ! запись в режиме "граф"
    10        ! стирание в режиме "граф"
    11        ! режим "32 символа в служебной строке"
    12        ! подчеркивание символ
    13        ! инверсия символа в служебной строке
    14        ! гашение курсора
    15        ! не используется
-------------------------------------------------------------

9. обмен с накопителем на магнитной ленте (мл)

в качестве накопителя на мл в БК используется бытовой кассетный магнитофон типа “электроника 302”. для хранения информации могут использоваться кассеты типа мк60, а также другие кассеты, применяемые на данном магнитофоне.

управление магнитофоном осуществляется драйвером магнитофона, который обеспечивает запись информации на ленту, чтение с мл, а также выдает команды управления двигателем магнитофона. обмен информацией с магнитофоном осуществляется на скорости 1200 бод, при этом достигается плотность записи на мл около 25 бит/мм. объем информации, записанной на одной кассете типа мк60, может достигать 500к байт.

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

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

9.1. команды драйвера магнитофона

команда ЕМТ 36

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

R1 - адрес блока параметров

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

формат блока параметров
------------------------------------------------------------
номер байта !        содержание байта
------------------------------------------------------------
   0        ! команда
   1        ! ответ
   2,3      ! адрес массива на запись или чтение
   4,5      ! длина массива на запись
   6-21     ! имя массива на запись или чтение
   22,23    ! адрес текущего массива
   24,25    ! длина текущего массива
   26-41    ! имя текущего массива
------------------------------------------------------------

формат байта команды
-----------------------------------------------------------
содержимое !          команда
-----------------------------------------------------------
     0     ! стоп
     1     ! пуск двигателя
     2     ! запись массива
     3     ! чтение массива
     4     ! фиктивное чтение массива
-----------------------------------------------------------

формат байта ответа
-----------------------------------------------------------
содержимое !         ответ
-----------------------------------------------------------
    0      ! операция завершена без ошибок
    1      ! имя текущего массива не совпадает с заданным
           ! на чтение
    2      ! ошибка по контрольной сумме
    4      ! останов по команде оператора
-----------------------------------------------------------

блок параметров может быть размещен в произвольной области ОЗУ с четного адреса, однако, система предоставляет возможность использовать для размещения блока параметров область ОЗУ с адресами 320 - 371, если есть уверенность, что во время работы драйвера магнитофона не произойдет взаимного перекрытия блока параметров и системного стека. (глубина стека драйвера не превышает 16).

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

9.1.1. останов двигателя магнитофона

для останова двигателя необходимо в командный байт блока параметров поместить 0, после чего занести в R1 адрес блока параметров и выполнить команду ЕМТ 36.

9.1.2. пуск двигателя магнитофона

для пуска двигателя магнитофона необходимо в командный байт поместить 1, после чего занести в R1 - адрес блока параметров, выполнить команду ЕМТ 36. выполнение данной операции необходимо перед выполнением операции ручной перемотки мл, если в исходном состоянии магнитофон был в останове.

9.2. запись массива на ленту

для записи массива на мл необходимо вначале перемотать ленту к тому месту, с которого будет располагаться массив, после чего дать команду “стоп” и перевести магнитофон в режим записи.

в блок параметров необходимо занести следующую информацию:

  • байт 0 - команда 2
  • байты 2,3 - адрес массива
  • байты 4,5 - длина массива в байтах
  • байты 6-25 - имя записываемого массива

далее в R1 необходимо занести адрес блока параметров, выполнить команду ЕМТ 36.

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

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

9.3. чтение массива с мл

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

  • байт 0 - команда 3
  • байты 2,3 - адрес ОЗУ, куда необходимо читать массив
  • байты 6-25 - имя читаемого массива

далее в R1 необходимо занести адрес блока параметров и выполнить команду ЕМТ 36.

при выполнении операции чтения автоматически производится запуск двигателя, после чего осуществляется поиск массива. далее производится чтение оглавления массива и сравнение прочитанного имени с именем, заданным на чтение.

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

при совпадении имен производится чтение массива и запись его в ОЗУ по адресу, указанному в блоке параметров.

если был задан нулевой адрес, то запись массива в ОЗУ производится по адресу, прочитанному в оглавлении массива. длина массива берется из оглавления массива.

после чтения массива адрес его начала заносится в ячейку 264, а длина - в ячейку 266.

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

9.3.1. фиктивное чтение массива

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

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

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

10. обмен по последовательному каналу

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

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

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

обмен информации осуществляется байтами, при этом осуществляется управление сигналами готовности.

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

обмен по линии можно прервать с помощью клавиши “стоп”, которая вызывает немаскируемое прерывание по вектору 4. если данное прерывание не обрабатывается рабочей программой, то управление будет передано пусковому монитору, который выставит линию в исходное состояние и перейдет в диалоговый режим.

10.1. команды драйвера телеграфного канала

10.1.1. инициализация драйвера тлг-канала

команда ЕМТ 40

входные данные

R0 - номер скорости обмена информацией

данная команда позволяет установить требуемую скорость обмена по телеграфной линии.

по включении питания автоматически устанавливается максимальная скорость обмена - 9600 бод.

набор возможных скоростей и соответствующие им номера приведены в таблице 3.

таблица 3.
-------------------------------------------------------
номер скорости  !   скорости обмена (бод)
-------------------------------------------------------
  0             !   9600
  1             !   4800
  2             !   2400
  3             !   1200
  4             !   600
  5             !   300
  6             !   150
  7             !   75
  10            !   50
--------------------------------------------------------

10.1.2. передача байта на линию.

команда ЕМТ 42

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

R0 - мл. байт на передачу

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

           0    1    2    3    4    5    6    7
    ---------------------------------------------------
    !    !    !    !    !    !    !    !    !    !    !
    ---------------------------------------------------
   \_____/\______________________________________/\____/
   стартовый         передаваемый байт           стоповый
      бит                                          бит

      рис. 5. формат передаваемого байта.

перед передачей байта проверяется готовность приемной стороны к приему байта. если сигнал готовности отсутствует, то драйвер переходит в цикл опроса сигнала готовности с линии, из которого выходит только при появлении сигнала готовности, либо по прерыванию по клавише “стоп”. на время передачи байта прерывания от внешних устройств маскируются.

10.1.3. прием байта с линии.

команда ЕМТ 44

выходные данные:

R0 - мл. байт с линии

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

по данной команде драйвер выдает на линию сигнал готовности к приему байта и переходит в режим ожидания стартового бита. после приема байта сигнал готовности сбрасывается.

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

чтобы организовать такой алгоритм работы рабочая программа должна установить режим работы с клавиатурой по прерыванию, поместив в ячейку 260 адрес программы обработки прерывания с клавиатуры. данная программа в свою очередь, получив управление, должна установить линию в исходное состояние, записав константу 220 в регистр системного порта, выполнить необходимые действия и выйти из прерывания с помощью команды rts pc. в процессе дальнейшего ожидания байта сигнал готовности на линии будет восстановлен. при поступлении стартового сигнала с линии прерывания от внешних устройств маскируются.

10.1.4. передача массива по линии

команда ЕМТ 46

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

R1 - адрес массива

R2 - длина массива в байтах

данная команда обеспечивает прием массива с линии и запись его в ОЗУ по адресу, указанному в R1.

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

11. работа с портом ввода-вывода

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

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

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

12. программирование микро-ЭВМ

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

как уже было указано ранее, в качестве входного языка персонального компьютера “электроника БК0010” является язык высокого уровня “Фокал БК0010”, интерпретатор которого помещен в ПЗУ объемом 8к байт, и поставляется в составе микро-ЭВМ.

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

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

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

этот недостаток в некоторой степени можно компенсировать, используя для разработки эффективных программ вычислительные системы, процессоры которых имеют ту же систему команд, что и процессор БК. в качестве таких систем могут служить “электроника-60”, “двк-2”, “электроника 100/25”, “см-3”, “см-4”. программы, разработанные с помощью средств данных вычислительных систем, могут быть записаны в ПЗУ или ППЗУ, либо переписаны с помощью средств “электроника БК0010” на мл с целью использования их в дальнейшем в составе БК.

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

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

приложение 1. список команд ЭВМ

-----------------------------------------------------------
мнемоника !               команда          !   код !признак
          !                                !       !n!z!v!c
-----------------------------------------------------------
    1                      2                        3
-----------------------------------------------------------
            одноадресные команды
-----------------------------------------------------------
clr(b)! очистка                            !*050dd !0!1!0!0
-----------------------------------------------------------
com(b)! инвертирование                     !*051dd !+!+!0!1
-----------------------------------------------------------
inc(b)! прибавление единицы                !*052dd !+!+!+!-
-----------------------------------------------------------
dec(b)! вычитание единицы                  !*053dd !+!+!+!-
-----------------------------------------------------------
neg(b)! изменение знака                    !*054dd !+!+!+!+
-----------------------------------------------------------
tst(b)! проверка                           !*057dd !+!+!0!0
-----------------------------------------------------------
asr(b)! арифметический сдвиг вправо        !*062dd !+!+!+!+
-----------------------------------------------------------
asl(b)! арифметический сдвиг влево         !*063dd !+!+!+!+
-----------------------------------------------------------
ror(b)! циклический сдвиг вправо           !*060dd !+!+!+!+
-----------------------------------------------------------
rol(b)! циклический сдвиг влево            !*061dd !+!+!+!+
-----------------------------------------------------------
adc(b)! прибавление переноса               !*055dd !+!+!+!+
-----------------------------------------------------------
sbc(b)! вычитание переноса                 !*056dd !+!+!+!+
-----------------------------------------------------------
sxt   ! расширение знака                   !0067dd !-!+!0!-
-----------------------------------------------------------
swab  ! перестановка байтов                !0003dd !+!+!0!0
-----------------------------------------------------------
mfps  ! чтение ссп                         !1067dd !+!+!0!-
-----------------------------------------------------------
mtps  ! запись ссп                         !1064ss !+!+!+!+
-----------------------------------------------------------

-----------------------------------------------------------
    1                       2                       3
-----------------------------------------------------------
              двухадресные команды
-----------------------------------------------------------
mov(b)! пересылка                          !*1ssdd !+!+!0!-
-----------------------------------------------------------
cmp(b)! сравнение                          !*2ssdd !+!+!+!+
-----------------------------------------------------------
add   ! сложение                           !06ssdd !+!+!+!+
-----------------------------------------------------------
sub   ! вычитание                          !16ssdd !+!+!+!+
-----------------------------------------------------------
bit(b)! проверка разрядов                  !*3ssdd !+!+!0!-
-----------------------------------------------------------
bic(b)! очистка разрядов                   !*4ssdd !+!+!0!-
-----------------------------------------------------------
bis(b)! логическое сложение                !*5ssdd !+!+!0!-
-----------------------------------------------------------
xor   ! исключающее или                    !074rdd !+!+!0!-
-----------------------------------------------------------
           команды управления программой
-----------------------------------------------------------
br    ! ветвление безусловное              !000400 !
-----------------------------------------------------------
bne   ! ветвление, если не равно (нулю)    !001000 ! z=0
-----------------------------------------------------------
beq   ! ветвление, если равно (нулю)       !001400 ! z=1
-----------------------------------------------------------
bpl   ! ветвление, если плюс               !100000 ! n=0
-----------------------------------------------------------
bmi   ! ветвление, если минус              !100400 ! n=1
-----------------------------------------------------------
bvc   ! ветвление, если нет арифметического!       !
      ! переноса                           !102000 ! v=0
-----------------------------------------------------------
bvs   ! ветвление, если  арифметический    !       !
      ! перенос                            !102400 ! v=1
-----------------------------------------------------------
bcc   ! ветвление, если нет переноса       !103000 !
-----------------------------------------------------------
bcs   ! ветвление, если перенос            !103400 !
-----------------------------------------------------------
bge! ветвление, если больше или равно (нулю)!002000!nv+vn=0
-----------------------------------------------------------
blt! ветвление, если меньше (нуля)          !002400!nv+vn=1
-----------------------------------------------------------
bgt! ветвление, если (больше)           !003000!z+(nv+vn)=0
-----------------------------------------------------------
ble! ветвление, если меньше или равно   !003400!
   ! (нулю)                             !      !(nv+vn)+z=1
-----------------------------------------------------------
bhi  ! ветвление, если больше           !101000!  z+c=0
-----------------------------------------------------------
blos ! ветвление, если меньше или равно !101100!  z+c=1
-----------------------------------------------------------
bhis ! ветвление, если больше или равно !103000!  c=0

-----------------------------------------------------------
     1                         2                    3
-----------------------------------------------------------
blo   ! ветвление, если меньше               !103400 ! c=1
-----------------------------------------------------------
jmp   ! безусловный переход                  !0001dd !
-----------------------------------------------------------
jsr   ! обращение к подпрограмме             !004rdd !
-----------------------------------------------------------
rts   ! возврат из подпрограммы              !00020r !
-----------------------------------------------------------
mark  ! восстановление ус                  !0064nn !-!-!-!-
-----------------------------------------------------------
sob       ! вычитание единицы и ветвление        ! 077rnn
-----------------------------------------------------------
            команды прерывания программы
-----------------------------------------------------------
emt !командное прерывание для системных    !104000-!
    ! программ                             !-104377!
-----------------------------------------------------------
trap! командное прерывание                 !104400-!
    !                                      !-104777!
-----------------------------------------------------------
iot ! командное прерывание для             !       !
    ! ввода-вывода                         ! 000004!
-----------------------------------------------------------
bpt ! командное прерывание для             !       !
    ! отладки                              ! 000003!
-----------------------------------------------------------
rti ! возврат из прерывания                ! 000002!
-----------------------------------------------------------
rtt ! возврат из прерывания                ! 000006!
-----------------------------------------------------------
            команды управления машиной
-----------------------------------------------------------
halt ! останов                             ! 000000!
-----------------------------------------------------------
wait ! ожидание                            ! 000001!
-----------------------------------------------------------
reset! сброс внешних устройств             ! 000005!
-----------------------------------------------------------
      команды изменения признаков
-----------------------------------------------------------
cln! очистка n                            ! 000250!0!-!-!-
-----------------------------------------------------------
clz! очистка z                            ! 000244!-!0!-!-
-----------------------------------------------------------
clv! очистка v                            ! 000242!-!-!0!-
-----------------------------------------------------------
clc! очистка c                            ! 000241!-!-!-!0
-----------------------------------------------------------
ccc! очистка всех разрядов                ! 000257!0!0!0!0
-----------------------------------------------------------
sen! установка n                          ! 000270!1!-!-!-
-----------------------------------------------------------
sez! установка z                          ! 000264!-!1!-!-
-----------------------------------------------------------

-----------------------------------------------------------
   1                           2                    3
-----------------------------------------------------------
sev! установка v                          ! 000262!-!-!1!-
-----------------------------------------------------------
sec! установка c                          ! 000261!-!0!-!1
-----------------------------------------------------------
scc! установка всех разрядов              ! 000277!1!1!1!1
-----------------------------------------------------------
nop! нет операции                         ! 000240! ! ! !
-----------------------------------------------------------

примечание r - регистр общего назначения; ss - поле адресации операнда источника; dd - поле адресации операнда приемника; nn - смещение (6 разрядов); * - 1 для байтовой операции, 0 - для слова.

приложение 2. директивы отладки

директивы отладки позволяют:

  1. контролировать функционирование отдельных ячеек памяти микро-ЭВМ.
  2. формировать или контролировать ранее сформированные массивы чисел.
  3. использовать программы, написанные в машинных кодах (система команд приведена в техническом описании бис к1801вм1).
  4. работать с кассетным магнитофоном.

для выхода в режим отладки необходимо на клавиатуре микро-ЭВМ набрать директиву

лат р т ввод,

и в ответ на приглашение “+” -

рус тс.

все директивы можно разбить на две группы:

  1. директивы чтения/записи;
  2. директивы управления.

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

в таблицу сведены названия и описание директив отладки, а также примеры применеия этих директив. в примерах подчеркнуты символы, которые печатает микро-ЭВМ.

            таблица  директив  отладки
------------------------------------------------------------
обо!                    !                    !
зна!      название      !      описание      !    пример
че !                    !                    !
ние!                    !                    !
---!--------------------!--------------------!--------------
 1 !        2           !         3          !       4
---!--------------------!--------------------!--------------
 а ! установить или про-! в микро-ЭВМ заноси-! 1000аа=1000
   ! контролировать зна-! тся или индицирует-!       -----
   ! чение текущего ад- ! ся значение текуще-!
   ! реса               ! го адреса          !
---!--------------------!--------------------!--------------
 д ! установить/проконт-!устанавливаются гра-! 100дд100
   ! ролировать значение! ницы рабочего мас- !      ---
   ! длины массива      ! сива от адреса а до!
   ! (в байтах)       ! адреса (a+д)     !
---!--------------------!--------------------!--------------
 р ! размножить число в ! числовой аргумент, ! 1000а
   ! диапазоне адресов  ! стоящий перед дире-! 100д
   !                    ! ктивой р, записыва-! 7р
   !                    ! ется по каждому из !в каждую ячей-
   !                    ! адресов а - (а+д)!ку в диапазоне
   !                    !если аргумент отсут-! 1000-1100 за-
   !                    !ствует, директива не! пишется 7
   !                    ! воспринимается     !
---!--------------------!--------------------!--------------
 с ! сравнить два масси-!эталонный массив оп-! 1000а
   ! ва: эталонный и   ! ределен в границах ! 20д
   ! контролируемый     !а - (а + д).      ! 1р
   !                    !                    ! 2040с
   !                    ! проверяемый        !2000:1 2040:**
   !                    ! массив имеет       !------ -------
   !      ! границы: начальный!2002:1 2042:**
   !                    ! адрес определен ар-!------ -------
   !                    !гументом перед дире-!..............
   !                    !ктивой с; длина рав-!2016:1 2056:**
   !                    !на д.               ! 2040а
   !                    ! если               ! 1р
   !                    !массивы отличны друг! 2000а
   !                    !от друга, на экране ! 2040с
   !                    !адреса и содержимое ! $
   !                    !ячеек памяти в диа- ! -
   !                    !пазонах а-(а+д); ар-! ** - значение
   !                    !гумент-(аргумент+д) ! содержащееся
   !                    ! адр:знач  адр:знач ! в ячейках па-
   !                    ! адр:знач  адр:знач ! мяти
   !                    ! .................. !
   !                    ! адр:знач  адр:знач !
   !                    ! если массивы совпа-!
   !                    !дают, на экране поя-!
   !                    !вляется символ "$"  !
---!--------------------!--------------------!--------------

------------------------------------------------------------
 1 !        2           !          3         !      4
------------------------------------------------------------
 х ! подсчитать конт-   ! подсчитывается кон-! 120000а
   ! рольную сумму мас- ! трольная сумма мас-! 20000д
   ! сива               ! сива, границы кото-! х=177777
   !                    ! рого заданы дирек- !  -------
   !                    ! тивами а и д       !
   !                    ! (а - а+д)        !
---!--------------------!--------------------!--------------
 п ! переслать (снять  ! производится пере- ! 2000а
   ! копию массива)    !сылка эталонного ма-! 20д
   !                    !ссива, границы кото-! 3000п
   !                    !рого определены ди- ! массив, опре-
   !                    !рективами а и д.    ! деленный в
   !                    !                    ! диапазоне
   !                    !                    ! 2000-2020 ,
   !                    ! массив копируется. ! скопируется
   !                    ! начало             ! с 3000 адреса
   !                    ! копии определя-    ! можно срав-
   !                    ! ется аргументом,   ! нить массивы
   !                    ! длина совпадает с  ! директивой
   !                    !длиной эталона: рав-! 3000с
   !                    !на д.               !
---!--------------------!--------------------!--------------
 л ! листать (распеча- ! на экран выводится ! 2000а
   ! тать массив на эк- ! массив данных, на- ! 10л
   ! ране)             ! чиная с адреса а и ! распечатается
   !                    ! длиной, равной зна-! содержимое
   !                    ! чению аргумента ди-! 4-х ячеек па-
   !                    ! рективы л          ! мяти 2000,
   !                    !                    ! 2002, 2004,
   !                    !                    ! 2006
---!--------------------!--------------------!--------------
 и ! записать/прочитать ! осуществляется за- ! 1000а
   ! содержимое ячейки  ! пись/чтение ячейки,! и значение
   ! памяти             ! определенной адре- !   --------
   !                    ! сом а. (записыва- ! 1000а
   !                    ! ется слово).      ! и знач 7ии7
   !                    !                    !   ----    -
---!--------------------!--------------------!--------------
 б ! записать/прочитать ! аналогично предыду-!  аналогично
   ! содержимое байта   ! щей директиве      ! пред. примеру
---!--------------------!--------------------!--------------
 ц ! циклическое чтение/! происходит цикличе-! 2000а
   ! запись слова       ! ское чтение/запись ! 123ц - запись
   !                    ! информации в ячейку! 2000а
   !                    ! с адресом а.       ! ц 123 123 ...
   !                    ! выход из цикла - по!   -----------
   !                    ! клавише "стоп"     ! - чтение

------------------------------------------------------------
 1 !          2         !           3        !       4
------------------------------------------------------------
 щ ! снять защиту сис-  ! снимает защиту сис-!
   ! темной области     ! темной области ОЗУ.!
   !                    ! оператор должен    !
   !                    ! следить за правиль-!
   !                    ! ностью записей в   !
   !                    ! этом диапазоне ад- !
   !                    ! ресов, чтобы не ис-!
   !                    ! портить системной  !
   !                    ! информации. защита !
   !                    ! восстанавливается  !
   !                    ! клавишей "стоп"    !
---!--------------------!--------------------!--------------
 , ! чтение/запись слова! происходит чтение/ ! 1000а
   ! с инкрементом      ! запись с инкремен- ! 10,знач
   !                    ! том, т.е. печатает-!    ----
   !                    ! ся содержимое ячей-! 10 записыва-
   !                    ! ки а+2и запись про-! ется по адре-
   !                    ! исходит по текущему! су 1000
   !                    ! адресу а.          ! знач - содер-
   !                    !                    ! жимое ячейки
   !                    !                    ! 1002
---!--------------------!--------------------!--------------
 . ! чтение/запись байта! аналогично предыду-! аналогично
   !                    ! щей директиве      !пред. примеру
---!--------------------!--------------------!--------------
 - ! чтение/запись слова! происходит чтение/ ! 1002а
   ! с декрементом      ! запись с декремен- ! 20-значение
   !                    ! том, т.е. печатает-!    --------
   !                    ! ся содержимое ячей-! а=1000
   !                    ! ки с адресом а-2 и !   ----
   !                    ! запись по текущему !
   !                    ! адресу             !
---!--------------------!--------------------!--------------
: ! чтение/запись байта! аналогично предыду-! аналогично
   ! с декрементом      ! щей директивы      ! пред. примеру
---!--------------------!--------------------!--------------
мп ! пуск мотора магни- ! служат для обеспе- !
   ! тофона             ! ния подмотки       !
мс ! останов мотора     !магнитной ленты (мл)!
   ! магнитофона        !                    !

------------------------------------------------------------
 1 !          2         !          3         !        4
------------------------------------------------------------
мз ! записать информацию! директивы проходят ! сформируйте
   ! на мл              ! в диалоговом режиме! какой-либо
мч ! считать информацию !и позволяют прочесть! массив с по-
   ! с мл               ! или записать инфор-! мощью дирек-
   !                    ! мацию с/на мл. ин- ! тив отладки.
   !                    ! формация - массив  ! например,
   !                    !памяти - определяет-! 1000а
   !                    ! ся в виде файла с  ! 20д
   !                    ! именем. имя файла  ! 1р
   !                    ! не должно превышать! мп
   !                    ! 16 символов. адрес ! мз
   !                    ! начала, длина, имя ! на экране
   !                    ! вводятся в ходе ди-! появится
   !                    ! алога. директивы   ! информация:
   !                    ! позволяют формиро- !"нажмите кла-
   !                    ! фать эталонные мас-!виши магнитофо-
   !                    ! сивы данных, а так-!на "пуск" и
   !                    ! же тексты программ  !"запись"
   !                    !                    ! адрес = 1000
   !                    !                    ! -------
   !                    !                    ! длина = 20
   !                    !                    ! -------
   !                    !                    ! имя = ****
   !                    !                    ! -----
   !                    !                    ! мп
   !                    !                    ! мч
   !                    !                    !"нажмите кла-
   !                    !                    !вишу магнитофо-
   !                    !                    !на "пуск"
   !                    !                    ! адрес = ****
   !                    !                    ! -------
   !                    !                    ! имя = ****
   !                    !                    ! -----
   !                    !                    ! загружен файл
   !                    !                    ! -------- ----
   !                    !                    ! ****
   !                    !                    ! ----
---!--------------------!--------------------!--------------
мф ! выполнить операцию ! осуществляется по- ! мп
   ! "фиктивное чтение" ! иск файла, имя ко- ! мф
   !                    ! торого указано в   !"нажмите кла-
   !                    ! диалоге. найденный !вишу магнито-
   !                    ! файл не записывает-!фона "пуск"
   !                    ! ся в ОЗУ, останов  ! имя = ****
   !                    ! магнитофона проис- ! -----
   !                    ! ходит в конце      ! останов пос-
   !                    ! файла              ! ле файла ****
   !                    !                    ! -------------

------------------------------------------------------------
 1 !          2         !          3         !        4
------------------------------------------------------------
 g ! пуск на программу  ! аргумент директивы ! введите прог-
   ! пользователя       ! определяет адрес   ! рамму, кото-
   !                    !передачи управления.! рая печатает
   !                    !программу можно вве-! символ к.
   !                    ! сти в ОЗУ с помощью!  012700
   !                    ! директив отладки.  !  353
   !                    ! возврат в мсд осу- !  104016
   !                    ! ществляется клави- !  1
   !                    ! шей "стоп" или пе- ! адрg
   !                    ! редачей управления ! к
   !                    ! по адресу 160100   ! -
---!--------------------!--------------------!--------------
<-+! забой              ! удаляется последний!
   !                    ! введенный символ   !
---!--------------------!--------------------!--------------
 к ! выход из мсд       !управление передает-!
   !                    ! ся Фокалу          !
---!--------------------!--------------------!--------------
тк ! директивы переходов! используются для   !
тд ! в различные режимы ! переходов между мо-!
тс ! мсд                ! дулями мсд         !
------------------------------------------------------------

приложение 3. таблица кодов символов

                                              таблица 5.

------------------------------------------------------------
!вос!мар- !  назначение   !регистр!индикация!код!назначение
!код!киро-!    клавиши    !       !на экране! в !кода в
!   !вка  !      ЭВМ      !       !в режиме !реж!драйвере
!   !     !               !       !блред,ису!тс !
!---!-----!---------------!-------!---------!---!----------
! 1 !  2  !         3     !   4   !    5    ! 6 !    7
------------------------------------------------------------
управляющие символы и символы редактирования
адрес вектора прерывания - 60
------------------------------------------------------------
!10 ! <-- !перевод курсора!       !   <---  !10 !перевод ку-
!   !     !на одну позицию!       !         !   !рсора на
!   !     !влево          !       !         !   !одну пози-
!   !     !               !       !         !   !цию влево
------------------------------------------------------------
!12 ! ввод!   ввод строки !       !    j    !12 !перевод ку-
!   !     !               !       !лат, загл!   !рсора в на-
!   !     !               !       !         !   !чало следу-
!   !     !               !       !         !   !ющей строки
------------------------------------------------------------
!14 ! сбр ! очистка экрана!       !    l    !14 !очистка эк-
!   !     !               !       !лат, загл!   !рана
------------------------------------------------------------
!15 ! уст.!Фокал-ii не    !       !    -    !15 !уст. таб.
!   ! таб ! поддерживает  !       !         !   !позиции   2
------------------------------------------------------------
!16 ! рус !переключение на!       !    -    !16 !переключ. 2
!   !     !регистр рус    !       !         !   !на рег. рус
------------------------------------------------------------
!17 ! лат !переключение на!       !    -    !17 !переключ. 2
!   !     !регистр лат    !       !         !   !на рег. лат
------------------------------------------------------------
!20 ! сбр.!Фокал-ii не    !       !    -    !20 !сброс таб.
!   ! таб !поддерживает   !       !         !   !позиции   2
------------------------------------------------------------
!22 ! г   !исходная уста- !       !   г     !22 !исх. уст.
!   !  \  !новка курсора  !       !    \    !   ! курсора
------------------------------------------------------------
!23 ! вс  !перевод курсора!       !    -    !23 !перемещение
!   !     !в начало теку- !       !    а    !   !нижней от
!   !     !щей строки     !       !    !    !   !курсора
!   !     !               !       !         !   !части экра-
!   !     !               !       !         !   !на вверх

------------------------------------------------------------
! 1 !  2  !       3       !   4   !    5    ! 6 !   7
------------------------------------------------------------
!24 ! гт  !перевод курсора!       !    !    !24 !перемещение
!   !     !на 8 позиций   !       !    v    !   !нижней от
!   !     !вправо         !       !    -    !   !курсора
!   !     !               !       !         !   !части экра-
!   !     !               !       !         !   !на вниз
------------------------------------------------------------
!25 ! кла-!используется   !       !         !25 !перевод ку-
!   ! виши!код 21 в функ- !       !         !   !рсора в на-
!   ! нет !ции fchr для   !       !         !   !чало следу-
!   !     !перевода курсо-!       !         !   !ющей строки
!   !     !ра в начало    !       !         !   !(редактиру-
!   !     !следующей стро-!       !         !   !ющий код)
!   !     !ки             !       !         !   !
------------------------------------------------------------
!26 ! <-! !сдвижка в стро-!       !  <--!   !26 !перемещение
!   !     !ке             !       !         !   !правой от
!   !     !               !       !         !   !курсора
!   !     !               !       !         !   !части стро-
!   !     !               !       !         !   !ки влево
------------------------------------------------------------
!27 ! !-->!раздвижка в    !       !  !-->   !27 !перемещение
!   !     !строке         !       !         !   !правой от
!   !     !               !       !         !   !курсора
!   !     !               !       !         !   !части стро-
!   !     !               !       !         !   !ки вправо
------------------------------------------------------------
!30 ! <-+ !удаление после-!       !  <--+-  !30 !удаление
!   !     !днего символа в!       !         !   !последнего
!   !     !строке         !       !         !   !символа
------------------------------------------------------------
!31 ! --> !  перемещение  !       !  --->   !31 !перемещение
----------!  курсора      !       !-------------!курсора
!32 !  !  !  на одну      !       !    !    !32 !на одну   3
----------!  позицию      !       !-------------!позицию
!33 !  !  !  по стрелке   !       !    !    !33 !по        3
----------!               !       !-------------!стрелке
!34 !  \  !               !       !    \    !34 !          3
----------!               !       !-------------!
!35 !  /  !               !       !    /    !35 !          3
----------!               !       !-------------!
!36 !  \  !               !       !    \    !36 !          3
----------!               !       !-------------!
!37 !  /  !               !       !    /    !37 !          3
------------------------------------------------------------
          знаки
адрес вектора прерывания - 60
------------------------------------------------------------
!40 !     !    пробел     !       !         !40 ! пробел
------------------------------------------------------------
!41 !  !  !восклицательный!  пр   !    !    !41 !восклицат.
!   !     !   знак        !       !         !   ! знак
------------------------------------------------------------
!42 !  "  !кавычки        !  пр   !    "    !42 !кавычки

------------------------------------------------------------
! 1 !  2  !       3       !   4   !    5    ! 6 !   7
------------------------------------------------------------
!43 !  #  ! номер         !  пр   !    #    !43 !номер
------------------------------------------------------------
!44 !  $  !знак денежной  !  пр   !    $    !44 !знак денеж-
!   !     !единицы        !       !         !   !ной единицы
------------------------------------------------------------
!45 !  %  !процент        !  пр   !    %    !45 !процент
------------------------------------------------------------
!46 !  &  !коммерческое и !  пр   !    &    !46 !коммерчес-
!   !     !               !       !         !   ! кое  и
------------------------------------------------------------
!47 !  '  !апостроф       !  пр   !    '    !47 !апостроф
------------------------------------------------------------
!50 !  ( !скобка круглая !  пр   !    (   !50 !скобка
!   !     !левая          !       !         !   !
------------------------------------------------------------
!51 !  ) !скобка круглая !  пр   !    )   !51 !скобка
!   !     !правая         !       !         !   !
------------------------------------------------------------
!52 !  *  !звездочка      !  пр   !    *    !52 !звездочка
------------------------------------------------------------
!53 !  +  !плюс           !  пр   !    +    !53 !плюс
------------------------------------------------------------
!54 !  ,  !запятая        !       !    ,    !54 !запятая
------------------------------------------------------------
!55 !  -  !минус          !       !    -    !55 !минус
------------------------------------------------------------
!56 !  .  !точка          !       !    .    !56 !точка
------------------------------------------------------------
!57 !  /  !дробная черта  !       !    /    !57 !др. черта
------------------------------------------------------------
          цифры
адрес вектора прерывания - 60
------------------------------------------------------------
!60 !  0  !               !       !    0    !60 !
------------------------------------------------------------
!61 !  1  !               !       !    1    !61 !
------------------------------------------------------------
!62 !  2  !               !       !    2    !62 !
------------------------------------------------------------
!63 !  3  !               !       !    3    !63 !
------------------------------------------------------------
!64 !  4  !               !       !    4    !64 !
------------------------------------------------------------
!65 !  5  !               !       !    5    !65 !
------------------------------------------------------------
!66 !  6  !               !       !    6    !66 !
------------------------------------------------------------
!67 !  7  !               !       !    7    !67 !
------------------------------------------------------------
!70 !  8  !               !       !    8    !70 !
------------------------------------------------------------
!71 !  9  !               !       !    9    !71 !

               знаки
адрес вектора прерывания - 60
------------------------------------------------------------
!72 !  :  !двоеточие      !       !    :    !72 !двоеточие
------------------------------------------------------------
!73 !  ;  !точка с запятой!       !    ;    !73 !точка с зап
------------------------------------------------------------
!74 !  <  !меньше         !  пр   !    <    !74 !меньше
------------------------------------------------------------
!75 !  =  !равно          !  пр   !    =    !75 !равно
------------------------------------------------------------
!76 !  >  !больше         !  пр   !    >    !76 !больше
------------------------------------------------------------
!77 !  ?  !вопросительный !  пр   !    ?    !77 !вопросит.
!   !     !знак           !       !         !   !знак
------------------------------------------------------------
буквы прописные латинского алфавита
адрес вектора прерывания - 60
------------------------------------------------------------
!100!  @  !               !лат,загл!   @    !100!
------------------------------------------------------------
!101!  a  !               !лат,загл!   a    !101!
------------------------------------------------------------
!102!  b  !               !лат,загл!   b    !102!
------------------------------------------------------------
!103!  c  !               !лат,загл!   c    !103!
------------------------------------------------------------
!104!  d  !               !лат,загл!   d    !104!
------------------------------------------------------------
!105!  e  !               !лат,загл!   e    !105!
------------------------------------------------------------
!106!  f  !               !лат,загл!   f    !106!
------------------------------------------------------------
!107!  g  !               !лат,загл!   g    !107!
------------------------------------------------------------
!110!  h  !               !лат,загл!   h    !110!
------------------------------------------------------------
!111!  i  !               !лат,загл!   i    !111!
------------------------------------------------------------
!112!  j  !               !лат,загл!   j    !112!
------------------------------------------------------------
!113!  k  !               !лат,загл!   k    !113!
------------------------------------------------------------
!114!  l  !               !лат,загл!   l    !114!
------------------------------------------------------------
!115!  m  !               !лат,загл!   m    !115!
------------------------------------------------------------
!116!  n  !               !лат,загл!   n    !116!
------------------------------------------------------------
!117!  o  !               !лат,загл!   o    !117!
------------------------------------------------------------
!120!  p  !               !лат,загл!   p    !120!
------------------------------------------------------------
!121!  q  !               !лат,загл!   q    !121!

------------------------------------------------------------
! 1 !  2  !      3        !   4    !   5    ! 6 !   7
------------------------------------------------------------
!122!  r  !               !лат,загл!   r    !122!
------------------------------------------------------------
!123!  s  !               !лат,загл!   s    !123!
------------------------------------------------------------
!124!  t  !               !лат,загл!   t    !124!
------------------------------------------------------------
!125!  u  !               !лат,загл!   u    !125!
------------------------------------------------------------
!126!  v  !               !лат,загл!   v    !126!
------------------------------------------------------------
!127!  w  !               !лат,загл!   w    !127!
------------------------------------------------------------
!130!  x  !               !лат,загл!   x    !130!
------------------------------------------------------------
!131!  y  !               !лат,загл!   y    !131!
------------------------------------------------------------
!132!  z  !               !лат,загл!   z    !132!
------------------------------------------------------------
              знаки
адрес вектора прерывания - 60
------------------------------------------------------------
!133!  [  !квадратная ско-!       !    [    !133!квадратная
!   !     !бка левая      !       !         !   !скобка
!   !     !               !       !         !   !левая
------------------------------------------------------------
!134!  \  !обратная дроб- !       !    \    !134!обратная
!   !     !ная черта      !       !         !   !дробная
!   !     !               !       !         !   !черта
------------------------------------------------------------
!135!  ]  !квадратная     !       !    ]    !135!квадратная
!   !     ! скобка        !       !         !   !скобка
!   !     ! правая        !       !         !   !
------------------------------------------------------------
!136!  ^  !надчеркивание  !       !    ^    !136!надчеркива-
!   !     !(возведение в  !       !         !   !ние
!   !     !степень)       !       !         !   !
------------------------------------------------------------
!137!  _  !подчеркивание  !       !    _    !137!подчеркива-
!   !     !               !       !         !   !ние
------------------------------------------------------------
!140!  @  !слабое ударение!  лат, !    '    !140!слабое уда-
!   !     !               !  стр  !         !   !рение
------------------------------------------------------------
буквы строчные латинского алфавита
адрес вектора прерывания - 60
------------------------------------------------------------
!141!     !               !       !         !141!
------------------------------------------------------------
!142!     !               !       !         !142!
------------------------------------------------------------
!143!     !               !       !         !143!
------------------------------------------------------------
!144!     !               !       !         !144!

------------------------------------------------------------
! 1 !  2  !       3       !   4   !    5    ! 6 !     7
------------------------------------------------------------
!145!     !               !       !         !145!
------------------------------------------------------------
!146!     !               !       !         !146!
------------------------------------------------------------
!147!     !               !       !         !147!
------------------------------------------------------------
!150!     !               !       !         !150!
------------------------------------------------------------
!151!     !               !       !         !151!
------------------------------------------------------------
!152!     !               !       !         !152!
------------------------------------------------------------
!153!     !               !       !         !153!
------------------------------------------------------------
!154!     !               !       !         !154!
------------------------------------------------------------
!155!     !               !       !         !155!
------------------------------------------------------------
!156!     !               !       !         !156!
------------------------------------------------------------
!157!     !               !       !         !157!
------------------------------------------------------------
!160!     !               !       !         !160!
------------------------------------------------------------
!161!     !               !       !         !161!
------------------------------------------------------------
!162!     !               !       !         !162!
------------------------------------------------------------
!163!     !               !       !         !163!
------------------------------------------------------------
!164!     !               !       !         !164!
------------------------------------------------------------
!165!     !               !       !         !165!
------------------------------------------------------------
!166!     !               !       !         !166!
------------------------------------------------------------
!167!     !               !       !         !167!
------------------------------------------------------------
!170!     !               !       !         !170!
------------------------------------------------------------
!171!     !               !       !         !171!
------------------------------------------------------------
!172!     !               !       !         !172!
------------------------------------------------------------
              знаки
адрес вектора прерывания - 60
------------------------------------------------------------
!173!  [  !фигурная скобка!       !         !173!фигурная
!   !     !левая          !       !         !   !скобка лев
------------------------------------------------------------
!174!  \  !вертикальная   !       !         !174!вертикал.
!   !     !черта          !       !         !   !черта

------------------------------------------------------------
! 1 !  2  !       3       !   4   !    5    ! 6 !    7
------------------------------------------------------------
!175!  ]  !фигурная скобка!       !         !175!фиг. скобка
!   !     !правая         !       !         !   !правая
------------------------------------------------------------
!176!  -  !черта сверху   !       !         !176!черта сверх
------------------------------------------------------------
!177! зб  !забой          !       !         !177!забой
------------------------------------------------------------
управляющие символы
адрес вектора прерывания - 274
------------------------------------------------------------
!201!повтор!многократная  !       !         ! 1 !многократ.
!   !     ! выдача ранее  !       !         !   !выдача ран.
!   !     ! введенного    !       !         !   !введенного
!   !     ! символа       !       !         !   !символа
------------------------------------------------------------
!202!индсу!режим индикации!       !         ! 2 !режим инд.
!   !     !управляющих    !       !         !   !управляющих
!   !     !символов       !       !         !   !символов
------------------------------------------------------------
!204!блок !блокировка ре- !       !         ! 4 !блокировка
!   !ред  !дактирования   !       !         !   !редактир.
!   !     !функций        !       !         !   !функций
------------------------------------------------------------
!   !уст. !   Фокал -ii   !       !         !15 !
!   !таб  !      не       !       !         !   !
----------! поддерживает  !---------------------------------
!   !сбр. !               !       !         !20 !
!   !таб  !               !       !         !   !
----------!               !---------------------------------
!214! рп  !               !   нр  !         !14 !режим рп
------------------------------------------------------------
!220! шаг !     код       !       !рус,стр  ! 0 !упр. код
------------------------------------------------------------
!221!  !  !  управление   ! нр,пр !рус,стр  !41 !красный
----------!  яркостью     !---------------------------------
!222!  "  !               ! нр,пр !рус,стр  !42 !зеленый
----------!               !---------------------------------
!223!  #  !               ! нр,пр !рус,стр  !43 !синий
----------!               !---------------------------------
!224!  $  !               ! нр,пр !рус,стр  !44 !черный
------------------------------------------------------------
!225!граф !    Фокал - ii !       !рус,загл г!5 !графич. реж
----------!      не       !---------------------------------
!226!зап  !  поддерживает !       !загл  з  ! 6 !реж. записи
!   !     !               !       !         !   !в граф. реж
----------!               !---------------------------------
!227!стир !               !       !загл  с  ! 7 !реж. стир-я
!   !     !               !       !         !   !в граф. реж
------------------------------------------------------------
!230! ред !включение режи-!   нр  !стр      !30 !управляющий
!   !     !ма редактирова-!       !         !   !код
!   !     !ния            !       !         !   !

------------------------------------------------------------
! 1 !  2  !       3       !   4   !    5    ! 6 !    7
------------------------------------------------------------
!231!сбр!->сброс правой от!       !стр      !13 !сброс пра-
!   !     !курсора части  !       !         !   !вой от кур-
!   !     !строки         !       !         !   !сора части
!   !     !               !       !         !   !строки
------------------------------------------------------------
!232!курсор!переключение  !   нр  !стр      !72 !переключе-
!   !     ! индикации     !       !         !   !ние индика-
!   !     ! курсора       !       !         !   !ции курсора
------------------------------------------------------------
!233!32/64!установка числа!   нр  !стр      !73 !уст. числа
!   !     !символов в     !       !         !   !символов
!   !     !строке         !       !         !   !в строке
------------------------------------------------------------
!234!инв.с!установка режи-!   нр  !стр      !54 !уст. режима
!   !     !ма негативной  !       !         !   !негативной
!   !     !индикации сим- !       !         !   !индикации
!   !     !волов          !       !         !   !символов
------------------------------------------------------------
!235!инв.э!установка режи-!   нр  !стр      !55 !уст. режима
!   !     !ма негативной  !       !         !   !негативной
!   !     !индикации экра-!       !         !   !индикации
!   !     !на             !       !         !   !экрана
------------------------------------------------------------
!236!уст. !установка режи-!   нр  !стр      !56 !уст.режимов
!   !инд  !мов формирова- !       !         !   !формирова-
!   !     !ния индикаторов!       !         !   !ния индика-
!   !     !в служебной    !       !         !   !торов в сл.
!   !     !строке         !       !         !   !строке
------------------------------------------------------------
!237!подч.!включение режи-!   нр  !стр      !57 !вкл. режима
!   !     !ма подчеркива- !       !         !   !подчеркива-
!   !     !ния символов   !       !         !   !ния в стр.
------------------------------------------------------------
символы табличной графики и дополнительные символы
адрес вектора прерывания - 274
------------------------------------------------------------
!240!      !              !  нр   !         !140!
------------------------------------------------------------
!241!      !              !  нр   !         !141!
------------------------------------------------------------
!242!      !              !  нр   !         !142!
------------------------------------------------------------
!243!      !              !  нр   !         !143!
------------------------------------------------------------
!244!      !              !  нр   !         !144!
------------------------------------------------------------
!245!      !              !  нр   !         !145!
------------------------------------------------------------
!246!      !              !  нр   !         !146!
------------------------------------------------------------
!247!      !              !  нр   !         !147!
------------------------------------------------------------
!250!      !              !  нр   !         !150!

------------------------------------------------------------
! 1 !   2  !       3      !   4   !    5    ! 6 !    7
------------------------------------------------------------
!251!      !              !  нр   !         !151!
------------------------------------------------------------
!252!      !              !  нр   !         !152!
------------------------------------------------------------
!253!      !              !  нр   !         !153!
------------------------------------------------------------
!254!      !              !  нр   !         !154!
------------------------------------------------------------
!255!      !              !  нр   !         !155!
------------------------------------------------------------
!256!      !              !  нр   !         !156!
------------------------------------------------------------
!257!      !              !  нр   !         !157!
------------------------------------------------------------
!260!      !              !  нр   !         !160!
------------------------------------------------------------
!261!      !              !  нр   !         !161!
------------------------------------------------------------
!262!      !              !  нр   !         !162!
------------------------------------------------------------
!263!      !              !  нр   !         !163!
------------------------------------------------------------
!264!      !              !  нр   !         !164!
------------------------------------------------------------
!265!      !              !  нр   !         !165!
------------------------------------------------------------
!266!      !              !  нр   !         !166!
------------------------------------------------------------
!267!      !              !  нр   !         !167!
------------------------------------------------------------
!270!      !              !  нр   !         !170!
------------------------------------------------------------
!271!      !              !  нр   !         !171!
------------------------------------------------------------
!272!      !              !  нр   !         !172!
------------------------------------------------------------
!273!      !              !  нр   !         !173!
------------------------------------------------------------
!274!      !              !  нр   !         !174!
------------------------------------------------------------
!275!      !              !  нр   !         !175!
------------------------------------------------------------
!276!      !              !  нр   !         !176!
------------------------------------------------------------
!277!      !              !  нр   !         !177!
------------------------------------------------------------
символы строчные русского алфавита
адрес вектора прерывания - 60
------------------------------------------------------------
!300!      !              !рус,стр!          !100!
------------------------------------------------------------
!301!      !              !рус,стр!          !101!
------------------------------------------------------------
!302!      !              !рус,стр!          !102!

------------------------------------------------------------
! 1 !  2   !        3     !   4   !     5    ! 6 !    7
------------------------------------------------------------
!303!      !              !рус,стр!          !103!
------------------------------------------------------------
!304!      !              !рус,стр!          !104!
------------------------------------------------------------
!305!      !              !рус,стр!          !105!
------------------------------------------------------------
!306!      !              !рус,стр!          !106!
------------------------------------------------------------
!307!      !              !рус,стр!          !107!
------------------------------------------------------------
!310!      !              !рус,стр!          !110!
------------------------------------------------------------
!311!      !              !рус,стр!          !111!
------------------------------------------------------------
!312!      !              !рус,стр!          !112!
------------------------------------------------------------
!313!      !              !рус,стр!          !113!
------------------------------------------------------------
!314!      !              !рус,стр!          !114!
------------------------------------------------------------
!315!      !              !рус,стр!          !115!
------------------------------------------------------------
!316!      !              !рус,стр!          !116!
------------------------------------------------------------
!317!      !              !рус,стр!          !117!
------------------------------------------------------------
!320!      !              !рус,стр!          !120!
------------------------------------------------------------
!321!      !              !рус,стр!          !121!
------------------------------------------------------------
!322!      !              !рус,стр!          !122!
------------------------------------------------------------
!323!      !              !рус,стр!          !123!
------------------------------------------------------------
!324!      !              !рус,стр!          !124!
------------------------------------------------------------
!325!      !              !рус,стр!          !125!
------------------------------------------------------------
!326!      !              !рус,стр!          !126!
------------------------------------------------------------
!327!      !              !рус,стр!          !127!
------------------------------------------------------------
!330!      !              !рус,стр!          !130!
------------------------------------------------------------
!331!      !              !рус,стр!          !131!
------------------------------------------------------------
!332!      !              !рус,стр!          !132!
------------------------------------------------------------
!333!      !              !рус,стр!          !133!
------------------------------------------------------------
!334!      !              !рус,стр!          !134!
------------------------------------------------------------
!335!      !              !рус,стр!          !135!

------------------------------------------------------------
! 1 !   2  !        3     !   4   !     5    ! 6 !    7
------------------------------------------------------------
!336!      !              !рус,стр!          !136!
------------------------------------------------------------
!337! зб   !              !рус,стр!          !137!
------------------------------------------------------------
символы заглавные русского алфавита
адрес вектора прерывания - 60
------------------------------------------------------------
!340!  ю  !               !рус,загл!    ю    !140!
------------------------------------------------------------
!341!  а  !               !рус,загл!    а    !141!
------------------------------------------------------------
!342!  б  !               !рус,загл!    б    !142!
------------------------------------------------------------
!343!  ц  !               !рус,загл!    ц    !143!
------------------------------------------------------------
!344!  д  !               !рус,загл!    д    !144!
------------------------------------------------------------
!345!  е  !               !рус,загл!    е    !145!
------------------------------------------------------------
!346!  ф  !               !рус,загл!    ф    !146!
------------------------------------------------------------
!347!  г  !               !рус,загл!    г    !147!
------------------------------------------------------------
!350!  х  !               !рус,загл!    х    !150!
------------------------------------------------------------
!351!  и  !               !рус,загл!    и    !151!
------------------------------------------------------------
!352!  й  !               !рус,загл!    й    !152!
------------------------------------------------------------
!353!  к  !               !рус,загл!    к    !153!
------------------------------------------------------------
!354!  л  !               !рус,загл!    л    !154!
------------------------------------------------------------
!355!  м  !               !рус,загл!    м    !155!
------------------------------------------------------------
!356!  н  !               !рус,загл!    н    !156!
------------------------------------------------------------
!357!  о  !               !рус,загл!    о    !157!
------------------------------------------------------------
!360!  п  !               !рус,загл!    п    !160!
------------------------------------------------------------
!361!  я  !               !рус,загл!    я    !161!
------------------------------------------------------------
!362!  р  !               !рус,загл!    р    !162!
------------------------------------------------------------
!363!  с  !               !рус,загл!    с    !163!
------------------------------------------------------------
!364!  т  !               !рус,загл!    т    !164!
------------------------------------------------------------
!365!  у  !               !рус,загл!    у    !165!
------------------------------------------------------------
!366!  ж  !               !рус,загл!    ж    !166!
------------------------------------------------------------
!367!  в  !               !рус,загл!    в    !167!

------------------------------------------------------------
! 1 !  2  !        3      !   4    !    5    ! 6 !     7
------------------------------------------------------------
!370!  ь  !               !рус,загл!    ь    !170!
------------------------------------------------------------
!371!  ы  !               !рус,загл!    ы    !171!
------------------------------------------------------------
!372!  з  !               !рус,загл!    з    !172!
------------------------------------------------------------
!373!  ш  !               !рус,загл!    ш    !173!
------------------------------------------------------------
!374!  э  !               !рус,загл!    э    !174!
------------------------------------------------------------
!375!  щ  !               !рус,загл!    щ    !175!
------------------------------------------------------------
!376!  ч  !               !рус,загл!    ч    !176!
------------------------------------------------------------
!377! зб  !               !рус,загл!   зб    !177!
------------------------------------------------------------

примечание 1. при нажатии на клавишу “су” и алфавитную клавишу формируется код управляющего символа. например, код ж (рус,загл) равен 166, код су/ж равен 26.

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

примечание 3. назначение, указанное в колонке 3, справедливо только в режиме “Фокала” “ред”.

примечание 4. коды передаются из драйвера клавиатуры в драйвер тв, но не передаются в программу.

примечание 5. код и прорисовка символа соответствует коду и прорисовке последнего введенного символа.