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. Если Вам известны какие-
то более крутые  утилиты,  пожа-
луйста, напишите  об  этом  нам.
________________________________




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Game Project - War in Space - новая стратегическая игра.
INTRO - Объем текста очень велик.
Мысли - Навеяные MSF: Про ведьмочек.

В этот день...   23 октября