/
Текст
Руководство программиста ЯМБ на
ПП ЭВМ Искра 1030
Руководство программиста — 109 с.
Руководство программиста предназначено для обучения
программированию на языке ЯМБ версии 1.00, используемом в
персональных профессиональных электронных вычислительных машинах
"Искра 1030.11" (ПП ЭВМ).
Руководство программиста содержит описание языка
программирования ЯМБ версии 1.00 и способы программирования на нем.
Оглавление
1. ЯЗЫК ПРОГРАММИРОВАНИЯ ЯМБ
....................................................................4
1.1. Характеристика языка...................4
1.2. Система обозначений....................5
1.3. Загрузка языка...............................5
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е. .8
2.1. Элементарные конструкции языка
................................................................8
2.2. Типы данных..................................9
2.3. Разметка данных..........................12
2.4. Разметка граф документов..........15
2.5. Операторы выборки....................17
2.6. Операторы засылки
(присваивания)...................................19
2.7. Ограничители..............................22
2.8. Метки и переходы.......................24
2.9. Арифметические операции........27
2.10. Логические операции................30
2.11. Операторы циклов.....................33
2.12. Работа с полем элементов........38
2.13. Операторы обработки
информационных структур...............43
2.14. Ввод информации в режиме
диалога................................................48
2.15. Вывод информации на печать и
дисплей................................................50
2.16. Обмен данными с магнитным
диском..................................................59
2.17. Операторы записи и чтения
программ.............................................61
2.18. Работа с каналами связи...........64
2.19. Обработка сбоев........................68
2.20. Обработка прерываний.............71
2.21. Получение значения даты и
времени...............................................74
3. РЕЖИМЫ РАБОТЫ МАШИНЫ.......75
3.1. Способы задания режимов.........75
3.2. Первичный ввод программы......76
3.3. Корректировка программы.........79
3.4. Отладка программы....................80
3.5. Работа с комментариями............83
3.6. Вывод программы на печать......84
3.7. Запись программы на диск.........85
3.8. Чтение программы с диска.........87
3.9. Передача программ по каналу
связи....................................................88
3.10. Работа машины по программе. 91
Приложение 1..........................................95
Таблицы кодирования........................95
Приложение 2..........................................98
Программа передачи программ из
ЭБТ в ПП ЭВМ...................................98
Приложение 3..........................................99
Программа приема программ из ЭБТ
«Нева 501» в ПП ЭВМ.......................99
Приложение 4........................................100
Режим работы машины....................100
Режим работы машины (продолжение)
............................................................101
Приложение 5........................................102
Описание файлов А_APD и A_APDM
............................................................102
Приложение 6........................................103
Описание файлов P_APD и P_APDM
............................................................103
Перечень сокращений...........................106
Перечень рисунков................................107
Перечень таблиц...................................108
Перечень ссылочных документов.......109
4
1. ЯЗЫК ПРОГРАММИРОВАНИЯ ЯМБ
1. ЯЗЫК ПРОГРАММИРОВАНИЯ ЯМБ
1.1. Характеристика языка
1.1.1. Для программирования на персональных профессиональных электронных
вычислительных машинах (ПП ЭВМ) используется язык программирования ЯМБ
(язык машин бухгалтерских) версии 1.00, являющейся развитием версии языка,
использовавшейся в электронных бухгалтерских машинах «Искра 555» и в
электронных бухгалтерских терминалах «Нева 501».
1.1.2. Язык программирования ЯМБ разработан для составления программ
решения всевозможных учетно-статистических и информационно-справочных
задач, связанных с обработкой данных и одновременным формированием
многострочных и многографных документов в любых сферах народного хозяйства.
1.1.3. Структура языка ЯМБ позволяет производить любые операции по обработке
данных, управлять вводно-выводными устройствами, составлять описание форм
выходных документов и массивов данных. Язык дает возможность строить
разветвленные программы обработки цифровой и алфавитно-цифровой
информации.
1.1.4. Язык ЯМБ использует русскую мнемонику, что позволяет оперировать с ним
специалистам с минимальной специальной подготовкой. По своей информационной
емкости ЯМБ — высокоэффективный язык, обеспечивающий экономное
использование оперативного запоминающего устройства (ОЗУ) и внешних
запоминающих устройств (ВЗУ) на магнитных дисках.
1.1.5. С помощью языка ЯМБ можно описывать размещение в ОЗУ числовой и
алфавитно-цифровой информации как формируемой по программе, так и вводимой
с ВЗУ. Язык позволяет пользователю реагировать на различные особые ситуации
доступа, выполняя программную обработку ошибок и сбоев при вводе-выводе.
1.1.6. Язык позволяет оперировать с несколькими типами данных как с постоянной
(фиксированной), так и с переменной длиной. Составные объекты, объединяющие
простые типы данных, включают массивы числовых и алфавитных регистров и
информационные логические записи (строки элементов).
1. ЯЗЫК ПРОГРАММИРОВАНИЯ ЯМБ
5
1.1.7. Арифметические и логические операции, индексирование, безусловная и
условная передача управления дают возможность описывать любые алгоритмы
обработки информации.
1.1.8. Как сама структура программ, так и набор операторов языка ЯМБ в
значительной степени ориентированы на работу с документами. Поскольку важным
аспектом работы ПП ЭВМ являются печать и заполнение различных бланков,
операционных дневников, формуляров и так далее, то средства формирования
отчетных форм реализованы на процедурно-ориентированном уровне, допускающем
вывод информации в каждой графе документа с остановом (или без него),
пропуском отдельных строк, граф, прямой и обратной табуляцией, с
автоматической сменой форматов печати.
1.2. Система обозначений
1.2.1. При описании операторов языка ЯМБ используются металингвистические
скобки (<>).
1.2.2. Необязательные части форматов операторов, то есть части, которые могут
быть использованы или опущены в зависимости от требований конкретной
программы, заключены в квадратные скобки ([ ]).
1.2.3. Части форматов операторов, используемых альтернативно, заключены в
фигурные скобки ({ }). Можно использовать любой из вариантов внутри этих
скобок.
1.2.4. Часть оператора, которая может повторяться несколько раз, заключена в
квадратные скобки, после которых написано многоточие ([ ]…).
1.2.5. В примерах многоточие используется для обозначения опущенной части
программы, не влияющей на понимание примера.
1.3. Загрузка языка
1.3.1. ПП ЭВМ снабжаются загружаемой операционной системой
АДОС,позволяющей пользователю по своему усмотрению использовать тот или
иной из задействованных в них языков программирования.
6
1. ЯЗЫК ПРОГРАММИРОВАНИЯ ЯМБ
1.3.2. Для загрузки в ОЗУ машины операционной системы (ОС) АДОС нужно
вставить в щель левого накопителя на миниатюрных гибких магнитных дисках
(НГМД) дискету с ОС АДОС (ДаС3.060.020) и включить электропитание машины
([1] и [2]).
1.3.3. ПП ЭВМ проверяет работоспособность своих блоков и загружает в ОЗУ ОС,
после чего высвечивает на экране дисплея текст:
Текущая дата: Вт 1-01-1980
Введите дату
После ввода с АЦК даты работы в формате «месяц-число-год» или просто нажатия
клавиши (именуемой в дальнейшем «Пуск») высвечивается текст:
Текущее время: 0:00:40,37
Введите время
После ввода с АЦК времени начала работы в формате «часы:минуты:секунды» или
просто нажатия клавиши «Пуск» высвечивается текст:
ПП ЭВМ ИСКРА-1030
АДОС версия 2.0 (1986 г.)
А>
1.3.4. После этого с АЦК нужно ввести наименования загружаемых файлов, состав
которых определяется потребностями предстоящей работы: а-apd «ПУСК», если
предстоит работа по каналам связи, disk40 «Пуск», если последующие файлы и
программы на ЯМБ расположены на дискетах, отформатированных как
односторонние (на 40 дорожек).
1.3.5. Выньте из НМГМД дискету с АДОС и вставьте на ее место дискету ОС ЯМБ
(ДаС3.060.020-02) и введите с нее файлы, набирая их наименование на АЦК: 64Х16
«Пуск», если в процессе работы предстоит переход к формату экрана 16 строк по
64 знака в строке (то есть к формату ЭБТ и ЭБМ). Если такой переход не
предвидится, файл не загружают. P-apd «Пуск», если предстоит работа хотя бы по
одному из каналов связи. К моменту загрузки файлов каналы связи и
1. ЯЗЫК ПРОГРАММИРОВАНИЯ ЯМБ
7
подключенные к ним устройства должны быть в рабочем состоянии и готовы к
работе. Тексты файлов приведены в приложениях 5 и 6. jmb «Пуск».
1.3.6. После завершения загрузки файла jmb на экране высвечивается текст:
ЯМБ-1.00 (.....) СМЕНИТЕ ДИСКЕТЫ ДЛЯ РАБОТЫ С ЯМБ и нажмите ПУСК
Текст в скобках обозначает месяц и год загруженной редакции файла. Нажмите
клавишу «Пуск». Машина проверяет наличие в дисководах системных дискет. Если
хотя бы в одном НГМД осталась системная дискета, высветится текст:
Смените дискету на дисководе А (В) и нажмите ПУСК
Если системных дискет в НМГМД нет, после нажатия клавиши «Пуск» высветится
текст с расшифровкой назначения функциональных клавиш в ЯМБ'е:
F1-ЛИСТ F2-ПП F3-ВВ F4-ВЫВ F5-РЕЖ F6-ПР F7-ОТЛ F8-УП F9- F10-АДОС
ПП ЭВМ готова к работе с программами на ЯМБ'е.
8
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.1. Элементарные конструкции языка
2.1.1. При составлении программ на языке ЯМБ используется фиксированный
набор символов, включающий буквы, цифры и специальные символы:
0, 1 … 9 — цифры,
А, Б … Я — заглавные буквы русского алфавита, кроме букв Е и Ь,
+ — плюс,
- — минус (дефис),
* — звездочка,
/ — косая черта,
= — равно,
> — больше,
< — меньше,
, — запятая,
& — амперсанд (коммерческое «И»),
# — специальный символ (номер),
; — точка с запятой,
. — точка,
" — кавычки,
§ — специальный символ (знак денежной единицы),
! — восклицательный знак,
( — круглая скобка левая,
) — круглая скобка правая,
' — апостроф,
% — проценты,
→ — стрелка (знак засылки),
? — вопросительный знак,
: — двоеточие.
Пробел не имеет графического изображения. Для обозначения пробела в описании
языка используется символ — .
2.1.2. Минимальная фиксированная последовательность символов, которой
присвоен постоянный смысл, называется оператором языка ЯМБ. Операторы
служат для описания определенных действий, производимых по программе, или
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
9
для описания типов данных, используемых в программе, или служат
программными метками.
2.1.3. Последовательность операторов, которая начинается меткой Псn или РПСn,
составляет блок программ, называемый программной строкой. Оператор — метка
Псn или РПСn включает номер («имя») программной строки — n, который
присваивается программистом каждой программной строке, и в ЯМБ'е версии 1.00
представляет собой любое целое положительное число от 0 до 65535.
2.1.4. Количество операторов в программной строке не более 20000. Порядок
нумерации программных строк — произвольный. В программе не должно быть
программных строк с одинаковыми номерами.
2.1.5. Последовательность программных строк составляет текст программы. Текст
программы завершается оператором «точка» (.).
2.1.6. Программа выполняется последовательно — независимо от порядка
нумерации программных строк. Запуск программы возможен с любой программной
строки, начинающейся меткой РПСn.
2.2. Типы данных
2.2.1. Язык ЯМБ предусматривает возможность работы с тремя типами данных, то
есть с тремя видами информационных структур, представленных в оперативной
памяти ПП ЭВМ. К этим информационным структурам относятся:
– регистры;
– элементы;
– константы.
2.2.2. Регистром называется область оперативной памяти фиксированной длины,
автоматически резервируемая для хранения информации. ЭВМ позволяет
оперировать с регистрами трех типов:
– числовые регистры;
– алфавитные регистры;
– индексные регистры.
2.2.3. Числовой регистр — это область ОЗУ, предназначенная для хранения целых
и дробных, положительных и отрицательных чисел и нуля, используемых в
10
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
программе. Числовые регистры делятся на короткие — для хранения чисел длиной
до 6-ти десятичных разрядов (без учета десятичной запятой в дробных числах) и
длинные — для хранения чисел длиной до 14 десятичных разрядов (без учета
десятичной запятой).
2.2.4. Алфавитный регистр — это область оперативной памяти, предназначенная
для хранения алфавитно-цифровой информации разрядностью до 8 символов.
2.2.5. Числовые и алфавитные регистры могут объединяться в массивы.
Расположение регистров в массивах — последовательное (сначала — короткие
числовые, затем — длинные числовые, затем — алфавитные). Количество регистров
каждого массива задается в программе.
2.2.6. Индексный регистр — это область оперативной памяти, предназначенная для
хранения целых положительных чисел длиной до 14 десятичных разрядов или
нуля. Основное назначение индексных регистров — косвенное задание (индексация)
различных параметров. Все индексные регистры имеют одинаковую длину.
Количество индексных регистров и их разрядность — задаются в программе.
2.2.7. Элементом называется область ОЗУ, формируемая в процессе выполнения
программы и содержащая алфавитно-цифровую информацию переменной длины.
Последовательность элементов составляет логическую запись (информационную
строку), именуемую строкой элементов.
2.2.8. Информацию из регистров и элементов можно использовать для различных
вычислений по программе, пересылать внутри ОЗУ, выводить на печать, экран и
диск и вводить с клавиатуры и диска.
2.2.9. Для использования в программе заранее известной числовой или алфавитноцифровой информации служат константы. Константа — это написанная
непосредственно в тексте программной строки последовательность цифровых или
алфавитно-цифровых символов, над которой можно выполнять различные
действия по программе. В ЯМБ'е версии 1.00 используются константы 4-х типов:
– числовые,
– алфавитные,
– комментарии.
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
11
2.2.10. Числовая константа — это любое положительное десятичное число (целое
или дробное) или нуль, написанное непосредственно в тексте программной строки.
Максимально допустимая разрядность числовой константы — 14 десятичных знаков
(без учета десятичной запятой). Числовую константу можно использовать для
засылки в числовые или индексные регистры, или в алфавитные регистры, или в
элементы, для вычисления, сравнения и для вывода на печать или экран.
2.2.11. Алфавитная константа — это любая последовательность алфавитноцифровых символов, написанная непосредственно в тексте программной строки и
ограниченная кавычками. Алфавитная константа может включать любые
графические символы (и пробел), которые позволяет вводить АЦК, в том числе и
сами кавычки, которые внутри константы нужно писать всегда удвоенными.
Количество символов в алфавитной константе — переменное: от 1 до 65530.
Алфавитные константы используются для засылки информации в алфавитные
регистры и элементы, для вывода на печать и на экран, для сравнения и
формирования.
2.2.12. Для засылки в алфавитный регистр или элемент информации, содержащей
символы, которых нет на АЦК, используют специальные константы. Специальная
константа — это последовательность закодированных символов, ограниченная слева
и справа признаками начала и конца. Специальные константы кодируются 8битным кодом. Таблица кодирования приведена в приложении 1.
2.2.13. Каждый символ специальной константы записывается двумя 16-ричными
цифрами, из которых 1-ая обозначает 4 старшие бита 8-битного кода, а 2-ая — 4
младшие бита кода. Для обозначения 16-ричных цифр 0–9 используются
соответствующие десятичные цифры, а числа 10, 11, 12, 13, 14 и 15 обозначаются
соответственно латинскими буквами А, В, C, D, E и F. В качестве признака начала
и конца такой константы используется символ «апостроф» (').
2.2.14. Специальные константы п. 2.2.12 можно использовать для вывода на экран,
печать или для записи в регистры или в элементы и вообще для описания любой
последовательности знаков, обрабатываемых по программе.
Примеры:
1) Специальная константа '5354415254' описывает цепочку символов START;
12
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2) Специальная константа 'ЕВЕFЕЕЕ5Е3' эквивалентна алфавитной константе
"КОНЕЦ";
3) Специальная константа '3135363233' эквивалентна числовой константе
15623.
Все указанные константы могут обрабатываться по программе как
соответствующие алфавитно-цифровые данные.
2.2.15. Для подачи на вводно-выводные устройства различных команд управления и
для вывода другой информации используются специальные константы, начало и
конец которых обозначают символом / (косая черта).
2.2.16. Вариант использования специальной константы (шифр константы или код
операции) указывается одной десятичной цифрой от 0 до 7, которая пишется сразу
после символа начала константы. Например, при использовании специальной
константы /005/ происходит перевод на строку бумаги в печатающем устройстве
или перевод курсора на строку вниз на экране дисплея. Константа /003/ гасит на
экране всю информацию. Подробно использование специальных констант для
управления работой внешних устройств ЭВМ рассматривается в п. 2.15 и 2.18.
2.3. Разметка данных
2.3.1. Прежде чем запомнить в регистре (п. 2.2.2) какую-либо информацию,
необходимо выделить для него область ОЗУ. Для этого применяют оператор
«разметка данных» — РД.
2.3.2. Оператор РД резервирует в ОЗУ области для индексных, числовых и
алфавитных регистров, используемых в программе. При этом числовые и
алфавитные регистры могут быть сгруппированы в массивы с независимой
нумерацией регистров. Индексные регистры и массивы числовых и алфавитных
регистров размещаются в ОЗУ последовательно. В параметрах оператора РД
первым указывается количество и разрядность индексных регистров, затем
количество коротких числовых, длинных числовых и алфавитных регистров в
каждом массиве, начиная с начального (нулевого) массива. Формат оператора:
РД И <количество индексных регистров> [,<разрядность индексных регистров в
байтах>] К <х > Д <у > А <z >…[К <х > Д <у > А <z >];
[<код разделителя записей><код разделителя элементов>];
где х…х — количество коротких числовых регистров
(соответственно в массивах регистров 0,…n),
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
13
у…у — количество длинных числовых регистров
(соответственно в массивах регистров 0,…n),
z…z — количество алфавитных регистров в массивах 0,…n.
2.3.3. Количество всех регистров любого типа задается целым десятичным числом.
Количество 0 можно не писать, но буквы И, К, Д, А, обозначающие тип регистров,
писать необходимо.
2.3.4. Разрядность всех коротких и длинных числовых и алфавитных регистров
всегда постоянна (см. п. 2.2.3 и 2.2.4) и равна у коротких числовых регистров — 4
байтам, у длинных числовых и алфавитных регистров — по 8 байтов. Разрядность
же индексных регистров не постоянна, а задается количеством байтов: от 1 до 7. В
каждый момент времени все индексные регистры имеют одинаковую длину.
Разрядность в 2 байта можно не указывать — она считается стандартной. В этом
случае после количества индексных регистров запятую писать не надо. Каждый
байт индексного регистра позволяет хранить два разряда числа. Знак числа в
индексном регистре не хранится, поэтому в него можно засылать только
положительные числа или нуль. Суммарная емкость всех регистров, заданных
каждым массивом оператора РД, не должна превышать 65535 байтов.
2.3.5. Элементы имеют переменную длину. Количество элементов и их длина в
программе не задаются. Длина каждого элемента определяется длиной записанной
в нем информации. Количество элементов определяется номером последнего
элемента, в который записана информация. Часть поля ОЗУ, занятую строками
элементов, называют полем элементов.
2.3.6. В ОЗУ и на технических носителях конец каждого элемента обозначается
стандартным символом-разделителем. Начало каждой строки элементов
обозначается другим символом-разделителем. В качестве стандартных символовразделителей используются специальные символы — разделитель элементов РЭ и
разделитель записей (строк элементов) РЗ. 8-битный код РЭ — 00011111 (1F или
115), а РЗ — 00011110 (1Е или 114). Для разделителей РЭ и РЗ их 8-битный код
совпадает с 7-битным (поскольку старший — 8-ой бит — равен нулю). Разделители
записей выставляются всегда в начале записи (строки поля элементов), а
разделитель элементов — всегда после элемента.
14
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.3.7. ЯМБ допускает использовать на технических носителях как стандартные, так
и нестандартные разделители. Коды символов, используемые в качестве
разделителей записей и элементов на технических носителях, указываются в
операторе РД после разметки массивов регистров. Параметры <код разделителей
записей> и <код разделителей элементов> задаются каждый тремя десятичными
цифрами, в которых первая цифра обозначает три старшие бита 7-битного кода
разделителя, а две следующие цифры — 4 младших бита кода. Не рекомендуется
использовать в качестве разделителей записей и элементов коды 112 и 113 — они
используются в качестве стандартных разделителей программной информации.
Коды стандартных разделителей записей и строк (п. 2.3.6) в операторе РД можно
не писать (в этом случае после разметки массивов регистров пишут два раза точку
с запятой). В поле элементов ОЗУ используются всегда только стандартные
разделители.
2.3.8. Резервирование ОЗУ и разметка регистров, выполненные оператором РД,
остаются без изменения вплоть до выполнения нового оператора РД. Операторы РД
можно писать в любом месте любой программной строки программы.
2.3.9. Если несколько массивов регистров подряд (2 или более) имеют одинаковую
разметку регистров, её можно указать в операторе РД один раз, заключив в
круглые скобки и указав после правой (закрывающей) скобки количество
повторяющихся разметок. Номера массивов регистров в операторе РД в явной
форме не задаются. Номер массива определяется расположением разметки
регистров данного массива относительно разметок регистров других массивов.
Примеры операторов РД:
1) РД И100,3 К20 Д10 А55;
В ОЗУ резервируется место для 100 индексных регистров емкостью по 3 байта
каждый и один массив регистров (нулевой), состоящий из 20 коротких числовых
регистров (по 4 байта каждый), 10 длинных числовых регистров (по 8 байтов
каждый) и 55 алфавитных регистров (по 8 байтов каждый). Разделители строк
(записей) и элементов — стандартные.
2) РД И3 (К100 Д10 А13)5;
В ОЗУ резервируется место для 3-х индексных регистров стандартной емкости (по
2 байта каждый) и 5 одинаковых массивов регистров (с номерами 0,1,2,3 и 4), в
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
15
каждом из которых по 100 коротких числовых, по 10 длинных числовых и по 13
алфавитных регистров. Разделители информации — стандартные.
3) РД И16 К496 Д65 А200 К100 Д А5 К Д20 А; 210204;
В ОЗУ резервируется место для 16 индексных регистров емкостью по два байта
каждый и для трех массивов регистров. Нулевой массив состоит из 496 коротких
числовых, 65 длинных числовых и 200 алфавитных регистров. Массив 1 состоит из
100 коротких числовых и 5 алфавитных регистров. Массив 2 (последний) состоит
из 20 длинных числовых регистров. В качестве разделителей записей принимается
код символа * (210), а в качестве разделителей элементов — код символа $ (204).
4) РД И20 К ДА;
В ОЗУ резервируется место только для 20 индексных регистров емкостью по 2
байта каждый. Разделители записей и элементов — стандартные.
2.4. Разметка граф документов
2.4.1. Если программой предусмотрено формирование выходного документа или
вывод любой информации на печать и (или) на экран, то формат выводимой
информации (формат документа) должен быть предварительно описан в
программе. Для этой цели используется оператор разметки граф документа — РГ.
Оператор описывает выходной документ, формируемый по программе. Графы
формируемого документа описываются последовательно.
Формат оператора:
РГ <графа 1> [<графа 2> … <графа n>];
где n — количество граф в документе.
2.4.2. Параметр <графа>… представляет собой целое трехзначное десятичное
число, в котором первые две цифры означают количество печатных позиций
(знакомест) в графе. Их называют «разрядностью графы». Третья цифра означает
количество десятичных знаков после запятой при выполнении всех арифметических
операций, выполняемых в данной графе. Ее называют «точностью графы».
2.4.3. Все числовые данные (результаты вычислений, информация из числовых
регистров, числовые константы), выводимые на печать в каждой графе документа,
выводятся с точностью этой графы, указанной в операторе РГ.
16
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.4.4. Все вычисления, производимые по программе, в ЭВМ выполняются с
точностью текущей графы, то есть с точностью графы, определенной в программе
к моменту выполнения вычислений.
2.4.5 Количество граф в операторе РГ — произвольное — от 1 до 233. Количество
печатных позиций в каждой графе — тоже произвольное — от 0 до 99. Суммарное
количество печатных позиций не должно превышать количества, допускаемого
длиной бумагоопорного вала АЦПУ (при выводе информации на печать) и
количества допустимых позиций в одной строке дисплея (при выводе на экран).
Точность каждой графы — произвольна: от 0 до 7-ми знаков после запятой.
2.4.6. Допускается в операторе РГ не писать все повторяющиеся подряд параметры
<графа>, а указывать его один раз, заключая в круглые скобки, и после
закрывающей скобки целым десятичным числом указывать количество граф с
повторяющейся разметкой, а после него обозначить пробел.
2.4.7. Кроме оператора РГ для назначения (или изменения) разрядности и точности
графы в процессе выполнения программы служит оператор ИГ («изменить
графу»). Этот оператор можно использовать в любом месте любой программной
строки. Подробно действие операторов РГ и ИГ рассмотрено в п. 2.15.
2.4.8. Оператор «разметка граф» действует до тех пор, пока в тексте программы не
встретится другой оператор РГ с иными параметрами. Это дает возможность
последовательно формировать по одной программе выходные документы разных
типов (выполнять смену форматов).
2.4.9. Примеры написания оператора разметки граф документов:
1) РГ 100 212 073 111;
Оператор предусматривает формирование по программе документа, состоящего из
4-х граф. Количество печатных позиций в первой графе — 10, во второй — 21, в
третьей — 7, в 4-ой — 11. Точность вычислений в графе 1 — нуль (до целых чисел),
в графе 2 — два знака после запятой, в графе 3 — три, в графе 4 — один знак после
запятой.
2) РГ 040 102 (115)4;
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
17
В документе (на экране) 6 граф (столбцов). Разрядность граф — 4,10 и 4 раза по 11
позиций. Точность граф — 0,2 и 4 раза по пять знаков после запятой.
2.5. Операторы выборки
2.5.1. Для обработки информации в программе указывают тип и номер конкретного
регистра или элемента, информацию из которого нужно использовать для
обработки.
2.5.2. Тип регистра или элемента обозначается буквой: И — индексный регистр, Р —
числовой регистр, А — алфавитный регистр, Э — элемент. Короткие и длинные
числовые регистры обозначаются одинаково (у них сквозная нумерация).
2.5.3. Форматы операторов:
И
Р
А
Э
<номер>
<номер>
<номер>
<номер>
где <номер> — порядковый номер регистра или элемента (начальный — нуль) —
целое положительное число не более 65535 или 0.
2.5.4. Номер индексного регистра не должен превышать количества этих регистров
(без 1), заданного в операторе РД.
2.5.5. Номер алфавитного регистра не должен превышать их количества (без 1),
заданного в операторе РД для соответствующего массива регистров.
2.5.6. Номер числового регистра не должен превышать суммы коротких и длинных
числовых регистров (без 1), заданного в операторе РД для соответствующего
массива регистров (п. 2.3.2).
2.5.7. Номер элемента не должен превышать фактического количества элементов в
поле элементов (без 1), начиная с «текущей строки» поля элементов (подробнее — в
п. 2.12).
2.5.8. В дальнейшем для краткости операторы п. 2.5.3 будем писать в виде Иn, Рn,
Аn, Эn, где n — номер регистра или элемента.
18
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.5.9. Номер в операторах п. 2.5.8 можно задавать как непосредственно целым
числом, так и косвенно — через информацию в другом числовом или индексном
регистре. Для косвенного задания номера можно использовать только числовой или
индексный регистр. При использовании для косвенного задания номера числового
регистра этот номер равен целой части числа, хранящегося в этом регистре. Число
должно быть не отрицательным.
2.5.10. Операторы с косвенной адресацией используются в тех случаях, когда
действительное значение номера в операторах не известно заранее, а вычисляется
или задается по программе. При косвенном задании номера операторы выборки
имеют вид: ИИn, ИРn, РИn, РРn, АИn, АРn, ЭИn, ЭРn. Здесь первая буква
определяет тип регистра или элемента, а вторая — тип и номер регистра, в котором
хранится номер искомого регистра (элемента). Например, если И1 содержит число
5, то ИИ1 означает И5, РИ1 — Р5, АИ1 — А5, ЭИ1 — Э5.
2.5.11. Для указания, к какому именно массиву относятся регистры, используемые
в программе, служит оператор выбора массива с форматом:
МС <номер массива>
где <номер массива> — порядковый номер массива регистров (начиная с нуля).
Все числовые и алфавитные регистры, указанные в программе после этого
оператора, относятся к заданному массиву. Номер массива, как и номер регистра,
тоже может задаваться как непосредственно целым числом, так и косвенно — через
информацию в числовом или индексном регистре.
В этом случае на месте номера n пишется Иn или Рn (МСИn или МСРn). При
написании МСРn номер массива выбирается из регистра Рn текущего (заданного
ранее) массива.
Заданный оператором МСn, МСИn или МСРn номер массива остается
задействованным до тех пор, пока в тексте программы не встретится оператор
выбора массива, определяющий массив с другим номером. По умолчанию (то есть
до МСn) используются регистры нулевого массива.
2.5.12. При многократной смене номера массива, а также для большей гибкости
написания программы номер числового или алфавитного регистра можно задавать
через запятую в виде:
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
19
Р <номер регистра>, <номер массива>
А <номер регистра>, <номер массива>
где <номер регистра> и <номер массива> — целые числа (непосредственное
задание) или Рn, или Иn (косвенное задание — см. п.п. 2.5.9 и 2.5.10). Таким
образом, числовой или алфавитный регистр можно задать 12-ю разными
способами, сгруппированными в табл. 1 (на примере задания числового регистра).
Таблица 1: Способы задания числового регистра
Способ задания номера регистра
Способ задания номера массива
Косвенный
Непосредственный
в Иn
в Рn
Рn,m
РИn,m
РРn,m
Косвенный в Иm
Рn,Иm
РИn,Иm
РРn,Иm
Косвенный в Рm
Рn,Рm
РИn,Рm
РРn,Рm
Рn
РИn
РРn
Непосредственный
Текущий
Во всех случаях «текущим массивом» остается массив, заданный оператором Мсn
(МСРn, МСИn). Форму задания п. 2.5.12 нельзя использовать для косвенной
адресации (п. 2.5.9).
2.6. Операторы засылки (присваивания)
2.6.1. Операторы засылки (присваивания) позволяют засылать необходимую
информацию в регистры и элементы, а также организовывать пересылки
информации внутри ОЗУ. Операторы присваивания образуются символом засылки
→ (стрелка), после которой пишут обозначение регистра или элемента, в который
необходимо заслать информацию.
Например:
→Иn — заслать
→Рn — заслать
→Аn — заслать
→Эn — заслать
информацию
информацию
информацию
информацию
в
в
в
в
Иn,
Рn,
Аn,
Эn.
Номера регистров и элементов можно задавать и косвенно:
→РРn, →РИn, →ИРn, →АРn, →АИn, →ЭРn.
2.6.2. В числовые регистры можно засылать только числовую информацию
(содержащую цифры, не более одной запятой, знаки плюс или минус в начале или
20
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
в конце информации). Точность засылаемого в числовой регистр числа — не более
7. В индексные регистры можно засылать только целые числа. Разрядность
засылаемых чисел не должна превышать предельно допустимую разрядность
регистра (п.п. 2.2.3 и 2.2.6). Засылаться может информация из констант, регистров
и элементов, а также результаты вычислений или набираемая с клавиатуры в
режиме диалога (п. 2.14).
2.6.3. В алфавитные регистры можно засылать любую алфавитно-цифровую и
цифровую информацию из алфавитных и числовых констант, из элементов,
алфавитных, числовых и индексных регистров, а также вводимую с АЦК и из
специальных констант '…'. После засылаемой информации в следующий байт
алфавитного регистра записывается признак конца информации (код 0.0). Если
разрядность засылаемой информации превышает 8 символов, то символы, начиная
с 9-го, занимают следующий регистр (или несколько следующих, в зависимости от
длины информации). При засылке в регистр информации с разрядностью, кратной
8 символам, следующий по номеру регистр необходимо пропустить, чтобы избежать
«слияния» информации в регистрах. При выборке информации указывается всегда
только номер регистра, в котором начинается информация. Например, при
выполнении фрагмента:
"АБВГДЕЖЗИК" →А0
алфавитная информация (10 символов) после засылки в регистр А0 займет весь
этот регистр и два байта следующего регистра А1 (признак конца запишется в 3-й
байт этого регистра). Следующую засылку можно выполнять в любой алфавитный
регистр, начиная с А2. 16-ти символьная информация заняла бы в этом случае А0
и А1 полностью, а признак конца записался бы в А2. Следующий свободный
регистр — А3. Порядок засылки информации в различные регистры (числовые,
индексные, алфавитные) произвольный.
2.6.4. Количество регистров, занимаемых информацией при засылке, не должно
превышать их количества, заданного в операторе РД. Попытка заслать
информацию в регистр, номер которого превышает предельно допустимый, вызовет
сбой.
2.6.5. В элементы можно засылать любую цифровую и алфавитно-цифровую
информацию. Разрядность каждого элемента равна разрядности засылаемой в него
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
21
информации и не может превышать 65535 символов. Порядок засылки информации
в различные элементы — произвольный.
2.6.6. В числовых и индексных регистрах информация хранится в двоичнодесятичном коде в «упакованном» виде, при котором каждая цифра занимает 4
бита (пол байта) ОЗУ. Таким образом, в двухбайтовый индексный регистр можно
заслать число разрядностью до 4-х цифр, в короткий числовой регистр — до 6, а в
длинный числовой регистр — до 14. В числовых регистрах один байт резервируется
под знак числа и его точность. В алфавитных регистрах и элементах информация
хранится в 8-битном коде (в «распакованном») виде. Каждый алфавитно-цифровой
символ занимает один байт ОЗУ. При пересылках информации из числовых или
индексных регистров в алфавитные регистры или элементы информация
подвергается «распаковке»: каждая цифра вместо полубайта занимает целый байт;
если точность числа не равна нулю, в соответствующее место вставляется:
– код запятой — при засылке в алфавитный регистр;
– код точки — при засылке в элемент.
При засылке отрицательного числа код знака «минус» формируется в начале числа
(в его 1-м байте). При пересылках числовой информации из алфавитных регистров
или элементов в числовые или индексные регистры она «упаковывается» из 8битного кода в двоично-десятичный и переводится в формат числа: байты с кодом
запятой (2.12) или точки (2.14) воспринимаются как десятичная запятая и
переводятся в «точность числа». Код знака минус (2.13) может располагаться
только в начале информации или в самом ее конце. Не допускается в информации
иметь более одного кода точки или запятой и более одного минуса. Конец числа —
код 0.0 в алфавитном регистре и 1.15 в элементе. При упаковке младшие 4 бита
образуют очередной разряд числа. Количество цифр в числе должно быть не
больше 6 при засылке в короткий числовой регистр, не больше 14 при засылке в
длинный числовой регистр и не более удвоенной разрядности индексных регистров
— при засылке в индексный регистр (его разрядность задается в байтах!). При
нарушении этого правила фиксируется сбой.
2.6.7. В программе можно писать подряд несколько операторов присваивания
(такую процедуру именуют «цепочкой засылок»).
Например:
22
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
Р1 →Р2 →Р8 →РР5 →Р12 →Э21 →Р6 →А4 →И2
«Распаковка» и «упаковка» информации может происходить в любом месте
цепочки засылок.
2.6.8. Примеры использования операторов присваивания:
1)
2)
3)
4)
5)
6)
1257,44 →Р77…0,1 →Р11… Р15 →А2 →Р21…
Р150 →Р2 →Р11 →И4 →Р0, 1 →Э211…
"АБВГД" →А1 →А0 →А6 →Э4…12,5 →А6
Э1 →Р2 →РР4 →ИР1…Р8 →ЭР6…15 →Э4…
А6,2 →Э21 →А15
…12 →Р1 →Р4 →И6…1,6 →РИ6…Р1 →Э5→А6→ЭР4…
2.7. Ограничители
2.7.1. Ограничители — это служебные символы, которые используются для задания
начала и конца ряда констант и для отделения операторов друг от друга. В ЯМБ'е
версии 1.00 используются ограничители:
"
/
'
;
.
!
кавычки
косая черта
апостроф
точка с запятой
точка
пробел
восклицательный знак.
2.7.2. Ограничитель «кавычки» является составной частью алфавитной константы
и позволяет транслятору ЯМБ определить начало и конец алфавитной константы.
2.7.3. Ограничитель «косая черта» является составной частью специальной
константы управления ВВУ. Пишется в начале и конце специальной константы.
2.7.4. Ограничитель «апостроф» является составной частью специальной константы
из 8-битных кодов. Пишется в начале и конце специальной константы.
2.7.5. Ограничитель «точка с запятой» используется:
– для завершения списка разметок массивов регистров в операторе РД и для
завершения всего оператора РД (см. п. 2.3.2);
– для завершения списка разметок граф в операторе РГ (см. п.2.4.1);
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
23
– для отделения номера регистра, элемента, указателя и прочих параметров от
следующей сразу за ним числовой константы (см. п. 2.7.7);
– для завершения списка формируемой информации (п. 2.13.8).
2.7.6. Ограничитель «точка» пишется в конце последней программной строки. Это
оператор конца программы.
2.7.7. Ограничитель «пробел» используется для отделения номера регистра,
элемента, указателя или другого числового параметра от следующей
непосредственно за ним числовой константы. Пробелы можно писать для
наглядности после любого оператора языка. Допускается вместо пробела писать и
точку с запятой (п. 2.7.5), но в отличие от пробела «точка с запятой» кодируется
транслятором ЯМБ, и под нее выделяется ОЗУ (1 байт).
2.7.8. Ограничитель «восклицательный знак» используется для обозначения начала
и конца программных комментариев. При выполнении программы программные
комментарии игнорируются.
2.7.9. Не допускается писать ограничители внутри самих операторов языка, кроме
случаев, специально оговоренных в формате оператора.
2.7.10. В тексте алфавитной константы можно писать любой символ-ограничитель,
который в этом случае рассматривается как символ алфавитно-цифровой
информации. Для обозначения одного символа «кавычки» внутри алфавитной
константы пишут два подряд символа «кавычки».
2.7.11. Запрещается писать подряд две алфавитные константы, так как в этом
случае они «склеятся», а символы конца первой и начала второй алфавитной
константы транслируются как символ «кавычки» внутри константы (п.2.7.10).
2.7.12. Примеры ограничителей:
1) "START" ВЫВ — кавычки обозначают начало и конец алфавитной константы;
2) /005/— символы «косая черта» обозначают начало и конец специальной
константы уравнения ВВУ;
3) 'АF' — символы «апостроф» обозначают начало и конец специальной
константы из 8-битных кодов;
4) РГ 050 170; — символ «точка с запятой» завершает разметку граф;
5) СТП. — символ «точка» завершает программу;
24
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
6) →Р10613→И0— символ «пробела» отделяет номер регистра 106 от следующей
непосредственно за ним числовой константы 13;
7) !ОСОБЫЙ СЛУЧАЙ! — символы «восклицательный знак» обозначают начало и
конец программного комментария.
2.8. Метки и переходы.
2.8.1. При отсутствии специальных операторов перехода программа выполняется
последовательно — в том порядке, в каком написаны операторы. Для изменения
порядка выполнения программы служат метки, которыми помечаются различные
точки программы, и операторы перехода к этим меткам.
2.8.2. ЯМБ предусматривает типы меток:
– ПСn — метка начала программной строки, допускающей переход к ней только по
программе;
– РПСn — метка начала программной строки, к которой можно переходить как по
программе, так и запуском пользователем с клавиатуры («ручная программная
строка»);
– Уn — указатель n — метка внутри программной строки. Переход к ней
выполняется как операторами программы, так и пользователем с клавиатуры — по
останову оператором СТП. Номер метки n в операторах ПСn, РПСn и Уn обозначается
всегда только целым неотрицательным числом от 0 до 65535. Косвенное задание не
допускается.
2.8.3. Меткой ПСn (или РПСn) начинается любая программная строка. Порядок
следования номеров программных строк в программе — произвольный. Запуск
программы с клавиатуры ЭВМ допускается с любой программной строки,
начинающейся меткой РПСn. После запуска программа выполняется
последовательно — оператор за оператором — автоматически.
2.8.4. Работа программы прерывается при выполнении оператора «точка» (конец
программы) или СТП (останов.). Оператор СТП можно писать перед любым
оператором программы. После останова программу можно запустить:
– с начала любой программной строки, начинающейся оператором РПСn;
– с любой метки Уn внутри своей (выполняемой) программной строки;
– со следующего оператора программы. Подробности — в п. 2.8.17.
2.8.5. Последовательный порядок выполнения операторов в программе изменяется,
если в программе встретится один из операторов перехода:
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
25
– ППСn — переход к программной строке с номером n;
– ПУn — переход к указателю n своей программной строки;
– БПЗУn — переход к указателю n своей программной строки с запоминанием
точки ухода;
– ППУnПm — переход к указателю n программной строки m (без запоминания
точки ухода);
– БПУnПm — переход к указателю n программной строки m с запоминанием точки
ухода;
– ВЫХОД — возврат в точку программы, запомненную оператором БПЗУn или
БПУnПm.
2.8.6. Во всех операторах переходов номера программных строк указателей можно
задавать либо непосредственно целым неотрицательным числом от 0 до 65535, либо
косвенно через какой либо индексный или числовой регистр.
2.8.7. Оператор ППСn (ППСРn, ППСИn) обеспечивает переход в начало любой
программной строки, независимо от того, начинается она меткой ПСn или РПСn.
После перехода первым выполняется оператор, написанный непосредственно за
меткой ПСn или РПСn. В программе не должно быть программных строк с
одинаковыми номерами меток РПСn и ПСn. Переходить можно и в начало своей
программной строки.
2.8.8. Оператор ПУn обеспечивает переход к метке Уn внутри своей программной
строки. Метки Уn можно писать перед любым оператором программной строки.
Порядок нумерации Уn в программной строке — произвольный. В программной
строке не должно быть указателей с одинаковыми номерами.
2.8.9. Операторы ПУРn и ПУИn обеспечивают переход к указателю, номер которого
задан в регистре Рn или соответственно Иn.
2.8.10. После переходов ПУn, ПУРn, ПУИn первым выполняется оператор,
написанный сразу за соответствующей меткой. Переходы ПУn, ПУРn, ПУИn можно
писать после любого оператора программной строки.
2.8.11. Оператор ППУnПm обеспечивает переход к метке Уn внутри программной
строки с меткой РПСm или ПСm. Оператор можно писать после любого оператора
программы. В частном случае оператор может обеспечить и переход к Уn своей
программной строки. Дополнительно см. п.п. 2.8.6, 2.8.8–2.8.10.
26
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.8.12. Оператор БПЗУn обеспечивает переход к метке Уn внутри своей
программной строки с запоминанием адреса оператора, написанного в программе
сразу за оператором БПЗУn. После перехода к заданному указателю программа
продолжает выполняться до тех пор, пока не встретится оператор ВЫХОД. Этот
оператор обеспечивает возврат в точку программы, запомненную оператором
БПЗУn.
2.8.13. Операторы БПЗУn и ВЫХОД позволяют организовать подпрограммы:
выделять повторяющиеся в разных местах программной строки участки программ
в отдельное место, снабжая его в начале указателем, а в конце — оператором
ВЫХОД. Текст подпрограммы может включать в себя указатели и переходы к ним
(но только к ним, а не вне подпрограммы!). Это позволяет различными
операторами БПЗУn начинать выполнение подпрограммы с разных ее точек (и
следовательно, объединять разные подпрограммы). Выход из подпрограммы
обеспечивает любой оператор ВЫХОД, независимо от того, где он написан. Таким
образом, в подпрограмме может быть произвольное количество операторов ВЫХОД.
Дополнительно см.п.п. 2.8.2, 2.8.6, 2.8.8, 2.8.11, 2.8.12.
2.8.14. Оператор БПУnПm обеспечивает переход к метке Уn внутри программной
строки с меткой Псm или РПСm с запоминанием адреса оператора, написанного в
программе сразу за оператором БПУnПm. Как и оператор БПЗУn, он используется
для обращения к подпрограммам, но расположенным не в «своей», а в «чужой»
программной строке. Возврат в запомненную точку осуществляется тоже
оператором ВЫХОД (см.п.п. 2.8.6, 2.8.8–2.8.13).
2.8.15. Допускается выполнять переходы к подпрограммам внутри самих программ.
Такие «внутренние» подпрограммы именуют «вложенными». Допускается до 16
уровней вложения подпрограмм. Каждый из операторов БПЗУn или БПУnПm
выполняет переход к следующему уровню вложения, а каждый переход ВЫХОД — к
предыдущему уровню вложения. Количество выполняемых в программе обращений
к подпрограммам и выходов из подпрограмм должно быть одинаковым, в
противном случае оператором ВЫХОД будут выбираться неверные адреса для точек
возврата, а программа в целом будет выполняться не верно.
2.8.16. При организации в программе переходов полезно помнить, что все
операторы с прямым заданием номеров указателей программных строк
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
27
выполняются быстрее соответствующих операторов с косвенным заданием номера.
Быстрее выполняются и переходы к программным строкам, расположенным ближе
к началу программы, по сравнению с расположенными дальше от начала и
аналогично для переходов к указателям в чужих программных строках. Но
разница во времени выполнения разных переходов в ПП ЭВМ незначительна.
2.8.17. После остановки ПП ЭВМ по оператору СТП пользователь машины может
выполнить следующие действия:
– нажать клавишу F2, набрать номер метки РПСn — n — и нажать клавишу
«ПУСК» . Выполнится переход к метке РПСn;
– набрать номер указателя n и нажать клавишу «ПУСК» . Выполнится переход к
метке Уn внутри выполняемой программной строки;
– нажать клавишу «ПУСК», не набирая никакого номера. Выполнится следующий
после СТП оператор программы.
2.9. Арифметические операции
2.9.1. Для обозначения арифметических операций в ЯМБ'е используются
операторы:
+ — сложить,
- — вычесть,
Х — умножить (используется заглавная буква русского алфавита Х),
: — разделить (двоеточие),
% — вычислить проценты от числа,
/% — вычислить процентное отношение (отношение в процентах),
ИЗ — изменить знак,
Ц — выделить целую часть числа,
НРn — накопить в числовом регистре Рn,
НИn — накопить в индексном регистре Иn.
2.9.2. Арифметические операции выполняются в порядке их следования в
программе, без учета старшинства операций. В арифметических операциях могут
участвовать регистры любых типов и элементы, а также числовые константы и
информация, вводимая с АЦК по оператору «набор» (НБ — п. 2.14). Алфавитные
регистры и элементы, используемые в арифметических операциях, обязаны
содержать числовую информацию. Операторы +, -, Х, :, %, /% пишутся между
операндами, участвующими в вычислениях (их именуют «двуместными»
операциями). После второго операнда пишут оператор засылки (п.2.6). Результат
28
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
вычисления может быть использован в качестве первого операнда следующей
двуместной операции. В этом случае оператор засылки — необязателен. Длина
таких «арифметических выражений» — не ограничена. Окончательный результат
вычисления такого выражения можно засылать в регистры и элементы, выводить
на печать или экран. Промежуточные результаты тоже можно запоминать в
регистрах и элементах.
2.9.3. В процессе вычисления числа, участвующие в вычислениях (операнды)
нормализуются под их максимальную точность. Результат вычислений округляется
в ближайшую сторону под точность текущей графы: если первая цифра дробной
части числа, отбрасываемой при округлении, больше или равна 5, то к
предыдущему разряду прибавляется единица. Если же первая отбрасываемая
цифра меньше 5, предыдущий (последний, остающийся при округлении) разряд не
изменяется.
2.9.4. Оператор % перемножает операнды и делит произведение на 100 (это и есть
вычисление процентов от числа). Количество процентов, как и любой операнд,
может задаваться числовой константой, регистром или элементом, а также
вводиться с АЦК (на месте операнда в этом случае пишут оператор НБ) — п.2.9.2.
2.9.5. Оператор /% позволяет вычислить отношение в процентах операнда,
написанного слева от /% к операнду, написанному справа от него. Слева от /%
может быть написано и целое арифметическое выражение (см. п. 2.9.2).
2.9.6. Операторы: ИЗ ,Ц ,НРn, и НИn — одноместные, они относятся к одному
операнду. Оператор ИЗ изменяет знак числа (операнда) или результата вычисления
арифметического выражения на обратный.
2.9.7. Оператор Ц позволяет выделить целую часть (операнда) или результата
вычисления арифметического выражения.
2.9.8.Операторы ИЗ и Ц можно писать и внутри арифметического выражения. При
этом, если ИЗ или Ц написан перед операндом, он «действует» на этот операнд.
Если ИЗ или Ц написан после 1-го (или единственного) операнда, он тоже действует
на этот операнд. Если же ИЗ или Ц написать после 2-го (любого, не первого)
операнда арифметического выражения, он действует на результат вычисления всей
части выражения, написанной слева от ИЗ или Ц. Изложенные правила написания
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
29
ИЗ и Ц позволяют выполнять любые совместные действия операторов ИЗ и Ц.
Однако, писать ИЗ и Ц подряд можно только после операндов, но не перед ними.
2.9.9. Операторы НРn и НИn выполняют алгебраическое сложение (с учетом
знаков) числа (операнда) или результата вычисления арифметического выражения,
написанного слева от них, с числом хранящимся в заданном оператором НРn или
НИn регистре Рn или Иn и запись результата сложения в тот же регистр Рn или
Иn. В отличие от ИЗ и Ц операторы накапливания пишут только после операндов.
Накапливается значение (число) из 1-го (единственного) операнда или результат
вычисления всего выражения слева от оператора НРn или НИn. При накапливании
в числовом регистре знак числа в Рn может быть как положительным, так и
отрицательным. В индексных регистрах хранятся только положительные числа
(или нуль), поэтому накапливание в них отрицательных чисел следует делать с
известной осторожностью, проверяя полученный результат и имея в виду, что знак
результат накопления при записи в Иn игнорируется.
2.9.10. Операторы НРn и НИn можно писать после любого операнда
арифметического выражения и в любом количестве. На результат вычисления они
не влияют. Точность результата накопления в Рn определяется всегда точностью
текущей графы и не зависит от точности числа, хранящегося в Рn до накопления.
В Иn хранятся только целые числа, но при выполнении оператора НИn точность
текущей графы может быть и отлична от нуля.
2.9.11. Номер регистра в операторах НРn и НИn можно задавать и косвенно (см.
табл. 1).
2.9.12. Максимально допустимая разрядность операндов и всех результатов
начислений (промежуточных и окончательного) — 14 десятичных знаков, а слева от
оператора /% — 12 десятичных знаков. Максимально допустимая точность всех
вычислений — 7 знаков после запятой.
2.9.13. Внутри арифметических выражений можно писать любые операторы меток
и переходов. На результат вычислений они не влияют. переходы можно писать в
любом месте арифметического выражения — как до операндов, так и после них.
2.9.14. Примеры написания фрагментов программ с арифметическими
выражениями:
30
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
1) Р1 Х Р2→Р3 — перемножение чисел из числовых регистров 1 и 2 и запись
произведения в числовой регистр 3;
2) 7,2→Р10 + 2→Р11 — в числовой регистр 10 записывается число 7,2, а в
числовой регистр 11 — число 9,12 (если точность графы равна 2) или 9,1 (если
точность графы равна 1), или 9 (если точность графы равна 0), или 9,120 (если
точность графы равна 3) и так далее;
3) 18→И1 ИЗ→Р2 + 8 И3→Р3 — в И1 записывается число 18, в Р2 — минус 18 (-18),
в Р3 — плюс 10 (+10); точность графы предполагается равной 0;
4) 1 НР1 НИ2 — единица накапливается в Р1 и в И2;
5) Э1 НР5 + Э2→РИ3 — число из элемента 1 накапливается в Р5, складывается
(алгебраически) с числом из Э2, а сумма Э1 + Э2 запоминается в числовом
регистре, номер которого задан в И3.
6) 444,11 Ц — 33,3 И3 + Ц 555,6→Р6 — результат вычисления такого
выражения равен: -(444 - 33,3) + 555 = + 144,3
7) Р1 + Р2 + Р3→Р5 : 3 Х Р5 НР9→Р6 — среднее арифметическое чисел из Р1,
Р2 и Р3 умножается на их сумму; результат накапливается в Р9 и запоминается в
Р6;
8) Р10 + Р11 + Р12 ИЗ + Э1 /% Р5 — вычисляется разность числа из Э1 и
суммы чисел из Р10, Р11, Р12 и отношение этой разности к числу из Р5,
выраженное в процентах;
9) Р2,1 + Р5,2 — складываются числа из Р2 массива регистров 1 и из Р5 массива
регистров 2;
10) Р1 — 1→Р2 Р1 : Р2 — выполняются вычисления по формуле (х-1), где х —
число,записанное в Р1;
11) Р1 — 1 : Р1 — выполняются вычисления по формуле (х-1):х, где х — число из
Р1; в отличие от примера 10 здесь не требуется запоминать в Р2 промежуточный
результат.
2.10. Логические операции
2.10.1. Сюда отнесены операции сравнения, логического умножения и логического
сложения (сложения по модулю 2).
2.10.2. Для обозначения операций сравнения используют операторы:
= — равно,
< — меньше,
> — больше,
<= — меньше или равно,
>= — больше или равно.
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
31
2.10.3. Все операторы можно использовать для сравнения как числовой
информации, так и алфавитно-цифровой (текста). Сравнивается информация,
указанная слева и справа от оператора сравнения. При сравнении «числами»
(числовой информацией) считаются числовые и индексные регистры, числовые
константы и арифметические выражения, а также число, введенное с АЦК
пользователем ЭВМ по оператору программы НБ (см. п. 2.14). «Текстом»
считается информация из алфавитных регистров и элементов, алфавитные и
специальные константы, а также текст, введенный с АЦК пользователем ЭВМ по
оператору программы ТК (см. п. 2.14).
2.10.4. При сравнении чисел они предварительно нормализуются под максимальную
точность сравниваемых операндов; сравниваются с учетом их знаков. При
сравнении текста байты операндов сравниваются последовательно слева направо в
соответствии с их кодами или таблицей перекодировки, построенной оператором
АЛФ (п. 2.10.6), без какой-либо предварительной нормализации до получения
результата сравнения. Равенство получается только при одинаковой длине
операндов и попарном совпадении кодов всех байтов операндов. При неодинаковой
длине операндов и совпадении информации в более коротком операнде с началом
информации в более длинном — более длинный считается «больше».
2.10.5. Арифметические выражения (п.2.9.2) можно писать только слева от
оператора сравнения. Если хотя бы один из сравниваемых операндов — число (п.
2.10.3), операнды сравниваются как числа.
2.10.6. Если необходимо сравнивать текст на больше или меньше (больше или
равно, меньше или равно) не в соответствии с кодами байтов, а по другому
признаку, используют оператор «алфавит» с форматом:
АЛФ Аn,
Предварительно в алфавитных регистрах, начиная с Аn, необходимо занести 256
алфавитных байтов в порядке их «возрастания» (задать алфавит). После этого все
сравнения текста выполняются в соответствии с заданной таблицей перекодировки.
2.10.7. Для отмены таблицы перекодировки и восстановления стандартного правила
сравнения (в соответствии с кодами) достаточно в программе написать оператор
АЛФ без алфавитного регистра:
32
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
АЛФ;
2.10.8. Результат сравнения (ДА, НЕТ) анализируется одним из операторов
перехода Пуn или ППСn (п. 2.8). Его пишут после второго операнда процедуры
сравнения. Если результат сравнения — «истина» (да), переход выполняется, если
же — «ложь» (нет) — пропускается и выполняется следующий после него оператор
программы. В такой конструкции операторы переходов называют «условными
переходами», так как их выполнение обусловлено выполнением «условия»,
написанного перед ними. В качестве оператора перехода можно писать любой из
Пуn, ПУРn, ПУИn, ППСn, ППСРn, ППСИn, ППУnПm , ППУn Прm , ППУИn Пm , ППУnПИm
и так далее.
2.10.9. Допускается писать подряд несколько процедур сравнения, не повторяя
выражения (операнда) слева от первого оператора сравнения, а меняя лишь
«константы сравнения» (операнды справа от оператора сравнения). После каждой
константы сравнения пишут оператор перехода. Процедура сравнения может
включаться и в арифметическое выражение (после очередного операнда).
2.10.10. Примеры использования операторов сравнения:
1) Р1 > Р2 ПУ1 < Р8 ПУ2 = Э6 ПУ4 = 2 ПУ6 ППС3
Здесь число из регистра Р1 последовательно сравнивается с Р2 — на больше, с Р8
— на меньше, с Э6 — на равно и с числом 2 — тоже на равно. Если Р1>Р2,
выполняется переход к У1. Если Р1<Р2 и <Р8, то выполняется ПУ2. Если Р1<Р2 и
>Р8, и = Э6, то выполняется переход к У4, если же = 2, то ПУ6. Если «не
выполнилось» ни одно из сравнений (то есть Р1 < Р2, > Р8, ≠ Э6 и ≠ 2), то
выполняется оператор, написанный после ПУ6, то есть ППС3;
2) Р4 Х Р8 >=4 ПУ2 — Р21 У2→ Р0
Если произведение Р4 Х Р8 больше или равно 4, в Р0 записывается это
произведение. Если же оно меньше 4, в Р0 записывается разность этого
произведения и числа из Р21.
3)Р2 = 4 ПУ4 = 6 ПУ6 = 10 ПУ10
Фактически здесь записан фрагмент перехода к указателю, номер которого равен
числу в Р2. Если в Р2 не может быть никаких других чисел, такой фрагмент
можно заменить одним оператором ПУР2.
2.10.11. Логическое умножение и логическое сложение выполняются с двумя
операндами, содержащими алфавитно-цифровую информацию (алфавитные
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
33
регистры, элементы, алфавитные и специальные константы). Длина результата
операции всегда равна длине второго операнда.
Используются обозначения:
& — логическое умножение,
# — логическое сложение.
2.10.12. Операции п. 2.10.11 выполняются над каждой парой битов операндов.
Результат логического умножения битов определяется правилами логики: 0^0 = 0;
0^1 = 0; 1^0 = 0; 1^1 = 1, то есть в результате биты 1 получаются только в том
случае, если в соответствующей позиции обоих операндов были 1; во всех
остальных случаях вырабатывается бит 0.
2.10.13. Результат логического сложения (сложение по модулю 2) для каждой пары
битов операндов:
0 + 0 = 0; 0 + 1 = 1; 1 + 0 = 1; 1 + 1 = 0
то есть в результате биты 1 получаются только при несовпадении значения бит в
соответствующих позициях операндов (результат можно рассматривать как
«степень неравенства» текстовой информации).
2.10.14. Результат выполнения операций п. 2.10.4 можно засылать в алфавитные
регистры и в элементы.
2.11. Операторы циклов
2.11.1. Для того, чтобы некоторый фрагмент программы выполнить не один, а
несколько раз, используют операторы цикла:
( — начало цикла
)n — конец цикла
)nаm — конец цикла с шагом m,
где n — количество циклов, которое необходимо выполнить.
m — шаг модификации (п. 2.11.5).
Количество повторов — не более 65535.
2.11.2. Внутри цикла (между началом и концом цикла) можно использовать любые
операторы ЯМБ, кроме меток начала программной строки Псn или РПСn. Если при
34
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
каждом повторе фрагмента программы внутри цикла нужно изменять на 1 номер
того или иного регистра или элемента, вместо обычного оператора используют
«модифицируемые» операторы. Все модифицируемые операторы образуются
добавлением буквы М перед обозначением типа регистра. Таким образом, вместо
обычных операторов:
Рn, Иn, Аn, Эn, →Рn, →Иn, →Аn, →Эn, Нрn, Ниn
пишут:
Мрn, Миn, Маn, Мэn, →МРn, →МИn, →МАn, →МЭn, НМРn, НМИn.
При использовании таких операторов при первом выполнении цикла используется
регистр или элемент с номером n, написанным в операторе, а при каждом
повторном выполнении цикла фактический номер регистра или элемента
отличается от написанного на величину, определяемую оператором,
использованным для обозначения конца цикла.
2.11.3. Если для конца цикла использован оператор )n с положительным n, то при
каждом повторении цикла фактический номер у всех модифицируемых регистров и
элементов увеличивается на 1.
2.11.4. Если для конца цикла использован оператор )-n — с отрицательным числом,
то при каждом повторении цикла фактический номер у всех модифицируемых
операторов уменьшается на 1.
2.11.5. Если вместо «шага модификации», равного 1 (п.п. 2.11.3 и 2.11.4), нужно
использовать другой, то вместо операторов )n и )-n используют операторы:
)nаm или )-nаm
причем )nаm используется для модификации в сторону увеличения номеров (для
положительного значения шага модификации), а )-nаm — для модификации в
сторону уменьшения номеров (для отрицательного значения шага модификации).
Сам шаг модификации m задается всегда целым положительным числом.
2.11.6. Из п.п. 2.11.3 — 2.11.5 следует, что у всех модифицируемых операторов
п. 2.11.2, используемых внутри цикла, шаг модификации всегда одинаковый и
направлен в одну сторону (или у всех в сторону увеличения, или у всех в сторону
уменьшения). Значение а1 в операторах конца цикла можно не писать: шаг
модификации на 1 выполняется «по умолчанию».
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
35
2.11.7. Признак модификации М можно писать и после буквы, обозначающей тип
регистра. Таким образом, форма записи РМп, ИМп, АМп, ЭМп равноценна форме
записи МРn, МИn, МАn, МЭn. Однако основным вариантом записи является второй.
Недопустимо использовать одновременно косвенное задание номера с признаком
модификации. Запись вида МРРn, РМРn, МАРn, АМРn и так далее использовать
нельзя.
2.11.8. После выполнения всего заданного количества циклов происходит
«нормальный выход из цикла», то есть выполняется оператор, написанный сразу
после оператора конца цикла.
2.11.9. Количество циклов в операторах )n и )nаm можно задавать косвенно в виде:
)Рn, )Иn, )Рnаm, )Иnаm
Косвенно можно задавать и шаг модификации:
)nаРm, )nаИm.
При косвенном задании количества циклов и шага модификации направление
модификации (увеличение, уменьшение) определяется знаком числа в регистре,
задающем количество циклов. Число, определяющее шаг модификации, должно
быть положительным. Использование косвенного задания количества циклов и
шага модификации позволяет оперативно менять оба параметра, в том числе и их
корректировкой (вычислением) внутри цикла, что позволяет делать циклы весьма
гибкими. Фактическая корректировка количества циклов и шага модификации
выполняется в момент выполнения оператора конца цикла.
2.11.10. ЯМБ версии 1.00 допускает использование циклов в цикле. Модификация в
каждом цикле определяется в соответствии с порядковым номером цикла и шагом
модификации, заданным в соответствующем операторе конца цикла (см. п.п. 2.11.3
— 2.11.5). Максимально допустимое число вложений циклов друг в друга — 16.
2.11.11. В ЯМБ версии 1.00 имеется механизм, позволяющий выходить из циклов
досрочно — в зависимости от выполнения тех или иных условий. Такой выход
организуется условным переходом (п. 2.10.8), но непосредственно перед оператором
перехода пишут один из операторов:
ВЦ — выход из цикла в следующий внешний цикл,
Вn — выход из цикла за n внешних циклов.
36
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.11.12. Параметр n в операторе Вn можно задавать косвенно. В1 и ВЦ абсолютно
равнозначны. Вместо В2 можно написать два раза ВЦ.
2.11.13. Операторы п. 2.11.11 используют только в условных переходах,
вызывающих переход в другой цикл (в цикл другого уровня или в ту часть
программы, которая вообще не входит ни в какой цикл). Если же условный переход
не приводит к выходу из цикла, операторы п. 2.11.11 не пишут.
2.11.14. Если цикл может завершиться только досрочно, а его «нормальное»
завершение (п. 2.11.8) заведомо исключено, операторы ВЦ и Вn можно писать не
перед оператором перехода, а после указателя или метки Псn или РПСn, к которой
выполняется условный переход. Никаких преимуществ такая форма записи не дает.
2.11.15. Операторы п. 2.11.11 сообщают ЭВМ об изменении уровня вложения, но не
обнуляют соответствующего счетчика модификации. Обнуление счетчика
выполняет только оператор (, причем только для соответствующего уровня
вложения. Таким образом, циклы могут быть не только вложенными в смысле п.
2.11.10, но и последовательными (без изменения уровня вложения).
2.11.16. Если необходимо повторить участок программы от метки ПСn или РПСn
(весь или его часть) вместо операторов п. 2.11.1 используют оператор повтора:
ПВТn — повторить n раз,
где n — целое положительное число от 2 до 65535. Параметр n можно задавать
косвенно.
2.11.17. Оператр ПВТn вложений не допускает. На модифицируемые операторы
никакого влияния не оказывает. Пишется в конце повторяемого участка
программы.
2.11.18. После выполнения заданного оператором ПВТn количества повторов (строго
говоря, не n «повторов», а n «выполнений») ЭВМ выполняет оператор программы,
написанный сразу после ПВТn. Досрочный выход программируется обычными
условными переходами. Операторы выхода из цикла не используются (если переход
не сопровождается выходом из цикла п. 2.11.1).
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
37
2.11.19. Организацию циклов можно выполнять и традиционным способом: с
использованием меток, счетчиков в регистрах и условных переходов:
0 →Рn Уm…1 НРn Рn < const ПУm.
При такой организации циклов количество циклов ограничено только допустимой
числовым регистром Рn разрядностью. Модификация не выполняется (п. 2.11.17).
Вложение циклов п. 2.11.19 обеспечивается использованием разных регистров Рn
или Иn (с разными номерами). Число вложений ограничено только количеством
задействованных в РД числовых и индексных регистров.
2.11.20. Примеры организации циклов:
1) ( МР11 →МР22 )11
числа из числовых регистров с 11 по 21-ый переписываются соответственно в
числовые регистры с 22-го по 32-ой;
2) ( МР11 НР6 Р6 >= 120 ВЦ ПУ3 Р3 + МР30 →МР50 )5 У3
Числа из числовых регистров 11, 12 и так далее накапливаются по одному в
числовом регистре 6. Если после накопления число в Р6 меньше 120, число из Р3
складывается с числом из регистра 30, 31 и так далее, а сумма запоминается в
числовом регистре с номером соответственно 50, 51 и так далее. Цикл завершается
либо после 5 выполнений (нормальный выход из цикла) либо после того, как число
в Р6 окажется больше или равно 120 (досрочный выход из цикла). После этого
выполняются операторы программы после У3 (опущены);
3) (999999 : 1 )99
99 раз выполняется деление 999999 на 1. Подобная процедура применяется для
задержки выполнения программы на несколько секунд;
4) 6 →И2 0 →Р30 ( РИ2 →Р5 >= 0 ПУ1 ИЗ →Р5 У1 < Р30
ПУ2 →Р30 И2 →И3 У2 6 НИ2 )4
Среди числовых регистров Р6, Р12, Р18 и Р24 отыскивается и запоминается
регистр, содержащий наибольшее по абсолютной величине число;
38
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
5) ( МР6 →Р5 МР12 →МР6 Р5 →МР12 )6
Числовые регистры 6-11 обмениваются своими значениями с числовыми регистрами
12-17;
6) 0 →Р30 ( МР6 →Р5 >= 0 ПУ1 ИЗ →Р5 У1 < Р30 ПУ2 →Р30 У2 )4а6
В отличие от примера 4 здесь использован оператор конца цикла с шагом
модификации 6. Номер регистра, содержащего максимальное число, не
запоминается;
7) 6 →И0 0 →Р30 ( ( РИ0→Р5 > = 0 ПУ1 ИЗ →Р5 У1
< Р30 ПУ2 →Р30 И0 →И2 У2 1 НИ0 )4 НИ0 )4
Отыскивается и запоминается в И2 номер числового регистра, содержащего
наибольшее по абсолютной величине число, среди регистров 6-9, 12-15, 18-21, 24-27;
8) ( ЭИ2 -6РР0 1 НР0 НИ2 ) Р55
Числа из элементов последовательно переписываются в числовые регистры.
Начальные номера элементов и регистров заданы ранее (в примере опущено).
Количество переписываемых чисел рассчитано заранее и задано в числовом
регистре 55.
9) ( МР424 ВЫВ )-4
На экран (на печать) выводятся числа из регистров 424, 423, 422 и 421.
2.12. Работа с полем элементов
2.12.1. Совокупность элементов, сформированных по программе в оперативной
памяти машины или введенных в ОЗУ с носителей данных может представлять
собой как одну логическую запись (строку элементов), так и несколько таких
записей (строк).
2.12.2. Все сформированные по программе или введенные с носителей данных
информационные строки (строки элементов) образуют в ОЗУ поле элементов. Для
отделения друг от друга элементов и информационных строк служат коды-
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
39
разделители РЭ и РЗ (см. п. 2.3.6). Элементы каждой строки нумеруются
последовательно, начиная с нулевого элемента (Э0). Схема расположения
информации в поле элементов ЭВМ приведена на рис. 1.
РЗ Э0 РЭ Э1 РЭ Э2 РЭ… Эn РЭ РЗ Э0 РЭ Э1 РЭ
Рисунок 1: Схема расположения информации в поле элементов
2.12.3. Разделители элементов РЭ записываются в ОЗУ либо вместе с самими
элементами при их вводе с диска или из канала связи, либо при записи
информации в элемент оператором →Эn, причем если до записи в элемент n в поле
элементов не было элементов с меньшими номерами, автоматически появляются все
необходимые разделители (формируются «пустые» элементы).
2.12.4. При работе с полем элементов используются операторы:
ВВОД — гашение всего поля элементов,
ДАЛЬШЕ — переход к работе со следующей строкой поля элементов,
БЛИЖЕ — переход к работе с предыдущей строкой поля элементов,
ГС — гашение текущей и всех последующих строк поля элементов,
УС — удаление текущей строки поля элементов,
УЭn — удаление элемента n текущей строки поля элементов,
ВЭn — внесение информации в новый элемент (вставить перед элементом n),
УПЛ — уплотнение информации во всем поле элементов.
2.12.5. Оператор ВВОД используется перед началом любого формирования поля
элементов — операторами засылки, вставки, чтения с диска или ввода из канала
связи. Обеспечивает запись в поле элементов одного разделителя РЗ и сразу за ним
одного разделителя РЭ. Таким образом, после оператора ВВОД текущей становится
начальная (нулевая) строка поля элементов, а в ней появляется один пустой
элемент (Э0). Вся прежняя информация поля элементов гасится.
2.12.6. Оператор ДАЛЬШЕ используется для обработки и формирования информации
в следующей строке поля элементов. Если оператор подан после формирования
начальной (бывшей текущей) строки поля элементов (после оператора ВВОД), ЭВМ
отыскивает конец строки поля элементов и после него заносит один разделитель РЗ
и сразу за ним один разделитель РЭ. Новая строка поля элементов становится
40
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
текущей, и в ней оказывается один пустой элемент (Э0). Если ДАЛЬШЕ подан в уже
сформированном (введенном) поле элементов, текущей строкой становится
следующая строка поля элементов , но вся имеющаяся в ней информация
сохраняется (вместе с ее разделителями). Предыдущая строка поля элементов
становится недоступной обработке.
2.12.7. Оператор БЛИЖЕ используют для обработки информации в предыдущей
строке поля элементов, которая и становится текущей. Информация не гасится.
2.12.8. При работе с полем элементов доступны только элементы текущей и всех
последующих строк, причем элементы последующих строк рассматриваются как
продолжение текущей, а нумерация элементов всех строк — сквозная. Общая длина
всех элементов поля элементов — не более 65535 байтов.
2.12.9. Операторы БЛИЖЕ и ДАЛЬШЕ можно использовать при начальном
формировании поля элементов и при работе в поле элементов, когда в нем уже
сформировано много информационных строк. Каждый раз после выполнения
оператора БЛИЖЕ или ДАЛЬШЕ можно изменять информацию в элементах текущей
строки (засылать новую информацию в «старые» элементы). При этом разрядность
новой информации может быть как больше, так и меньше разрядности элемента, в
который она засылается. Если разрядность новой информации, засылаемой в
элемент, больше разрядности хранящейся в нем информации, то все последующие
элементы, расположенные в ОЗУ, «отодвигаются». Если разрядность новой
информации меньше разрядности элемента, то оставшиеся разряды заполняются
кодами «пусто».
2.12.10. При необходимости «перейти» в начало или в конец поля элементов от
любой информационной строки можно использовать операторы БЛИЖЕ или ДАЛЬШЕ
в цикле (если в поле находится несколько строк элементов).
2.12.11. Результат выполнения операторов БЛИЖЕ и ДАЛЬШЕ анализируется
оператором перехода, который пишется после них. Это позволяет определить,
достигнуты ли при выполнении операторов БЛИЖЕ и ДАЛЬШЕ начало или конец
поля элементов. Так например, если в программе написана последовательность
операторов БЛИЖЕ Пуn и при выполнении оператора БЛИЖЕ предыдущая строка
найдена, то в ЭВМ автоматически вырабатывается код условия «ДА», и переход к
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
41
указателю Уn выполняется. Если же до выполнения оператора БЛИЖЕ текущая
строка была самой первой строкой в поле элементов (ближе строк нет), то
вырабатывается код условия «НЕТ», оператор Пуn пропускается, и выполняется
следующий (стоящий за ним) оператор программы. Аналогично, поиск конца поля
элементов может быть осуществлен при выполнении следующего фрагмента
программы:
Уn ДАЛЬШЕ Пуn
В этом фрагменте оператор ДАЛЬШЕ выполняется до тех пор, пока не будет найден
конец поля элементов (дальше строк нет), после чего машина переходит к
выполнению операторов, написанных после Пуn. Отметим, что оператор ДАЛЬШЕ
сам по себе не позволяет отличить «полноценную» строку поля элементов от
«пустой» (не содержащей никакой информации, кроме разделителей). Нужен
дополнительный анализ (п. 2.12.18).
2.12.12. Если после оператора БЛИЖЕ или ДАЛЬШЕ не написан оператор перехода, то
при выработке кода условия «НЕТ» все последующие операторы программы будут
выполняться нормально, но первый же встреченный оператор безусловного
перехода будет пропущен. Этим и объясняется требование опрашивать
выработанный код условия сразу за оператором БЛИЖЕ или ДАЛЬШЕ. Например,
после выполнения фрагмента программы:
ВВОД ( ( Р1 →МЭ0 )20 ДАЛЬШЕ )10
в поле элементов будут сформированы 10 строк по 20 элементов в каждой строке.
Однако, при каждом выполнении оператора ДАЛЬШЕ будет вырабатываться код
условия «НЕТ», который сохранится после выхода из циклов и дальнейшего
выполнения программы. Чтобы «погасить» этот код условия, достаточно после
оператора ДАЛЬШЕ написать «пустой переход к указателю» (переход к указателю,
написанному сразу после перехода):
ВВОД ( ( Р1 →МЭ0 )20 ДАЛЬШЕ ПУ5 У5 )10…
Такой переход не мешает работать программе (он всегда пропускается), но код
условия «НЕТ» после заполнения поля элементов будет погашен и никак не
скажется при дальнейшей работе программы (многоточие).
2.12.13. Если нужно погасить не все поле элементов, а только его часть, начиная с
текущей строки поля элементов, вместо ВВОД используют оператор ГС. При его
42
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
выполнении гасится текущая и все последующие строки поля элементов, а в начало
текущей строки поля элементов записываются РЗ и РЭ.
2.12.14.Если нужно погасить только одну — текущую — строку поля элементов,
сохранив все предыдущие и все последующие строки поля элементов, вместо ГС
пишут оператор УС. Текущая строка поля элементов удаляется, а все последующие
строки «придвигаются» на ее место.
2.12.15. Если нужно удалить не всю строку, а лишь один ее элемент, используют
оператор Уэn, где n — номер удаляемого элемента (от 0 до 65535). Номер можно
задавать косвенно (см. п. 2.12.8). Все последующие элементы автоматически
«уменьшают» свои номера на 1.
2.12.16. Обратную процедуру п. 2.12.15 обеспечивает оператор Вэn (см. п. 2.12.4).
Этот оператор пишут после оператора выборки из регистра или элемента, или
после числовой, алфавитной или специальной константы, или после
арифметического выражения. При выполнении Вэn новая информация засылается
на место элемента n, а номера всех элементов, начиная с бывшего элемента n,
«увеличиваются» на 1. Номер n можно задавать косвенно.
2.12.17. После засылки в элемент новой информации, длина которой меньше
прежней, остаток элемента заполняется кодами «пусто» (п. 2.12.9). При работе с
элементом эти коды не мешают, но при записи на диск их присутствие может
вызвать избыточные затраты дисковой памяти. Чтобы избежать таких затрат,
достаточно перед записью на диск подать команду (оператор) УПЛ (см. п. 2.12.4).
Информация во всем поле элементов уплотнится за счет уничтожения всех байтов с
кодами «пусто» и сдвига информации к началу.
2.12.18. В процессе формирования поля элементов бывает необходимо следить за
тем, чтобы общая длина информации в нем не превысила объема ОЗУ, отведенного
для всего поля элементов или отдельных его строк. Для оперативного определения
длины соответствующих полей ОЗУ служат операторы:
КРП
КРЭ
КРС
КСС
—
—
—
—
количество
количество
количество
количество
разрядов программы;
разрядов поля элементов;
разрядов свободного поля ОЗУ;
символов в строке;
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
43
КЭС — количество элементов в строке;
КПС — количество программных строк в программе;
ЛСТ КРП — количество разрядов в ретранслированной программе.
2.12.19. Операторы КРП, КРЭ, КРС, КСС и ЛСТ КРП подсчитывают соответствующие
объемы в байтах. Все операторы п. 2.12.18 выдают результат в виде целого
десятичного числа. Этот результат можно засылать в числовые, индексные
регистры и элементы и использовать непосредственно в арифметическом
выражении первым операндом.
ИГ112 КРП + 4 : 128 ВЫВ СТП
Подсчитывается объем программы, к нему добавляется 4, и результат делится на
128, а частное высвечивается на экране (печатается).
2.12.20. При выполнении операторов п. 2.12.18 поле элементов сохраняется без
изменений.
2.13. Операторы обработки информационных структур
2.13.1. К операторам обработки информационных структур отнесены операторы:
СОД — выделение содержимого;
→СОД — заслать в содержимое;
Ф — формирование;
КЗ — подсчет количества значащих разрядов;
СР — сложение разрядов;
АТ — анализ точности;
КМn — контроль по модулю n.
Все эти операторы обрабатывают отдельные разряды или группы разрядов
информации.
2.13.2. Операторы выделения содержимого позволяют выделить отдельные разряды
или группу подряд расположенных разрядов из информации, хранящейся в
числовом, алфавитном, индексном регистре или в элементе. Общая форма
операторов:
СОД Рn
СОД Аn
СОД Иn
СОД Эn
где n —
Рm Кl
Рm Кl
Рm Кl
Рm Кl
номер регистра или элемента, из которого выделяются разряды;
44
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
m — порядковый номер разряда, начиная с которого нужно выбрать информацию;
l — количество выделяемых разрядов.
2.13.3. При выделении информации из числового или индексного регистра счет
разрядов ведется со стороны младших разрядов. Самый младший разряд числа —
первый. Знак и точность числа игнорируются. Результат выполнения оператора —
всегда целое положительное число или нуль. Количество выделяемых разрядов не
должно превышать разрядности регистра.
2.13.4. При выделении информации из алфавитного регистра или элемента счет
символов алфавитно-цифровой информации ведется слева направо, то есть
начальный символ текста — первый. Фактически выделяемые разряды могут и не
принадлежать заданному регистру или элементу, а находиться в регистре или
элементе со следующим номером (или даже дальше). Это позволяет выделять и
анализировать любые разряды информации, включая разделители и признаки
конца информации. Следует отметить, что в отличие от числовых и индексных
регистров в числовой информации, хранимой в алфавитных регистрах или
элементах, знак числа, десятичная запятая или точка занимают отдельный разряд,
и их необходимо учитывать при определении номера и количества разрядов.
Результат выделения может быть как целым, так и дробным числом, и если он
включает начальный байт, то может представлять как положительное, так и
отрицательное число.
2.13.5. Операторы выделения информации можно использовать для засылки
информации в любой регистр или элемент и в арифметических и логических
операциях любым операндом.
2.13.6. Все параметры в операторах выделения можно задавать косвенно. Числовой
и алфавитный регистр могут принадлежать любому массиву регистров, и их можно
задавать через запятую (см. п. 2.5.12.).
2.13.7. Если необходимо изменить какую-либо часть информации в регистре или
элементе, применяют операторы «заслать в содержимое»:
→СОД Рn
→СОД Аn Рm
→СОД Иn
→СОД Эn
где n — номер регистра или элемента, в который надо заслать новую информацию;
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
45
m — начальный разряд регистра или элемента, куда засылается информация (п.п.
2.13.3 и 2.13.4).
При засылке в содержимое количество разрядов не задается: оно определяется
засылаемой информацией. Никаких признаков конца информации специально не
заносится. Засылается всегда информация, полученная оператором, написанным
перед оператором «заслать в содержимое». Примеры:
1) 21346 →Р1…СОД Р1 Р2 К2 →Р3
В Р3 засылается число 34 (два разряда со 2-го);
2) 341,956 →Р2…СОД Р2 Р3 К3 →Р1
В Р1 засылается число 419 (3 разряда с 3-го);
3) "АБВГДЕЖ" →Э1…СОД Э1 Р3 К4 →А1
В А1 заносится текст ВГДЕ;
4) 1234 →Р5…СОД Р5 Р1 К2 + 6 →Р2
В Р2 заносится результат сложения 34 + 6;
5) 111111 →Р1…222 →СОД Р1 Р3
В регистре Р1 получится число 122211;
6) '00' →А14 СОД А1 Р1 К8 →СОД А13 Р1
Из А1 в А13 переписываются первые 8 байтов информации, признак конца после
нее обеспечивается предварительной записью специальной константы '00' в А14.
2.13.8. Для формирования информации в регистрах и элементах, кроме операторов
«заслать» и «заслать в содержимое», можно использовать и специальный оператор
«формирования», общий формат которого:
<где сформировать> Ф <список исходной информации>;
где <где сформировать> — обозначение регистра или элемента, в котором будет
формироваться информация;
<список исходной информации> — последовательное перечисление индексных,
числовых, алфавитных регистров, элементов и констант, из которых выбирается
информация для формирования.
46
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
Список обязательно завершается ограничителем «точка с запятой». В списке могут
быть выделения содержимого СОД (п. 2.13.2). В списке могут быть и операторы
выделения содержимого СОД (п. 2.13.2). В списке могут быть и операторы цикла.
2.13.9. Если слева от буквы Ф («где сформировать») написать числовой или
индексный регистр, то в самые младшие разряды формируемого числа
записывается информация из самого первого в списке информации регистра (или
константы). К ней в старшие разряды приписывается содержимое из второго
регистра в списке и так далее. Ведущие нули в каждом из выбираемых регистров
подавляются. Знак и точность выбираемых чисел игнорируются. Сформированное
число — всегда целое и положительное или нуль. Вся информация в списке —
числовая (цифровая).
2.13.10. Если слева от буквы Ф указан алфавитный регистр или элемент, то
информация из самого первого в списке информации регистра, элемента или
константы записывается в самые первые (начальные) байты регистра или элемента,
предназначенного для формирования. Информация из второго регистра в списке
приписывается справа и так далее.
2.13.11. Операторы формирования непосредственно ни в каких процедурах
засылки, арифметики и сравнения использовать нельзя. После формирования
новая информация в регистре или элементе может использоваться без ограничений.
Не допускается слева от Ф писать оператор СОД. Примеры:
1) 15 →Р1 23 →Р2…Р4 Ф Р1 Р2;
В регистре Р4 сформируется число 2315;
2) "АБВ" →Э1 … "ГДЕ" →Э2…Э3 Ф Э1 Э2;
В элементе 3 образуется текст АБВГДЕ;
3) А2 Ф ("А") 6;
В алфавитном регистре А2 сформируется текст АААААА;
4) "ИСКРА" →А1 19 →Р2 "МАШИНА" →Э0…А2 Ф Э0 СОД А1 Р2 К2 1,5 Р2
'3134';
В А2 сформируется текст МАШИНАСК1,51914 (строго говоря, в А2 будет только
МАШИНАСК, а 1,51914 и признак конца разместятся уже в А3).
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
47
2.13.12. Оператор подсчета значащих разрядов определяет количество разрядов
(цифр) числа, записанного в индексном или числовом регистре, или количество
символов алфавитно-цифровой информации, записанной в алфавитном регистре
или элементе. Формат оператора:
КЗ
При подсчете разрядов числа в индексном или числовом регистре ведущие нули,
кроме нуля перед запятой и нулей после запятой, игнорируются. Знак и точность
числа в числовом регистре не засчитываются. В алфавитных регистрах и в
элементах запятая, точка, пробелы текста и знак «минус» у отрицательных чисел
рассматриваются как алфавитно-цифровые символы и включаются в результат
выполнения КЗ. Разделитель элементов и признак конца информации в
алфавитных регистрах не учитываются. Результат операции подсчета — всегда
целое положительное число или нуль. Оператор КЗ может участвовать в операциях
засылки и использоваться в арифметических и логических операциях. Его пишут
всегда после числа или текста, разрядность которого нужно определить:
1234 →Р4 КЗ →Р5 КЗ + 6 →Р8
В регистре Р5 — число 4, в регистре Р8 — число 7.
2.13.13. Оператор «сложения разрядов» выполняет сложение всех цифр числа,
выбранного слева от него. Формат оператора:
СР
При сложении разрядов знак и точность числа игнорируются. Результат операции
сложения разрядов — всегда целое положительное число или нуль. Правила
использования оператора — те же, что и для оператора КЗ.
2.13.14. Оператор «анализ точности» определяет точность числа, записанного в
числовом регистре (подсчитывает количество знаков после запятой). Формат
оператора:
АТ
Правила применения те же, что и для оператора КЗ.
2.13.15. Оператор «контроль по модулю» позволяет осуществлять контроль
числовой информации, хранящейся в индексном или числовом регистре, или
48
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
контроль результата вычисления арифметического выражения. Пишется всегда
после регистра или контролируемого выражения. Формат онератора:
Кмn
Оператор выполняет умножение разрядов числа на стандартные весовые
коэффициенты, сложение полученных произведений и деление полученной суммы
на число n, заданное в операторе. Результат операции — остаток от деления. Знак и
точность числа игнорируются. В качестве модуля n в операторе КМТАБn допускатся
числа 9, 10 или 11. Весовые коэффициенты приведены в табл. 2.
Таблица 2: Весовые коэффициенты для оператора Кмn
Разряды числа
Значение n
14 13 12 11 10 9 8 7 6 5 4 3 2
1
9
2
1
5
7
8
4
2
1
5
7
8
4
2
1
10
2
1
2
1
2
1
2
1
2
1
2
1
2
1
11
8
4
2
1
6
3
7
9 10 5
8
4
2
1
Пример:
Р0 КМ9 →Р1 Р0 Х 10 + Р1 →Р2
В Р2 записывается исходное число из Р0 с приформированым к нему справа
контрольным разрядом.
2.13.16. Все операции с регистрами, производимые по программе, относятся к
регистрам текущего (заданного последним) массива регистров. Смена номера
массива возможна перед выполнением любого оператора программы. Операторы
выборки вида Рn,m или Аn,m (регистр n массива m) можно использовать в любых
арифметических и логических операциях. Оператор вида Рn,m нельзя
использовать для косвенного задания каких бы то ни было параметров.
2.14. Ввод информации в режиме диалога
2.14.1. Для ввода цифровой информации с клавиатуры служит оператор:
НБ — набор
Оператор НБ используют в программе наравне с оператором выборки числовой
информации Рn илли Иn для засылки, вычисления, сравнения. Оператор НБ нельзя
использовать непосредственно для косвенного задания какого-либо параметра.
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
49
Использовать можно только числовой или индексный регистр, в который и
записать результат набора. Примеры:
1) НБ →Р1 →Р2…РР1…НБ →Э3…НБ →СОД Р1 Р6
2) НБ = 11 ПУ2…НБ + Р2 →И4…НБ НР4
2.14.2. Для ввода алфавитно-цифровой информации с клавиатуры служит
оператор:
ТК — текст
Оператор ТК пишут в программе перед оператором засылки в алфавитный регистр
или элемент, перед оператором сравнения (или после него). Оператор ТК нельзя
использовать для косвенного задания параметров.
2.14.3. Предельно допустимая длина вводимого по ТК текста — 256 символов.
Пример:
ТК →Э15…ТК →А1 = 15 ПУ3 + Э15 →Р4
При выполнении программы текст, вводимый по оператору ТК, и число, вводимое
по оператору НБ, высвечиваются в очередной графе экрана и гасятся после
нажатия пусковой клавиши.
2.14.4. Если нужно не вводить новую информацию, а корректировать уже
имеющуюся, вместо оператора ТК используют специальную константу /400/ —
корректировка текста. Специальную константу /400/ пишут после оператора
выборки алфавитной информации и перед оператором засылки. Таким образом,
перед /400/ пишут «что скорректировать», а после /400/ — «куда заслать
скорректированное». В частном случае после корректировок можно засылать в тот
же регистр или элемент, откуда выбиралась информация для корректировки.
Например:
Э15 /400/ →Э15
2.14.5. При выполнении специальной константы /400/ длина корректируемой
информации не должна превышать 512 байт. При желании максимально
допустимую длину можно сделать и меньше 512 байт. Для этого до выполнения
специальной константы /400/ необходимо выполнить специальную константу вида:
50
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
/13n 3n 3n / — ограничить буфер величиной (100n + 10n +n )
Если требуемая длина буфера меньше 100 байт, то есть п@ =0, 3п@ можно из
специальной константы изъять: /13n 3n /. Соответственно, если длину буфера
нужно задать меньше 10 байт, то константа примет вид /13 n /.
2.14.6. Если в процессе корректировки информации новая длина превысит
заданную длину буфера, раздается сигнал, а весь излишек игнорируется. Для
отмены заданной длины буфера и восстановления стандартной пишут специальную
константу /200/.
2.15. Вывод информации на печать и дисплей
2.15.1. Перед выводом информации на внешнее устройство это устройство должно
быть предварительно описано в программе.
2.15.2. Внешние устройства ПП ЭВМ используются в качестве «датчиков»
информации или в качестве «приемников» информации. Датчиками называют
устройства, с которых информация поступает в машину, приемниками —
устройства, на которые информация выводится из машины. Всем датчикам и
приемникам присвоены номера, которые и определяют тип и место устройства.
Номера приведены в таблице 3.
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
51
Таблица 3: Номера датчиков и приемников
Устройство
Датчик
Приемник
БОСГИ
-
0
АЦК
1
-
АЦПУ
-
4
Канал С2
5
5
Канал ИРПС1
6
6
НМГМД левый
10
10
НМГМД правый
11
11
Канал ИРПС2
21
21
Канал ИРПС3
22
22
Канал ИРПС4
23
23
Канал ИРПС5
24
24
Канал ИРПС6
25
25
2.15.3. Для задания номера датчика и приемника используются операторы:
Дn — датчик n
Пn — приемник n где n — номер датчика или приемника.
Заданные датчик и приемник остаются задействованными до тех пор, пока в тексте
программы не встретятся другие операторы Дn и Пn (с новым номером).
2.15.4. Допускается косвенное задание номера датчика и приемника:
ДРn, ДИn, ПРn, ПИn
Если датчик и приемник в программе не заданы, при запуске ПП ЭВМ
автоматически устанавливается датчик клавиатуры (1) и приемник экрана (0).
2.15.5. Данные на экран и на печать выводятся последовательно слева направо по
графам, разрядность и точность которых описана ранее оператором РГ (см.
п. 2.4.2). Следует отметить, что оператор РГ размечает графы того устройства
(экрана или печати), который в момент выполнения РГ задан приемником в
операторе Пn (ПРn, ПИn).
2.15.6. При разметке граф необходимо учитывать, что разрядность каждой графы,
предназначенной для вывода чисел, должна быть на 2 или 3 позиции больше
52
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
максимальной разрядности выводимых чисел. Дополнительные позиции
необходимы:
– для вывода знака числа («минус» у отрицательных чисел, пробел — у
положительных);
– для вывода опознавательного знака справа от числа (или пробела вместо значка);
– для вывода десятичной запятой при выводе дробных чисел (и только для них).
При выводе алфавитно-цифровой (текстовой) информации разрядность графы
может быть и равна разрядности информации (и даже быть меньше ее).
2.15.7. Перед начальным выводом информации необходимо установить в исходное
положение курсор экрана или печатающую головку АЦПУ. Для ..PAGE3 этой
операции используется оператор:
ТАБn — табулировать в графу n.
При начальной установке задают n = 1 или 0.
Оператор ТАБn используется для перемещения курсора или печатающей головки в
начало любой графы, разметка которой имеется в операторе РГ. Табуляция
возможна в обоих направлениях. Номер графы в операторе ТАБn можно задавать
косвенно — через индексный или числовой регистр: ТАБРn, ТАБИn.
При выполнении оператора ТАБ0 курсор экрана или печатающая головка
устанавливаются в начало первой графы (причем выполнение оператора РГ к
этому моменту — не обязательно), а кроме этого, выполняется «перевод строки» на
один интервал (следовательно, курсор устанавливается в начало следующей
строки). При работе с разрезным валом на строку переводится правый вал.
2.15.8. Для вывода информации на экран или печать в графу используется один из
операторов:
ВЫВ — вывод в графу текста или числа с нормализацией и без специальных
значков;
§ВЫВn — вывод в графу нормализованного числа с добавлением справа значка n,
(n — любой символ АЦК, кроме нуля и минуса);
§ВЫВ0 — вывод в графу нормализованного числа с ведущими нулями,
дополняющими число слева до разрядности графы;
§ВЫВ- — вывод в графу числа без нормализации под точность графы;
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
53
*ВЫВn — вывод в графу нормализованного числа с ведущими звездочками,
дополняющими число слева до разрядности графы, и с добавлением значка n
справа от числа;
ВЫВГ — вывод текста в графу в несколько строк.
Здесь и далее под словом «число» подразумевается содержимое любого числового
или индексного регистра, числовая константа, результат вычисления
арифметического выражения или ввода с клавиатуры по оператору НБ. Под словом
«текст» подразумевается всякая информация из алфавитного регистра, элемента,
из алфавитной константы или из специальной константы '…'.
Выводится всегда информация, выбраннная или образованная слева (до) оператора
вывода.
2.15.9. Все числа выводятся в правой части графы (выравнивание по младшим
разрядам). После последней цифры числа остаются две позиции: первая — для
знака числа (п. 2.15.6), вторая — для символа-значка n (в операторах §ВЫВn,
*ВЫВn) или пробела (в операторах ВЫВ, §ВЫВ0, §ВЫВ-). По всем операторам, кроме
§ВЫВ-, перед выводом числа нормализуются под точность графы. Текст по
оператору ВЫВ выводится с первой позиции графы.
2.15.10. При выводе чисел их разрядность должна быть по меньшей мере на 2 (или
3) меньше разрядности графы (п. 2.15.6). Если ширина графы недостаточна для
вывода слева от числа пробелов, ведущих нулей или звездочек, они не выводятся.
Разрядность выводимого текста может превышать разрядность графы. При выводе
оператором ВЫВ текст займет кроме «своей» графы, одну или несколько следующих
граф, а после вывода курсор экрана (печатающая головка) автоматически
переместится на строку вниз и вернется в начало графы, следующей за той, в
которой был начат вывод. При выводе на печать выход печатающей головки за
пределы поля печати не допускается. При выводе на экран, если текст занял всю
строку экрана, его продолжение выводится на следующую строку с первой позиции
той же графы. При выводе оператором ВЫВГ текста, длина которого превышает
ширину графы, этот текст размещается целиком в этой графе, занимая столько
строк, сколько необходимо для всего текста.
2.15.11. Вывод чисел операторами ВЫВ, §ВЫВn, *ВЫВn и *ВЫВ0 сопровождается их
нормализацией под точность графы. Если точность числа меньше точности графы,
54
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
оно дополняется нулями после запятой до точности графы. Если точность числа
больше точности графы, оно перед выводом округляется до точносйи графы
(см. 2.9.3).
2.15.12. Числа и текст можно выводить в графу и по ее середине. Для этого сразу
после оператора ВЫВ нужно писать оператор
ЦЕНТР — центрирование.
2.15.13. Операторы вывода можно использовать внутри арифметического
выражения, то есть выводить промежуточные результаты вычисления какой-либо
части арифметического выражения. Например:
…Р1 + Р3 Х Р2 ВЫВ + Р6 : 4 ВЫВ…
Если оператор засылки или накопления написан перед оператором вывода,
выводится результат, полученный до засылки (накопление):
…Р1 + Р2 →Р3 НР16 ВЫВ…
Выводится сумма Р1 + Р2.
2.15.14. После вывода в графу курсор экрана всегда устанавливается в первую
позицию следующей графы. Примеры использования операторов вывода:
1) …Р21 ВЫВ… (НБ →МР15 ВЫВ)10… А3 →Э62 →А4 ВЫВ…
…Р16 + Р36 §ВЫВ%…И16 §ВЫВ0… "ПП ЭВМ"ВЫВ… 123 ВЫВ…
…НБ §ВЫВ- …ТК ВЫВ… ТК →Э1 ВЫВ…
2) …РПС1 Д1П0 РГ093 091; РДИ К1 Д2А; ; ТАБ1 25, 3 →Р1
ВЫВ Р1 ИЗ ВЫВ…
На экран выводятся два числа. Схема расположения информации приведена на
рис. 2.
Графа
Позиции графе
Информация
1
123456789
25,300
2
123456789
2 5 , 3-
Рисунок 2: Схема расположения числовой информации
3) …РПС2 Д1П4 РГ080 120; ТАБ0 "МАШИНА" ВЫВ
"ЭЛЕКТРОННАЯ"ВЫВ…
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
Графа
55
1
2
Позиции
12345678
1 2 3 4 5 6 7 8 9 10 11 12
Печатается
МАШИНА
ЭЛЕКТРОННАЯ
Рисунок 3: Схема расположения печатаемой информации
4) …РПС3 Д1П4 РГ 112 102 092 090; ТАБ0 (1234 ИЗ *ВЫВ% )4…
Строка печатается в виде:
**1234,00-%*1234,00-%1234,00-%***1234-%
Графа1 Графа2 Графа3
Графа4
5) …РПС11 РДИ К10 Д А10; ; ВВОД "ПП ЭВМ" →Э0 "ИСКРА"
→Э1 1130 →Р0 (РГ070 060 060; ТАБ1 Э0 ВЫВ Э1 ВЫВ Р0 ВЫВ Д1П4 )2…
При выполненнии этого фрагмента сначала на экран, а потом на печать выведется:
ПП ЭВМ ИСКРА 1130
2.15.15. Для перемещения курсора (печатающей головки) на одну графу вправо без
вывода информации используют оператор:
ПГ — пропустить графу
Пропускается одна очередная графа (любая по номеру).
2.15.16. Заданную оператором РГ (см. п.2.4.1) ширину и точность графы можно
оперативно менять оператором:
ИГnnm — изменить графу,
где nn — новая разрядность (ширина) графы,
m — точность графы.
Параметр nnm можно задавать косвенно в виде ИГРn, ИГИn. В этом случае
последний (младший) разряд целой части числа в Рn определяет новую точность
графы, а следующие (старшие) разряды целой части числа — разрядность графы.
Таким образом, если при прямом задании параметра nnm разрядность графы не
может быть больше 99 позиций, то при косвенном задании разрядность графы
может и превышать 99 позиций. Но максимально допустимая разрядность
определяется полем строки экрана или АЦПУ.
56
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.15.17. Оператор «изменить графу» действует до первого после него оператора
вывода, табуляции или до нового оператора ПГ или РГ. Разрядность и точность
следующей графы сохраняются в соответствии с заданными в операторе РГ.
2.15.18. Оператор «изменить графу» можно использовать независимо от того, была
ли ранее выполнена разметка граф РГ или нет. Оператор полезно использовать для
оперативного изменения точности вычислений в графе.
2.15.19. Кроме операторов табулировать (п. 2.15.7) и пропустить графу (п. 2.15.15)
для управления курсором экрана и печатающей головкой используют специальные
константы с кодом операции (шифром) 0.
Для экрана можно использовать специальные константы:
/001/ — установить курсор в начало строки 1 экрана без сброса информации на
экране;
/003/ — установить курсор в начало строки 1 экрана со сбросом информации со
всего экрана;
/005/ — передвинуть курсор на 1 строку вниз;
/007/ — подать звуковой сигнал;
/008/ — вернуть курсор на 1 позицию влево;
/009/ — передвинуть курсор на 1 позицию вправо;
/00С/ — передвинуть курсор на 1 строку вверх;
/00D/ — установить курсор в начало строки;
/00Е/ — установить формат изображения 24 строки по 40 знакомест в строке;
/00F/ — установить формат изображения 24 строки по 80 знакомест в строке.
Перед подачей команд экрану нужно задать приемник 0 (п.п. 2.15.3–2.15.4). Все
команды перемещения курсора по экрану не затрагивают разметки граф и не
меняют номера текущей графы, то есть команда /00D/ не заменяет оператора
ТАБ1. Самая верхняя строка экрана (нулевая) — служебная. Вывод информации в
нее по программе ЯМБ невозможен.
2.15.20. Подача команды /005/ или /00А/ в момент, когда курсор находится в
самой нижней строке экрана, вызывает перемещение на строку вверх всей
информации, находившейся в строках 2–24. Курсор остается в последней строке.
Информация, бывшая в строке 1, с экрана исчезает. Подача команды /00С/ в
момент, когда курсор находится в строке 1 экрана не меняет положения курсора и
информации. Подача команды /008/ в крайнем левом положении на строке —
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
57
переводит его в крайнее правое положение на предыдущей строке. Если команда
подана в начале 1-ой строки, положение курсора не меняется. Подача команды
/009/ в крайнем правом положении курсора на строке — переводит его в крайнее
левое положение на строку ниже. Если команда подана в крайнем правом
положении самой нижней строки, курсор перемещается в крайнее левое положение
той же строки, но вся информация из строк 2–24 перемещается на одну строку
вверх.
2.15.21. Перед сменой формата (/00Е/ или /00F/) необходимо прежнюю
информацию на экране погасить командой /003/, а после смены формата подать
ТАБ1 или ТАБ0.
2.15.22. Для управления печатью «Искра 001.41 аА» используются команды:
/004/ — перевод на 1 строку правого формуляра (при работе с расцепленным
валом);
/001/ — перевод на 1 строку левого формуляра (при работе с расцепленным
валом);
/017nn/ — втягивание документа в устройство передней закладки на nn строк
(nn — шестнадцатиричное);
/016nn/ — вывод документа в устройстве передней закладки на nn строк вверх
(nn — шестнадцатеричное).
Если валы сцеплены, команды /001/, /00А/ и /005/ вызывают перевод обеих
частей вала.
2.15.23. Для управления печатью «К-6312М» можно использовать специальные
константы:
/007/ — подать звуковой сигнал;
/00А/ — перевести строку;
/00С/ — Протянуть формуляр;
/00Е/ — Задать печать широким шрифтом (вразрядку);
/00F/ — Задать печать узким (сжатым) шрифтом (до 233 знаков в строке);
/012/ — отменить узкий (сжатый) шрифт;
/01В30/ — установить между строками интервал в 3,18 мм;
/01В31/ — установить между строками интервал в 2,50 мм;
/01В32/ — установить между строками интервал в 4,24 мм;
/01В33nn/ — установить между строками интервал в пх0,1175 мм;
/01В38/ — игнорировать конец бумаги;
58
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
/01В39/ — реагировать на конец бумаги;
/01В41nn/ — установить между строками n х 2,47 мм;
/01В42nn/ — установить вертикальную табуляцию на nп позиций;
/01В43nn/ — установить длину формуляра в nn строк;
/01В4300nn/ — установить длину формуляра в nn дюймов;
/01В45/ — задать печть жирным шрифтом;
/01В46/ — отменить печать жирным шрифтом;
/01В47/ — задать двойную печать;
/01В48/ — отменить двойную печать;
/01В4Еnn/ — пропускать nn последние строки формуляра;
/01В4F/ — отменить пропуск последних строк формуляра;
/01В51nn/ — установить nn знаков в строке;
/01В5300/ — установить печать верхним индексом;
/01В5301/ — задать печать нижним индексом;
/01В54/ — отменить печать индексом;
/01В5701/ — задать печать широким шрифтом (в разрядку);
/01В5700/ — отменить печать широким шрифтом;
/01В2D01/ — задать печать с подчеркиванием;
/01В2D00/ — отменить печать с подчеркиванием.
Стандартный вид печати позволяет печататать в строке 136 знаков (10 знаков на
дюйм). Печать узким шрифтом позволяет довести плотность печати до 233 знаков
в строке (17 знаков на дюйм). При печати вразрядку (широким шрифтом)
плотность уменьшается по сравнению со стандартной в два раза. Печатающее
устройство позволяет задавать три варианта яркости: нормальную, жирным
шрифтом и двойной печатью. При печати жирным шрифтом и при двойной печати
скорость печати снижается до 60 знаков в секунду (при стандартной плотности в
строке). Следует отметить, что печать индексами сопровождается заданием
двойной печати, для отмены которой необходимо подавать команду /01В48/.
Команда же
/01В54/,
отменяющая печать индексом, двойную печать не отменяет. Печать индексом
можно сопровождать заданием узкого шрифта, что позволяет сохранить
нормальную конфигурацию букв при уменьшении их размеров. Команды задания
шрифтов можно использовать как в начале строки или группы строк, так и внутри
строки, однако в этом случае оператор РГ задает размер граф нормальной печати,
а для всех отклонений, связанных с использованием узкого или широкого шрифтов,
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
59
необходимо использовать оператор ИГ. Команда /00Е/ действует только на одну
графу, т.е. ее необходимо подавать перед каждым выводом в графу (и в этом ее
отличие от команды /01В5701/, действующей до отмены печати широким
шрифтом командой /01В5700/).
2.15.24. ПП ЭВМ позволяет использовать принцип «отложенной» печати, при
котором печатаемые данные сначала запоминаются в буфере, и лишь потом
печатаются. Сигналом печати являются операторы ТАБ0 и /005/ (печатается вся
строка), а также ТАБn (печатается часть строки в буфере). Если этих операторов
не было, печать выполняется через две секунды после последней команды вывода
(п. 2.15.8). Направление печати (слева направо или справа налево)
программированию не подлежит и определяется печатающим устройством
автоматически
2.16. Обмен данными с магнитным диском
2.16.1. С магнитным диском можно обмениваться данными как из поля элементов,
так и из массивов регистров.
2.16.2. Для вывода на магнитный диск информации из поля элементнв применяется
оператор:
ЗДnРm — запись данных,
где n — количество зон диска, выделяемых под информацию;
Рm — числовой регистр, содержащий начальный номер зоны диска для записи.
2.16.3. При выполнении оператора «запись данных» информация записывается,
начиная с разделителя записи текущей строки поля элементов. Объем
записываемой информации определяется количеством зон n в операторе Здn.
2.16.4. Для чтения данных с магнитного диска в поле элементов применяют
оператор:
ЧДnРm — чтение данных,
где n — количество зон диска, занимаемых информацией;
Рm — числовой регистр, содержащий начальный номер зоны диска для чтения.
60
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.16.5. Данные читаются с диска и записываются в поле элементов, начиная с
разделителя записи текущей строки поля элементов. Если оператор ЧД подан после
команды ВВОД, информация читается в начало поля элементов. Если сразу после
выполнения оператора ЧД выполнить оператор записи в числовой или в индексный
регистр, туда запишется общее количество элементов в прочитанной информации.
После чтения данных адрес конца введенной информации становится адресом
конца всего поля элементов.
2.16.6. Для вывода на магнитный диск информации из массива регистров
используют оператор:
ЗРn { Рl/Иl/Аl } Pm — запись регистра,
где n — количество зон диска, выделяемых под информацию;
Рl, Иl, Аl — числовой, индексный или алфавитный регистр (текущего массива
регистров), начиная с которого информация поступает на запись);
Рm — числовой регистр с номером начальной зоны диска для записи.
2.16.7. При записи из регистров объем записываемой информации целиком и
полностью определяется количеством зон для записи n, заданным в операторе.
Записываемая информация может включать регистры любого типа и любого
количества массивов: регистр Рl, Иl, Аl определяет только начало информации.
Информация может охватить и поле элементов и даже свободное поле ОЗУ.
2.16.8. Для ввода с магнитного диска информации в массивы регистров используют
оператор:
ЧРn { Рl/Иm/Аl } РМ — чтение в регистры,
где n — количество читаемых зон диска,
Рl, Иl, Аl — числовой индексный или алфавитный регистр текущего массива,
начиная с которого разместить читаемую информацию;
Рm — числовой регистр с номером начальной зоны диска.
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
61
2.16.9. Разметка регистров, в которые читается информация с диска, должна
полностью совпадать с разметкой регистров, из которых эта информация
записывалась.
2.16.10. Во всех операторах обмена информацией с диска количество зон можно
задавать и косвенно (в виде Рn или Иn). Косвенно можно задавать и номер
начального регистра в операторах ЗР и ЧР и номер регистра с начальной зоной
(РРm или РИм). Кроме того, номер начальной зоны можно задавать и в индексных
регистрах.
2.16.11. Выполнение любой из команд обмена информацией с диском рекомендуется
анализировать оператором перехода, который пишут сразу после задания номера
начальной зоны. Этот оператор выполняется, если обмен информацией прошел без
сбоя и пропускается, если при выполнении обмена произошел сбой.
2.16.12. Если при выполнении обмена с диском произошел сбой, код этого сбоя
записывается в индексный регистр 0 (запись выполняется в младшие разряды И0).
Чтобы эту информацию можно было анализировать, перед выполнением оператора
обмена необходимо в И0 заслать нуль.
2.16.13. Примеры программирования обмена данными с диском:
1) …25 -→ Р4 У1…Д10П10 0 -→ И0 ЗД1 Р4 ПУ2 Д1П0 ТАБ0
"СБОЙ МД" ВЫВ И0 ВЫВ Р4 ВЫВ СТП У2 1 НР4 ПУ1…
На МД в одну зону записывается поле элементов. Начальная зона для записи — 25.
При сбое на экран выводится текст СБОЙ МД, код сбоя и номер зоны.
2) …0 -→ И0 ЧР1 АР38 Р48 ПУ16 И0 -→ Р0…
С МД читается одна зона в алфавитные регистры, начиная с регистра, номер
которого хранится в Р38. Номер читаемой зоны — в Р48. При успешном чтении —
переход к У16. При сбое код сбоя переписывается в Р0.
2.17. Операторы записи и чтения программ
2.17.1. Запись программ на диск можно выполнить как с помощью клавиш, так и
автоматически, включив соответствующие операторы ЯМБ в программу:
ЗПnРm — запись программы,
62
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
где n — число зон диска, необходимых для размещения программы;
Рm — числовой регистр m, содержащий номер начальной зоны для записи.
2.17.2. Количество зон диска под программу можно рассчитать с помощью
оператора КРП (п. 2.12.18).
2.17.3. Оператор п. 2.17.1 записывает программу на диск в кодах машины
непосредственно из поля программы. Записывать можно и в ретранслированном
виде (в операторах ЯМБ). В этом случае оператор имеет вид:
ЛСТ ЗПn Рm — запись ретранслированной программы.
Подсчет количества зон n в этом случае выполняется оператором ЛСТ КРП.
2.17.4. При подсчете количество зон надо всегда округлять в большую сторону до
целого числа зон.
2.17.5. Для вода программы с МД в ОЗУ используются операторы чтения
программ:
ЧПn Рm ППСl — чтение программы в кодах с полной заменой программы;
ЧПnКdРmППСl — чтение программы в кодах и ее подстыковка к действующей
программе;
ЛСТ ЧПпРmППСl — чтение ретранслированной программы с полной заменой
программы;
ЛСТ ЧПnКdРmППСl — чтение ретранслированной программы и ее подстыковка к
действующей программе, где:
n — количество зон, занимаемых вводимой программой;
d — номер программной строки, на место которой подстыковывается программа;
m — числовой регистр, содержащий номер начальной зоны МД спрограммой;
l — номер программной строки, к выполнению которой необходимо перейти после
чтения программы.
Все параметры можно задавать косвенно: в числовом или индексном регистре.
2.17.6. Операторы чтения программы можно использовать в любой программной
строке. Читается программа (или программный модуль) всегда только целиком.
При чтении программы содержимое регистров и поля элементов сохраняется (пока
не будут выполнены операторы РД и ВВОД). Из этого следует, что объем
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
63
считываемой программы при полной замене прежней программы не должен
превышать объема вызывающей программы плюс объем ее свободного поля. Если
это условие не выполняется, нужно предварительно (до чтения программы)
погасить поле элементов, а при необходимости сократить и поле регистров, причем
в этом последнем случае нужно сначала выполнить оператор ВВОД, а уже потом
оператор РД. При частичной замене программы тоже необходимо контролировать
ее возможность с точки зрения объема памяти для размещения данных и
программы. Если программа вводится в ретранслированном виде, она сначала
размещается в свободном поле, а уже потом транслируется в коды и размещается в
поле программы ОЗУ. Примеры:
1) …Д10П10 0 -→ И0 100 -→ Р4 ИГ112 КРП : 512 -→ Р5
1 -→ Р5
У1 ЗП Р5 Р4 ПУ2 Д1П0 ТАБ0 "СБОЙ МД" ВЫВ СТП У2…
Ц = Р5 ПУ1 +
Вычисляется количество зон, необходимых под программу на МГМД, засылается в
Р5, и на МГМД записывается программа, начиная с зоны 100 (задано в Р4). При
сбое высвечивается текст СБОЙ МД, а ПП ЭВМ останавливается. Подсчет
количества зон МД под программу можно упростить:
КРП : 512 Ц + 1 -→ Р5,
но в этом случае, если программа занимает ровно целое число зон, для записи
будет выделено на 1 зону больше, чем это необходимо. Никаких неприятностей это
не вызовет.
2) …Д10 П10 0 -→ И0 100 -→ Р4 ЧП5 К6 Р4 ППС2…
С МГМД вызывается программа, которая заменяет часть действующей программы,
начиная с ПС6 (или РПС6). После подстыковки программы выполняется переход
ППС2. Вводимая программа занимает 5 зон и расположена на МГМД, начиная с
зоны 100.
2.17.7. Если при чтении программы произошел сбой, в ОЗУ сохраняется вся
программная строка, содержащая оператор чтения программы. В этом случае
переход ППСl пропускается и выполняется часть программы, написанная после
него. Это позволяет многократно повторять чтение программы из того же места
МГМД или из другого, изменяя номер начальной зоны, выводить на экран
сообщения, подсказки и тому подобное. Все операторы по обработке сбоя должны
размещаться в той же программной строке, что и оператор чтения программы. При
64
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
сбое код сбоя автоматически записывается в младший разряд нулевого индексного
регистра, что позволяет программисту предусмотреть анализ кода сбоя и в
зависимости от результата анализа выводить на экран разные сообщения и
предусматривать разные способы реагирования на сбой.
2.18. Работа с каналами связи
2.18.1. По каналам связи можно передавать только информацию с данными.
Данные передаются и принимаются только операторами языка (то есть по
программе). Используются два интерфейса:
– интерфейс для радиального подключения устройств с последовательной
передачей (ранг ИРПС);
– ранг «стык С2» (ГОСТ 18145-81).
2.18.2. Ранг ИРПС позволяет обмениваться информацией на короткие расстояния,
зависящие от принятой скорости передачи (до 500 м при скорости передачи 9600
бит/с).
2.18.3. Ранг С2 позволяет обмениваться информацией по каналу связи через
устройство преобразования сигналов (модем). Дальность и скорость передачи
зависит от типа модема; дальность связи может достигать десятков и сотен
километров. Допустимая скорость передачи — переменная: от 50 до 9600 бит/с.
Стандартные скорости — 50, 100, 200, 600, 1200, 2400, 4800 и 9600 бит/с. В качестве
канала связи используется выделенный телефонный канал.
2.18.4. По каналам связи передается информация, закодированная 7-битным кодом
КОИ-7 по ГОСТ 13052-74 или 8-битным кодом. Используется информация поля
элементов ОЗУ. Тип используемого канала задается операторами датчиков и
приемников (ДnПm).
2.18.5. Для передачи сообщения в канал связи используется оператор:
ВЫДСТР — выдать строку.
При выполнении этого оператора текущая строка поля элементов выводится в
канал, номер которого указан в качестве «приемника» (то есть Пn). Выводится
всегда одна (текущая) строка поля элементов.
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
65
2.18.6. После оператора ВЫДСТР пишут оператор перехода, позволяющий
определить: успешно или со сбоем завершилась передача информации. При
успешной передаче оператор перехода выполняется, при сбое — пропускается, и
выполняются операторы программы, написанные после него. В случае сбоя его код
заносится в младший разряд индексного регистра И0. Дополнительно см. п. 2.19.4.
2.18.7. Для приема сообщения из канала связи используют оператор:
СТР00; — строка ноль-ноль (точка с запятой обязательна).
При выполнении этого оператора ПП ЭВМ переписывает принятое из канала связи
сообщение из буфера в поле элементов (п. 2.20). Сообщение помещается на место
текущей строки поля элементов. После оператора ВВОД сообщение запишется в
самое начало поля элементов. Конец введенного сообщения всегда становится и
концом всего поля элементов.
2.18.8. После оператора СТР00; пишут оператор перехода, позволяющий
определить: успешно или со сбоем было принято сообщение. При успешном приеме
переход выполняется, а при сбое — пропускается, и ПП ЭВМ выполняет операторы
программы, написанные непосредственно после оператора перехода. При сбое код
сбоя автоматически заносится в младший разряд индексного регистра И0, что
позволяет выводить на экран сообщение с расшифровкой сбоя (п. 2.19).
2.18.9. Первой процедурой после выполнения перехода после СТР00; рекомендуется
запоминание количества элементов в принятом сообщении. Для этого достаточно
написать оператор засылки в любой регистр. Количество принятых элементов
можно и непосредственно использовать для вычислений первым операндом
арифметического выражения.
2.18.10. При работе с каналом связи используются специальные константы:
/700/ — задание параметров канала;
/701/ — дежурный режим ожидания;
/702/ — подготовка заголовка к передаче по стыку С2;
/703/ — опрос текущих значений параметров канала;
66
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
/6nn/ — задание величины тайм-аута ожидания ответа.
/704/ и /705/ описаны в п. 3.9.
2.18.11. Специальной константе /700/ должна предшествовать алфавитная
информация, в которой через запятую задаются параметры данного канала:
–
–
–
–
–
–
–
–
от
условный адрес буфера канала,
длина буфера канала,
скорость обмена,
контроль,
стоп-биты,
представление байта,
тип протокола,
имя терминала или величина тайм-аута (предельного времени ожидания ответа
корреспондента).
2.18.12. Параметры «условный адрес буфера» и «длина буфера» задаются целыми
числами, каждая единица которых соответствует 256 байтам. Начальный адрес —
нулевой.
2.18.13. Параметр «скорость обмена» указывается количеством бит в секунду с
учетом ограничений п. 2.18.3. Пустое значение параметра означает стандартную
скорость: 9600 бит/с для любого из каналов ИРПС и 1200 бит/с для каналов С2.
2.18.14. Параметр «контроль» задается одной цифрой:
0 — нет контроля,
1 — контроль на нечетность
2 — контроль на четность (то же по умолчанию).
2.18.15. Параметр «стоп-биты» задается одной цифрой:
0 — 7-битное (то же по умолчанию),
1 — 8-битное.
2.18.16. Параметр «представление байта» задается одной цифрой:
0 — 1 стоп-бит
1 — 2 стоп-бита
2 — 1,5 стоп-бита (тоже по умолчанию).
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
67
2.18.17. Параметр «тип протокола» позволяет на разных каналах использовать
разные протоколы и даже менять протокол в процессе работы. Задается цифрами
от 0 до 255. Пустой параметр приравнивается нулю. Задействованы значения:
0 — протокол обмена АП-70 по стыку С2 или протокол ЭБТ «Нева 501» для ИРПС,
1 — упрощенный протокол приема по ИРПС 5-ти информационных байт и одного
байта контрольной суммы по модулю 2. Прием считается успешным только при
совпадении подсчитанной контрольной суммы и считанной.
2.18.18. Параметр «имя терминала или величина тайм-аута» задается любой буквой
латинского алфавита при работе по стыку С2 и количеством секунд тайм-аута при
работе по ИРПС (от 1 до 255). Пустое значение параметра соответствует тайм-ауту
в 6с при работе по ИРПС и букве А при работе по стыку С2.
2.18.19. Специальная константа /701/ используется только при обмене по стыку
С2. Выполнение перехода, написанного после /701/ означает получение от
управляющей станции «управляющей последовательности» сигналов,
определяющей характер предстоящего обмена. По результату ее анализа в
индексном регистре И0 формируется 10, если от машины ожидают передачи
информации, и 11, если ожидают приема информации от управляющей станции.
Если в течение 20с управляющей последовательности не поступило, в И0 заносится
код 6, по которому можно выйти из дежурного режима либо снова повторить опрос
канала.
2.18.20. Специальная константа /702/ используется только по стыку С2 для
передачи в канал заголовка сообщения. Информация, передаваемая в качестве
заголовка, должна быть задана перед оператором /702/ любым из операторов:
"…", Аn, Эn, ТК. Передача собственно сообщения выполняется оператором ВЫДСТР
(см. п. 2.18.5).
2.18.21. Специальная константа /703/ предназначена для получения текущих
значений параметров данного канала, заданного в начале работы специальной
константой /700/ (см. п. 2.18.11). Номер опрашиваемого канала задается
оператором Дn до /703/. После оператора /703/ пишут оператор засылки в
алфавитный регистр или элемент. Можно использовать и вывод на экран
оператором ВЫВ. Структура получаемой информации идентична структуре
информации перед /700/ (см. п.п.2.18.11–2.18.18).
68
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.18.22. При работе по каналу связи в ранге ИРПС имеется возможность
оперативно менять предельное время ожидания ответа корреспондента (тайм-аут) с
помощью специальной константы:
/6 n n /,
где время тайм-аута в секундах равно 16n + n. Диапазон задаваемого тайм-аута —
от 1с (/601/) до 255с (/6FF/). Дополнительно см. п.п. 2.18.18 и 2.19.5.
2.18.23. При передаче информации в канал связи машина автоматически снабжает
ее всеми служебными символами, оговоренными протоколом обмена, а при приеме
информации анализирует эти символы и удаляет те из них, которые не
используются в поле элементов. Каждое сообщение становится строкой поля
элементов.
2.19. Обработка сбоев
2.19.1. Стандартным приемом, позволяющим обнаружить сбой при работе вводновыводного устройства, является оператор перехода, который пишут после
оператора ввода-вывода. Этот оператор выполняется только при успешном
выполнении операции ввода-вывода (без сбоя). При любом сбое оператор перехода
пропускается, а ПП ЭВМ выполняет участок программы, специально
предназначенный для обработки сбоев.
2.19.2. Под обработкой сбоя подразумевается цепь процедур, включающих в себя в
общем случае сигнализацию о сбое и меры по устранению последствий сбоя.
2.19.3. Сигнализация о сбое может быть звуковой, световой, протокольной. В
качестве звуковой сигнализации можно использовать специальную константу
/007/, подаваемую либо БОСГИ (приемник 0), либо АЦПУ Robotron К6312М
(приемник 4). Световая сигнализация — это вывод на экран сообщения о сбое.
Протокольная запись о сбое — это вывод на печать сообщения о сбое, аналогичного
световой сигнализации, или запись сообщения на МГМД. Варианты сообщений
могут быть самыми разными: от самых лаконичных (сбой на устройстве 10 код 1),
до развернутых, например: сбой при чтении с левого МГМД из-за несовпадения
«контрольных сумм».
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
69
2.19.4. Сбой МГМД или канала связи сопровождается записью кода сбоя в
младший разряд индексного регистра И0. Если в разметке данных индексные
регистры не предусмотрены, код сбоя заносится в самый младший разряд
числового регистра Р0. Поскольку запись кода сбоя выполняется только в младшие
разряды регистра и не затрагивают его старшие разряды, этот регистр следует
обнулять до выполнения команды ввода-вывода. Значения кодов сбоев МГМД
приведены в табл. 4, а сбоев и сообщений АПД — в табл. 5. Меры для устранения
последствий сбоя определяются программистом по результату анализа значения
кода сбоя.
Таблица 4: Коды сбоев МГМД
Код сбоя
Характер сбоя
Рекомендация
1
Нет маркера сектора или дорожки
Повторить операцию. Заменить
экстент или дискету
2
Номер сектора больше 719
Исправить программу
3
Нет готовности
Вставить дискету правильно и
закрыть крышку
4
Защита записи
Снять защиту с конверта или
заменить дискету
5
Нет элементов
Заменить экстент или дискету
7
Количество секторов больше
допустимого
Исправить программу или заменить
машину
8
Не совпали контрольные суммы
Заменить экстент
10
Плохой контроллер
Отремонтировать машину
12
22
Ошибка при трансляции программы, Исправить программу или заменить
прочитанной операторах ЯМБ
экстент
Не начало программы в кодах
Тоже
70
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
Таблица 5: Коды сбоев и сообщений АПД
Код
Характер сбоя или сообщения
Рекомендация
1
Не совпали контрольные суммы или не
выполнен контроль четности
Повторить передачу или прием
2
Ошибка режима
Исправить программу
3
Встречное сообщение или ошибка
передачи
Принять встречное, повторить вывод
5
Ошибка инициализации
Исправить программу
6
Нет окончания
Повторить прием-передачу (см. п.п.
2.18.18, 2.18.22 и 2.19.5)
7
Переполнение буфера приема
Увеличить буфер
8
Приостанов передачи/приема
Повторить прием
9
Авария канала
Устранить обрыв линии. Исправить
модем
10
Получена управляющая
последовательность «Опрос»
Перейти на передачу информации
(ВЫДСТР)
11
Получена управляющая
последовательность «Выборка»
Перейти на прием информации
(СТР00;)
12
Принята команда «прервать передачу»
Выполнить рекомендацию — перейти
в прием
13
Нарушен протокол приема сообщения
Повторить прием
16
Получено сообщение
Обработать буфер оператором
СТР00;
17
Запрос на продолжение приема
Повторить прием
20
Канал отключен
Исправить линию, повторить
инициализацию канала
23
Переполнение поля элементов
Исправить программу
2.19.5. При обмене информацией в ранге ИРПС максимальное время ожидания
ответа от корреспондента задается программистом специальной константой /6nn/
или /700/. По умолчанию время ожидания принимается равным 6с. Если в
течение заданного тайм-аута ответа или информации от корреспондента не
получено, вырабатывается сбой. Поскольку длина передаваемых сообщений и
характер их обработки различны, время допустимого ожидания ответа («таймаут») следует подбирать индивидуально.
2.19.6. Примеры программирования обмена информацией по каналу связи:
1) …У0 0 -→ И6 Д6П6 /601/ ВЫДСТР Д1 П0 ТАБ0 ПУ14 ПУИ0
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
71
У1 "Не совпали КС" ВЫВ ПУ0
У2 "Ошибка @ режима"ВЫВ ПУ0
У3 "Встречное" ВЫВ 1 НР1 (ДАЛЬШЕ ПУ11 У11 ) Д6П6 0 -→ И0
СТР00;Д1 П0 ТАБ0 ПУ12 ПУ13
У5 "Ошибка инициализации" ВЫВ ПУ0
У6 "Нет ответа" ВЫВ (99:1)99 ПУ0
У7 "ПРП ОЗУ" ВЫВ ПУ0
У8 "Нет связи" ВЫВ СТП ПУ0
У9 "Авария" ВЫВ СТП ПУ0
У12 "Принято встречное" ВЫВ
У13 (БЛИЖЕ)Р1 ПУ0
У14 "Передано" ВЫВ
2) …У0 ( 0 -→ И0 Д5П5 ВВОД СТР00; Д1 П0 ТАБ0 ВЦ ПУ52 99:1)3
"Сбой" ВЫВ И0 ВЫВ СТП ПУ0
У52 -→ Р8 ИГ090 "Принято" ВЫВ 3>=Р8 ПУ54 -→ Р8
У54 (ИГ260 МЭ0 ВЫВ)Р8 ПУ0…
2.20. Обработка прерываний
2.20.1. «Нормальная» последовательная работа машины по программеможет
прерываться. Причинами прерывания могут послужить ошибки впрограмме,
поступление сообений из каналов связи, сбои в работе АЦПУили МГМД. Если
программист не принял никаких специальных мер, ошибкив программе вызывают
остановку машины (п. 3.3.2.). Если остановкамашины нежелательна, в программе
следует предусмотреть обработку прерываний. Обработка прерываний включает
два разных оператора:
ПРЕРmnp; — разрешение обработки прерывания и
ПРЕРm; — запрещение обработки прерывания,
где m — тип прерывания,
n — номер указателя, к которому следует перейти для обработки возникшего
прерывания,
р — номер программной строки с подпрограммой обработки прерывания,
— символ пробела, разделяющий параметры оператора.
Точка с запятой в конце операторов обязательна.
2.20.2. Тип прерывания m обозначается целой десятичной цифрой:
0
2
3
4
—
—
—
—
прерывание от интерпретатора из-за ошибок;
прерывание от любого из каналов связи,
прерывания при сбоях печатающего устройства;
прерывания при сбоях НМГМД.
72
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
2.20.3. Параметры n и р задают начало подпрограммы, выполняющей обработку
прерывания. Как и всякая подпрограмма, она должназавершаться оператором
ВЫХОД.
Содержание подпрограммы обработки прерывания индивидуально и зависит как от
типа прерывания, так и отпотребностей решаемой задачи. Ее выполнение не
должно искажать ходосновной программы, поскольку конкретный момент
выполненияподпрограммы обработки прерывания заранее не предсказуем.
2.20.4. Оператор разрешения обработки прерывания можно писать влюбом месте
любой программной строки. Не рекомендуется разрешатьобработку прерывания
внутри подпрограммы обработки прерывания п. 2.20.3. Оператор разрешения
обработки прерывания от интерпретатора из-за ошибок в программе (ПРЕР0…)
следует писать до возможной ошибки (см. п.3.3.2), а запрет обработки прерываний
(ПРЕР0;) — после возможных ошибок.
2.20.5. Физически прием информации из любого канала связивыполняется в тот
момент, когда эта информация поступает. Принятаямашиной информация
записывается в буфер, размер и адрес которого длякаждого канала определены
алфавитной информацией перед командой /700/ (см. п. 2.18.12). Перепись
принятого сообщения из буфера в полеэлементов может быть выполнена только
после выполнения оператораразрешения обработки прерывания от канала связи
(ПРЕР2…;) иописывается внутри подпрограммы обработки прерывания. Сам
оператор ПРЕР2…; следует писать только в том месте программы, где
необходимопринять и обработать сообщение из канала, исходя из логики
решаемойзадачи.
2.20.6. Подпрограмма обработки прерывания от канала связи вобщем случае
должна включать в себя:
– временный запрет обработки следующих прерываний от каналовсвязи
оператором ПРЕР2;,
– запоминание номера канала, приславшего сообщение, любымоператором засылки
в числовой или индексный регистр;
– перепись сообщения из буфера в поле элементов оператором СТР00; (см. п.
2.18.7);
– обработку принятого сообщения.
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
73
2.20.7. Обработка принятого сообщения полностью определяетсятребованиями
пользовательской задачи и включает в себя перепись врегистры, контроль,
вычисления, запись на МГМД, передачу ответа и так далее.
2.20.8. Для фактической обработки машиной прерывания от каналасвязи
необходимы два условия:
– разрешение обработки прерывания от канала связи,
– наличие в любом из буферов сообщения, принятого изсоответствующего канала
связи.
Если сообщение поступило в буфер до разрешения обработкипрерывания, его
обработка откладывается до выполнения ПРЕР2…;. Если к моменту выполнения
оператора ПРЕР2…; ни в одном из буферов нет сообщений, параметры оператора
запоминаются, а обработка сообщениявыполняется сразу после его приема из
канала связи.
2.20.9. После оператора, разрешающего обработку прерывания, впрограмме пишут
сразу запрет прерывания (см. п. 2.20). Например:
…ПРЕР2 19 1; ПРЕР2;…
РПС1…У19 ПРЕР2; -→ И1 ВВОД 0 -→ И0 СТР00; ПУ21 П0 ТАБ0
"Сбой" ВЫВ И0 ВЫВ И1 ВЫВ /007/ ВЫХОД У21 [анализ номера канала и
обработка принятого сообщения] ВЫХОД
В И1 запоминается номер канала, приславшего сообщение.
2.20.10. При отсутствии в программе оператора разрешения обработки прерывания
от ПУ (ПРЕР3…;) сбой ПУ останавливает машину, и продолжить работу можно
только повторным запуском (п. 3.9.2). При наличии в программе оператора
разрешения обработки прерывания от ПУмашина при сбое ПУ не останавливается,
а выполняет переход к подпрограмме, заданной оператором ПРЕР3 n р.
2.10.11. Оператор разрешения прерывания ПРЕР3 n р; можно писать в любом
месте программы. Рекомендуется писать его до первогообращения к ПУ.
2.20.12. В подпрограмме обработки прерывания от ПУ можно,например, высветить
сообщение на экран, остановить машину оператором СТП, а после него повторить
вывод на печать. Можно и отказаться отвывода на печать, заменив его выводом на
74
2. ПРОГРАММИРОВАНИЕ НА ЯМБ'е
экран (если, конечно, это допустимо задачей). Оператор запрета обработки
прерывания от ПУ (ПРЕР3;) можно писать в любом месте программы.
2.20.13. Оператор разрешения обработки прерывания от МГМД (ПРЕР4 n р;)
рекомендуется использовать при многократных обращениях кМГМД в разных
участках программы. Если при сбойных ситуациях сообщения о сбоях носят
одинаковый характер и могут быть запрограммированы одной подпрограммой,
обращение к ней целесообразно задать оператором ПРЕР4 n n;, который написать
один раз перед первымобращением к НМГМД. Оператор запрета обработки
прерывания от МГМД (ПРЕР4;) можно писать в любом месте программы.
2.20.14. Пример программы обработки прерывания от МГМД:
…ПРЕР4 5 0; (0 -→ И0 П10 ЗД1 Р1 ВЦ ПУ0)3…
У5 /n0 ТАБ0 "сбой МГМД" ВЫВ "Зона" ВЫВ Р1 ВЫВ "Код" ВЫВ И0 ВЫВ
ВЫХОД…У0…
2.21. Получение значения даты и времени
2.21.1. Для получения значения даты, заданной машине при загрузке АДОСа (см.
п. 1.3), используют специальную константу /901/. Вызванную дату в виде 8байтной алфавитной информации (два символа — число, два символа — номер
месяца, 4 символа — значение года) можно вывести на экран, запомнить в длинном
числовом или в алфавитном регистрах или в элементе.
2.21.2. Для получения значения времени используют специальную константу
/902/. Вызванное значение времени представляет собой 6-байтную алфавитную
информацию (два символа — часы, два символа — минуты и два символа — целые
секунды). Доли секунд не выводятся. Значение времени можно вывести на экран,
запомнить в регистре или элементе. Показания «машинных часов» позволяют
уверенно фиксировать последовательностей событий, но не могут быть
непосредственно использованы для получения абсолютно точного значения
времени. Точное значение времени можно получить только после корректировки
значения «машинных часов».
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
75
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
3.1. Способы задания режимов
3.1.1. На машине можно выполнять следующие режимы работы:
–
–
–
–
–
–
–
–
–
–
ввод программы с клавиатуры;
вывод программы на экран;
корректировку программы;
отладку программы;
уничтожение комментариев;
вывод программы на печать;
запись программы на диск;
чтение программы с диска;
прием программ по каналу связи;
работу по программе.
3.1.2. Различные режимы работы задаются с помощью функциональных клавиш и
вводом информации с АЦК. Обозначения функциональных клавиш и их функции:
F1 — ЛИСТ — вывод программы в виде операторов языка (в формате «листинга»);
F2 — ПП — работа машины по программе;
F3 — ВВ — ввод программы с МГМД;
F4 — ВЫВ — вывод программы на МГМД;
F5 — РЕЖ — задание формата экрана;
F6 — ПР — ввод программы с АЦК;
F7 — ОТЛ — задание режима отладки программы;
F8 — УП — удаление информации из ОЗУ («удаление полей»);
F10 — АДОС — выход из ЯМБ'а в АДОС.
3.1.3. Заданию режима всегда должна предшествовать процедура «начальной
установки», которая осуществляется совместным нажатием двух клавиш: CTR и
S/B. После нажатия этих клавиш их нужно одновременно отпустить. При нажатии
функциональных клавиш п. 3.1.2. в левом верхнем углу высвечивается их
обозначение русскими буквами. Начальную установку можно не выполнять только
сразу после загрузки ЯМБ'а (см. п.1.3).
3.1.4. При задании режимов вместо нажатия функциональных клавиш F1–F10
можно вводить с АЦК их условное обозначение заглавными русскими буквами в
соответствии с п. 3.1.2. При ошибке в задании режима вверху справа высвечивается
текст «Ошибка в задании режима». Ошибку можно исправить либо повторным
76
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
заданием режима, либо корректировкой с АЦК с использованием курсорных
клавиш (табл. 7).
3.1.5. Список всех режимов работы машины приведен в Приложении 4.
3.2. Первичный ввод программы
3.2.1. Первоначально программа вводится в ОЗУ машины с АЦК непосредственно в
символах языка ЯМБ. Текст вводимой программы отображается в процессе ввода
на экране дисплея в формате 80 символов в строке. Самая верхняя строка экрана
отведена для сообщений пользователю машины о выполняемом режиме (в левой
части) и об ошибках в программе, обнаруженных операционной системой ЯМБ (в
правой части).
3.2.2. Для задания машине режима ввода программы с АЦК нужно после загрузки
ЯМБ'а (см. п. 1.3) нажать и отпустить клавишу F6. В верхней строке слева
высветится ПР, а в начале следующей строки — *. Мигающий курсор
останавливается на третьей позиции этой строки.
3.2.3. Пользователь должен перевести АЦК в режим ввода заглавных русских букв,
для чего нужно нажать и отпустить клавишу Р/Л и CLK — сигнальные лампочки
рядом с этими клавишами должны светиться. Если при задании режима ввода
программы с АЦК эти лампочки уже светились, клавиши Р/Л и CLK нажимать не
нужно.
3.2.4. Программа вводится с АЦК последовательно символ за символом. На экране
символы появляются одновременно с нажатием соответствующей клавиши АЦК.
При нажатии клавиши, обозначающей засылку → (она расположена в ближнем
ряду АЦК), на экране высвечиваются символы →.
3.2.5. При написании текста программы операторы языка удобно отделять друг от
друга пробелами. При вводе программы с АЦК эти пробелы можно опускать. Если
пробел использован для отделения номера оператора от следующей
непосредственно за ним числовой константы, его надо вводить обязательно (в
тексте программы такие пробелы полезно специально отмечать значком «пробел»).
Пробелы внутри алфавитной константы или комментариев нужно всегда вводить —
они транслируются наравне с любым другим символом АЦК.
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
77
3.2.6. При вводе с АЦК символов разметки граф внутри оператора РГ допускается
вводить пробелы между разметками отдельных граф (в сочетании (nnn)n mmm
пробел нужно вводить обязательно, поскольку количество повторяющихся разметок
граф может быть любым). Внутри оператора РД пробел допускается вводить после
цифр количества регистров каждого типа и после кодов разделителей данных. В
операторе ПРЕР параметры друг от друга отделяются пробелами обязательно.
3.2.7. Перевод курсора в начало следующей строки выполняется автоматически
после заполнения всех 80 позиций строки. Для многократного повторения какоголибо символа соответствующую клавишу следует держать нажатой, пока машина
не выведет символ требуемое число раз.
3.2.8. Ввод каждой программной строки завершается нажатием пусковой клавиши
⤶ («Пуск»). Машина транслирует и проверяет введенную программную строку.
При обнаружении ошибки мигающий курсор устанавливается в начало оператора,
вызвавшего ошибку, а в верхней строке экрана высвечивается текст,
характеризующий тип ошибки (табл.6). Пользователь должен исправить ошибку и
повторно нажать «Пуск». Если машина ошибок не обнаружила в начале
следующей строки экрана высвечивается звездочка. Допускается вводить подряд и
несколько программных строк, нажимая «Пуск» лишь в конце.
Таблица 6: Ошибки, выявляемые при трансляции или ретрансляции программы
Код ошибки
Характер ошибки
0
Ошибочный код операции
1
Семантическая ошибка
2
Номер > 65535
3
Число разрядов > 14
4
Точность > 7
5
Переполнение ОЗУ при ретрансляции
6
Нет указателя
7
Два одинаковых указателя
8
Число ( и ) не равно
9
Нет; в СТРnn
10
Оператор не входит в Ф или АЛФ
11
Переполнение ОЗУ из-за РД
12
Программа больше 64 Кбайт
78
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
3.2.9. После заполнения текстом программы всего экрана верхняя строка текста
исчезает, а весь остальной текст смещается на строку вверх. Курсор
устанавливается в начало нижней строки экрана.
3.2.10. Для исправления ошибок в программе, выявленных машиной или самим
пользователем, курсор нужно подвести к исправляемому символу и ввести новый
текст. Для подвода курсора и для корректировки программы используются
клавиши цифровой клавиатуры, которая в этом случае должна находиться в
режиме управления курсором (лампочка слева от клавиши NLK не должна
светиться). Используется и клавиша CTR в левой части АЦК. Назначение клавиш
и их сочетаний приведено в табл. 7. Для многократного перемещения курсора
вправо-влево и вверх-вниз соответствующую клавишу нужно нажать и держать
нажатой, пока курсор не переместится в нужное место. Перемещения курсора
допускаются только в пределах части программной строки, видимой на экране.
Таблица 7: Клавиши управления курсором и корректировки
Клавиши Характер действий
🡤
Перемещает курсор в начало программной строки или в
начало ее части, видимой на экране. При повторном
нажатии высвечивает предыдущий экран программной
строки
↑
Перемещает курсор на строку вверх
←
Перемещает курсор на позицию влево, а в начале строки на
— конец предыдущей строки
→
Перемещает курсор на позицию вправо, а в конце строки
— в начало следующей строки
CTR ⤍
Стирает весь текст программы справа от курсора.
Перемещает курсор на строку вниз
CTR
Сдвигает на строку вниз весь текст программы справа от
курсора (раздвижка на строку)
←→
Курсор не сдвигает, но задает режим вставки: весь
вводимый текст размещается справа от курсора с
отодвиганием прежнего текста в сторону конца (со всеми
переходами со строки на строку)
→←
Курсор не сдвигает, но перемещает на одну позицию влево
весь текст справа от курсора, стирая символ, бывший над
курсором
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
79
3.2.11. Для высвечивания «предыдущего экрана» данной программной строки
нужно дважды нажать клавишу →.
3.2.12. Ошибки в предыдущих программных строках исправляются только в
режиме корректировки программы.
3.3. Корректировка программы
3.3.1. Корректировать можно только программу, находящуюся в ОЗУ машины.
3.3.2. Для корректировки программная строка выводится из ОЗУ на экран в
операторах ЯМБ (ретранслируется), исправляется и снова транслируется с записью
ее в ОЗУ.
3.3.3. Для вывода на экран начальной программной строки нужно нажать и
отпустить вместе клавиши CTR и S/B, затем последовательно нажать и отпустить
F1 и «Пуск» . В верхней строке высветится ЛИСТ ПР, а в следующих строках текст
программной строки. Перед оператором РПСn или Псn дополнительно
высвечивается звездочка. Все операторы отделяются на экране друг от друга одним
пробелом. Курсор устанавливается в конце программной строки или (если она не
помещается на экране целиком) в конце экрана.
3.3.4. Для вывода на экран произвольной программной строки нужно нажать и
отпустить вместе клавиши CTR и S/B, затем последовательно нажать и отпустить
клавишу F1, набрать номер n у оператора РПСn или Псп, начинающего
программную строку, и «Пуск». Высвечивание выполняется так же, как и для
начальной программной строки (п. 3.3.3).
3.3.5. При исправлении ретранслированной на экран программной строки
используются курсорные клавиши так же, как и при вводе программы с
клавиатуры (п. 3.2.10).
3.3.6. После исправления всех обнаруженных ошибок нажимают «Пуск». Как и при
вводе программы (п. 3.2.8), машина транслирует и проверяет программную строку.
При обнаружении ошибки машина сигнализирует о ней. При отсутствии ошибок
затранслированная программная строка заносится в ОЗУ на прежнее место
(последующие программные строки при необходимости перемещаются), а
80
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
следующая программная строка выводится на экран. Ее тоже можно исправить и
записать в ОЗУ.
3.3.7. Каждое нажатие пусковой клавиши «Пуск» вызывает трансляцию
высвеченной программной строки и ретрансляцию с начала очередной строки
экрана следующей программной строки. При недостатке места текст предыдущей
программной строки смещается вверх, а предшествующая информация исчезает с
экрана.
3.3.8. Если текст программной строки превышает емкость всего экрана, после
заполнения экрана вывод на экран прерывается, нужно исправить ошибки в
высвеченной части программной строки, а после этого нажать «Пуск». На экран
выводится следующая порция текста, которую нужно тоже исправить, а затем
нажать «Пуск».
3.3.9. Чтобы уничтожить программную строку полностью, ее нужно высветить на
экран, установить курсор в ее начало и нажать и отпустить одновременно клавиши
CTR и ⤍ (см. табл. 7), после чего нажать «Пуск».
3.3.10. Чтобы в текст программы добавить новую программную строку, нужно
высветить на экран предшествующую программную строку и, не на нажимая
«Пуск», в ее конце ввести с клавиатуры текст новой программной строки, и только
после этого нажать «Пуск». Машина проверит и затранслирует обе программные
строки. Аналогично можно разбить одну программную строку на две или больше,
вставив в ее текст операторы РПСп или Псп, а после этого нажав «Пуск».
3.3.11. После трансляции последней программной строки на экран высвечивается в
начале следующей строки звездочка.
3.4. Отладка программы
3.4.1. Отладка программы заключается в ее пробном запуске и анализе
получающихся результатов.
3.4.2. При обнаружении интерпретатором ошибки машина анализирует, был ли в
программе оператор прерывания с параметром m=0 (п. 2.20.1.). Если оператор
выполнялся, машина переходит в точку программы, заданную параметрами n и p.
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
81
Если оператора прерывания не было, машина останавливается, высвечивая в
верхней строке тип ошибки в виде текста НЕТ, ПРП или ПАР, оператор программы,
выполнение которого оказалось невозможным, и код ошибки. Список ошибок,
обнаруживаемых интерпретатором, приведен в табл. 8. Для уточнения места в
программе, вызвавшего остановку машины, достаточно сразу после остановки
нажать «Пуск». Высветится часть программной строки до места, вызвавшего
остановку.
Таблица 8: Ошибки, обнаруживаемые интерпретатором
Тип Код
Характер ошибки
НЕТ
1
Нет регистра в разметке данных или нет элемента в поле элементов
2
Нет поля элементов
3
Нет конца информации в алфавитном регистре или элементе
4
Повтор знака числа
5
Повтор запятой
6
Нет цифры после запятой
7
Не цифра
8
Первый символ — не цифра
9
Нет начала цикла
10
Номер оператора больше 65535 или отрицательый
11
Не было разметки граф
12
Номер графы превышает допустимый оператором РГ
13
Недопустимая специальная константа /.../
14
Нет указателя
15
Нет программной строки
16
Нет конца информации в регистре или элементе
17
Недопустимый датчик-приемник
18
Не было разметки данных (РД)
19
Нет ППСn после оператора ЧП
20
Нет Аn в операторе АЛФ
21
Логическая функция от цифровой информации
22
Нет программы на диске (нет начала)
24
Ошибка параметра канала
25
Ошибка при ретрансляции
82
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
Продолжение таблицы 8: Ошибки, обнаруживаемые интерпретатором
Тип Код
Характер ошибки
ПРП
ПАР
1
Больше 65535
2
Переполнение регистра при засылке
3
Точность больше 7
4
Переполнение при нормализации под точность графы
5
Нет свободного поля. Длина текста больше допустимой
6
Адрес больше мегабайта
7
Ширина графы больше длины строки дисплея
8
Позиция больше 255 или мала ширина графы
9
Точность графы больше 7
10
Больше 64 вложений циклов или не было начала цикла
11
Переполнение поля элементов
13
Программа больше 64 Кбайт
14
Больше 64 уровней подпрограмм
24
Нет свободного поля для ретрансляции
1
Переполнение при сложении-вычитании
2
Переполнение при делении на нуль
3.4.3. Если сведений, полученных в результате пробного запуска, оказывается
недостаточно для того, чтобы выяснить истинную причину ошибки, используют
специальный режим отладки, позволяющий проследить действительный порядок
выполнения операторов программы, численные и текстовые значения регистров.
3.4.4. Специальный режим отладки программы задается с клавиатуры нажатием
клавиш:
CTR S/B (вместе), F2 F7 k, i, j, «ПУСК»
где i — номер программной строки, с которой нужно выводить на экран (в
верхнюю строку) обозначение выполняемых машиной операторов (выполнять
трассировку);
j — номер указателя программной строки i, начиная с которого нужна трассировка;
к — номер программной строки, с которой запускается выполнение программы.
При запуске высвечивается ПП ОТЛ k, i, j.
3.4.5. При выполнении трассировки машина останавливается перед выполнением
каждого высвеченного оператора. Для продолжения работы нужно нажимать
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
83
«Пуск». Операторы высвечиваются в левой части верхней строки в пределах 50
знакомест, после чего высвеченные операторы гаснут, и очередной оператор
высвечивается в начале строки. Если после высвечивания оператора нужно
получить значение регистра или элемента, на АЦК нажимают букву Д,
обозначение и номер регистра или элемента в виде Рn, Иn, Аn, Эn, а после него —
«ПУСК» Количество просматриваемых данных не ограничено, но перед каждым
новым просмотром нужно нажимать букву Д. Числовые значения регистров
высвечиваются полностью. Текстовые данные из алфавитных регистров или
элементов выводятся порциями до 30 символов. Каждая очередная порция (после
первой) выводится после нажатия буквы Д. Если информация в регистре или
элементе кончилась, остается последняя высвеченная порция.
3.4.6. Трассировку можно прекратить, для чего на клавиатуре нужно нажать
клавиши F7 и «ПУСК».
3.4.7. Если трассировку нужно не совсем прекратить, а только прервать на время и
возобновить с новой точки, нажимают клавиши: F7 i, j «ПУСК» (см. п. 3.4.4).
3.5. Работа с комментариями
3.5.1. Комментарии в программе обозначаются слева и справа восклицательными
знаками (см. п. 2.7.8). Как и алфавитные константы, комментарии занимают
память машины и дискет.
3.5.2. Комментарии можно уничтожить как во всей программе, так и в отдельных
ее программных строках.
3.5.3. Для уничтожения комментариев во всей программе, находящейся в ОЗУ,
нужно на клавиатуре нажать клавиши: CTR, S/B F8 2 «ПУСК» «ПУСК».
3.5.4. Для уничтожения комментариев только в одной программной строке ее
выводят на экран без комментариев, а затем нажимают «Пуск» CTR S/B F1 K i
«ПУСК», где i — вызываемая программная строка.
3.5.5. Уничтоженные комментарии восстанавливаются только их новым вводом в
режиме корректировки программы (см. п. 3.3).
84
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
3.6. Вывод программы на печать
3.6.1. На печать можно выводить либо всю программу, находящуюся в ОЗУ
машины, либо любые ее подряд расположенные программные строки. Программа
выводится только в операторах языка. Отпечатанную программу называют
листингом. Выводить программу на печать можно либо без разделения на
страницы, либо постранично.
3.6.2. Для вывода на печать обычной (не защищенной) программы без разделения
на страницы на клавиатуре нужно нажать клавиши:
CTR S/B (вместе) F1 П i–j «ПУСК» (последовательно)
где i — номер начальной программной строки,
j — номер конечной программной строки (i и j — номера при операторах РПСn или
Псn, с которых начинается программная строка)
П — буква П на АЦК.
3.6.3. Чтобы печатаемая программа оказалась разделенной на страницы требуемого
размера, на клавиатуре нажимают клавиши:
CTR S/B (вместе) F1 П i–j Cl «ПУСК» (последовательно)
где С — русская буква С на АЦК
l — количество строк на странице (страницы «разрезаются» символами «минус»).
Остальные обозначения — в соответствии с п. 3.6.2.
3.6.4. При печати из программы можно исключить имеющиеся в ней комментарии,
для чего при наборе на клавиатуре добавить сразу после буквы П еще букву К:
CTR S/B (вместе) F1 ПК i–j [Cl] «ПУСК» (последовательно)
3.6.5. Если на печать выводится защищенная программа, то после номера
последней печатаемой программной строки через запятую указывают код защиты
программы:
CTR S/B (вместе) F1 П [К] i–j, k [Cl] «ПУСК» (последовательно).
3.7. Запись программы на диск
3.7.1. Запись программы на диск можно выполнять не только операторами ЗП,
включаемыми в работающую программу, но и заданием с клавиатуры специального
режима записи на диск.
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
85
3.7.2. Дискета, предназначенная для записи программы, должна быть
предварительно отформатирована ([1] и [2]). На диск программа записывается либо
в кодах (как она хранится в программном поле ОЗУ), либо в символах оператора
языка ( в 8-битном коде). Для записи можно использовать любой НМГМД.
Записывать можно либо всю программу целиком, либо ее часть от начала любой
программной строки до конца программы.
3.7.3. Для записи на МГМД программы в кодах целиком без защиты на клавиатуре
нужно нажать клавиши:
CTR S/B (вместе) F4 i, j «ПУСК» (последовательно)
где i — номер приемника — 10 для левого НМГМД и 11 — для правого;
j — номер начального сектора для записи. Количество секторов для записи машина
определяет самостоятельно. Никаких подсказок не требуется.
3.7.4. При работе с ЯМБ следить за правильным распределением дисковой памяти
должен сам пользователь. Длину программы, предназначенной для записи на
МГМД, можно узнать, получив либо количество требуемых для записи секторов,
либо количество байт, занимаемых программой в ОЗУ.
3.7.5. Для определения количества секторов, занимаемых всей программой, нужно
на клавиатуре нажать клавиши:
CTR S/B F4 С «ПУСК»
где С — заглавная русская буква АЦК.
3.7.6. Для определения количества байт, занимаемых всей программой в ОЗУ,
нужно нажать клавиши:
CTR S/B F4 П «ПУСК»
где П — заглавная русская буква АЦК.
3.7.7. Для записи МГМД программы в кодах целиком с защитой от
несанкционированного ее просмотра на клавиатуре нужно нажать:
CTR S/B F4 i, j K m «ПУСК»
86
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
где К — заглавная русская буква АЦК,
m — код защиты, позволяющий просматривать записанную программу (любое
целое десятичное число от 0 до 9999). Остальные параметры — см. п. 3.7.3.
3.7.8. Для записи на МГМД пограммы в кодах не с самого начала, а с программной
строки l на клавиатуре нужно нажать клавиши:
CTR S/B F4 i, j, l [Km] «ПУСК»
Буква К и число m набираются только при необходимости защитить программу
(п. 3.7.7).
3.7.9. Для записи на МГМД программы непосредственно в операторах языка при
задании режима на клавиатуре необходимо после F4 добавить F1, так что в общем
случае режим выглядит так:
CTR S/B F4 F1 i, j [,l] «ПУСК»
Необязательный параметр заключен в квадратные скобки [...]. Программа не
защищается.
3.7.10. Для определения длины распакованной программы нужно тоже после F4
добавить F1:
CTR S/B F4 F1 {С/П} «ПУСК»
Букву С нажимают для получения результата в секторах, а букву П — в байтах
(см. п.п. 3.7.5, 3.7.6).
3.8. Чтение программы с диска
3.8.1. Чтение программы с диска можно выполнить не только операторами ЧП,
включаемыми в работающую программу, но и заданием с клавиатуры специального
режима чтения с диска.
3.8.2. Способы чтения программы с диска целиком и полностью определяются тем,
как программа была записана на диск: если она записана в закодированном виде,
то и читать ее надо в кодах. Если программа при записи была защищена, то при
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
87
чтении тоже необходимо указывать ее код защиты. Прочитать программу с диска
можно только целиком. Читаемая программа может либо целиком заменить
имеющуюся в ОЗУ, либо образовать с ее частью новую программу (режим
подстыковки программы).
3.8.3. Для чтения с МГМД программы в кодах с полной заменой находящейся в
ОЗУ программы (или просто в «пустое» программное поле) на клавиатуре нужно
нажать клавиши:
CTR S/B F 3 i, j «ПУСК»
где i — номер дисковода, в который вставлена дискета с программой (10 — левый,
11 — правый);
j — номер сектора, начиная с которого размещена программа. Количество
читаемых секторов машина определяет самостоятельно (после чтения начального
сектора программы).
3.8.4. Для подстыковки программы с МГМД к находящейся в ОЗУ после номера
после номера начального сектора через запятую указать номер программной
строки находящейся в ОЗУ программы, которую можно затереть в процессе
подстыковки (затираются, естественно, и все последующие программные строки):
CTR S/B F 3 i, j, l «ПУСК»
где l — номер затираемой при подстыковке программной строки.
3.8.5. Защищенная при записи программа (п.п. 3.7.7 и 3.7.8) читается с МГМД так
же, как и незащищенная (п.п. 3.8.3 и 3.8.4). Работа по ней не требует значения кода
защиты, но высветить программу на экране или вывести ее на печать можно
только пользователю, знающему ее код защиты:
CTR S/B F1 [П] i–j,m «ПУСК»
где П — заглавная буква русского алфавита (для вывода на печать),
i и j — начальная и конечная программные строки,
m — код защиты программы.
3.8.6. Если программа на МГМД была записана в операторах языка (п. 3.7.9), при
ее чтении или подстыковке нужно после клавиши F3 дополнительно нажимать
клавишу F1:
88
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
CTR S/B F3 F1 i, j [,l] «ПУСК»
i, j, и l описаны в п.п. 3.8.3 и 3.8.4.
3.8.7. После чтения программы с МГМД она всегда располагается в программном
поле ОЗУ в затранслированном виде.
3.9. Передача программ по каналу связи
3.9.1. По каналу связи можно передавать программы с ЭБТ «Нева 501» или ЭБМ
«Искра 555» в ПП ЭВМ «Искра 1030.11».
3.9.2. Передача выполняется в ранге ИРПС.
3.9.3. Исходные программы должны быть записаны на диск в ретранслированном
виде (в операторах ЯМБ). В ЭБТ или ЭБМ загружается специальная программа,
обеспечивающая чтение диска и передачу прочитанной информации по каналу
связи. В ПП ЭВМ загружается другая специальная программа, обеспечивающая
прием из канала связи информации, ее преобразование и запись на МГМД.
Записанная на МГМД программа может быть прочитана и загружена в ОЗУ
машины (п.п. 2.17.5 и 3.8.6).
3.9.4. Тексты программ для ЭБТ (ЭБМ) и ПП ЭВМ приведены в приложении 2 и 3.
3.9.5. В программе приложения 3 прием программы и ее преобразование
выполняют специальные константы /704/ или /705/, причем /704/ кроме того
преобразует коды русских букв в специальных константах /8.../ в 8-битный код.
3.9.6. Порядок работы с программами на машинах (на примере ЭБТ и ПП ЭВМ):
– установить в щель НГМД ЭБТ дискету с программой приложения 2 и ввести ее в
ОЗУ ЭБТ, нажав последовательно клавиши:
НУ ЛИСТ ВВ 10 ПР 4 , 1 ПУСК
– вынуть из НМГМД дискету с программой приложения 2 и установить в один из
накопителей дискету с программой, подлежащей передаче в ПП ЭВМ,
– установить в НМГМД ПП ЭВМ дискету с программой приложения 3 и загрузить
ее в ОЗУ, нажав клавиши:
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
89
CTR S/B F3 F1 10, 1 «ПУСК»
– запустить программу в ПП ЭВМ, нажав клавиши:
CTR S/B F2 «ПУСК»
– после высвечивания на экране текста:
ВВЕДИТЕ РЕЖИМ:
0 — С ПЕРЕКОДИРОВАНИЕМ /8.../
1 — БЕЗ ПЕРЕКОДИРОВАНИЯ /8.../
– задать с ДЦК нужный режим;
– запустить программу в ЭБТ, нажав НУ ПП
– после высвечивания на экране ЭБТ текста:
НОМЕР НАКОПИТЕЛЯ (8, 9, 10):
– ввести с ДЦК номер дисковода, в котором находится дискета с передаваемой
программой;
– после высвечивания текста:
ЧИСЛО ЗОН
– ввести с ДЦК число зон, занимаемых на дискете передаваемой программой;
– после высвечивания на экране ЭБТ текста:
НОМЕР НАЧАЛЬНОЙ ЗОНЫ
– ввести с ДЦК номер начальной зоны дискеты с программой для чтения и
передачи в ПП ЭВМ;
– после высвечивания на экране ЭБТ текста:
СТРОКА ПЕРЕДАНА
– после высвечивания на экране ПП ЭВМ текста:
СТРОКА ПРИНЯТА
ЗАПИСЬ ПРОГРАММЫ НА ДИСК Число зон...
НОМЕР НГМД
– ввести с ДЦК номер МГМД, на который нужно записать программу, - и нажать
«ПУСК»;
90
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
– после высвечивания текста:
НОМЕР зоны
– ввести с ДЦК номер начальной зоны для принятой программы и нажать
«ПУСК».
– появление на экране ПП ЭВМ текста:
ЗАПИСЬ выполнена
– означает, что запись выполнена без искажений.
– Программы приложений 2 и 3 предусматривают сигнализацию о сбоях при
чтении МГМД (на ЭБТ), при передаче и при записи на МГМД (на ПП ЭВМ). Для
устранения сбоев примите меры в соответствии с высвеченными кодами сбоев, после
чего повторите все действия с запуска программ.
3.9.7. Для работы с программами, требующими обязательно формата экрана 64х16,
на ПП ЭВМ перед запуском программы нажать клавиши:
CTR S/B F5 1 «ПУСК»
На экране высветится текст:
ЭКРАН 64х16. НАЖМИТЕ ПУСК
Повторно нажмите «ПУСК».
3.9.8. Для возврата к стандартному формату экрана нажать F5 2 «ПУСК», а после
высвечивания текста:
ЭКРАН 80х24. НАЖМИТЕ ПУСК
— еще раз нажмите «ПУСК».
3.10. Работа машины по программе
3.10.1. После ввода программы в ОЗУ ЭВМ ее можно запустить в режиме работы
по программе с начала любой программной строки, начинающейся оператором
РПСn.
3.10.2. Для запуска ПП ЭВМ с программной строки n (с РПСn) на клавиатуре
нужно нажать клавиши:
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
91
CTR S/B F2 n «ПУСК»
где n — номер при операторе РПСn.
3.10.3. Для запуска с РПС0 номер 0 можно не набирать (после F2 сразу нажимать
«Пуск»).
3.10.4. О работе машины по программе в верхней строке слева высвечивается текст:
ППn
(если номер n не набирался, то просто ПП).
3.10.5. Если программная строка начинается оператором ПCn, или в программе
вообще нет программной строки с заданным номером, в правой части верхней
строки высвечивается:
НЕТ ПС
а ПП ЭВМ останавливается.
3.10.6. В процессе работы машины по программе вмешательство пользователя
необходимо при выполнении операторов программы СТП (см. п. 2.8.4), НБ (п. 2.14.1)
ТК (п. 2.14.2) и /400/ (п. 2.14.4).
3.10.7. Варианты действий пользователя по оператору СТП изложены в п. 2.8.17.
3.10.8. При выполнении оператора НБ в правом верхнем углу дисплея
высвечивается текст НБ, сигнализирующий пользователю о необходимости ввести с
клавиатуры очередное числовое данное (число). По оператору НБ можно вводить
десятичные целые, дробные и смешанные числа со знаком плюс или минус.
3.10.9. Числа можно вводить как с цифровой клавиатуры, так и с алфавитноцифровой. При вводе с цифровой клавиатуры слева от нее должна светиться
сигнальная лампочка, означающая, что клавиатура работает в режиме ввода цифр,
а не управления курсором. Для перевода клавиатуры из режима управления
курсором в режим цифрового ввода и обратно служит клавиша NLK.
3.10.10. Числа набираются со старших разрядов. Десятичная запятая нажимается
при необходимости после набора целой части числа. Дробная часть числа
набирается после десятичной запятой. Ноль целых можно не набирать.
92
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
3.10.11. В процессе набора цифры и запятая высвечиваются на дисплее с начала
очередной графы в соответствии с текущим положением курсора. Если экран
задействован в формате 40 знаков в строке, набираемое число высвечивается в этом
формате.
3.10.12. При обнаружении в набираемом числе ошибки число нужно сбросить
клавишей ESC и повторить набор.
3.10.13. Завершение набора и проверки числа обозначается нажатием клавиши
«ПУСК» для положительных чисел и клавиши «минус» — для отрицательных.
3.10.14. При работе программ на ЯМБ'е клавиша «+» не задействована.
3.10.15. Число «нуль» можно не набирать, а сразу нажимать «Пуск».
3.10.16. После нажатия пусковой клавиши («Пуск» или «минус») набранное число
исчезает с экрана (гасится). Его новое высвечивание зависит от составленной
программы.
3.10.17. Если набранное число содержит ошибку (больше 14 цифр, больше одной
запятой, больше 7 знаков после запятой), оно не поступает на обработку: ЭВМ
останавливается, а в правой верхней части экрана высвечивается текст:
Оа НБ
Исправление ошибки — с нажатия клавиши ESC (п. 3.10.12).
3.10.18. При выполнении оператора ТК в правом верхнем углу дисплея
высвечивается текст ТК, сигнализирующий пользователю о необходимости ввести с
клавиатуры очередное алфавитно-цифровое данное (текст). По оператору ТК
можно вводить любые буквы, цифры и значки, имеющиеся на АЦК.
3.10.19. При вводе букв русского алфавита и значков § и → клавиатура должна
находиться в режиме РУС (сигнальная лампочка слева от клавиши Р/Л должна
гореть). Для перевода АЦК из режима ввода латинских букв в русские и обратно
служит клавиша Р/Л.
3.10.20. АЦК позволяет вводить как заглавные, так и строчные буквы. Перевод
клавиатуры из режима ввода заглавных букв в режим ввода строчных букв и
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
93
обратно выполняется клавишей CLK. Для временного переключения можно
использовать и клавишу , действующую только пока она нажата. Эта же клавиша
позволяет вводить все значки, изображенные в верхней части клавиш.
3.10.21. В процессе ввода текста буквы и значки высвечиваются на дисплее с
начала очередной графы в соответствии с текущим положением курсора. В режиме
работы экрана в формате 40 знаков в строке вводимый текст высвечивается в этом
же формате.
3.10.22. При обнаружении во вводимом тексте ошибки его можно либо сбросить
клавишей ESC и повторно ввести, либо исправить с помощью курсорных клавиш
(цифровой клавиатуры). Длина текста, вводимого по одному оператору ТК, не
должна превышать 256 байт. Если пользователь хочет ограничить длину текста
меньшим числом, он должен включить в программу специальную константу:
/3n1 3n2 3n3/ (см. п. 2.14.5).
3.10.23. О завершении ввода текста пользователь сообщает машине нажатием
клавиши «ПУСК».
3.10.24. Для ввода «пустого» текста достаточно после высвечивания ТК сразу
нажать «ПУСК».
3.10.25. После нажатия клавиши «ПУСК» текст на экране гасится и поступает на
обработку в соответствии с программой.
3.10.26. В ПП ЭВМ реализован ввод информации «внахлест», при котором
начинать набор цифр или текста можно и не дожидаясь высвечивания в правом
углу дисплея текста НБ, СТП или ТК. После нажатия пусковой клавиши текст или
число запоминается и автоматически поступает на обработку без высвечивания на
экране. Такой режим работы может быть рекомендован только опытному
пользователю, так как анализ введенного текста или числа, а следовательно и
сигнализацию обнаруженной ошибки ПП ЭВМ выполнит только по операторам НБ,
СТП и ТК программы, то есть уже тогда, когда пользователь вводит следующий
текст или число.
94
3. РЕЖИМЫ РАБОТЫ МАШИНЫ
3.10.27. При выполнении оператора /400/ в правом верхнем углу дисплея
высвечивается текст «Корректировка», а в очередной графе экрана высвечивается
содержимое регистра или элемента, написанного в программе слева от /400/.
3.10.28. При корректировке можно пользоваться как курсорными клавишами, так и
клавишей ESC. О завершении корректировки машине сообщается клавишей
«ПУСК». Длина корректируемого текста — не более 512 байт, если эта длина не
была ограничена специальной константой /13n13n23n3/ (см. п. 2.14.5). Если при
корректировке текст превысил заданные ограничения, раздается звуковой сигнал, а
весь избыточный текст машиной игнорируется. Если же ограничение превышено
исходным текстом, фиксируется сбой (ПРП /400/).
3.10.29. Кроме текста п.п. 3.10.8, 3.10.18 и 3.10.27 в правом верхнем углу дисплея
высвечиваются также сообщения о сбоях (п. 3.4.2 и табл. 8).
Приложение 1
95
Приложение 1
Таблицы кодирования
КОИ-7 Н0 [4]
.0
0.
1.
2.
3.
4.
6.
7.
.2
.3
.4
.5
.6
.7
NUL SOH STX ETX EOT ENQ ACK BEL
0
1
2
3
4
5
6
7
.8
.9
10
11
!
12
13
14
15
16
" # ¤ % &
.A
.B
FF
CR
SO
SI
8
9
A
B
C
D
E
F
SUB ESC
FS
GS
RS
US
1A
1B
1C
1D
1E
1F
* +
,
-
.
/
2C
2D
2E
2F
17
18
19
'
(
)
23
A4
25
26
27
28
29
2A
2B
0
1
2
3
4
5
6
7
8
9
:
;
30
31
32
33
34
35
36
37
38
39
3A
3B
@ A B C D E F G H
44
45
46
47
.F
VT
22
43
.E
LF
21
42
.D
HT
20
41
.C
BS
DLE DC1 DC2 DC3 DC4 NAC SYN ETB CAN EM
40
5.
.1
48
I
49
< = > ?
3C
3D
3E
3F
J K L M N O
4A
4B
4C
4D
P Q R S T U V W X Y Z
[
\
]
5D
4E
4F
^ _
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5E
5F
`
a
b
c
d
e
f
g
h
i
j
k
l
m n
o
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
96
Приложение 1
КОИ-7 Н1 [4]
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
0.
NUL SOH STX ETX EOT ENQ ACK BEL BS
0
1
2
3
4
5
6
7
8
HT
9
1.
DLE DC1 DC2 DC3 DC4 NAC SYN ETB CAN EM
10
11
12
13
14
15
16
17
18
19
.A
LF
A
.B
VT
B
.C
.D
.E
.F
FF
C
CR
D
SO
E
SI
F
SUB ESC FS
1A 1B 1C
GS
1D
RS
1E
US
1F
20
!
21
"
22
#
23
¤
A4
%
25
&
26
'
27
(
28
)
29
*
2A
+
2B
,
2C
2D
.
2E
/
2F
3.
0
30
1
31
2
32
3
33
4
34
5
35
6
36
7
37
8
38
9
39
:
3A
;
3B
<
3C
=
3D
>
3E
?
3F
4.
ю
а
44E 430
б
431
ц
446
д
434
е
435
ф
444
г
433
х
445
и
438
й
439
к
л
м
н
о
43A 43B 43C 43D 43E
5.
п
43F
я
44F
р
440
с
441
т
442
у
443
ж
436
в
432
ь
ы
з
44C 44B 437
ш
448
6.
Ю
А
42E 410
Б
411
Ц
426
Д
414
Е
415
Ф
424
Г
413
Х
425
К
Л
М
Н
О
41A 41B 41C 41D 41E
7.
П
41F
Р
420
С
421
Т
422
У
423
Ж
416
В
412
Ь
Ы
З
42C 42B 417
2.
Я
42F
И
418
Й
419
Ш
428
э
щ
44D 449
Э
Щ
42D 429
ч
447
Ч
427
ъ
44A
DEL
7F
Приложение 1
97
КОИ-7 Н2 [4]
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
0.
NUL SOH STX ETX EOT ENQ ACK BEL BS
0
1
2
3
4
5
6
7
8
HT
9
1.
DLE DC1 DC2 DC3 DC4 NAC SYN ETB CAN EM
10
11
12
13
14
15
16
17
18
19
.A
LF
A
.B
VT
B
.C
.D
.E
.F
FF
C
CR
D
SO
E
SI
F
SUB ESC FS
1A 1B 1C
GS
1D
RS
1E
US
1F
20
!
21
"
22
#
23
¤
A4
%
25
&
26
'
27
(
28
)
29
*
2A
+
2B
,
2C
2D
.
2E
/
2F
3.
0
30
1
31
2
32
3
33
4
34
5
35
6
36
7
37
8
38
9
39
:
3A
;
3B
<
3C
=
3D
>
3E
?
3F
4.
@
40
A
41
B
42
C
43
D
44
E
45
F
46
G
47
H
48
I
49
J
4A
K
4B
L
4C
M
4D
N
4E
O
4F
5.
P
50
Q
51
R
52
S
53
T
54
U
55
V
56
W
57
X
58
Y
59
Z
5A
[
5B
\
5C
]
5D
↑
_
2191 5F
6.
Ю
А
42E 410
Б
411
Ц
426
Д
414
Е
415
Ф
424
Г
413
Х
425
И
418
Й
419
К
Л
М
Н
О
41A 41B 41C 41D 41E
7.
П
41F
Р
420
С
421
Т
422
У
423
Ж
416
В
412
Ь
Ы
З
42C 42B 417
2.
Я
42F
Ш
428
Э
Щ
42D 429
Ч
427
DEL
7F
98
Приложение 2
Программа передачи программ из ЭБТ в ПП ЭВМ
РПСО РД И9 К15 ДО А1540; 114 115; PГ 300 100 100 100; /8 800 400
200 100 008 004 002 001/ →А0 128 →И1 (МИ1 :2 →МИ2)7
ТАБ0 "НОМЕР НАКОПИТЕЛЯ (8, 9, 10): "ВЫВ
У0 96 →Р0 НБ →Р3 <8 ПУ1 <10 ПУ2> = 11ПУ1 48 →Р0 ПУ2
У1 /0 007/ "ОШ. НБ" ВЫВ СТП ТАБ2 " " ВЫВ ТАБ2 ПУ0
У2 Р3 ВЫВ ТАБ0 "ЧИСЛО ЗОН:" ВЫВ НБ →Р1 ВЫВ Р0 >= Р1 ПУ4 "МНОГО"
ВЫВ /0 007/ СТП ППС0
У4 ТАБ0 "НОМЕР НАЧАЛЬНОЙ ЗОНЫ:" ВЫВ НБ →Р2 ВЫВ
У3 ДР3 ПР3 0 →И0 ЧРР1 А3 Р2 Д1П0 ППС1 "СБОЙ -" ВЫВ И0 ВЫВ
ТАБ0 СТП ПУ3
РПС1 ВВОД ТАБ0 СОД А3 Р1 К1 БПЗУ0 Р0 →Р3 СОД А3 Р2 К1 БПЗУ0 Р0
Х 256 НР3 "ДЛИНА ПРОГРАММЫ" ВЫВ Р3 →Р0 ВЫВ ТАБ0 1 →Р2
200
→Р1 0 →Р4 3 →Р6 "00" →СОД А3 Р1 ( 200 > Р3 ВЦ ПУ3 →Р5
У1 СОД АР6 РР1 К1 = " " ПУ2 1 НР1 НР5 Р5 < 255 ПУ1
У2 СОД АР6 РР2 КР5 →МЭ0 Р5 ИЗ НР3 ИЗ - 200 НР2 25 НР6 1 НР4 )
75
У0 →А2 0 →Р0 ( А2 = /8 000 / ПУ4 А2 & СОД А0 МР1 К1 = /8 000/
ПУ4 МИ1 НР0
У4 )8 ВЫХОД
У3 СОД АР6 РР2 КР3 →ЭР4 1 НР4 Р0 →ЭР4
РПС2 0 →И0 Д6П6 ВЫДСТР Д1ПО ТАБ0 ПУ1 "СБОЙ ИРПС -" ВЫВ ИО ВЫВ
ППС2
У1 "СТРОКА ПЕРЕДАНА" ВЫВ СТП ППС0.
Приложение 2
Приложение 3
99
Приложение 3
Программа приема программ из ЭБТ «Нева 501» в ПП ЭВМ
РПС0 РД И9 К10 Д А1929; 114 115; ТАБ0 ВВОД Д6 0 →И0 "0,60,,,,,,,,"
/7 00/ ПО РГ 150 350 100; ТАБ0 "ВВЕДИТЕ РЕЖИМ:" ВЫВ
"0 - С ПЕРЕКОДИРОВАНИЕМ /8.../" ВЫВ ТАБ0 ПГ "1-БЕЗ ПЕРЕКОДИРОВАНИЯ /8.../" ВЫВ
НБ →Р3 ВЫВ
РГ250 (100)2; '80 40 20 10 08 04 02 01 ' →А0
У0 ПРЕР2 1 0 ; ПРЕР2; ПУ0
У1 ПРЕР2 ; 0 →И0 Д6 Р3 = 1 ПУ2 /7 04/ ПУ4 ПУ3
У2 /7 05/ ПУ4
У3 ТАБ0 "СБОЙ КАНАЛА -" ВЫВ И0 ВЫВ ПУ1
У4 →Р1 ТАБ0 "СТРОКА ПРИНЯТА "ВЫВ ТАБ0 "ЧИСЛО ЭЛЕМЕНТОВ ="ВЫВ
Р1 ВЫВ
РПС1 Р1 - 1 →Р9 1 →Р5 ' Е0 Е1 Е2 Е3 Е4 Е5 Е6 Е7 Е8 Е9 ЕА ЕВ ЕС
ЕD EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE A4 A7'
→А2 "ЮАБЦДЕФГЬИЙКЛМНОПЯРСТУЖВЫЫЗШЭЩЧ§Ъ" →А7 ( '00 00 00 00
00 00 00 00' →МА12) 1917
(МЭ0 →СОДА12 РР5 А3 К3 →Р0 + 1 →Р5 )Р9 Р0 →Р3 = ЭР9 ПУ0
ТАБ0 " НЕ РАВНА ДЛИНА ПРОГРАММЫ " ВЫВ Р0 ВЫВ ЭР9 ВЫВ СТП ППС0
У0 256 →И0 (МИ0 : 2 →МИ1 )8 ИГ003 Р0 : И0 Ц ИГ000 + 0 →Р1 И3
Х И0 НР0 ( МР0 →Р2 '00 00' →А1 (Р2 <МИ1 ПУ1 А1 # СОД А0
МР1 К1 →А1 МИ1 И3 НР2
У1 )8 СОД А1 Р1 К1 →СОД А12 МР1)2 ТАБ0 "НУЖНА ЛИ ПЕРЕКОДИРОВКА?"
ВЫВ ИГ240 "ДА -ПУСК,НЕТ -1 ПУСК "ВЫВ НБ →Р1 = 1 ППС2 0 →И0
'00 00' →А1 (СОД А12 МР3 К1 →А1 < 'А4'ПУ3 (СОД А2 МР1 К1
=А1 ПУ2) 33 ПУ3
У2 СОД А7 МР1 К1 →А1 ВЦ А1 →СОД А12 МР3 У3 )Р0
РПС2 П0 ТАБ0 "ЗАПИСЬ ПРОГРАММЫ НА ДИСК " ВЫВ " ЧИСЛО ЗОН" ВЫВ ИГ103
Р3 : 512 →Р0 Ц →Р1 = Р0 ИГ100 ПУ1 1 НР1 У1 Р1 ВЫВ
У2 ТАБ0 "НОМЕР ДИСКА " ВЫВ НБ →Р0 =2 ПУ3 = 10 ПУ3 = 11 ПУ3
"ОШИБКА" ВЫВ /0 07/ СТП ТАБ2 " " ВЫВ ТАБ2 ПУ2
У3 ВЫВ ТАБ0 " НОМЕР ЗОНЫ " ВЫВ НБ →Р2 ВЫВ
У4 ПР0 0 →И0 ЗРР1 А12 Р2 ТАБ0 ПУ5 " СБОЙ МД" ВЫВ И0 ВЫВ ТАБ0 СТП
ППС2
У5 " ЗАПИСЬ ВЫПОЛНЕНА " ВЫВ ТАБ0 ВЫХОД
РПС3 12 →Р0 ( ( ТАБ1 ИГ800 СОД АР0 Р1 К80 ВЫВ ИГ000 10 НР0 ) 20
СТП )100 СТП
РПС4 0 →Р0 ( (ТАБ0 ИГ790 ЭР0 ВЫВ ИГ000 1 КР0 )20 СТП )100 .
100
Приложение 4
Приложение 4
Режим работы машины
Нажимаемые клавиши
Выполняемый режим
F1"ПУСК"
Высвечивание с начальной программной строки
F1 n "ПУСК"
Высвечивание с программной строки n
F1 i-j,k "ПУСК"
Высвечивание с программной строки i программы с
кодом защиты k
F1 k n "ПУСК"
Высвечивание с программной строки п без
комментариев
F1 k i-j,k "ПУСК"
Высвечивание без комментариев программы с кодом
защиты k, начиная с программной строки i
F1 П i-j "ПУСК"
Вывод на печать без разбивки на страницы
программных строк с i по j незащищенной программы
F1 П i-j,k "ПУСК
Вывод на печать без разбивки на страницы
программных строк с i по j программы с кодом защиты k
F1 П i-j Cl "ПУСК
Вывод на печать по l строк на странице программных
строк с i по j незащищенной программы
F1 П i-j, k Cl "ПУСК"
Вывод на печать по l строк на странице программ ных
строк с i по j программы с кодом защиты k
F1 ПK i-j [,k][Cl] "ПУСК"
Вывод на печать с удалением комментариев по l строк
на странице программных строк с i по j программы с
кодом защиты k
F2 "ПУСК"
Запуск работы машины по программе с РПСn
F2 n "ПУСК"
Запуск машины по программе с РПСn
F2 F7 k, i, j "ПУСК"
Запуск работы машины по программе с РПСk с
трассировкой с Yj в ПСi
F3 i, j
Ввод с МГМД i программы в кодах, расположенной с
зоны j с полной заменой программы в ОЗУ
F3 i, j, k
Ввод с МГМД i программы в кодах, расположенной с
зоны j и подстыковка ее к программе в ОЗУ с
программной строки k
F3 F1 i, j "ПУСК"
Ввод с МГМД i ретранслированной программы,
расположенной с зоны j с полной заменой прежней
программы в ОЗУ
Приложение 4
101
Режим работы машины (продолжение)
Нажимаемые клавиши
Выполняемый режим
F3 F1 i,j,k "ПУСК"
Ввод с МГМД i ретранслированной программы,
расположенной с зоны j и подстыковка ее к программе в
ОЗУ с программной строки k
F4 i,j "ПУСК"
Запись на МГМД i всей программы в кодах, начиная с
зоны j без защиты
F4 i,j,l "ПУСК"
Запись на МГМД i с зоны j программы в кодах, начиная
с программной строки l
F4 i,j,l Km "ПУСК"
Запись на МГМД i начиная с зоны j всей
закодированной программы из ОЗУ с кодом защиты м
F4 i,j,l Кm "ПУСК"
Запись на МГМД i, начиная с зоны j закодированной
программы, начиная с программной строки l с кодом
защиты m
F4 С "ПУСК"
Определение количества зон под программу
F4 П "ПУСК"
Определение длины программы в байтах
F4 F1 i,j "ПУСК"
Запись на МГМД i с зоны j программы в
ретранслированном виде
F4 F1 i,j,l "ПУСК"
Запись на МГМД i с зоны j программы в
ретранслированном виде, начиная с программной
строки l
F4 F1 С "ПУСК"
Определение количества зон под ретранслированную
программу
F4 F1 П "ПУСК"
Определение длины ретранслированной программы в
байтах
F5 1 "ПУСК"
Перевод дисплея в формат 16 строк по 64 знака в строке
F5 2 "ПУСК" "ПУСК"
Перевод дисплея в формат 25 строк по 80 знаков в
строке
F6
Режим ввода программы с АЦК
F7 "ПУСК"
Прекращение трассировки
F7 i,j "ПУСК"
Трассировка с новой точки уj ПСi
F8 1"ПУСК"
Сброс поля элементов
F8 2 "ПУСК"
Уничтожение комментариев во всей программе
F10 "ПУСК" "ПУСК"
Возврат в операционную систему АДОС
102
Приложение 5
Приложение 5
Описание файлов А_APD и A_APDM
Программные файлы A_APD и A_APDM предназначены для управления
адаптером аппаратуры передачи данных (АПД) и обеспечивают побайтный обмен
информацией.
Файл A_APD — с 6-ю каналами, работающими в ранге ИРПС и с одним
каналом, работающим по стыку С2.
Файл A_APDM — в зависимости от фактической конфигурации ПП ЭВМ с
4-мя, 7-ю или 11-ю каналами, работающими в ранге ИРПС, и с одним — 4-мя
каналами, работающими по стыку С2.
В любом из режимов работы файлов пользователю возвращается состояние
коммуникационной линии и АПД.
При загрузке файлов A_APD или A_APDM производится установка адреса
вектора прерывания 14Н, обеспечивающего доступ программы пользователя к
любому каналу АПД. После загрузки файла A_APDM на экране высвечивается
сообщение вида: структура адаптера АПД: ИРПС — каналы <список номеров
каналов> С2 — каналы <список номеров каналов> Скорость обмена
устанавливается одинаковой для каналов: <список номеров каналов, скорость
обмена по которым должна совпадать>.
Приложение 6
103
Приложение 6
Описание файлов P_APD и P_APDM
Программные файлы P_APD и P_APDM могут использоваться только
совместно соответственно:
P_APD — с файлом A_APD,
P_APDM — с файлом A_APDM (см. приложение 5).
Файлы P_APD и P_APDM обеспечивают прием и передачу сообщений по
любому каналу связи ПП ЭВМ.
Прием сообщений осуществляется в буфер,общая длина которого назначается
пользователем при загрузке файлов P_APD или P_APDM. Эта длина не должна
превышать 60 Кбайт. По умолчанию (то есть если пользователь не задал длину
буфера) длина буфера принимается равной 2 Кбайтам.
Распределение буфера между разными каналами осуществляется
программой на ЯМБ'е при инициализации каждого канала с помощью
информации, указанной перед специальной константой /700/(см. п. 2.18).
Запись сообщений в буфер каждого канала выполняется «по
кольцу».Окончание приема каждого сообщения сопровождается установкой
соответствующей метки в системной области АДОС. Состояние процесса
возвращается пользователю при любом режиме работы.
При загрузке файлов P_APD или P APDM устанавливается вектор
физического прерывания от АПД 0С и вектор прерывания 67H, обеспечивающий
доступ к файлу Р_АPD (P_APDM) из программы пользователя.
Файл P_APD поддерживает 3 протокола обмена информацией:
– протокол обмена данными типа ЭБТ «Нева 501» (ИРПС),
– упрощенный протокол приема данных типа «автовесы» (ИРПС),
– протокол обмена данными типа АП-70 в режиме подчиненной станции (C2).
Файл P_APDM поддерживает 6 протоколов обмена информацией:
– протокол обмена данными типа ЭБТ «Нева 501» (ИРПС),
– упрощенный протокол приема данных типа «автовесы» (ИРПС),
– протокол передачи данных «XON-XOFF» (ИРПС),
– протокол передачи данных типа «QWEST» (ИРПС),
– протокол обмена данными типа АП-70 в режиме подчиненной станции (C2),
– протокол обмена данными типа АП-70 в режиме управляющей станции (C2 —
упрощенный вариант).
104
Приложение 6
Протокол обмена данными типа ЭБТ «Нева 501» устанавливает
«равноправие» соединенных по каналу ЭВМ. Если в ответ на передачу символа НТ
происходит положительный ответ «ДА», передается все подготовленное сообщение,
а после него — символ КТ один байт контрольной суммы по модулю 2 и символ КП.
При совпадении принятой и подсчитанной сумм по модулю 2 и отсутствии сбоя по
паритету принимающая ЭВМ посылает положительный ответ»ДА», в противном
случае посылается ответ «НЕТ». Соответствующие сообщения о состоянии приемапередачи возвращаются пользователю.
Упрощенный протокол приема данных типа «Автовесы» заключается в
приеме информационных байт и байта контрольной суммы по модулю 2. При
равенстве принятой и подсчитанной контрольных сумм и отсутствии сбоя по
паритету выдается положительный ответ «ДА», в противном случае — «НЕТ»
Передача данных по протоколу типа «XON/XOFF» начинается при
получении от абонента разрешающего символа «XON» (11H) и продолжается до
получения запрещающего символа «XOFF» (13H), после чего передача
приостанавливается до получения символа «XON» и так далее. Передаваемые
данные контролируются только по паритету, контрольная сумма не
подсчитывается.
Передача данных по протоколу «QWEST» начинается при получении
«квитующей» последовательности «ТТТТ» + ВК (ODH — «возврат каретки» ),
передача выполняется блоками по 136 байт, включая 2 байта контрольной суммы и
символ ПС (OAH — « перевод строки «). После передачи блока ожидается 1 из 3-х
ответов абонента:
«ТТТТ» + ВК — разрешающий дальнейшую передачу,
«RRRR» + BK — требующий повторить передачу блока,
«AAAA» + BK — означающий неустранимый сбой абонента.
В качестве контрольной суммы блока используются 2 младшие цифры
суммы всех байт передаваемого блока, больше чем величина 20H ( код пробела).
По стыку С2 поддерживается протокол обмена данными с управляющей
станцией, работающей в режиме "много точка", типа АП-70. Этот протокол
заключается в опознании типа управляющей последовательности:
«опрос» — КП КП КП Ат пробел
или «выборка» — КП КП КП, Ат пробел
где Ат — адрес терминала, то есть некоторая буква латинского алфавита
от А до Z,
«пробел» — код пробела (20Н).
Приложение 6
Опознав тип управляющей последовательности, ЭВМ переходит в режим
передачи или приема сообщения, формат которого:
НЗ [заголовок] НТ [блок данных] КБ
| [блок данных] КБ
…
| [последний блок данных] КТ сумм | КП
где НЗ — символ «начало записи» (код 01),
НТ — символ «начало текста» (код 02),
КТ — символ «конец текста» (код 03)
КП — символ «конец передачи» (код 04),
КБ — символ «конец блока» (код 17).
| — ответ абонента, подтверждающий прием,
сумм — контрольная сумма по модулю 2.
В скобках […] — необязательные атрибуты сообщения.
105
106
Перечень сокращений
Перечень сокращений
АПД — аппаратура передачи данных,
АЦК — алфавитно-цифровая клавиатура,
АЦПУ — алфавитно-цифровое печатающее устройство,
БИ АПД — блок интерфейсный сопряжения с аппаратурой передачи данных,
БОСГИ — блок отображения символьно-графической информации,
ВЗУ — внешнее запоминающее устройство,
ДЦК — десятичная цифровая клавиатура,
ИРПС — интерфейс для радиального подключения устройств с последовательной
передачей,
МД — магнитный диск,
МГМД — миниатюрный гибкий магнитный диск,
НМГМД — накопитель на миниатюрных гибких магнитных дисках,
ОЗУ — оперативное запоминающее устройство,
ПД — программа документа,
ПП ЭВМ — персональная профессиональная электронная вычислительная машина,
ПС — программная строка,
УК — управляющая клавиатура,
УВВ — устройство ввода-вывода,
ЯМБ — язык машин бухгалтерских.
Перечень рисунков
107
Перечень рисунков
1. Схема расположения информации в поле элементов
2. Схема расположения числовой информации
3. Схема расположения текстовой информации
Лист
39
54
55
108
Перечень таблиц
Перечень таблиц
Лист
1.
2.
3.
4.
5.
6.
7.
8.
Способы задания числового регистра
Весовые коэффициенты для оператора КМn
Номера датчиков и приемников
Коды сбоев МГМД
Коды сбоев АПД
Ошибки, выявляемые при трансляции и ретрансляции
Клавиши управления курсором и корректировки
Ошибки, обнаруживаемые интерпретатором
19
48
51
69
70
77
78
81
Перечень ссылочных документов
Перечень ссылочных документов
[1] — комплект программ базовый для ПП ЭВМ «Искра 1030.11»
(КПБ «И-1030.11»).Руководство по применению 589.7201.00082-01 91 01
[2] — АДОС версия 2.00. Руководство программиста 589.7201.00070-01 33 01
[3] — комплект программ базовый для ПП ЭВМ «Искра 1030.11»
(КПБ «И -1030.11»).Руководство по применению 589.7201.00107-01 91 01
[4] — ГОСТ 13052-74
109