Радио-86РК/Радио 03-91/Программа БЕЙСИК-ПОИСК

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

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

Автор: Ю. СОЛНЦЕВ

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

Не так уж редко в практике встречается ситуация, когда после долгого и кропотливого набора программы она «отказывается» работать. На поиск причин иногда уходит не меньше времени, чем на набор… Программа «Бейсик — Поиск» предназначена для тех, кто работает с языком Бейсик и сталкивается с описанной ситуацией.

Толчком к ее созданию послужил общеизвестный факт: среди любителей имеют хождение самые разнообразные версии интерпретаторов этого языка, в том числе и несовместимые друг с другом версии одного и того же интерпретатора. В распоряжении у автора имеется, по крайней мере, четыре версии интерпретатора «Бейсик МИКРОН», не имеющие никакого отношения ни к версии, опубликованной в журнале «Радио», ни к ее авторам. А сколько их еще пущено неизвестными «доброжелателями» гулять по стране? (Ведь авторские права на программные продукты практически никак не защищены…). Часто программы не работают на «чужой» версии интерпретатора, даже если он корректен. Известны, например, варианты МИКРОНа, в одной из которых длительность паузы задается в секундах, а в другой — в миллисекундах, по разному задается высота тона звукового сигнала и т. д. Чтобы заставить программу работать, необходимо в ее тексте отыскать «критичные» строчки и внести исправления. Аналогичная задача возникает и при адаптации программы, переносе с одной машины на другую, исправлении текстовых сообщений, когда необходимо редактирование текста программы, а визуальный поиск нужного фрагмента затруднен. Во всех этих случаях автор пользуется написанной несколько лет назад программой «Бейсик — Поиск».

Что же умеет эта программа? Она предназначена для поиска в тексте программы фрагментов текста (до 32 символов длиной) и ключевых слов Бейсика. Номера строк, в которых содержится искомый фрагмент или ключевое слово, выводятся на экран в десятиричном виде. Остается только записать их и затем отредактировать нужные строки обычным способом. Таким образом, наиболее утомительная и длительная процедура визуального поиска автоматизируется. Нелишне упомянуть, что ошибки и пропуски при таком поиске исключаются, тогда как при визуальном требуется не один раз «пройтись» по тексту.

Программа «Бейсик — Поиск» написана на АССЕМБЛЕРе и располагается в области ОЗУ начиная с адреса 6000Н. Собственно программа заканчивается в ячейке с адресом 625ЕН, а с 625FH по 6285Н расположен текстовый буфер и служебные ячейки. Это следует учитывать при размещении программы ПЗУ.

Коды программы «Бейсик — Поиск» приведены в таблице 1, а поблочные контрольные суммы — в табл.2. Программа ориентирована на компьютер «РАДИО-86РК» с объемом ОЗУ 32Кб и интерпретатор «Бейсик МИКРОН». Состоит она из нескольких блоков. В начале производятся очистка ОЗУ и ввод исходной информации. Затем, если осуществляется поиск текстового фрагмента, идет побайтное сравнение текста программы (начиная с адреса 2200Н) с содержимым текстового буфера. При их полном совпадении на экран выводится номер строки, содержащий искомый фрагмент текста, и поиск продолжается до конца текста программы. Очевидно, что чем длиннее искомый фрагмент, тем дольше идет сравнение и тем продолжительнее поиск, поэтому для ускорения процесса рекомендуется ограничивать размер фрагмента минимально необходимой величиной, не добиваясь, например, законченности слова или фразы.

Таблица. 2
6000-60FF 4C3E
6100-61FF 08BE
6200-6285 EBC0
6000-6285 8FBC


Поиск ключевых слов интерпретатора Бейсик проходит несколько сложнее. Это связано с тем, что в памяти компьютера ключевые слова хранятся в закодированном виде. Поэтому прежде всего нужно определить код ключевого слова, а затем уже отыскать этот код в тексте программы. Таблица ключевых слов расположена начиная с адреса 609ЕН по адрес 61В1Н. Для сокращения объема таблицы каждое ключевое слово представлено в ней тремя символами. При вводе слова для поиска можно набрать его полностью, а можно ограничиться первыми тремя буквами (если слово содержит больше трех букв). Исключением является ключевое слово INP, у которого первые три буквы такие же, как и у ключевого слова INPUT. Конечно, ключевое слово INP (чтение из порта) можно было бы вообще исключить, так как в интерпретаторах Бейсика для «Радио-86РК» оно не используется однако для универсальности программы «Бейсик — Поиск» оно сохранено в таблице и может быть найдено в тексте программы. Необходимо только помнить, что при поиске этого слова нужно вводить только первые две буквы, то есть вместо INP нужно набрать IN. Остальные ключевые слова набираются обычным способом.

У читателя может возникнуть необходимость расположить программу «Бейсик — Поиск» в другой области ОЗУ. Удобнее всего это сделать в соответствии с рекомендациями по перемещению программ в машинных кодах Процедура перемещения была подробно описана ранее, а требующаяся для этого таблица коррекции ВITMAP приведена в табл. 3. Она занимает область ОЗУ с адреса 300Н по адрес 351Н, контрольная сумма самой таблицы BITMAP=7А73Н.

Таблица 3.
0300 20 80 48 00 42 00 10 80 80 01 21 04 II 10 84 0C
0310 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0С
0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0С
0330 00 00 00 00 00 00 08 04 90 44 21 08 22 10 44 9C
0340 91 12 01 20 20 82 II 00 40 08 10 00 00 00 00 0С
0350 00 00 

Программу «Бейсик — Поиск» можно использовать и для работы с другими интерпретаторами Бейсик, однако, если кодировка ключевых слов не совпадает с, то может понадобиться корректировка таблицы соответствия. В разных версиях интерпретаторов Бейсик могут быть разные адреса начала текста программы (в «МИКРОНе» это 2200Н), при необходимости новое значение следует записать в ячейки 61С5Н и 61С6Н, при этом в первую ячейку записывается значение младшего байта, увеличенное на единицу, а во вторую — значение старшего байта адреса. Но в любом случае маркировка конца строки, номера строки и конца текста должна быть такой же, как и в Бейсик «МИКРОН».

Как работать с программой «Бейсик — Поиск»?

Прежде всего нужно загрузить интерпретатор Бейсик «МИКРОН» и анализируемую программу. Затем загружают и запускают директивой G6000 программу «Бейсик — Поиск». На экран будет выведено приглашение ввести слово для поиска:

SEARCH>

Теперь можно набрать фрагмент текста или ключевое слово, например:

SEARCH> СЛЕДУЮЩИЙ ХОД или: SEARCH> PAUSE 

При наборе фрагмента текста он не обязательно должен быть законченным или осмысленным, может быть и такой:

SEARCH> С ЮЩИЙ Х Д АШ 

На этом этапе пока неважно, что будем искать — текст или ключевое слово, главное, набрать его без ошибок. Если же ошибка допущена, нажмите клавишу ЗАБОЙ; ввод прекратится, и на экране вновь появится приглашение:

SEARCH>

По окончании набора нажмите клавишу «ВК» (если набирался длинный текстовый фрагмент и превышен объем буфера (32 символа), программа перейдет в режим поиска автоматически). Фрагмент для поиска окажется «закрыт» угловыми скобками:

SEARCH> ^PAUSE^

Далее на экран выводится запрос:

TEXT (Y/N)? 

При поиске текстового фрагмента необходимо ответить Y, а при поиске ключевого слова — N.

Например, если после набора слова PRINT на запрос TEXT (Y/N)? ответить Y, то произойдет поиск слова PRINT среди сообщений анализируемой программы, взятых в кавычки и хранящихся в ОЗУ в виде кодов ASCII. Если же ответить N, то произойдет поиск оператора PRINT.

Как только в тексте программы встретится искомое ключевое слово или текст, на экран будет выведен номер строки и так далее до конца текста. По окончании поиска (независимо, успешного или нет) программа вернется в исходное состояние и на экране вновь появится сообщение:

SEARCH>

Поиск фрагментов текста или ключевых слов можно продолжить или, нажав Е4, выйти в МОНИТОР.

Номера строк нужно записать вручную или, если есть такая возможность, распечатать на принтере (режим CTPL P). Далее, запустив интерпретатор Бейсик, проводят редактирование обычным способом.

Ю. СОЛНЦЕВ, г. Москва