BETA-BASIC 3.0
БЕТА-БЕЙСИК 3.0 - дальнейшее развитие серии, начатой програм-
мами БЕТА-БЕЙСИК 1.0 и 1.8. Как и последние, он полностью совмес-
тим со стандартным, зашитым в ПЗУ Вашего компьютера БЕЙСИКОМ, но
обладает значительно большими возможностями, определенной гиб-
костью и имеет значительное число новых операторов и функций.
БЕТА-БЕЙСИК откроет перед Вами гигантские перспективы. Во-пер-
вых, с его помощью Вы можете писать большие программы. Если Вы не
пробовали на обычном БЕЙСИКе писать программы более 10 - 15 К, то
знайте, что "проклятьем" обычного БЕЙСИКа является отсутствие
структурного программирования. Наступает, момент, когда программа не
укладывается, как цельное произведение в Вашем мозгу и тогда любые
изменения, производимые в одном месте программы, влекут за собой
помехи, появляющиеся в другом месте. Как бы ни был прост БЕЙСИК в
освоении, но в отладке большие программы, написанные на БЕЙСИКе,
могут выходить за все разумные рамки по трудоемкости.
Второе преимущество БЕТА-БЕЙСИКа - отличные средства редакти-
рования. Этот момент, надо сказать, ахиллесова пята стандартного
БЕЙСИКа "Спектрума". Конечно, строчный редактор со сложной системой
вызова строки на обработку - это не дело. Только на этом
программист теряет половину своего драгоценного времени. В то же
время, полноэкранные редакторы, какие мы видим в БЕЙСИКе на хорошо
продвинутых машинах типа MSX или, скажем, IBM (GW_BASIC) - это тоже
не подарок. Перемешанные на одном экране редактируемые и
нередактируемые строки приводят к многочисленным ошибкам, да и
занимают такие редакторы много места.
Тот подход, который развит в БЕТА-БЕЙСИК 3.0, наверное наибо-
лее практичен и эргономичен.
Третье преимущество БЕТА-БЕЙСИКа - в его экономном расходова-
нии памяти. Да, конечно, сам он занимает до 20К, то есть почти
половину того, что имеет Ваш компьютер. Но, если Вы, программируя,
будете хорошо использовать его возможности, то затратите 4-5 К на
основные процедуры, а далее, используя их, сможете в каждый килобайт
укладывать то, что на обычном БЕЙСИКе стоило бы Вам 5-7 К. Таким
образом, в доступных Вам 20 килобайтах, Вы сможете разместить
примерно 10К данных плюс 4-5 К процедур плюс программу,
эквивалентную обычным 40К стандартного БЕЙСИКа. Конечно, это цифры
условные, но условность их в том, что это далеко не предел.
Поработав несколько недель, Вы сможете еще сильнее повысить емкость
программ. Это просто данные нашего собственного практического опыта
в "ИНФОРКОМе".
Данный документ является нашим авторизованным переводом фирмен-
ной инструкции. Авторизованность не означает, что мы что-то сокра-
тили. Мы чуть более подробно прокомментировали наиболее узкие
места и заменили (там, где это можно) те примеры, которые были
привязаны к микродрайву на более близкие для нашего читателя.
Пусть Вас не смущает объем документа. Нет никакой необходимости
читать все от начала и до конца. Вполне достаточно, если Вы прочтете
введение, раздел по редактированию программ и, в дальнейшем, будете
обращаться к документу только при необходимости использовать тот или
иной оператор или ту или иную, ранее неизвестную Вам функцию. Особо
же рекомендуем Вам обратить внимание на те преимущества, которые
предоставляет структурное программирование благодаря использованию
процедур.
1. ВВЕДЕНИЕ
Загрузка языка с ленты выполняется обычным образом:
LOAD "" или LOAD "Beta Basic"
По этой команде загружаются три первых БЕЙСИК-строки - строка
О, строка 1 и строка 2. Со строки 2 осуществляется автостарт
программы, в результате которого загружается остальная (основная)
часть БЕТА-БЕЙСИКа, представляющая из себя блок машинных кодов
длиной 18 К. Системная переменная RAMTOP понижается до значения
47070, предохраняя от повреждения машинный код, размещаемый в верх-
ней части памяти.
После загрузки программы на экране должно появиться исходное
системное сообщение. При этом строки 1 и 2 программы удаляются и
остается только нулевая строка.
Внимание!
Если Вы написали программу под управлением БЕТА-БЕЙСИКа и
желаете передать ее своим знакомым для эксплуатации, то пожалуйста
перед выгрузкой Вашей программы и машиннокодового блока внесите
следующие изменения в машиннокодовую часть БЕТА-БЕЙСИКа:
РОКЕ 64218,0: РОКЕ 64219,0:
РОКЕ 64220,0: РОКЕ 64861,201
Этим Вы обеспечите то, что Ваша программа будет запускаться,
но не сможет быть изменена.
ОСОБЕННОСТИ РАБОТЫ С ЯЗЫКОМ БЕТА-БЕЙСИК 3.0
В строке 0 содержатся новые определения функций БЕТА-БЕЙСИКа
3.0. Эта строка всегда присутствует в программе, хотя и не всегда
изображается на экране. Характерным свидетельством того, что
БЕТА-БЕЙСИК загружен и готов к работе является изображение указателя
текущей строки в инвертированном виде. Несколько увеличена и
продолжительность звукового сигнала, подаваемого при нажатии клавиш.
Если он Вам не нужен, дайте команду РОКЕ 23609,0 для отключения.
Теперь можете загружать любую БЕЙСИК-программу (доступного размера)
и она будет работать нормально, за исключением двух особенностей:
1. Загрузку программы надо выполнять не командой LOAD, а командой
MERGE, иначе погибнет нулевая строка. Конечно, если программа была
написана под стандартным БЕЙСИКОМ, ей это все равно, но если под
БЕТА-БЕЙСИКом, строку 0 уничтожать не надо.
2. Если Вам надо, чтобы вместо ключевых слов БЕТА-БЕЙСИКа на эк-
ране изображались символы блочной графики, надо дать команду
KEYWORDS 0 (см. соответствующую команду).
Еще одной особенностью является то, что несколько изменилось
изображение программных строк, получаемое на экране по команде LIST,
если длина строки больше ширины экрана. В этом случае в первых
четырех позициях печатаются только номера строк.
Несколько уменьшено разрушительное действие команды NEW. Она
удаляет из памяти имеющуюся там БЕЙСИК-программу, но оставляет
строку 0. Если же Вы хотите удалить из памяти и сам БЕТА-БЕЙСИК, то
остается только сделать RESET, если у Вас есть такая кнопка, или
выключить питание или переинициализировать машину командой RANDOMIZE
USR 0.
Несколько увеличена скорость выполнения программ по сравнению
со стандартным БЕЙСИКОМ, особенно длинных.
Циклы FOR-NEXT работают с одной и той же скоростью, независи-
мо от местоположения в программе, что является отличием от* стан-
дартного БЕЙСИКа. Наивысшая скорость достигается, когда начало
цикла, его* длина и конец выражены целыми числами (в том числе и от-
рицательными) размером до 65535. Такие циклы работают в 5 раз быс-
трее, по сравнению с циклами, размещенными до 100-й строки в
стандартном БЕЙСИКе ив 17 раз быстрее, по сравнению с размещен-
ными до 500-ой строки в стандартном БЕЙСИКе.
Быстрее работают и G0 ТО и GO SUB, особенно когда строка на-
значения отстоит достаточно далеко. Быстрее работает и RETURN.
Возврат к последней строке выполняется столь же быстро, как и к
первой, в отличие от стандартного БЕЙСИКа.
В какой-то степени скорость удалось повысить за счет того, что
интерпретатор запоминает адреса, а не номера строк. С другой
стороны, это накладывает определенные ограничения на редак-
тирование. Так, если Вы, например, остановите программу во время
исполнения цикла, введете внутрь этого цикла дополнительную строку,
а потом запустите программу дальше - CONTINUE, то CONTINUE может не
сработать, поскольку адрес возврата изменится, хотя номер строки
возврата не изменялся.
РАБОТА С БОЛЕЕ РАННИМИ ВЕРСИЯМИ БЕТА-БЕЙСИКа
Если Вы загрузите программу, написанную в более ранней версии
БЕТА-БЕЙСИК 1.0 или БЕТА-БЕЙСИК 1.8, то вместе с ней загрузится и
нулевая строка, содержащая определения функций языка. Если теперь Вы
хотите работать с этой программой под управлением версии 3.0, то Вам
надо заменить старую версию нулевой строки на новую.
1. Загрузить БЕТА-БЕЙСИК 3.0.
2. Загрузить программу, выполненную в версии 1.0 или 1.8.
3. Выполнить "MERGE" для БЕТА-БЕЙСИКа 3.0, чтобы ввести копию
строки 0.
4. Удалить строки 1 и 2.
5. Выгрузить полученную программу.
Есть два момента несовместимости версии 3.0 с ранними вер-
сиями. Во-первых, переменная под именем "line", создававшаяся опе-
раторами ON ERROR и TRACE, теперь называется "lino", чтобы исклю-
чить путаницу с ключевым словом стандартного БЕЙСИКА LINE.
Во-вторых, в новой версии имена процедур не могут иметь вну-
тренних пробелов.
Преобразовать Вашу программу из версии, написанной на более
ранней версии языка, Вы можете воспользовавшись командой ALTER.
Для тех, кто знает версии 1.0, 1.8, желательно перечитать
работу с командами ON, RENUM, ROLL, SCROLL, CLOCK, ON ERROR и TRACE,
поскольку они изменены. Несколько изменена и команда GET (число).
Значительно расширены возможности процедур.
ЗАГРУЗКА И ВЫГРУЗКА ПРОГРАММ, НАПИСАННЫХ В БЕТА-БЕЙСИКе 3.0
После того, как Вы написали программу, в которую входят неко-
торые новые ключевые слова, Вы можете выгрузить ее на ленту обы-
чным порядком. Если теперь Вам когда-либо понадобится вновь за-
грузить ее, сначала загрузите БЕТА-БЕЙСИК 3.0, если он еще не за-
гружен. Теперь загрузите (LOAD) свою программу. Поскольку строка 0
была выгружена вместе с программой, то теперь нет необходимости
использовать MERGE.
С другой стороны, Вы можете воспользоваться строками 1 и 2
загрузчика для того, чтобы сохранить на ленте свою программу вме-
сте с машиннокодовой частью БЕТА-БЕЙСИКа. В этом случае Ваша
программа и БЕТА-БЕЙСИК будут загружаться автоматически.
Если Вы загрузите программу, написанную на БЕТА-БЕЙСИКе, в
компьютер в то время, как в нем не присутствует машинный код
БЕТА-БЕЙСИКа, новые команды появятся в виде одиночных символов, а
после команды RUN вы получите сообщение об ошибке "Nonsense in
Basic". В этом случае Вам следует использовать:
MERGE "Beta Basic": GO ТО 2,
чтобы загрузить загрузчик БЕТА-БЕЙСИКА, а из него по автостарту
посредством GO ТО 2 загрузится и машиннокодовая часть.
2. РЕДАКТИРОВАНИЕ
Список используемых ключевых слов: EDIT, KEYWORDS, LIST,
FORMAT, CSIZE, JOIN, SPLIT.
БЕТА-БЕЙСИК позволяет делать ввод и редактирование программ
намного более простым, чем то, к чему Вы привыкли, работая со
стандартным встроенным БЕЙСИКОМ "Спектрума". Если Вы наберете или
прильете (MERGE) некую БЕЙСИК-программу, то сможете поэкспери-
ментировать с новыми возможностями. Поскольку все возможности
стандартного БЕЙСИКа сохранены, Вы вряд ли будете испытывать при
этом какие-либо трудности. Ниже мы рассмотрим, как действуют те
команды, которые добавляет использование третьей версии БЕТА-
БЕЙСИКа при редактировании. Более подробно мы на них остановимся
еще раз в основной части руководства.
КУРСОР ТЕКУЩЕЙ СТРОКИ
Первое, что Вы заметили, загрузив БЕТА-БЕЙСИК, - это курсор
текущей строки, изображающийся инверсным цветом на экране. Его
можно перемещать с помощью курсорных клавиш вверх и вниз и
выполняется это намного быстрее, чем в стандартном БЕЙСИКе, по-
скольку при этом не листается содержимое всего экрана. (Могут быть
редкие случаи, когда положение курсора не вполне соответствует
изображению текста программы на экране. В этом случае просто
нажмите ENTER для перестроения экрана).
КОМАНДА EDIT <номер строки>
Вы можете вызвать на редактирование даже ту строку, которой в
данный момент нет на экране. Теперь нет необходимости подгонять к
ней курсор. Достаточно нажать "О" и набрать нужный номер строки,
чтобы она появилась в нижней части экрана.
В редактируемой строке Вы теперь можете перемещать курсор не
только влево или вправо, но и вверх и вниз. Это опять же выпол-
няется курсорными клавишами. При попытке поднять курсор выше верх-
ней строки или опустить ниже нижней, он автоматически встанет в
конце строки. Самый быстрый путь добавить операторы в конец Вашей
строки - это:
- нажать клавишу "О";
- ввести номер строки;
- нажать "курсор вверх" - теперь он окажется в конце строки.
ПЕРЕКЛЮЧЕНИЕ РЕЖИМОВ КУРСОРА
Теперь Вы можете в нужный момент легко переключить курсор "К"
на курсор "L" или "С". Это бывает полезным в тех случаях, когда Вы
хотите набрать по буквам имя процедуры или если Вы не желаете
вводить ключевые слова как токены, то есть одним нажатием клави-
ши, а хотите набирать их по буквам, что возможно благодаря ко-
манде KEYWORDS (см. ниже). Выполняется переход из режима "К" в
режим "L/C" нажатием клавиши "ПРОБЕЛ".
Возможен и обратный переход - из режима "L/C" в режим "К", что
выполняется одновременным нажатием клавиш SYMBOL SHIFT и ENTER.
Те, кто внимательно читают "ZX-РЕВЮ", знают, что прямым путем в
стандартном БЕЙСИКе это невозможно. Для этого мы набирали опе-
ратор THEN, а потом стирали его. Это бывает полезно, если Вы рабо-
тает в режиме с отключенными токенами (KEYWORDS 4 - см. ниже) или
если Вы хотите ввести ключевое слово в строковую переменную, что
бывает полезным при работе с командами REF, ALTER или KEYIN.
УПРАВЛЕНИЕ ВВОДОМ КЛЮЧЕВЫХ СЛОВ
Команда KEYWORDS позволяет Вам переключать режим ввода ключевых
слов, т.е. вводить их одним нажатием клавиши, как в стандартном
БЕЙСИКе, или набирать полностью по буквам, как это делается на
компьютерах иных систем. Есть и режим KEYWORDS 3, в котором в од-
ной строке можно одновременно применять и тот и другой подход. Это
тоже может быть полезным. Даже если Вы хорошо знаете стандартную
систему набора и Вам нравится набирать слова типа RANDOMIZE одним
нажатием клавиши, все же ввести оператор IN по буквам несколько
проще. Причем набор может идти как прописными, так и строчными
буквами.
ВВОД КЛЮЧЕВЫХ СЛОВ БЕТА-БЕЙСИКа
Есть два способа ввода ключевых слов БЕТА-БЕЙСИКа. Вы можете
набирать их по буквам, используя ведущий пробел для того, чтобы
отключить курсор "К", если необходимо, или можете использовать
"одноклавишный" подход. В последнем случае команды и функции вво-
дятся по-разному. Для ввода новой команды сначала перейдите в гра-
фический режим, а затем нажимайте соответствующую клавишу. Большин-
ство клавиш в этом случае дают новые ключевые слова.
Для ввода новой функции наберите FN, а затем -"$" или "(" - в
зависимости от того, что это за функция). Набирать "FN" можно
теперь по-разному. Во-первых - обычным порядком, как ключевое слово
стандартного БЕЙСИКа, во вторых - по буквам "f" + "п" + " "и,
в-третьих,- нажав клавишу "Y" в графическом режиме.
ПРОВЕРКА СИНТАКСИСА
БЕТА-БЕЙСИК, как и стандартный БЕЙСИК, проверяет правильность
того, что Вы вводите в компьютер и точно так же выдает звуковой
сигнал ВЕЕР, если устанавливает наличие ошибки. Изменить звуковой
сигнал Вы можете, изменяя значения в ячейке памяти 23608 посредством
РОКЕ 23608,... Звуковой сигнал удобен, если Вы набираете программу,
например, из распечатки в журнале и при этом не часто смотрите на
экран. Но имейте в виду, что если Вы работаете в режиме набора
ключевых слов по буквам, то ошибки в их написании будут восприняты
компьютером как ввод нового имени процедуры. Например, если вместо
PAPER 1 Вы наберете PAPRE 1, то получите сообщение об ошибке
"Missing DEF PROC" (отсутствует определение процедуры).
КОМАНДА LIST FORMAT
Эта команда позволяет Вам улучшить читабельность распечатки
Вашей программы на экране монитора.
КОМАНДА CSIZE
Позволяет Вам уменьшить размер символов, доведя их количество в
строке до 64 или, наоборот, увеличить их размер для печати заго-
ловков или в иных, например в демонстрационных целях.
КОМАНДЫ JOIN <номера строк> и SPLIT.
Позволяют объединить две строки в одну или, наоборот, разбить
строку на две.
УПРАВЛЯЮЩИЙ КОД "новая строка".
Вы можете рвести этот управляющий код в свою программную строку
или в строку INPUT путем нажатия CAPS SHIFT и ENTER. В отличие от
просто ENTER Вы сможете продолжать ввод той же программной строки на
другой экранной строке. Смотрите также раздел "Управляющие коды"
(CHR$ 15).