ZX Format
#02
30 ноября 1995 |
|
Программистам - Basic для всех.
Б Е Й С И К для программистов. (#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. Если Вам известны какие- то более крутые утилиты, пожа- луйста, напишите об этом нам. ________________________________
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября