Sinclair BASIC
Sinclair BASIC — это диалект языка программирования BASIC, разработанный компанией Sinclair Research для использования на домашних компьютерах ZX Spectrum, ZX81 и ZX80. Относится к семейству интерпретаторов BASIC, предназначенных для работы в условиях ограниченных вычислительных ресурсов (оперативная память от 1 до 128 КБ, процессор Z80 с тактовой частотой 3,5 МГц). Характеризуется однобуквенными ключевыми словами, отсутствием вещественных чисел с плавающей запятой (в ранних версиях) и тесной интеграцией с графическими и звуковыми возможностями компьютера.
История
Предшественники: ZX80 и ZX81
Первая версия Sinclair BASIC была создана в 1980 году для компьютера ZX80 (процессор Z80, 1 КБ ОЗУ). Из-за крайне ограниченного объёма памяти язык был предельно упрощён: поддерживались только целые числа (от −65535 до 65535), отсутствовали строковые переменные и операции с плавающей запятой. Ключевые слова вводились не полностью, а через нажатие одной клавиши (например, PRINT — клавиша P, GOTO — клавиша G). В 1981 году для ZX81 (с 1 или 16 КБ ОЗУ) язык был расширен: добавлены строковые переменные, функции SIN, COS, TAN, RND, а также возможность работы с массивами.
ZX Spectrum (1982)
Основная версия Sinclair BASIC появилась в 1982 году вместе с компьютером ZX Spectrum. Разработчик — компания Nine Tiles (под руководством Стива Викерса). В отличие от предшественников, Spectrum поддерживал 8-цветную графику (с возможностью мигания и яркости) и звук через встроенный динамик. Язык был расширен:
- Добавлены команды для работы с графикой: PLOT, DRAW, CIRCLE, INK, PAPER, BORDER, FLASH, BRIGHT.
- Введены функции для работы с цветом: ATTR, POINT.
- Поддержка вещественных чисел с плавающей запятой (5 байт на число, точность около 9 знаков).
- Команды для работы с магнитофоном: SAVE, LOAD, VERIFY, MERGE.
- Системные переменные и адресация памяти через PEEK, POKE, USR.
Поздние версии и клоны
После прекращения выпуска ZX Spectrum в 1992 году Sinclair BASIC продолжал существовать на клонах (например, Timex Sinclair 2068, «Синклер» производства СССР, «Байт»). В 1990-х годах появились эмуляторы ZX Spectrum для ПК, которые воспроизводят оригинальный интерпретатор. В 2010-х годах были выпущены аппаратные реплики (ZX Spectrum Next, 2017), где Sinclair BASIC был расширен новыми командами (например, для работы с SD-картами, мышью, звуковым чипом AY-3-8912).
Особенности синтаксиса
Однобуквенные ключевые слова
Все команды, функции и операторы вводятся нажатием одной клавиши (или комбинации с Shift). Например:
P— PRINTL— LISTR— RUNG— GOTOI— INPUTN— NEXTS— STOPT— THENC— CIRCLED— DRAWA— ATTRB— BORDERF— FORH— HOME (в ZX81)
Это ускоряло ввод программ, но делало код нечитаемым для непосвящённых. В эмуляторах и клонах часто используется ввод полными словами.
Нумерация строк
Каждая строка программы начинается с номера (от 1 до 9999). Номера строк служат метками для GOTO, GOSUB и редактирования. Пробелы между номером и командой игнорируются. Пример: `` 10 PRINT "HELLO" 20 GOTO 10 ``
Типы данных
- Числа: целые (от −65535 до 65535) и вещественные (с плавающей запятой, 5 байт). В ZX80 и ZX81 — только целые.
- Строки: переменные с суффиксом
$(например, A$). Длина строки ограничена 255 символами. - Массивы: одномерные (DIM A(10)) и многомерные (DIM B(3,4)). Индексация начинается с 0.
Графика и звук
- Графика: экран ZX Spectrum имеет разрешение 256×192 пикселя, 8 цветов (0-7) с возможностью мигания и яркости. Команды:
PLOT x,y— установить пиксель.DRAW x,y— нарисовать линию от текущей точки.CIRCLE x,y,r— нарисовать окружность.INK n— установить цвет пера (0-7).PAPER n— установить цвет фона.BORDER n— установить цвет рамки.FLASH n— включить/выключить мигание (0 — выкл, 1 — вкл).BRIGHT n— включить/выключить яркость (0 — выкл, 1 — вкл).- Звук: встроенный динамик управляется через
BEEP f,d(частота в герцах, длительность в секундах). В ZX81 звук отсутствовал.
Ввод-вывод
INPUT— ввод данных с клавиатуры (с приглашением и без).PRINT— вывод на экран (с форматированием через;и,).SAVE/LOAD— сохранение и загрузка программ на магнитофон (через аудиокассету). Скорость передачи — 1500 бит/с.PEEK/POKE— чтение и запись байтов в память.USR— вызов машинного кода (адрес в памяти).
Классификация версий
По аппаратной платформе
| Версия | Компьютер | Год | ОЗУ (мин.) | Особенности |
|---|---|---|---|---|
| Sinclair BASIC 1.0 | ZX80 | 1980 | 1 КБ | Только целые числа, без строк |
| Sinclair BASIC 2.0 | ZX81 | 1981 | 1 КБ | Строки, SIN, COS, TAN |
| Sinclair BASIC 3.0 | ZX Spectrum 16K/48K | 1982 | 16 КБ | Графика, цвета, звук |
| Sinclair BASIC 4.0 | ZX Spectrum 128K | 1986 | 128 КБ | Расширенная память, команды BANK, OUT |
По расширениям
- Sinclair BASIC 128K (1986): добавлены команды
BANKдля работы с дополнительными 80 КБ ОЗУ (всего 128 КБ),OUTдля портов ввода-вывода, улучшенная работа с магнитофоном. - Sinclair BASIC + (1987): версия для ZX Spectrum +2 (с 128 КБ и встроенным магнитофоном). Незначительные изменения в редакторе.
- Sinclair BASIC Next (2017): версия для ZX Spectrum Next (аппаратный клон). Добавлены команды для работы с SD-картами (
LOAD "FILE"), мышью (MOUSE ON/OFF), звуковым чипом AY-3-8912 (PLAY), режимами экрана (256×192, 320×256, 640×256).
Применение
Обучение программированию
Sinclair BASIC был одним из первых языков, с которым знакомились миллионы школьников и студентов в 1980-х годах, особенно в Великобритании, СССР и странах Восточной Европы. Простота синтаксиса и мгновенная обратная связь (интерпретатор) позволяли быстро создавать простые программы. В СССР на базе ZX Spectrum (и его клонов, таких как «Синклер», «Байт», «Львов») Sinclair BASIC использовался в школьных кружках и домашнем обучении.
Разработка игр и приложений
Несмотря на ограниченные возможности, на Sinclair BASIC было написано множество игр и утилит. Однако из-за низкой производительности (интерпретатор работал в 10-20 раз медленнее машинного кода) большинство коммерческих игр создавались на ассемблере Z80. Тем не менее, Sinclair BASIC использовался для:
- Прототипирования игр.
- Создания образовательных программ.
- Написания утилит (текстовые редакторы, калькуляторы, базы данных).
- Демонстрации графических эффектов (например, «плазменные» заставки, фракталы).
Ретрокомпьютинг
В 2020-х годах Sinclair BASIC остаётся популярным среди энтузиастов ретрокомпьютинга. Эмуляторы ZX Spectrum (Fuse, ZEsarUX, SpecEmu) позволяют запускать оригинальные программы, а сообщества (например, World of Spectrum, ZX-Art) поддерживают архивы ПО. На ZX Spectrum Next проводятся конкурсы по программированию на Sinclair BASIC.
Критика
Ограничения
- Медлительность: интерпретатор работал медленно, особенно при выполнении циклов и графики. Например, заполнение экрана пикселями занимало несколько секунд.
- Отсутствие структурирования: нет процедур, функций (кроме GOSUB), локальных переменных. Программы быстро становились нечитаемыми («спагетти-код»).
- Ограниченная работа с памятью: в стандартной версии (48 КБ) программа и данные занимали общую память, что приводило к ошибкам «Out of memory».
- Графика: экран разделён на атрибутные зоны (8×8 пикселей), что вызывало конфликты цветов (например, при выводе текста поверх графики).
- Звук: только одноканальный звук через динамик, без возможности полифонии.
Альтернативы
В 1980-х годах для ZX Spectrum были созданы компиляторы BASIC (например, Hisoft Devpac, ZX Basic Compiler), которые ускоряли выполнение кода в 5-10 раз. Однако они не получили широкого распространения из-за сложности использования и несовместимости с некоторыми командами.
Интересные факты
- Ключевые слова Sinclair BASIC были выбраны так, чтобы их можно было ввести одной клавишей, но при этом они не конфликтовали с буквами алфавита. Например,
P— PRINT,L— LIST,R— RUN. - В ZX81 и ZX Spectrum 16K/48K программа хранилась в той же памяти, что и системные переменные, поэтому при переполнении стека или массива компьютер мог «зависнуть».
- В СССР Sinclair BASIC был легально скопирован и использовался в компьютерах «Синклер» (производство ПО «Синтез», г. Минск) и «Байт» (производство ПО «Байт», г. Москва). Из-за отсутствия официальной лицензии эти клоны не имели поддержки Sinclair Research.
- В 1984 году компания Sinclair Research выпустила книгу «The Sinclair BASIC Handbook» (автор — Стив Викерс), которая стала бестселлером в Великобритании.
Источники
- Викерс С. «The Sinclair BASIC Handbook» (1984).
- Брэдли Р. «ZX Spectrum: A Visual History» (2012).
- Документация к ZX Spectrum (1982, Sinclair Research).
- Официальное руководство по ZX Spectrum Next (2017, SpecNext Ltd.).
- Статьи на World of Spectrum (www.worldofspectrum.org).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →