Радио-86РК/Радио 01-88/Бейсик Сервис

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

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

Автор: В. НАУГАДОВ

Источник: http://retro.h1.ru/RK86/Bas_Serv/BasServ.php

Радиолюбители, использующие на своих персональных компьютерах интерпретатор языка БЕЙСИК, описанный в [1], наверняка отметили такое его достоинство, как довольно широкий набор выполняемых функций при относительно небольшом объеме занимаемой памяти. К сожалению, интерпретатору свойствен и серьезный недостаток — отсутствие встроенных средств редактирования и обработки программных текстов, что приводит к довольно большим затратам времени при отладке и модификации программ. Так, например, для исправления или добавления в текст строки всего одного символа необходимо набирать всю программную строку заново, а новый набор, как известно, можно повлечь да собой и новые ошибки. В целом же, работа по вводу и отладке программ с данным интерпретатором оказывается довольно утомительной.

Программа «БЕЙСИК-СЕРВИС» (далее ПРОГРАММА), предлагаемая вниманию радиолюбителей, разработана специально для интерпретатора [1] с целью обеспечения возможности быстрого редактирования и изменения текстов программ при отладке. ПРОГРАММА, кроме того, позволяет пользователю реализовать возможность автоматической нумерации строк программы при первоначальном вводе текста и ускоренный ввод с клавиатуры наиболее часто используемых ключевых слов БЕЙСИКА. Это существенно увеличивает производительность труда разработчика при работе с интерпретатором, снижает утомляемость при отладке и значительно ускоряет выход полностью завершенных программ.

Объем памяти, занимаемый ПРОГРАММОЙ — 0,75 Кбайт, а располагается она в адресном пространстве, непосредственно примыкающем к интерпретатору. Такое решение позволяет загружать ПРОГРАММУ с магнитофона одновременно с загрузкой интерпретатора, считая последнюю его составной частью. Область хранения программ на БЕЙСИКЕ в этом случае сдвигается и начинается с адреса 1D00H. Радиолюбителям, имеющим компьютер с объемом оперативной памяти 16 Кбайт, полезно хранить на магнитной ленте обе версии интерпретатора — прежнюю и с программой «БЕЙСИК-СЕРВИС». Поскольку в прежней версии область хранения программ на БЕЙСИКЕ на 0.5 Кбайт больше, то при нехватке оперативной памяти ее можно использовать для работы с полностью отлаженными программами.

Машинные коды программы «БЕЙСИК-СЕРВИС» для компьютера «РАДИО-86РК» приведены в табл.1. Следует иметь в виду, что ПРОГРАММА предназначена только для транслятора [1] с учетом изменений и дополнений, опубликованных в [2] и табл.2 и 3 данной статьи. ПРОГРАММА полностью сохраняет предложенные в [2] функции клавиш F1 — F4, однако в тех случаях, когда нажатие этих клавиш нарушает нормальную работу ПРОГРАММЫ, их действие блокируется программно.

	КОДЫ ПРОГРАММЫ " БЕЙСИК СЕРВИС "
 	ДЛЯ КОМПЬЮТЕРА " РАДИО-96РК "
1A00 	11 88 00 FE 32 C8 1E 8В FE 46 C8 1E 8E FE 4E C8
1A10 	1E 92 FE 44 C8 1E 96 FE 49 C8 1E 9В FE 31 C8 1E
1A20 	9E FE 51 C8 1E A2 FE 43 C8 1E A5 FE 4A C8 1E B5
1A30 	FE 47 C8 1E BA FE 52 C8 1E C0 FE 3В C8 1E C3 FE
1A40 	33 C8 1E CC FE 50 C8 1E D0 FE 4C C8 1E D4 FE 59
1A50 	C8 1E D8 FE 20 C8 1E DD FE 34 C8 1E E8 FE 4В C8
1A60 	1E ED FE 40 C8 1E F2 FE 4F C8 1E FA FE 42 C8 11
1A70 	00 01 FE 5A C8 1E 06 FE 54 C8 1E 0D FE 53 C8 1E
1A80 	16 FE 36 C8 1E 21 FE 35 C8 1E 24 FE 37 C8 1E 27
1A90 	FE 55 C8 1E 33 FE 38 C8 1E 36 FE 57 C8 1E 3C FE
1AA0 	39 C8 1E 4В FE 58 C8 1E 56 FE 56 C8 1E 5C FE 48
1AB0 	C8 1E 60 FE 5В C8 1E 65 FE 5D C8 1E 6В FE 4D C8
1AC0 	D1 C3 88 04 79 FE 03 DA 67 19 CD 03 F8 FE 45 CA
1AD0 	72 1В FE 41 CA 2C 1В FE 20 DA 5C 19 CD 00 1A CD
1AE0 	E8 1A D2 D8 1C C3 85 04 78 FE 48 D0 1A 4F E6 7F
1AF0 	77 23 04 DF 13 В9 CA E8 1A C9 2A 27 02 EВ 21 0A
1B00 	00 19 22 27 02 C9 2A 27 02 CD 65 14 21 CF 01 06
1B10 	01 11 53 02 1A FE 00 CA 25 1В 77 23 78 CD 51 1В
1B20 	04 13 C3 14 1B 3E 20 77 23 04 DF C9 E1 21 58 1В
1B30 	22 0E 03 2E 3E 22 95 04 21 F8 1C CD 18 F8 CD DC
1B40 	07 C3 5C 1В 2E 7D 22 95 04 2A 1В 02 F9 C5 FD 02
1B50 	3C 32 27 00 22 29 02 C9 E1 CD FA 1A CD 06 1В CD
1B60 	85 04 D7 F5 CD 61 06 EВ 22 27 02 EВ CA 58 1B C3
1B70 	1A 03 21 EE 1C CD 18 F8 21 93 1В 22 0E 03 3E 01
1B80 	32 BD 04 CD 80 04 C0 55 1C 3E C9 32 D7 07 3E B8
1B90 	32 C9 04 2A 39 00 EВ CD 85 03 C5 E1 F7 C1 78 В1
1BA0 	CA E4 1B C5 CD DC 07 F7 E3 CD 09 1B E1 78 FE 48
1EB0 	7E 23 D2 ЗA 1C В7 CA ЗA 1C F2 D9 1В D6 7F 4F E5
1ВC0 	11 88 00 D5 1A 13 В7 F2 C4 1В 0D E1 C2 C3 1В EВ
1BD0 	2A 29 02 CD E8 1A C3 AC 1В E5 2A 29 02 77 23 04
1BE0 	DF C3 AC 1B 3E 36 32 D7 07 3C 32 C9 04 3E 20 32
1BF0 	BD 04 21 80 04 22 0E 03 C3 44 1B FE 18 CA E0 1C
1C00 	3A 0E 03 FE 80 CA C4 1A D2 11 1C CD 03 F8 C3 DC
1C10 	1A 79 F6 02 FE 03 CA 60 1C CD 03 F8 FE 01 CA 85
1C20 	04 FE 03 CA C7 1C FE 0D CA 4F 1C FE 0A CA 33 1C
1C30 	C3 DC 1A CD 55 1C EВ CЗ 4F 1C CD 55 1C CD 03 F8
1C40 	FE 0D CA 9В 1B E1 2A 29 02 CD 88 04 2A 29 02 36
1C50 	00 21 CE 01 C9 21 CF 01 CD 61 06 EВ 22 39 00 C9
1C60 	ЗA 27 00 B8 DA D8 1C 5F 79 FE 01 CA 74 1C 7В FE
1C70 	47 D2 D8 1C 50 43 2A 29 02 2В 7E F5 7A B8 CA 86
1C80 	1C 2В 05 C3 7A 1C 79 FE 01 CA A1 1C FE 03 C2 96
1C90 	1C 3E 20 C3 99 1C 0E FF 14 77 23 04 DF 1C C3 A3
1CA0 	1C F1 1D 7В B8 DA B0 1C F1 77 23 04 DF C3 A3 1C
1CB0 	3D CD 51 1В AF 77 23 04 DF 05 2В 3E 08 DF 7A B8
1CC0 	C2 В9 1C 81 D2 85 04 CD 03 F8 4F FE 20 D2 60 1C
1CD0 	FE 1B CA 19 1C C3 88 04 05 3E 07 DF 04 C3 85 04
1CE0 	ЗA 27 00 B8 79 D2 В1 04 3E 20 4F C3 B0 04 0D 0A
1CF0 	45 44 49 54 2A 0D 0A 00 0D 0A 41 55 54 4F 2A 00
 						Таблица 2
0490 	D7 07 FE 0A CA 7D 04 FE 1F CA E4 1B FE 7F CA 95
04A0 	19 4F 78 FE 48 00 00 D2 D8 1C 79 FE 20 DA FB 1В
04B0 	71 23 DF 04 C3 85 04 C2 C4 0D F1 F5 FE 20 DA CD
04C0 	04 ЗA 27 00 00 00 00 00 00 37 DC 50 1B F1 C5 4F
1995 	05 CA 80 04 2В 3E 08 DF CЗ EE 19
19EE 	ЗA BD
19F0 	04 FE 01 CA 88 04 3E 20 23 04 DF 3E 08 C3 76 04

Таблица 3.

АДРЕС КОД АДРЕС КОД
0227Н 0AH 0244H 1DH
0476Н 2BH 0246H 1DH
0477Н 2BH 0248H 1DH
0478Н 05H 024AН 1DH
0479Н 05H 024CH 1DH
047AН F2H 1745H 1DH
047ВН B1H    
047СН B4H    
047DH CCH    
04DCH 05H    
       
АДРЕС БЛОКА КОНТРОЛЬНАЯ СУММ
0000H — 19FFH BDEDH
1А00Н — 1CFFH B02DH
0000H — 1CFFH 421AH

Правильность набора кодов ПРОГРАММЫ и произведенных в трансляторе изменений проверяют по контрольным суммам, приведенным в табл.3. Для компьютера «МИКРО-80» в исходной версии транслятора производят изменения только согласно табл.2. левой части — табл.3, а также табл.6 , учитывающих особенности клавиатуры «МИКРО-80» (отсутствие подпрограмм обслуживания функциональных клавиш и некоторые другие отличия). Более подробные сведения по ПРОГРАММЕ для «МИКРО-80» будут приведены ниже.

Для удобства работы с ПРОГРАММОЙ и интерпретатором в целом, а также унификации по управлению с РЕДАКТОРОМ-АССЕМБЛЕРОМ, опубликованным в [3], изменены функции, приданные ранее в трансляторе некоторым управляющим клавишам. Так, например, клавиша ® (курсор вперед) используется впредь по своему прямому назначению. Клавиша «ПС» (перевод строки) удаляет весь текст строки. Функция выхода в МОНИТОР передана сочетанию клавши «УС»+ «Е». Клавиша «СТР» позволяет быстро отменить любую назначенную ранее директиву и прямо выйти в непосредственный режим работы интерпретатора. Такое распределение управляющих клавиш обеспечивает более быструю запоминаемость их функций и снижает вероятность ошибочных нажатий.

Описание ПРОГРАММЫ и правила обращения

Программа «БЕЙСИК-СЕРВИС» состоит из трех объединенных сервисных программ, условно названных: НУМЕРАТОР, ОПЕРАТОР и РЕДАКТОР. Краткие сведения о выполняемых ими функциях, а также основные правила обращения к сервисным программам изложены в краткой форме в табл.4.

Таблица 4.

НАЗВАНИЕ сервисной ПРОГРАММЫ ВЫПОЛНЯЕМАЯ ФУНКЦИЯ ВИД ОПЕРАЦИИ ДИРЕКТИВА
(НАЖИМАЕМЫЕ КЛАВИШИ)
НУМЕРАТОР АВТОМАТИЧЕСКАЯ НУМЕРАЦИЯ СТРОК ПРОГРАММЫ при ПЕРВОНАЧАЛЬНОМ BBOДE вызов НУМЕРАТОРА «AP2» + «A»
НАБОР СТРОКИ ЗАНОВО «ПС»
ВЫХОД ИЗ НУМЕРАТОРА «СТР»
ОПЕРАТОР УСКОРЕННЫЙ BBOД КЛЮЧЕВЫХ СЛОВ БЕЙСИКА ВВОД СЛОВА «АР2» + СИМВОЛЬНАЯ КЛАВИША В СООТВЕТСТВИИ С ТАБЛИЦЕЙ 4
    ВЫЗОВ ПРОГРАММЫ НА РЕДАКЦИЮ «AP2»+«Е»

(№ стр.) «ВК»

РЕДАКТОР ОБРАБОТКА ПРОГРАММНЫХ ТЕКСТОВ, ИСПРАВЛЕНИЕ ОШИБ0К, МОДИФИКАЦИЯ ПРОГРАММ ПРОСМОТР ВЕЗ РЕДАКТИРОВАНИЯ «ВК^…»ВК"
ДОБАВЛЕНИЕ ТЕКСТА В СТРОКУ НАБОР ТЕКСТА «ВК»
УДАЛЕНИЕ ПРАВОЙ ЧАСТИ СТРОКИ «АР2» + «ВК»
УДАЛЕНИЕ ВСЕЙ строки из ПРОГРАММЫ «АР2» + «ПС»
ВСТАВКА В СТРОКУ ПРОБЕЛОВ «F4» … «F4»
    СДВИГ ПРАВОЙ ОТ КУРСОРА ЧАСТИ СТРОКИ ВПРАВО (ВКЛЮЧЕНИЕ РАЗДВИЖКИ) «AP2» + «F4»
ВЫКЛЮЧЕНИЕ РАЗДВИЖКИ «AP2» + «F2»
или сдвиг курсора
    СДВИГ ПРАВОЙ ОТ КУРСОРА ЧАСТИ СТРОКИ ВЛЕВО «F2». . .. «F2»
    ИЗМЕНЕНИЕ НОМЕРА СТРОКИ N* стр. «ВК»
(*АР2- + «ПС»)
    выход ИЗ РЕДАКТОРА «СТР»

Программа НУМЕРАТОР автоматически нумерует строки вводимой с клавиатуры программы, исключая, таким образом, ошибки программиста, связанные с пропуском номера строки. Шаг нумерации строк общепринятый (10). Вызывается НУМЕРАТОР последовательным нажатием клавиш «АР2»+«А». На экране дисплея при этом появляются сообщение «AUTO» и очередной рабочий номер строки. При первом вызове НУМЕРАТОРА нумерация строк программы начнется с номера 10. Во всех других случаях, то есть если уже с помощью НУМЕРАТОРА проводилась работа по набору текста, выдается номер строки, на которой набор был прекращен. Допускается неоднократно выходить из НУМЕРАТОРА и снова входить в него, сохраняя последовательность нумерации.

При работе с НУМЕРАТОРОМ следует запомнить следующее правило: нумерация строк ведется всегда относительно последнего высвеченного на экране номера. Поэтому, если возникнет необходимость автоматической нумерации строк программы с какого-либо другого номера, не совпадающего с выданным на дисплей, следует, сдвинув курсор назад, изменить номер строки на требуемый. После набора текста и нажатия на клавишу «ВК» вся дальнейшая нумерация строк пойдет от этого набранного номера. Таким образом, можно получить последовательность номеров не только 10, 20, 30 …. но, например, 5, 15, 25 … и т. п. При необходимости начать набор строки заново, нажимают на клавишу «ПС». Текст строки в этом случае в память не заносится, а номер строки не изменяется. В режиме автоматической нумерации строк можно пользоваться одновременно услугами описываемой ниже программы ОПЕРАТОР. Простой перебор номеров строк нажатием только на клавишу «ВК», без набора текста, увеличивает номер строки на шаг при каждом нажатии на клавишу «ВК» без каких-либо изменений в имеющейся в памяти программе. Следует напомнить, что перед первым набором текста должна быть обязательно исполнена директива «NEW». Выходят из НУМЕРАТОРА нажатием на клавишу «СТР». На экране дисплея при этом появляется стрелка, свидетельствующая о выходе интерпретатора в непосредственный режим работы. Выход из НУМЕРАТОРА обязателен, в противном случае окажется невозможным просмотр введенной программы, а также ее запуск. Программа ОПЕРАТОР позволяет набирать текст ключевых слов БЕЙСИКА ускоренно. Так, например, оператор RETURN можно набрать, нажимая последовательно на клавиши «AP2» и «R», оператор INPUT — на клавиши «AP2» и «I». Всего в программе ОПЕРАТОР реализован быстрый ввод 38 наиболее часто используемых ключевых слов БЕЙСИКА. Соответствие вводимых ускоренно слов БЕЙСИКА символьным клавишам дано в табл.5

Таблица 5.

КЛАВИША HEX КОД ВВОДИМОЕ СЛОВО КЛАВИША HEX код ВВОДИМОЕ СЛОВО
@ 40 MLOAD U 35 USR
В 42 TAB( V 56 VAL
С 43 CUR H 57 RND
D 44 DATA X 58 PEEK
F 46 FOR Y 59 POKE
G 47 GOSUB Z 5A SPC(
H 48 CHR$ [ LEFT$
I 49 INPUT ] 5D RIGHT$
J 4A GOTO ПРОБЕЛ 20 PRINT
К CLEAR 1 31 DIM
L 4C LINE 2 32 CLS
M 4D MID$ 3 33 STOP
N 4E NEXT 4 34 DEF
O 4F MSAVE 5 35 INT
P 50 PLOT 6 36 AND
Q 31 READ 7 37 ABS
R 52 RETURN 8 38 SQR
S 53 STEP 9 39 EXP
T 54 THEN ; REM


Распределение клавиш для программы ОПЕРАТОР производилось, исходя из более быстрой запоминаемости «закрепленных» за ними ключевых слов БЕЙСИКА. Услугами программы ОПЕРАТОР можно пользоваться в любом режиме работы интерпретатора, как программном, так и непосредственном. Необходимо, однако, помнить, что ОПЕРАТОР выдает соответствующее ключевое слово только при получении кодов латинских букв. Поэтому, если клавиатура находится в состоянии РУС, программа будет возвращать соответствующие русские буквы.

Программа РЕДАКТОР позволяет программисту быстро вносить в текст программ на БЕЙСИКЕ любые изменения, связанные с модификацией программы и исправлением синтаксических ошибок при отладке. Программа РЕДАКТОР является строко-ориентированным текстовым редактором, то есть обрабатывает (считывает, изменяет) текст программы построчно. Вызывается РЕДАКТОР последовательным нажатием на клавиши «АР2»+«Е». На дисплей при этом выводится сообщение «EDIT». Далее набирают номер строки, с которой предполагается начать просмотр или редактирование текста, и нажимают на клавишу «ВК» (при редактировании программы с самого начала номер строки можно не набирать). Сразу же после ее нажатия на экране появляется текст вызываемой программной строки и можно приступить к ее редактированию. В том случае, если в текст выданной на дисплей строки никаких изменений вносить не требуется, нажимают только на клавишу «ВК». При этом после каждого очередного ее нажатия на экран выводится следующая строка текста, а РЕДАКТОР остается в режиме просмотра, в котором никаких изменений в программу не вносится. При нажатии на любую символьную клавишу или сдвиге курсора назад РЕДАКТОР входит в режим редактирования. Основные операции по редактированию текстов, предоставляемые РЕДАКТОРОМ, приведены в табл.4.

При необходимости добавления текста в строку набирают требуемый текст сразу после появления строки на экране. Чтобы исправить ошибку в строке, достаточно передвинуть курсор на местоположение ошибочного символа и заменить его. Кроме того, можно убрать ненужные символы или операторы либо вставить новые. При добавлении новых слов можно пользоваться «услугами» программы ОПЕРАТОР, однако если производится вставка, то необходимо сначала освободить место для слова, зарезервировав необходимое число пробелов клавишей «F4». Когда набор происходит только с клавиатуры, вставку можно сделать, включив режим раздвижки последовательным нажатием на клавиши «AP2»+«F4». При этом вся правая от курсора часть строки будет сдвигаться вправо одновременно с набором текста. Выходят из режима раздвижки сдвигом курсора в какую-либо сторону или последовательным нажатием на клавиши «AP2»+«F2». При вставке новых символов необходимо помнить об ограничении на число символов в строке. При переполнении буфера строки подается звуковой сигнал и дальнейший сдвиг вправо прекращается. Для того чтобы заранее знать об истинной длине строки, рекомендуется слово «PRINT» не заменять при наборе на «?», а формировать его с помощью ОПЕРАТОРА. Удалять отдельные символы в строке и целые слова можно установкой курсора под удаляемым символом и нажатием на клавишу «F2».

После проведения всех изменений в строке нажимают на клавишу «ВК» (курсор может оставаться в любом произвольном месте строки). Измененный текст строки заносится на свое место в память, а РЕДАКТОР производит повторное (контрольное) считывание на дисплей текста ранее отредактированной строки. Контрольное считывание производится из основной памяти программы. Это позволяет оценить правильность редактирования и в случае необходимости продолжить редактирование данной строки. Если текст строки в дальнейшей редакции не нуждается, нажимают на клавишу «ВК» и приступают к редактированию следующей строки программы. При необходимости удалить правую часть строки, помещают курсор под первым удаляемым символом и нажимают на клавиши «АР2»+«ВК». Удалить всю строку из программы можно, последовательно нажимая на клавиши «АР2»+ «ПС».

РЕДАКТОР позволяет присваивать новые номера строкам программы. Для этого, после вызова строки на редактирование, сдвигают курсор под номер строки и заменяют его на нужный. После нажатия на клавишу «ВК» текст данной строки копируется в памяти программы под новым номером, а на дисплей вновь выводится исходная строка. При отсутствии надобности в исходной строке, ее удаляют из программы последовательным нажатием на клавиши «АР2»+«ПС». Таким образом можно перенумеровать весь текст программы. Следует только помнить, что если в тексте программы были ссылки на номера строк, то их необходимо исправить дополнительно. Исправления можно внести еще до копирования, то есть до нажатия на клавишу «ВК». По окончании текста программы происходит автоматический выход из РЕДАКТОРА. Чтобы сделать это раньше, нажимают на клавишу «СТР». Стрелка на экране дисплея подтверждает выход из РЕДАКТОРА в непосредственный режим работы интерпретатора.

При работе с РЕДАКТОРОМ, а также и при первоначальном вводе текста с клавиатуры допустимо формировать вновь набираемые пробелы клавишей «→» (курсор вперед).

И в заключение — несколько слов о постановке программы «БЕЙСИК-СЕРВИС» в компьютер «МИКРО-80». Ввиду отсутствия на клавиатуре «Микро-80» клавиши «АР2», функции ее могут выполняться клавишей «\» (курсор в левый верхний угол) без каких-либо изменений в ПРОГРАММЕ. Клавиша «ПС» программно заменяется клавишей «↓» (курсор вниз). Функции клавиш «F2» и «F4» могут выполняться только при одновременном нажатии на клавиши «УС»+«А» и «УС»+«С». Ввиду того, что в «Микро-80» область адресов 1А00Н — 21FFH использована в качестве буфера экрана, для нормальной работы ПРОГРАММЫ произведено смещение на 0,75 Кбайт соответственно буфера экрана и области расположения программ на БЕЙСИКЕ. Изменения кодов транслятора и ПРОГРАММЫ, относящиеся только к «Микро-80», приведены в табл. 6.

Таблица 6.

АДРЕС КОД АДРЕС КОД
0493H 1AH 17B9H 1DH
049EH D2H 17C1H 25H
049FH 85H 1815H 1DH
04A0H 04H 1AC8H 85H
0244H 25H 1AC9H 04H
0246H 25H 1ADAH 85H
0248H 25H 1ADBH 04H
024AH 25H 1C2CH 1AH
024CH 25H    
1745H 25H    

В. НАУГАДОВ, г. Архангельск