Программирование на БК-0010-01/Глава 1

Материал из Emuverse
Данный материал защищён авторскими правами!

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

1.1. Устройство БК-0010-01

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

           ╔═════════════════════╗   ╔═════════════════════╗
           ║  П Р О Ц Е С С О Р  ║   ║     П А М Я Т Ь     ║
           ╚═════════════════════╝   ╚═════════════════════╝


              <        о б щ а я    ш и н а            >


           ╔════════════════════╗    ╔═════════════════════╗
           ║  УСТРОЙСТВА ВВОДА  ║    ║  УСТРОЙСТВА ВЫВОДА  ║
           ╚════════════════════╝    ╚═════════════════════╝

                 Рис.1. Устройство микроЭВМ БК-0010-01

   Процессор -  это  мозг ЭВМ.  Он предназначен для обработки данных и
для управления всеми остальными устройствами.
   В памяти   машины   хранятся  данные,  результаты  их  обработки  и
программа, по которой эта обработка производится.
   Устройства ввода  позволяют  вводить  в  память компьютера данные и
программу их обработки.  В БК есть устройства ввода с клавиатуры, маг-
нитофона и дополнительных устройств (например, джойстика или "мыши").
   Устройства вывода предназначены для сохранения программ и данных во
внешней  памяти (магнитофон) и для выдачи результатов обработки данных
в форме,  удобной для человека. В БК есть устройство вывода на цветной
графический дисплей,  на магнитофон, на генератор звука и на порт вво-
да/вывода,  к которому могут подключаться  дополнительные  устройства,
например, принтер, бытовые приборы или технологическое оборудование.
   Аппаратная часть БК построена по схеме  "Q-Bus"  ("усеченная  общая
шина").  Это  означает,  что  все  устройства ЭВМ,  включая процессор,
память,  клавиатуру,  соединены  друг  с  другом  одними  и  теми   же
электрическими  проводниками  (общей  шиной),  по  котoрым  передаются
сигналы управления и данные. 16 из этих проводников (линий) служат для
передачи адреса и данных в размере одного машинного слова.

1.2. Основные характеристики и организация БК

   Основными характеристиками любой ЭВМ являются разрядность,  объем и
организация памяти, быстродействие и система команд процессора.
   Разрядность БК - 16 бит.  Бит  (от  английского  выражения  "binary
digit" - "двоичная цифра") является минимальной единицей информации. В
одном бите содержится столько  же  информации,  сколько  в  ответе  на
вопрос "да или нет ?".  Один бит информации  передается по одной линии
общей шины в виде одного из двух уровней  напряжения.  Соответственно,
вводятся понятия "логический 0" и "логическая 1". Почему 0 и 1 ?
   Вы наверняка слышали,  что "ЭВМ работает в двоичной системе счисле-
ния". Давайте вспомним о системах счисления.
   В повседневной жизни мы пользуемся десятичной системой счисления  -
для  записи  чисел достаточно 10 цифр:  0,1,2,3,4,5,6,7,8,9.  Наряду с
десятичной в программировании широко применяются двоичная,  восьмерич-
ная и шестнадцатеричная системы счисления.
   Основание десятичной   системы  счисления  равно  10.  Для  примера
возьмем число 847 (в десятичной системе счисления).  Это число из трех
цифр можно представить в виде суммы трех произведений:
                  2       1       0
              8*10  + 4*10  + 7*10  = 800 + 40 + 7 = 847
   Каждое произведение получается умножением соответствующей  цифры  в
записи числа на основание системы счисления (в данном случае число 10)
в степени,  равной номеру позиции цифры.  Например, цифра "7" стоит на
нулевой позиции числа 847, тогда ей (цифре "7") соответствует произве-
дение числа 7 на 10 в степени 0. Напомним, что любое число в степени 0
равно 1. Цифре "4" соответствует произведение числа 4 на 10 (10 в сте-
пени 1), а цифре 8 - произведение числа 8 на 100 (10 в степени 2). Это
правило применяется при переводе чисел из какой-либо системы счисления
в понятную нам десятичную систему.  Позиции цифр (номера  разрядов)  в
записи числа нумеруются от 0 и далее справа налево.
   Для записи чисел в двоичной системе счисления используются 2 цифры:
0 и 1. Попробуем перевести двоичное число 1001 в десятичное, учитывая,
что  основание  системы  счисления  равно 2.  По аналогии с предыдущим
примером  десятичное  значение  двоичного  числа   1001   определяется
сложением произведений:
           3      2      1      0
        1*2  + 0*2  + 0*2  + 1*2  = 1*8 + 0*4 + 0*2 + 1*1 = 9
   Аналогично переводятся  числа  из  восьмеричной системы счисления в
десятичную.  Например,  восьмеричное число 377  в  десятичной  системе
будет равно сумме:
           2      1      0
        3*8  + 7*8  + 7*8  = 3*64 + 7*8 + 7*1 = 255
   Для представления  чисел  в  шестнадцатеричной  системе   счисления
используются    16    цифр:   0,1,2,3,4,5,6,7,8,9,А,В,С,D,E,F.   Буквы
A,B,C,D,E,F  в данном случае  надо  рассматривать  как  цифры,  равные
соответственно  10,11,12,13,14,15.
   Если записывать число в двоичной системе счисления,  один бит будет
соответствовать одному   двоичному   разряду   числа.   Действительно,
двоичная  система наиболее удобна для вычислительной техники,  так как
проще сделать  устройства  для  распознавания  всего  двух  логических
уровней -  0  и 1.  Поскольку бит является слишком мелкой единицей,  в
вычислительной технике используют понятия:  1 байт = 8 бит, 1 К = 1024
байт (килобайт).
   Итак, разрядность БК - 16 бит.  По 16 проводникам общей шины  одно-
временно могут передаваться 16 бит информации, составляющие в совокуп-
ности машинное слово. Следовательно, В БК размер машинного слова равен
16 битам (или 2 байтам).  Данные, которые помещаются в машинное слово,
процессор обрабатывает целиком,  в один прием.  Разрядность ЭВМ влияет
на ее быстродействие.  Например, если целое число занимает 2 байта, то
для  выполнения операции  сложения  таких  чисел  на  8-разрядных  ЭВМ
(например, "Микроша", "Криста") требуется несколько машинных команд, а
на 16-разрядном БК - только одна, что, конечно, быстрее.
   На рис.2  показан  стандартный  способ  записи  разрядов  машинного
слова.  Разряды нумеруются справа налево от 0 до 15. При этом разряд с
номером 0 (нулевой разряд) называется младшим, а разряд с номером 15 -
старшим.  Такой  способ  записи  слова  совпадает  с  записью  числа в
двоичной системе счисления.  Обычно целое число занимает во внутреннем
представлении  в  ЭВМ  одно  слово.  При  этом  старший  разряд  слова
считается знаковым.  Он равен "1" для отрицательных чисел и "0" -  для
положительных.

    15                           8   7                           0
   ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
   │ 0 │ 1 │ 0 │ 1 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ 1 │ 1 │ 0 │ 1 │ 0 │ 0 │
   └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
    └────── старший байт ─────────┘ └─────── младший байт ────────┘

                        Рис.2. Машинное слово

   Быстродействие ЭВМ  зависит  от  тактовой  частоты   процессора   и
некоторых других тонкостей его организации. Для самых простых операций
(типа регистр-регистр) быстродействие БК составляет  около  400  тысяч
операций в секунду. Если же оценивать быстродействие по времени работы
сложных программ с арифметическими расчетами, то разрядность ЭВМ также
влияет на быстродействие, о чем мы уже говорили.
   Память БК состоит из 2-х частей:  оперативного  запоминающего  уст-
ройства (ОЗУ) и постоянного запоминающего устройства (ПЗУ).
   В ОЗУ хранятся программа и данные, которые она обрабатывает. ОЗУ БК
собрано из 16-и больших интегральных схем (БИС) КР565РУ6,  общий объем
ОЗУ составляет 32К.  При выключении компьютера содержимое  ОЗУ  стира-
ется.
   Программа, записанная в ПЗУ, при выключении питания не стирается (в
отличие от содержимого ОЗУ).  Но в ПЗУ нельзя записать информацию,  ее
можно оттуда только прочитать.
   ПЗУ собрано из 4-х БИС КР1801РЕ2.  В первой БИС записана (как гово-
рят, зашита) программа  МОНИТОР -  операционная  система  БК.  МОНИТОР
включает в   себя  драйверы  внешних  устройств,  программу  настройки
компьютера при включении питания,  а также  обеспечивает  операции  по
загрузке  и  запуску  программ.  Драйверы  управляют  работой  внешних
устройств.   Например,   драйвер   магнитофона   обеспечивает    обмен
информацией с магнитофоном.  В трех остальных БИС ПЗУ зашит транслятор
с языка Бейсик,  обеспечивающий  перевод  текста  программы  на  языке
Бейсик  в последовательность команд,  "понятную" для процессора.  Если
подключить к БК блок МСТД,  то в адресное пространство БК вместо  трех
БИС с Бейсиком будут включены две БИС: с интерпретатором языка Фокал и
с тестовой системой диагностики,  проверяющей исправность БК (при этом
еще останется пустое место,куда можно подключить одну БИС объемом 8К).
   Объем ОЗУ БК составляет,  как уже говорилось,  32К,  из которых 16К
отводится для программы и 16К - для изображения на экране.
   Организацию памяти можно образно представить как ряд  пронумерован-
ных по порядку ячеек,  в каждой из которых помещается один байт инфор-
мации (рис.3).
                         ┌───┬───┬───┬───┬───┬───┬───┬───┬───────────
  адреса байтов          │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 10 ...
    (восьмеричные)       ├───┴───┼───┴───┼───┴───┼───┴───┼───────────
  адреса слов            │   0   │   2   │   4   │   6   │ 10 ...
    (восьмеричные)       ├───────┼───────┼───────┼───────┼───────────
  номера разрядов(бит)   │0...15Д│0...15Д│0...15Д│0...15Д│0...15Д ...
    в слове (десятичные) └───────┴───────┴───────┴───────┴───────────

                       Рис. 3. Адресация памяти

   Нумерация начинается с нуля, а максимальный возможный номер (адрес)
определяется разрядностью ЭВМ и в данном случае равен
 16
2  - 1  = 177777 = 65535Д .  (Далее по тексту значения адресов и кодов
машинных команд будут записываться в восьмеричной  системе  счисления,
так как от нее проще перейти к двоичной.  В тех случаях, когда система
счисления не очевидна,  десятичные числа будут записываться  с  буквой
"Д"  в  конце  числа).  Процессор может брать из памяти и записывать в
память один байт (указав предварительно его адрес) либо одно слово  (в
этом  случае  указанный  адрес  должен быть четным).  Машинные команды
размещаются в этой  же  памяти  по  словам,  поэтому  адрес  очередной
машинной команды программы всегда должен быть четным.
   Адреса ячеек ОЗУ БК меняются от 0 до 77777, а адреса ячеек ПЗУ - от
100000 до 177577. На рисунке 4 показано распределение памяти (адресно-
го пространства) БК-0010-01.

   ┌─────────────────┬────────────────────────────────────────────┐
   │   Адреса        │     Содержимое и объем памяти              │
   ╞═════════════════╪════════════════════════════════════════════╡
   │        0        │     Системные переменные, стек             │
   │      777        │     ( 0,5 К )                              │
   ├─────────────────┼────────────────────────────────────────────┤
   │     1000        │                                            │
   │    37777        │     Программа  пользователя                │
   │  (или 67777)    │     ( 15,5 К или 27,5 К в режиме РП )      │
   ├─────────────────┼────────────────────────────────────────────┤
   │    40000        │                                            │
   │  (или 70000)    │     ОЗУ экрана                             │
   │    77777        │     ( 16 К или 4 К в режиме РП )           │
   ├─────────────────┼────────────────────────────────────────────┤
   │   100000        │     Системное ПЗУ : МОНИТОР, драйверы      │
   │   117777        │     ( 8 К )                                │
   ├─────────────────┼────────────────────────────────────────────┤
   │   120000        │     ПЗУ с транслятором Бейсика             │
   │   177577        │     ( 23,9 К )                             │
   ├─────────────────┼────────────────────────────────────────────┤
   │   177600        │     Область системных регистров            │
   │   177777        │     ( 0,1 К )                              │
   └─────────────────┴────────────────────────────────────────────┘
        Рис.4. Распределение адресного пространства БК-0010-01

   Наконец, последняя важнейшая характеристика ЭВМ -  система  команд.
Для  каждого  типа ЭВМ характерен свой набор машинных команд,  которые
она может выполнять, и, следовательно, свой ассемблер. В качестве про-
цессора  в  БК  используется однокристалльный микропроцессор К1801ВМ1.
Система команд этого процессора "DEC-овская",  то есть аналогичная ЭВМ
PDP-11  фирмы  DEC  (Digital Equipment Corporation) - одной из ведущих
зарубежных фирм по производству вычислительной техники.  В СССР  такую
же систему команд имеют ЭВМ типа СМ,  Электроника-60,  ДВК и т.п.  Вот
почему,  кстати, ЭВМ типа ДВК удобно использовать как инструментальную
машину для БК при разработке сложных и больших программ.


1.3. Устройство вывода - дисплей

   Основным устройством вывода для БК является  экран  телевизора.  На
экране можно разместить 24 строки текста (символьных строки),  не счи-
тая самой верхней,  служебной, строки, предназначенной для отображения
информации о текущих режимах работы клавиатуры и экрана. Каждая строка
состоит из 32-х символьных позиций - то есть  в  каждой  строке  можно
разместить до 32-х символов (букв, цифр или других знаков), если вклю-
чен режим экрана "32 символа в строке".  Такая же  строка  вмещает  64
символа, если включен режим экрана "64 символа в строке". Переключение
экрана из одного режима в другой осуществляется одновременным нажатием
клавиш "АР2" и ";".  Режим "64 символа в строке" рекомендуется исполь-
зовать только при работе с черно-белым видеомонитором (телевизором).
   На рис.5  показано изменение номеров строк по вертикали вниз (обоз-
начено осью Y) и  изменение  номеров  позиций  по  горизонтали  вправо
(обозначено осью Х).  Например,  буква "М" на экране находится на 1-ой
позиции 2-ой строки.  Заметим, что места, на которых могут быть распо-
ложены символы (позиции в символьных строках),  называют знакоместами.
Их расположение строго фиксировано, поэтому все буквы имеют одинаковую
ширину и высоту;  постоянно также и расстояние между строками.  Тем не
менее,  если Вы будете программировать на БК в кодах,  это ограничение
можно обойти. В игровых программах часто встречаются "пляшущие" в вер-
тикальном направлении буквы различной высоты, ширины и цвета.
   На дисплее   также  обычно  отображается  курсор.  Это  закрашенный
прямоугольник,  стоящий на том знакоместе, где будет выведен очередной
символ.

      0 1 2 3 4 5 6 7      Х (номера символьных позиций - числа
     ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬──    из интервала от 0 до 31)
   0 │ │ │ │ │ │ │ │ │ │
   1 │ │ │ │ │ │ │ │ │ │
   2 │ │М│А│Р│Т│▓│ │ │ │
   3 │ │ │ │ │ │ │ │ │ │
   4 │
       Y (номера символьных строк - числа
        из интервала от 0 до 23)

   Рис.5. Символьные координаты экрана (режим "32 символа в строке")

   Каждая символьная строка,  в свою очередь,  состоит из 10  горизон-
тальных линий экрана - назовем их точечными строками. Их всего 240 (по
10 точечных строк на 24 символьные  строки).  Каждая  точечная  строка
состоит  из  точек  - это элементарная единица графической информации.
Количество графических точек в строке равно 256 (для режима "32 симво-
ла в строке") или 512 (для режима "64 символа в строке").
   Любой символ на экране - это рисунок,  полученный из отдельных  то-
чек. На рис.6 показано, как буква "М" сформирована из точек на нулевой
символьной позиции нулевой символьной строки. В системном ПЗУ хранится
специальная программа (знакогенератор),  которая при выводе на дисплей
какого-либо символа формирует на экране  соответствующую  картинку  из
точек. В МОНИТОРе есть также подпрограммы для вывода отдельных точек и
прямых линий по координатам.
   Далее, говоря  о координатах (строках и позициях),  не будем указы-
вать,  символьные они или графические (точечные), так как понятно, что
они - символьные,  если речь идет о символах, и графические, если речь
идет о точках.

       0 1 2 3 4 5 6 7 8    Х (номера точечных позиций - числа
      ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬───   из интервала от 0 до 255)
    0 │ │ │ │ │ │ │ │ │ │
    1 │ │■│ │ │ │■│ │ │ │
    2 │ │■│■│ │■│■│ │ │ │
    3 │ │■│ │■│ │■│ │ │ │
    4 │ │■│ │■│ │■│ │ │ │
    5 │ │■│ │ │ │■│ │ │ │
    6 │ │■│ │ │ │■│ │ │ │
    7 │ │■│ │ │ │■│ │ │ │
    8 │ │ │ │ │ │ │ │ │ │
    9 │ │ │ │ │ │ │ │ │ │
        Y (номера точечных строк - числа
            из интервала от 0 до 239)

  Рис.6. Графические координаты экрана (режим "32 символа в строке")

   Запомните, что  в  режиме  "64  символа в строке" одной графической
точке соответствует  один  бит  экранного  ОЗУ.  Поскольку  бит  может
принимать  лишь  два  состояния - 0 или 1,  то графическая точка может
быть либо включена,  либо выключена.  Информацию о цвете точки хранить
негде,  поэтому  режим  "64  символа в строке" используется только для
вывода черно-белых изображений и текстов.
   В режиме   "32   символа   в   строке"   одной   графической  точке
соответствуют два бита ОЗУ.  Количество точек  в  строке  уменьшается,
зато  появляется  возможность  кодировать 4 цвета - красный,  зеленый,
синий, черный. Для подключения бытового цветного телевизора в качестве
цветного  дисплея  необходимо,  как  правило,  специальное согласующее
устройство [10].
   В обоих  режимах  начало  экранного ОЗУ (адрес 40000) соответствует
левому верхнему углу экрана.  При увеличении адреса мы движемся вправо
по  точечной  строке  (ее длина - 64 байт),  пока не перейдем в начало
следующей,  и т.д.  Правый нижний  угол  экрана  соответствует  адресу
77777.  Служебная  строка  занимает 2000 (восьмеричное) байт,  поэтому
графической точке с координатами X=0,  Y=0 соответствуют  два  младших
бита по адресу 42000.
   Все сказанное справедливо в обычной конфигурации памяти,  однако  в
БК есть еще режим расширенной памяти (РП).  В этом режиме экранное ОЗУ
начинается с адреса 70000,  и в нем  помещаются  только  4  символьных
строки. Зато намного больше памяти остается для программы и ее данных.
В  режиме  РП   работают   многие   системные   программы   (например,
копировщики).

1.4. Устройство ввода - клавиатура

     ┌──────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
     │ ПОВТ │ КТ  │     │     │     │ ИНД │ БЛОК│ ШАГ │ СБР │ СТОП│
     │      │     │     │     │     │ СУ  │ РЕД │     │     │     │
     ├───┬──┴┬───┬┴──┬──┴┬───┬┴──┬──┴┬───┬┴──┬──┴┬───┬┴──┬──┴┬────┤
     │   │ ; │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ / │    │
     │   │ + │ ! │ " │ # │ $ │ % │ & │ ' │ ( │ ) │ { │ = │ ? │    │
     ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┤
     │ ТАБ│ Й │ Ц │ У │ К │ Е │ Н │ Г │ Ш │ Щ │ З │ Х │ : │ Ъ │ ВС│
     │    │ J │ C │ U │ K │ E │ N │ G │ [ │ ] │ Z │ H │ * │ } │   │
     ├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┤
     │ СУ │ Ф │ Ы │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Э │ . │       │
     │    │ F │ Y │ W │ A │ P │ R │ O │ L │ D │ V │ \ │ > │       │
     ├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┬───┤
     │ЗАГЛ│СТР│ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б │ Ю │ , │   │   │   │
     │    │   │ Q │ ^ │ S │ M │ I │ T │ X │ B │ @ │ < │   │   │   │
     ├────┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┴───┴─┬─┴───┤   ├───┤   │
     │  РУС │ АР2│                              │ ЛАТ │   │   │   │
     │      │    │         (пробел)             │     │   │   │   │
     └──────┴────┴──────────────────────────────┴─────┴───┴───┴───┘

                   Рис.7. Клавиатура ЭВМ БК-0010-01

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

   СБР          - "сброс". Очищает экран дисплея.

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

   ВС           - "Возврат Строки". Она возвращает последнюю введенную
                  строку, которую тут же можно отредактировать с
                  помощью стрелок и снова ввести клавишей "ВК".

   РУС  ,  ЛАТ  - эти клавиши включают соответственно русский или
                  латинский шрифт. Одновременно в правой части служеб-
                  ной строки высвечивается надпись "РУС" или "ЛАТ".

  ЗАГЛ  ,  СТР  - включают соответственно заглавный или строчный
                  шрифт.

                - "нижний регистр". Одновременное нажатие этой и любой
                  клавиши спецзнаков позволяет ввести спецзнаки (на-
                  пример, для вывода символа "&" надо нажать клавишу
                  нижнего регистра, и, удерживая ее нажатой, нажать
                  клавишу "6"). На клавиатуре БК-0010 соответствующая
                  переключающая клавиша называется "ПР" ("правый
                  регистр").

   СУ           - "Символ Управляющий". Одновременное нажатие этой и
                  любой буквенной клавиши превращает последнюю
                  в управляющую клавишу (их коды на 100 меньше, чем
                  коды латинских букв).

   АР2          - "Второй символ управляющий". Одновременное нажатие
                  этой и буквенной клавиши дает код управления
                  экраном или символ псевдографики (их коды на 100
                  больше, чем коды латинских букв). В БК-0010 ту же
                  функцию выполняет клавиша "НР" ("нижний регистр").
                  Коды всех символов и соответствующих клавиш
                  приведены в Приложении 1.

                 - "забой". "Забивает" ( стирает ) символ, стоящий
                  слева от курсора.

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

                - "сдвижка в строке". Сдвигает часть строки,
                  расположенную справа от курсора, на одну
                  символьную позицию влево.

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

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

   ПОВТ         - многократный повтор ввода последней нажатой клавиши.

   ИНД СУ       - включает режим вывода управляющих символов на экран
                  в виде инверсных соответствующих букв.

   БЛОК РЕД     - запрещает отработку клавиш управления курсором.

   ШАГ          - пошаговое выполнение Бейсик-программы.

   Ниже приводятся  некоторые  полезные управляющие комбинации клавиш.
Далее для обозначения одновременного нажатия 2-х или 3-х клавиш  будем
использовать наклонную черту "/".

   СУ/@         - приостанавливает вывод на дисплей, чтобы Вы могли
                  прочитать быстро уходящую с экрана информацию;

   АР2/СБР      - переключение в режим расширенной памяти (РП) и
                  обратно;

   АР2/:        - включить/выключить курсор;

   АР2/;        - переключить режим 32/64 символа в строке;

   АР2/   /1    - включить красный цвет;

   АР2/   /2    - включить зеленый цвет;

   АР2/   /3    - включить синий цвет;

   АР2/   /4    - включить черный цвет.

   Дополнительные возможности  при  работе  с  клавиатурой  в  Бейсике
описаны в п. 3.5.3.12, а также в "Руководстве оператора" [2].

1.5. Описание системных регистров

   Системные регистры  БК   используются   для   работы   с   внешними
устройствами. Каждый из этих 16-разрядных регистров имеет свой адрес в
адресном пространстве,  расположенном с адреса 177600 по адрес 177777.
Регистры    внешних    устройств    используются    обычно    опытными
программистами,  работающими в кодах. Начинающие могут пока пропустить
данный  пункт и вернуться к нему при необходимости.  Различные способы
работы с системными  регистрами  показаны  в  примерах  на  Бейсике  и
ассемблере в следующих главах.

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

   Регистр состояния клавиатуры имеет адрес 177660.
   В нем используются только два бита.
   Разряд 6 - это бит разрешения прерывания.  Если  в  нем  содержится
логический ноль "0", то прерывание от клавиатуры разрешено; если нужно
запретить прерывание от клавиатуры, то в 6 разряд надо записать "1".
   Разряд 7 - это флаг готовности устройства. Он устанавливается в "1"
при поступлении  в  регистр  данных  клавиатуры  нового  кода.  Разряд
доступен только по чтению.
   Если прерывание от клавиатуры разрешено (в разряд 6  записан  "0"),
то  при  установке  разряда  7 в "1" (при поступлении в регистр данных
клавиатуры  нового  кода)  производится  прерывание  от  клавиатуры  -
читается  код нажатой клавиши из регистра данных клавиатуры,  выдается
звуковой  сигнал  и  производятся  действия,  соответствующие  нажатой
клавише.  При  чтении  регистра  данных  разряд  7  регистра состояния
сбрасывается в "0".

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

   Регистр данных клавиатуры имеет адрес 177662.
   При нажатии  на  определенную клавишу в разрядах 0-6 этого регистра
формируется соответствующий нажатой клавише семиразрядный код.  Запись
нового  кода  в  регистр  не  производится  до тех пор,  пока не будет
прочитан предыдущий код.
   Разряды 7-15 не используются.
   Регистр доступен только по чтению.

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

   Регистр смещения 177664 предназначен для указания начала  экранного
ОЗУ и организации рулонного сдвига экрана.
   При начальной установке экрана  в  регистре  записывается  значение
1330.  Изменение  этого значения на 1 приводит к сдвигу изображения на
экране по вертикали на 1 точечную строку.
   Сразу же  после  включения  питания разряд 9 устанавливается в "1".
При включении режима расширенной памяти разряд сбрасывается в "0".

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

1.5.4. Регистр порта ввода-вывода

   Адрес регистра - 177714.
   Регистр предназначен    для   работы   с   внешними   устройствами,
подключаемыми  к  разъему  "УП"  ("устройство  периферийное").  Такими
устройствами могут быть джойстик, программатор ПЗУ и многое другое.
   При записи по этому адресу данные поступают в порт  вывода,  а  при
чтении   из  этого  регистра  данные  читаются  из  порта  ввода.  Для
реализации  аппаратной  части  каждого  порта  используются   по   две
микросхемы К589ИР12.
   В таблице 1 приводится соответствие разрядов портов ввода и  вывода
контактам разъема "УП".

    Таблица 1. Соответствие разрядов портов контактам разъема "УП"
     ┌────────────────────────────╥────────────────────────────┐
     │        порт  ввода         ║      порт  вывода          │
     ├────────────┬───────────────╫────────────┬───────────────┤
     │ разряды    │ контакты      ║ разряды    │ контакты      │
     │  порта     │ разъема "УП"  ║ порта      │ разъема "УП"  │
     ├────────────┼───────────────╫────────────┼───────────────┤
     │     0      │     В24       ║     0      │   А16         │
     │     1      │     А24       ║     1      │   А13         │
     │     2      │     В23       ║     2      │   В12         │
     │     3      │     В17       ║     3      │   В10         │
     │     4      │     В20       ║     4      │    В5         │
     │     5      │     А20       ║     5      │    В7         │
     │     6      │     В22       ║     6      │    В6         │
     │     7      │     А23       ║     7      │    А7         │
     │     8      │     В31       ║     8      │   А28         │
     │     9      │     А31       ║     9      │   В28         │
     │    10      │     В32       ║    10      │   А27         │
     │    11      │     А32       ║    11      │   В27         │
     │    12      │     В30       ║    12      │   А26         │
     │    13      │     А29       ║    13      │   В26         │
     │    14      │     В29       ║    14      │   А25         │
     │    15      │     А30       ║    15      │   В25         │
     └────────────┴───────────────╨────────────┴───────────────┘

   В Н И М А Н И Е !  Нагрузочная способность порта вывода  ограничена
нагрузочной способностью выходов микросхемы К589ИР12.
   Кроме 16 разрядов портов ввода/вывода на разъем  "УП"  выведены:
 - выходной сигнал "СБРОС" для начальной установки внешнего устройства
(устройства пользователя) командой RESET (контакт А1 разъема  "УП"  );
нагрузочная   способность   вывода   ограничена   -  сигнал  поступает
непосредственно от вывода "INIT" процессора;
 - входной  сигнал  "IRQ2"  - сигнал требования прерывания от внешнего
устройства (контакт В1); вектор прерывания расположен по адресу 100;
 - общий вывод (контакты А11, В11, А18, В18, А19, В19);
 - +5 Вольт (контакты А8,  В8,  А9, В9); во избежание перегрузки блока
питания  БК  питать  устройства  пользователя  от  этих  контактов  не
рекомендуется.
   Устройства, подключаемые  к  контактам  разъема "УП",  должны иметь
следующие уровни сигналов:

         0 B  <  U1  <  0.5 B
       2.4 B  <  U0  <  5.25 B ,

   где U1 - напряжение, соответствующее логической "1" ,
       U0 - напряжение, соответствующее логическому "0" .
   Сигналы инверсные  -  логической  "1"  соответствует низкий уровень
напряжения, а логическому "0" - высокий.
   Подача на  контакты  других  напряжений  может вывести компьютер из
строя.

1.5.5. Регистр управления системными внешними устройствами

   Адрес регистра - 177716.
   Старший байт  регистра  (разряды  8-15)  используются  для  задания
адреса,  с которого запускается процессор при включении  питания  (при
этом  младший  байт  регистра принимается равным 0).  Адрес начального
пуска процессора равен 100000.
   Разряды 0-3 служат для задания режимов работы процессора.
   Разряды 0-3, 8-15 доступны только по чтению.
   Разряды 4-7  доступны  по  чтению  и по записи.  При чтении из этих
разрядов данные читаются из входного системного порта,  а при записи в
эти разряды данные поступают в выходной системный порт.
   Назначение разрядов выходного системного порта:
   Разряд 4 используется для передачи данных на линию.
   Разряд 5 используется  для  передачи  данных  на  магнитофон,  либо
сигнала готовности на линию.
   Разряд 6 используется для  передачи  данных  на  магнитофон  и  для
генерации звукового сигнала.
   Разряд 7 используется для управления двигателем магнитофона ( "1" -
"стоп", "0" - "пуск" ).
   Назначение разрядов входного системного порта:
   Разряд 4 используется для чтения данных с линии.
   Разряд 5 используется для чтения данных с магнитофона.
   Разряд 6  сброшен  в  "0",  если  хотя  бы  одна  клавиша  нажата и
установлен в "1", если все клавиши отжаты.
   Разряд 7 используется для чтения сигнала готовности с линии.