Радио-86РК/Радио 01-88/Бейсик Сервис
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: В. НАУГАДОВ |
Радиолюбители, использующие на своих персональных компьютерах интерпретатор языка БЕЙСИК, описанный в [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$ | [ | 5В | LEFT$ |
I | 49 | INPUT | ] | 5D | RIGHT$ |
J | 4A | GOTO | ПРОБЕЛ | 20 | |
К | 4В | 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 | ; | 3В | 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 |
В. НАУГАДОВ, г. Архангельск