Открыть сервис

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 — PRINT
  • L — LIST
  • R — RUN
  • G — GOTO
  • I — INPUT
  • N — NEXT
  • S — STOP
  • T — THEN
  • C — CIRCLE
  • D — DRAW
  • A — ATTR
  • B — BORDER
  • F — FOR
  • H — 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.0ZX8019801 КБТолько целые числа, без строк
Sinclair BASIC 2.0ZX8119811 КБСтроки, SIN, COS, TAN
Sinclair BASIC 3.0ZX Spectrum 16K/48K198216 КБГрафика, цвета, звук
Sinclair BASIC 4.0ZX Spectrum 128K1986128 КБРасширенная память, команды 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 →