Главная Дока Микро-80 Радио-86РК ЮТ-88 Орион-128 Ссылки Новости Письмо

Описание компьютера Радио-86РК
Журнал РАДИО

ПРОГРАММА ОБРАБОТКИ текстов на БЕЙСИКЕ.

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

Считается хорошим тоном строки программы на языке БЕЙСИК номеровать с шагом, кратным десяти. Однако редко кому удается "сходу" написать даже небольшую по объему программу, не нарушив этого неписаного закона - программа RENUM позволяет оператору сдвигать, раздвигать и упорядочивать (перенумеровывать с единым шагом) номера строк всего текста программы.

Перед ее использованием в ОЗУ микро-ЭВМ должны быть введены интерпретатор и программа на БЕЙСИКе. После запуска по адресу 6000Н RENUM выводит на экран сообщение МАРКЕР- ХХХХ и список директив

  1. (BASIC),
  2. (RENUM),
  3. (COMPACT),
  4. (REM - COMPACT),
  5. (NORMAL).

Правее надписи "MAPKEP" - выводится шестнадцатеричный адрес маркера конца программы [1]. Выбор одной из директив производится нажатием соответствующей цифровой клавиши. Рассмотрим каждую из пяти директив отдельно.

1 (BASIC) - обеспечивает запуск интерпретатора БЕЙСИКа. В этом режиме можно просмотреть текст программы, проверить результаты работы RENUMa.

2 (RENUM) - позволяет перенумеровать строки программы с одновременным изменением адресов переходов в операторах GOTO..., GOSUB..., THEN..., RUN... . После ввода директивы (нажатием на клавишу "2") на экран выводится запрос: НАЧ. НОМЕР ? В ответ оператор должен ввести желаемый номер первой строки программы и нажать клавишу "ВК". После вывода на экран нового запроса: ШАГ ? следует ввести шаг, с которым должны быть перенумерованы строки программы. После нажатия на клавишу "ВК" выводится сообщение: НЕ ГОТОВ! Во время присутствия его на экране RENUM производит перенумерацию строк программы. После завершения работы на экран вновь выводится список директив.

В процессе отладки программ на БЕЙСИКе может встретиться ситуация, когда есть ссылка на несуществующую строку. В этом случае RENUM, кроме сообщения "НЕ ГОТОВ!", выводит текст: НЕТ СТРОКИ ХХХХ В СТРОКЕ ХХХХ с соответствующими номерами несуществующей строки и строки, в которой впервые встретилась ссылка на нее. Обработка программы блокируется, а на экран выводится список директив.

3 (COMPACT), 4 (REM-COMPACT) - эти директивы позволяют сократить объем ОЗУ, занимаемый программой на БЕЙСИКе, и время ввода программ с магнитофона (благодаря их более плотной "упаковке" на магнитной ленте). Как известно, достаточно большую часть текста реальной программы составляют символы пробелов и примечания, делающие программу нагляднее, но не являющиеся необходимыми для ее работы. Директива COMPACT сокращает текст программы благодаря исключению пробелов между операторами. Директива REM-COMPACT исключает также все встретившиеся в программе примечания (оператор REM...), сохраняя, однако, номера строк программы, начинающиеся с этого оператора, так как существуют программы, в которых на эти строки осуществляются переходы.

После выбора одной из этих директив (нажатием соответствующей цифровой клавиши) RENUM приступает к обработке текста программы, выводя на экран сообщение "НЕ ГОТОВ!". По окончании работы на экране появляется список директив с новым адресом маркера конца программы.

5 (NORMAL). После обработки директивами COMPACT и REM-COMPACT программа на БЕЙСИКе сокращается в объеме, но становится неудобной для чтения оператором. Директива NORMAL возвращает тексту программы привычный вид, расставляя в необходимых местах "пробелы" (примечания, естественно, не восстанавливаются!).

RENUM занимает в ОЗУ область адресов с 6000Н по 64А9Н и может применяться в компьютерах с объемом ОЗУ не менее 32 К. Применение версии RENUMa в 16-килобайтных микроЭВМ оказалось неэффективным ввиду малого объема ОЗУ, остающегося для размещения программ на БЕЙСИКе.

Коды программы приведены в табл.1. Их можно ввести в компьютер, воспользовавшись директивой "М" МОНИТОРа. Правильность ввода можно проверить, подсчитав поблочно контрольные суммы блоков и сверив их с приведенными в табл. 2.

Таблица 2.

Блок

Контрольная сумма

6000—60FF

6100—61FF

6200— 62FF

6300—63FF

6400—64A9

521A

3B02

E771

40E9

D282

6000 —64A9

19F8

Распределение ОЗУ при работе с программой показано в табл.3. При работе RENUM, кроме использования служебных ячеек 64ААН-64ВВН, создает список номеров строк, отводя под каждый номер 2 байта. Следовательно, объем ОЗУ, занимаемый этим списком, равен 2N, где N - число строк обрабатываемой программы.

Таблица 3.

Список номеров строк

64ВСН

Служебные ячейки RENUMa

64ВВН

64ААН

RENUM

64А9Н

6000 Н

Текст программы на БЕЙСИКе

5FFFH

1В01Н

Интерпретатор БЕЙСИКа

0000 Н

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

Время, затрачиваемое на перенумерацию строк программы на БЕЙСИКе, зависит от ее объема, количества в ней операторов перехода, а также от разницы в разрядности старых и новых номеров. Чтобы в операторе GOTO заменить номер 10 на 1000, необходимо раздвинуть всю программу на два байта для "впечатывания" недостающих цифр. Так, например, реальную программу в 350 строк с исходными номерами 1-350 RENUM перенумеровывает с шагом 10 (т. е. в номера 10-3500) за 40...50 секунд. Следует отметить, что удаление примечаний процедура довольно медленная, поэтому время, необходимое для их исключения из текста программы, может оказаться значительным - несколько минут (при общем объеме примечаний около 2 К).

В ячейках 63FDH, 63FEH записан адрес начала текста программы на БЕЙСИКе (1В01Н для интерпретатора PK86). При использовании программы совместно с "МИКРО-80" адрес начала текста - 2201 Н (в ячейку 63FEH записать байт 22Н).

Возможно использование RENUMa совместно с интерпретаторами, отличными от опубликованных, но использующих ту же структуру "односвязного списка" . В этом случае необходимо знать, в каких ячейках хранится маркера конца программы (в нашем случае - 0245Н, 0246Н). Адрес первой из этих ячеек должен быть занесен в таблицу кодов RENUMa по адресам (первым - младший байт): 6007Н. 6008Н; 6129Н, 612АН; 6140Н, 6141Н; 6144Н, 6145Н; 6161 Н, 6162Н; 6165Н, 6166Н. Адрес перехода на запуск интерпретатора БЕЙСИКа (директива 1) находится в ячейках 6021Н, 6022Н, в которые следует занести адрес "горячего старта" используемой версии интерпретатора.

При записи RENUMa в ПЗУ возможно сокращение его объема до одного Килобайта (6000Н-63FFH). В этом случае по адресу 63FFH следует записать байт С9Н. Однако в этом случае RENUM не сможет перенумеровывать программы, в которых встречаются ссылки на несуществующие строки. Текст программы будет испорчен. Перенумерация корректных программ, а также работа остальных директив остаются без изменений,

А. ПЕКИН

г. Москва

Описание компьютера Радио-86РК
Журнал РАДИО



(C) 2003-2010 www.danbigras.ru Наш адрес: info@danbigras.ru
Всё о старых компьютерах