Введение
Интерпретатор BASIC для микрокомпьютера Sinclair Research ZX Spectrum. Beta BASIC — это интерпретатор BASIC для микрокомпьютера Sinclair Research ZX Spectrum, написанный доктором Эндрю Райтом в 1983 году и распространяемый его небольшой компанией BetaSoft. BetaSoft также издавала регулярный информационный бюллетень/журнал под названием BetaNews. Изначально это был набор инструментов BASIC, но со временем он превратился в полноценную замену.
Beta BASIC is a BASIC interpreter for the Sinclair Research ZX Spectrum microcomputer, written by Dr Andrew Wright in 1983 and sold by his one man software house BetaSoft. BetaSoft also produced a regular newsletter/magazine, BetaNews. Originally it started as a BASIC toolkit but over time it grew into a full replacement.
Объекты
Beta BASIC полностью заменил Sinclair BASIC, который, как и было принято в то время, также являлся операционной системой, предоставляющей интерфейс командной строки (CLI). Таким образом, Beta BASIC предоставил новый и улучшенный CLI и редактор. Он поддерживал своеобразную систему ввода одного ключа, характерную для Sinclair BASIC, для ключевых слов, но также позволял набирать ключевые слова по букве. Это избавило от необходимости запоминать порой сложные комбинации клавиш, необходимые для ввода редко используемых ключевых слов BASIC. Однако система ввода одного ключа была расширена за счет сопоставления графических символов Spectrum с новыми ключевыми словами Beta BASIC. Для переключения между вводом ключевых слов и набором текста достаточно было нажать один пробел, что приводило к изменению режима курсора с K (ключевое слово) на L (строчные буквы) или C (прописные буквы). (Оператор KEYWORDS также мог использоваться для изменения этого поведения, например, для отключения режима K.) Редактор, при листинге, мог автоматически форматировать код. Это можно было сделать вручную в Sinclair BASIC, но автоматическое форматирование имеет преимущество – оно выделяет определенные типы ошибок в коде, в первую очередь связанные с некорректным закрытием конструкций. Другие улучшения редактора включали автоматическое выделение текущей строки – небольшая, но очень полезная функция – и возможность перемещать курсор вверх и вниз, а также влево и вправо, что было огромным преимуществом при редактировании длинных строк. В сочетании с 64-колонным дисплеем (см. раздел "Новые возможности" ниже), эти улучшения сделали Beta BASIC гораздо более продуктивной средой даже для написания кода на стандартном Sinclair BASIC и без использования языковых расширений BetaSoft. Beta BASIC также был самостоятельным интерпретатором, обходя ROM Spectrum, который он использовал как библиотеку. Он иногда обращался к ROM для доступа к функциям, которые не стоило переписывать, либо потому, что подпрограммы ROM были достаточно хороши, либо из-за ограничений по памяти – Beta BASIC должен был работать в 48 КБ памяти Spectrum, при этом оставляя место для кода пользователя.
Изменения языка
В свое время, Бета БЭЙСИК был довольно сложным языком. Он поддерживал полноценное структурированное программирование с именованными процедурами и функциями, включая локальные переменные, что позволяло использовать рекурсию. Хотя он и поддерживал номера строк, они не были обязательными, и существовал режим работы, полностью отключающий их отображение. На компьютерах Spectrum с 128 КБ памяти, Бета БЭЙСИК предоставлял расширенные возможности для доступа к дополнительной памяти, реализованной в виде диска RAM. Помимо сохранения и загрузки программ, блоков памяти или изображений экрана на диск RAM и ведения каталога файлов на диске RAM, Бета БЭЙСИК также предлагал команды для создания и использования массивов, хранящихся на диске RAM. Это позволяло программам, работающим в примерно 30 КБ свободной памяти на Spectrum, оперировать массивами размером до 80 КБ – значительно больше, чем по стандартам 1980-х годов, и больше, чем у большинства других 8-битных версий БЭЙСИКа, которые обычно ограничивались общим объемом 64 КБ для программ и данных.
Новые функции
Beta BASIC также напрямую управлял 256x192-пиксельным дисплеем Spectrum, устраняя ограничения 32-колонного текстового режима ROM. Beta BASIC предлагал масштабируемые экранные шрифты, включая специальный "мягкий" шрифт, который имел ширину всего 4 пикселя, но оставался разборчивым. Это позволяло Beta BASIC отображать 64 столбца текста на экране, что делало его более сопоставимым с традиционными 80-колонными дисплеями компьютерных терминалов и распространенными любительскими и профессиональными машинами CP/M. (Некоторые домашние компьютеры 80-х годов также поддерживали 80-колонный режим.) Если пользователь был готов мириться с отображением символов без промежутков, можно было получить 85-колонный дисплей. Хотя это было не очень удобно для чтения, это облегчало перенос BASIC-приложений, разработанных для 80-колонного экрана. Размер текста можно было задавать программно, позволяя использовать 64-колонный текст в одной части программы, 32-колонный – в другой, а также промежуточные размеры с увеличением или уменьшением масштаба.
Ограничения
Beta BASIC имел ряд ограничений. Как и другие 8-битные микропроцессоры, Spectrum мог адресовать только 64 КБ непрерывной памяти из-за ограничений адресации процессора Zilog Z80, использовавшегося в Spectrum. Из этого объема 16 КБ занимала ПЗУ Sinclair BASIC, оставляя 48 КБ для оперативной памяти. Часть этой памяти использовалась под экран, а также под области, предназначенные для хранения внутренних структур данных интерпретатора. Beta BASIC занимал примерно 11–12 КБ от оставшегося объема, в некоторых случаях оставляя для пользовательских программ всего около 20 КБ. Замена редактора Sinclair означала, что нельзя было использовать полноэкранный редактор BASIC из ПЗУ 128K Spectrum. Для кода Beta BASIC не было доступно компиляторов, а существующие компиляторы Sinclair BASIC, такие как HiSoft BASIC, не поддерживали расширенные ключевые слова и возможности Beta BASIC. Еще одним ограничением Sinclair BASIC было то, что для строк, массивов и других типов данных можно было использовать только однобуквенные имена переменных. Единственным другим 8-битным BASIC, обеспечивавшим встроенную поддержку структурированного программирования, был BBC BASIC. В Beta BASIC именованные процедуры не требовали использования ключевого слова PROC, как в BBC BASIC, и таким образом становились новыми ключевыми словами языка, позволяя расширять сам язык. Однако BBC BASIC был значительно быстрее – самым быстрым интерпретатором BASIC того времени. Beta BASIC не отличался особой скоростью, хотя и включал более быстрые реализации особенно медленных подпрограмм ПЗУ, таких как код для рисования окружностей и дуг.
Версии
BetaBasic V1.0 1983 года была в значительной степени совместима с Beta BASIC и работала аналогичным образом, за исключением областей, где аппаратное обеспечение SAM существенно отличалось, таких как экран и расширенная память SAM. Позднее компания BetaSoft выпустила расширение для SAM BASIC под названием MasterBASIC.