Б Е Й С И К
для программистов.
(#2)
(С) Дм. Рудовский 1995
________________________________
Как и было обещано в прошлом
номере, сегодняшняя статья бу-
дет посвящена функциям и прог-
раммам, которые расширяют стан-
дартный Basic 48.
В этой статье речь пойдет о:
- Renumber 128-го бейсика
- Trace & Speed
- Blast Toolkit
- ZXeditor
Начнем с наиболее близкого
расширения - Basic 128. Един-
ственная функция заслуживающая
внимания - это Renumber. При вы-
зове этой функции строки прог-
раммы перенумеруются начиная с
первой с шагом 10. Впрочем но-
мер "первой" строки, также как и
шаг, можно изменить, занеся
необходимые параметры в систем-
ные переменные RNFIRST и RNSTEP
( 23444/45 и 23446/47 соответ-
ственно) бейсика 128.
Если же Вас не удовлетворяет
такой метод (вполне понятно, что
вводить четыре POKE в редакторе
128-го бейсика - радости мало),
то рекомендую воспользоваться
либо расширениями стандартного
бейсика вроде Mega, Beta или
Laser Basic, либо расширениями
типа ZXED или утилиты TOOLKIT,
либо подпрограммами из пакетов
Supercode и Newsupercode.
Если Вам попался неизвестный
продукт, претендующий на умение
перенумеровывать программы, то
вы можете протестировать его с
помощью следующего примера:
1 LET A=10
3 PRINT A
4 GO SUB 19
6 PRINT A
8 GO TO 10
9 PRINT "NONSENSE"
10 RESTORE 110
11 READ A: PRINT A
13 STOP
19 LET A=2*A: RETURN
100 DATA 35
110 DATA 50
Запустите этот тест, запиши-
те или запомните результаты, за-
тем перенумеруйте его тестируе-
мым продуктом и снова запустите.
Если результаты обоих прогонов
совпадут - тестируемая програм-
ма годна к применению, иначе -
сотрите ее с диска.
Несколько комментариев. Как
Вы поняли, этот пример прове-
ряет все виды адресации бейсика,
и если программа-renumber что-то
забудет, результаты работы тес-
та резко изменятся.
Ну а теперь перейдем к друго-
му типу программ - отладчикам
( Tracer'ам ). Все расширения
стандартного бейсика имеют ко-
манду TRACE, а из отдельных
программ, выполняющих аналогич-
ные функции, мне известен лишь
TRACE&SPEED Елисеева, который
позволяет не только проследить
выполнение программы по операто-
рам, но и практически произ-
вольно изменять скорость ее вы-
полнения. Об этой программе я
расскажу подробнее.
Сама программа забирает у Вас
две строки - 1 и 9999 (включе-
ние и выключение отладчика соот-
ветственно), а также верхнюю
часть ОЗУ начиная с 61000. К
слову, именно по этим причинам
свою программу надо загружать с
помощью MERGE, a не LOAD, так
как последнее приведет к стира-
нию части отладчика и его нера-
ботоспособности соответственно.
Вы загрузили отладчик, свою
программу, а дальше как обычно -
RUN, <ENTER>. Перед Вами появит-
ся запрос: Input speed
(1-Max,255-Min): (Введите ско-
рость (1-Макс., 255-Мин.)
Собственно Вы вводите не ско-
рость, а коэффициент торможения.
Если Вам не хватает скорости ин-
терпретатора, то откомпилируйте
программу (откомпилированные мо-
дули отладчик к сожалению не бе-
рет).
Теперь об отрицательных сто-
ронах программы:
1. Категорически не рекомен-
дуется:
- использовать в программе опе-
ратор STOP и другие аварийные
методы выхода (их надо заменять
на GOTO 9999)
- останавливать программу с по-
мощью BREAK или в INPUT
- использовать строки 1 и 9999.
2. Неудобства программы:
- невозможность останова про-
граммы на низких скоростях при-
водит к усложнению отладки про-
граммы, а в случае фатальной
ошибки (вроде 10 GO TO 10 ) к
настоящим мукам
- при замедлении программа на-
чинает работать рывками, что
создает сложности (в проверке
качества вывода например).
Если Вам все же пришлось на-
жать BREAK, то не нажимая ENTER
наберите GO TO 9999 для возвра-
щения компьютера в нормальный
режим работы.
Закончив с отладчиками, вер-
немся к утилитам и рассмотрим
две из них - ZXEDITOR и BLAST
TOOLKIT.
Утилита BLAST TOOLKIT входит
в пакет компилятора BLAST (мне
известен и другой TOOLKIT, ника-
кого отношения к описываемому не
имеющий) и в принципе имеет нес-
колько функций готовящих текст
вашей программы к компиляции.
Правда, я не видел нор-
мальной дисковой версии этого
пакета и поэтому эти функции
становятся бессмысленными и опи-
сываться здесь не будут.
Итак Вы загрузили TOOLKIT и
увидели, что внешних изменений
не произошло, - TOOLKIT защи-
щает свои коды с помощью CLEAR и
стирает загрузчик из памяти. Но
все же рекомендую переинсталли-
ровать его следующим образом:
NEW, затем RANDOMIZE USR 60497.
Все функции утилиты начинают-
ся с "*" и состоят из одной бук-
вы и параметров. Ниже следует
описание этих функций:
*ЕN1 - редактирование строки
с номером N1.
*CN1-N2,N3 - копирование
строк из интервала N1-N2
в область, начинающуюся
со строки N3.
При отсутствии N2 ко-
пируется одна строка.
*DN1-N2 - удаление строк из
интервала N1-N2. При от-
сутствии N2 удаляется
одна строка.
*MN1-N2,N3 - перенос строк.
Аналогично копированию,
но исходные строки уда-
ляются.
*RN1-N2,N3,N4 - Перенумера-
ция строк из диапазона
N1-N2, первой присваи-
вается номер N3, перену-
мерация идет с шагом N4.
По умолчанию N4=10.
*FN1-N2,N$ - поиск текста N$
в диапазоне N1-N2. При
отсутствии N$ ищется
текст заданный предыду-
щими функциями *F и *S.
*SN1-N2,N1$,N2$ - аналогично
*F, но найденный текст
N1$ заменяется на N2$.
*TN - трассирование програм-
мы со строки N. Замедле-
ние трассировки - про-
бел, а остановка - ENTER.
*K - удаление из текста всех
строк REM кроме тех, ко-
торые начинаются с !, %
и &. Это связано с тем,
что в BLAST'е REM и дан-
ные символы имеют осо-
бое значение.
*Q - конец работы.
В случае выхода из TOOLKIT
для возвращения туда используй-
те RANDOMIZE USR 60497.
Теперь перейдем к другой ути-
лите - ZXEDITOR.
Эта программа, в отличие от
описанной выше, занимает в бей-
сике строки, начиная с 9900, и
добавляет к стандартному редак-
тору Спектрума 12 новых функций,
которые задаются в режиме курсо-
ра Т. Его можно лицезреть, вы-
полнив команду GO TO 9900.
Вот список функций ZXEDITOR:
A - Поиск и замена текста в
программе. Утилита находит
текст, заменяет его, вы-
дает листинги замененных
частей и в конце пишет ко-
личество выполненных замен.
В - Объем свободной памяти
для бейсика.
C - Копирование строк прог-
раммы, аналогично TOOLKIT.
D - Удаление группы строк.
F - Поиск текста в програм-
ме и листинг начиная с это-
го текста.
H - Эта функция выдаст то
же, что написано здесь,
только покороче и на ан-
глийском языке.
L - По введенному номеру
строки выдаст ее адрес в
памяти.
M - Перемещение строк, ана-
логично *M в TOOLKIT.
P - Добавление текста в
строку.
R - Перенумерация строк.
S - Автоматический ввод но-
мера строки. На экран выво-
дится листинг программы, а
в окне редактора выдается
номер вводимой строки.
V - Список изменений.
Теперь дополнительные поясне-
ния:
From line - со строки
To line - по строку
base - начинать с
increment - шаг
insert after - куда вставить ?
to be - на что заменить ?
Кавычки с курсором как прави-
ло означают просьбу ввести
текст.
В конце надо заметить, что
после загрузки этой программы вы
можете удалить строки 9990 и
9991 (использовать их).
Но свою программу загружайте
только с помощью MERGE, иначе
работать ZXEDITOR Вы не застави-
те никакими силами.
P.S. Если Вам известны какие-
то более крутые утилиты, пожа-
луйста, напишите об этом нам.
________________________________