Синклер БЕЙСИК
Парадигма | Императив |
---|---|
Разработано | Джон Грант, Стив Викерс |
Разработчик | Сети девяти плиток, Синклер Исследования |
Впервые появился | 1979 год |
Платформа | ZX80 , ZX81 , ZX Spectrum, +, 128, +2, +3 , T/S 2068 , TC 3256 |
Лицензия | Собственный |
Sinclair BASIC — диалект языка программирования BASIC, используемый в 8-битных домашних компьютерах от компаний Sinclair Research , Timex Sinclair и Amstrad . Sinclair BASIC Интерпретатор был написан Nine Tiles Networks Ltd. [1]
Разработанная для работы всего с 1 КБ ОЗУ , система принимает ряд решений для снижения использования памяти. Это привело к появлению одной из наиболее примечательных особенностей Sinclair BASIC: ключевые слова вводились с помощью одиночных нажатий клавиш; каждое из возможных ключевых слов было сопоставлено с клавишей на клавиатуре, при нажатии жетон помещался в память, а все ключевое слово распечатывалось на экране. Это облегчило ввод кода и одновременно упростило анализатор .
Исходная версия ZX80 поддерживала только целочисленную математику, что частично компенсировало некоторые конструктивные замечания по экономии памяти, которые отрицательно влияли на производительность. Когда система была перенесена на ZX81 полная реализация с плавающей запятой в 1981 году, была добавлена . Эта версия была очень медленной и входила в число самых медленных BASICов на рынке в то время, но, учитывая ограниченные возможности машины, это не вызывало серьезного беспокойства.
Производительность стала более серьезной проблемой с выпуском ZX Spectrum в 1983 году, который работал слишком медленно, чтобы в полной мере использовать новые функции машины. Это привело к созданию совершенно нового BASIC для следующего Sinclair QL , а также ряда сторонних BASIC для Spectrum и его различных клонов. Первоначальная версия продолжала модифицироваться и портироваться в постсинклеровскую эпоху.
История
[ редактировать ]Клайв Синклер впервые встретился с Джоном Грантом, владельцем Nine Tiles, в апреле 1979 года, чтобы обсудить BASIC для новой компьютерной концепции Синклера. [2] Синклер был вдохновлен на создание новой машины после того, как увидел, как его сын наслаждается TRS-80 , но цена этой машины в 500 фунтов стерлингов оказалась серьезным ограничением ее популярности. Ему нужен был новый комплект, который расширил бы их предыдущий MK14 и имел встроенный BASIC по целевой цене 79,95 фунтов стерлингов. Чтобы соответствовать этой цене, машина будет поставляться только с 1 КБ ОЗУ и 4 КБ ПЗУ. Грант предложил вместо этого использовать язык Форт , но бюджет не позволял этого. Грант написал интерпретатор BASIC в период с июня по июль 1979 года, но первоначально код имел размер 5 КБ, и следующий месяц он потратил на его сокращение. Первоначально это была неполная реализация Американского национального института стандартов (ANSI) стандарта Minimal BASIC 1978 года только с целочисленной арифметикой, получившего название 4K BASIC . [3]
Еще до того, как ZX80 был представлен в феврале 1980 года, постоянное ценовое давление в отрасли позволяло еще больше снизить сложность и стоимость и без того недорогой конструкции. В частности, многие отдельные схемы в ZX80 были перереализованы в единой незафиксированной логической матрице от Ferranti , что позволило снизить цену всего до 49,95 фунтов стерлингов при увеличении размера ПЗУ до 8 КБ. Эта работа была поручена Стиву Викерсу , который присоединился к Nine Tiles в январе 1980 года. Пока Грант работал над интерфейсом кода с аппаратным обеспечением, Викерс использовал большее пространство для введения арифметики с плавающей запятой и набора триггерных функций, которые ожидались от любого BASIC. с той эпохи, производя 8K BASIC . [4] Первоначальная версия не поддерживала принтер ZX и содержала ошибку в функции извлечения квадратного корня . Nine Tiles предоставила новую версию для решения этих проблем, но Синклер не спешил включать новую версию в ПЗУ. Новые ПЗУ в конечном итоге были предложены и владельцам более ранних ZX80. [5]
Когда Синклер проиграл конкурс на создание компьютера BBC , он приступил к реализации планов по созданию недорогой цветной машины, которая в апреле 1982 года появилась как ZX Spectrum . Объем ПЗУ снова будет увеличен, на этот раз до 16 КБ. В соответствии со своей философией создания систем с наименьшими затратами, Синклер хотел внести абсолютный минимум изменений в существующий 8K BASIC. Хотя Nine Tiles считали, что для новой машины потребуется что-то гораздо лучшее, график не позволял этого, и было создано еще одно расширение исходного кода. Поскольку объем оперативной памяти также был увеличен до 48 КБ, эта версия была известна как 48K BASIC и, в конечном итоге, 48 BASIC с появлением ZX Spectrum 128, когда Spectrum 16 КБ больше не продавался, а большинство существующих в использовании было увеличен до 48 КБ. [6] [7] Новая версия была доступна ближе к концу 1981 года, но она была «удручающе медленной» и «улиточной». Кроме того, поскольку до конца года прототипов не было, отсутствовала поддержка новой линейки периферийных устройств, которую планировал Синклер. [8]
В феврале 1982 года у Nine Tiles начались разногласия с Синклером по поводу задолженности по гонорарам за различные руководства, выпущенные Nine Tiles. Примерно в то же время Викерс и его коллега из Синклера Ричард Альтвассер покинули свои компании, чтобы начать проект Jupiter Ace . [9] Когда Spectrum был запущен, ПЗУ еще не было завершено, и хотя Nine Tiles продолжали работать над ним до апреля 1982 года, к этому моменту было продано уже 75 000 Spectrums, и проект был отменен. Недостающая функциональность позже была добавлена дополнительным кодом в интерфейсе ZX 1 . После того, как Nine Tiles и Sinclair пошли своим путем, было создано несколько новых версий 48 BASIC.
В 1983 году, в рамках вывода Spectrum на рынок США как TS2068, Timex модифицировала его как T/S 2000 BASIC . Новая версия не могла запускать многие программы Spectrum из-за перемещения памяти функций машины. Похожая, но несколько более совместимая версия была представлена как часть испанского Spectrum 128 1985 года, 128 BASIC . [7]
Amstrad приобрела Sinclair Research в 1986 году. Поскольку Sinclair никогда не владела авторскими правами на этот язык, Amstrad пришлось заключить новую лицензию с Nine Tiles. В этот период также появилось несколько других версий, поскольку были представлены различные расширения и клоны Spectrum. К ним относятся +3 BASIC , BASIC64 и Timex Extended Basic . [7] [6]
По состоянию на 2015 год существуют интерпретаторы для современных операционных систем . [10] и более старые системы, [11] которые позволяют легко использовать Sinclair Basic.
Описание
[ редактировать ]Редактирование программы
[ редактировать ]Как и большинство BASIC для домашнего компьютера, Sinclair BASIC основан на своем линейном редакторе . Когда машина загружается, она запускает BASIC и отображает инверсное видео «K» внизу экрана, обозначающее точку входа. Когда введена строка и NEW LINE нажата клавиша, она либо запускается немедленно, если у нее нет префикса номера строки , либо очищает экран и выполняет эквивалент LIST
команду, помещая курсор «>» после номера строки в последней введенной строке.
В отличие от большинства машин той эпохи, редактор не позволяет редактировать произвольную форму в любой точке экрана. Вместо этого, когда пользователь нажимает EDIT, текущая строка кода копируется обратно в нижнюю часть экрана. Пользователь может перемещаться по этой строке по горизонтали с помощью клавиш курсора и фиксировать свои изменения, нажав NEW LINE снова. Напротив, на таких машинах, как Commodore 64 или 8-битные компьютеры Atari , клавиши «вверх» и «вниз» можно использовать для перемещения между строками программы и редактирования их на месте.
Наиболее примечательной особенностью редактора является то, что ключевые слова вводятся с помощью одиночных нажатий клавиш. Например, на ZX81 P клавиша на клавиатуре вызовет все ключевое слово PRINT
для ввода в текущую строку редактирования. После ввода ключевого слова курсор изменится на букву «L», указывая, что последующая информация будет интерпретироваться как обычный текст. Например, нажав P снова в этот момент нужно ввести одну букву «P».
Ключам обычно присваивались два отдельных ключевых слова — одно над ним и одно под ним. Нажатие клавиши в режиме «K» приведет к вводу ключевого слова над клавишей, например PRINT
для P. Если система находилась в режиме «L», можно было вернуться в режим «K», нажав клавишу Shift — системы изначально не поддерживали строчный текст, поэтому в противном случае сдвиг не требовался. Ключевые слова под клавишами требовали второго нажатия клавиши, ⇧ Shift+ NEW LINE, который переводил редактор в «функциональный режим», изменяя курсор на «F». Ввод общего кода часто приводил к значительному количеству нажатий клавиш.
Преимущество системы состоит в том, что она представляет все многосимвольные ключевые слова в виде одного символа в памяти, что было значительной экономией на первых машинах, поставлявшихся всего с 1 КБ ОЗУ. Это односимвольное представление включало в себя многосимвольные элементы, такие как <>
. Это имеет дополнительные преимущества, заключающиеся в упрощении среды выполнения, поскольку позволяет сразу определить, является ли символ в исходном коде ключевым словом или текстом, а также означает, что ключевые слова никогда не вводятся напрямую, а это означает, что можно, например, иметь переменную с именем «ПЕЧАТЬ», поскольку система может определить, что это не то же самое, что ключевое слово.
По мере развития систем и добавления новых ключевых слов использовать систему ввода становилось все сложнее. 48 BASIC в Spectrum требовал, чтобы каждый ключ содержал до четырех ключевых слов. Ввод ключевых слов был трудоемким процессом поиска соответствующей клавиши относительно небольшим шрифтом на клавиатуре, а затем правильного ввода нескольких нажатий клавиш, необходимых для правильного ввода. Например, вводя BEEP
требуется один для ввода CAPS SHIFT+ SYMBOL SHIFT для доступа к расширенному режиму (более поздние модели включают отдельный EXTENDED MODE ключ), сохраняя SYMBOL SHIFT удерживая нажатой, а затем и нажав Z. Чтобы упростить сложную запись на Спектруме, ключевые слова были выделены цветом для обозначения требуемого режима: [12]
- Белый : только ключ
- Красный на самом ключе: SYMBOL SHIFT плюс ключ
- Зеленый над клавишей: EXTENDED MODE за которым следует ключ
- Красный под клавишей: EXTENDED MODE с последующим SYMBOL SHIFT плюс ключ
Эта концепция себя исчерпала, и более поздние машины, работающие под управлением 128 BASIC (ZX Spectrum 128, +2, +3, +2A и +2B), имели более традиционный редактор, в котором пользователь вводил ключевое слово отдельными символами, аналогично другие домашние компьютеры той эпохи. Для этого потребовался новый токенизатор для преобразования строки в аналогичный внутренний формат.
Полученное в результате хранилище программы в памяти в остальном было похоже на Microsoft BASIC , в котором только ключевые слова представлены как токены, а неключевые слова — такие как строковые и числовые константы и имена переменных — остаются в исходном введенном формате. Однако этот введенный формат был не ASCII , а внутренним кодом символов, который содержит как печатные символы, так и токены ключевых слов. Хотя части таблицы, например, заглавные буквы от A до Z, расположены в том же порядке, что и в ASCII, их символы соответствуют разным числовым значениям, т. е. смещение их кодовых точек от нуля отличается от смещения ASCII, равного 65. Другое символы, такие как знаки препинания, возможно, были перемещены еще больше. Набор символов ZX Spectrum является наиболее ярким примером такого кода символов. Соответствующие компьютеры, работающие под управлением Sinclair BASIC, использовали аналогичные варианты, например наборы символов ZX80 или ZX81 . Все эти разные, но связанные наборы символов включали токены Sinclair BASIC.
Типы данных
[ редактировать ]Одной из необычных особенностей Sinclair BASIC является способ хранения переменных в памяти. Обычно интерпретаторы используют записи фиксированного размера для хранения данных, что упрощает сканирование таблицы переменных. Из-за чрезвычайно ограниченной памяти серии ZX нужно было избегать ненужной траты места, и это привело к использованию формата переменной длины. Типы данных включали числа, хранящиеся в 5-байтовых значениях, строки длиной, а затем символы, а также массивы обоих этих типов. Данные хранились в самой таблице, что контрастировало с большинством BASICов той эпохи, где строки и элементы массива хранились в отдельной куче .
Первый байт записи переменной всегда содержал тип в первых трех битах и первый символ имени в следующих пяти битах. Как и в большинстве микрокомпьютерных диалектов, A
, A$
, A()
и A$()
все были разными переменными и могли хранить разные значения. Большинство переменных могут иметь только односимвольное имя; исключением являются числовые переменные (не массивы), где альтернативный формат содержал первый символ имени в тех же пяти битах, но затем следовали дополнительные символы, заканчивающиеся единицей с набором старших битов. Длинные имена переменных не зависели от пробелов и нечувствительны к регистру в более поздних версиях, поэтому LET Number Of Apples = 5
то же самое, что LET numberofapples = 5
относятся к одной и той же переменной.
Недостатком этого подхода является то, что сканирование таблицы для поиска значения ссылки на переменную является более сложным. Помимо проверки соответствия имени с использованием подмножества первого байта, если запись не та, которую ищут, необходимо прочитать тип из трех старших битов, а затем из следующего местоположения переменной в памяти. рассчитывается с использованием типа. Например, если программа встречает переменную «A» и таблица начинается с записи «B$», она не может сопоставить A с B, затем считывает тип и видит, что это строка, а затем должна прочитать следующий байт длины и пропустите это количество байтов вперед, чтобы найти следующую запись в таблице. Чтобы сделать это несколько проще, массивы также сохраняют двухбайтовую длину, поэтому всю структуру можно было легче пропустить.
Уникальной особенностью был «короткий плавающий» или целочисленный тип. Любая числовая переменная могла хранить любой тип, само хранилище не менялось и в любом случае использовало 5 байт. Целые числа обозначались путем установки байта экспоненты на ноль, а значения с плавающей запятой сохранялись с экспонентой формата превышения 128 . Это означало, что он не мог хранить ноль как число с плавающей запятой и терял одну возможную величину показателя степени. Он также не использовал меньше памяти, поскольку значения по-прежнему находились в памяти по 5 байт. Преимущество этого формата — производительность; математическая библиотека включала тесты на поиск нулевого показателя степени, и если бы он был замечен, она не пыталась бы выполнять различные операции с оставшимися 3 байтами при определенных условиях.
Подробности ключевого слова
[ редактировать ]В ZX81 8K BASIC использовались более короткие формы. GOTO
, GOSUB
, CONT
и RAND
, тогда как Spectrum 48 BASIC использовал более длинные формы GO TO
, GO SUB
, CONTINUE
и RANDOMIZE
. ZX80 4K BASIC также использовал эти более длинные формы, но отличался использованием написания RANDOMISE
. ZX81 8K BASIC был единственной версией, которую можно было использовать. FAST
, SCROLL
, SLOW
и UNPLOT
. ZX80 4K BASIC имел эксклюзивную функцию TL$()
; это было эквивалентно строковому оператору (2 TO )
в более поздних версиях.
Уникальные кодовые точки назначаются в наборе символов ZX80 , наборе символов ZX81 и наборе символов ZX Spectrum для каждого ключевого слова или многосимвольного оператора, т.е. <=
, >=
, <>
, ""
(токенизировано только на ZX81), **
(заменено на ↑
на Спектре). Они расширяются путем ссылки на таблицу токенов в ПЗУ. Таким образом, ключевое слово использует только один байт памяти, что является значительной экономией по сравнению с традиционным побуквенным хранением. Это также означало, что интерпретатор BASIC мог быстро определить любую команду или функцию, оценив один байт, и что ключевые слова не обязательно должны быть зарезервированными словами, как в других диалектах BASIC или других языках программирования, например, разрешено определять переменную с именем PRINT
и выведите его значение с помощью PRINT PRINT
. Это также связано с синтаксическим требованием, согласно которому каждая строка начинается с ключевого слова команды, а нажатие одной клавиши для этой команды в начале строки переводит редактор из командного режима в буквенный режим. Таким образом, присвоение переменных требует LET
(т.е. LET a=1
не только a=1
). Эта практика также отличается от других диалектов BASIC. Кроме того, это означало, что, в отличие от других диалектов BASIC, переводчику не требовались круглые скобки для обозначения функций; SIN x
было достаточно, нет SIN(x)
необходимо (хотя последнее было разрешено). В 4K BASIC ROM ZX80 был небольшой список исключений: функции CHR$()
, STR$()
, TL$()
, PEEK()
, CODE()
, RND()
, USR()
и ABS()
не имело однобайтовых токенов, но вводилось побуквенно и требовало круглых скобок. Они были указаны как ВСТРОЕННЫЕ ФУНКЦИИ на этикетке над клавиатурой справа. [13]
128 BASIC , присутствующий в ZX Spectrum 128, +2, +3, +2A и +2B, хранил ключевые слова внутри себя в однобайтовых кодовых точках, но использовал обычную систему побуквенного ввода BASIC. Также были представлены две новые команды:
PLAY
моделей 128k. General Instrument AY-3-8910 , который управлял музыкальным чипомSPECTRUM
, который переключил Spectrum 128k в режим совместимости со Spectrum 48k.
Оригинальный испанский ZX Spectrum 128 включал четыре дополнительных команды редактора BASIC на испанском языке: [14] [15] один из которых был недокументирован:
EDITAR
(чтобы отредактировать номер строки или вызвать полноэкранный редактор строк)NUMERO
(для перенумерации строк программы)BORRAR
(для удаления строк программы)ANCHO
(чтобы установить ширину столбца устройства RS-232 , но недокументировано, поскольку код был сломан)
В отличие от LEFT$()
, MID$()
и RIGHT$()
функции, используемые в вездесущих диалектах Microsoft BASIC для домашних компьютеров, доступ к частям строк в Sinclair BASIC осуществляется по числовому диапазону. Например, a$(5 TO 10)
дает подстроку, начинающуюся с 5-го и заканчивающуюся 10-м символом переменной a$
. Таким образом, можно заменить LEFT$()
и RIGHT$()
команды, просто опуская левую или правую позицию массива соответственно; например a$( TO 5)
эквивалентно LEFT$(a$,5)
. Дальше, a$(5)
одного достаточно для замены MID$(a$,5,1)
.
Синтаксис
[ редактировать ]Ключевые слова
[ редактировать ]На 16K/48K ZX Spectrum ( 48 BASIC) в Sinclair BASIC имеется 88 ключевых слов, обозначающих команды (из них 50), функции и логические операторы (31), а также другие ключевые слова (16, в том числе 9, которые также являются командами). или функции):
Ключевое слово | Параметры [примечание 1] | Введено с помощью [примечание 2] | Тип | Краткое содержание |
---|---|---|---|---|
ABS | number | EXTENDED MODE затем G | Функция | Возвращает значение абсолютное number [16] |
ACS | number | EXTENDED MODE затем SYMBOL SHIFT+ W | Функция | Возвращает арккосинус number [17] |
AND | SYMBOL SHIFT+ Y | Логический оператор | Возвращает true, если оба условия по обе стороны от AND ключевое слово истинно, иначе возвращает ложь [примечание 3] [18] | |
ASN | number | EXTENDED MODE затем SYMBOL SHIFT+ Q | Функция | Возвращает арксинус number [19] |
AT | line, column; | SYMBOL SHIFT+ I | Другой | Используется в PRINT оператор печати в указанной строке и столбце; [20] например, PRINT AT 5,10;"*" ставит звездочку в 10 столбце строки 5. |
ATN | number | EXTENDED MODE затем SYMBOL SHIFT+ E | Функция | Возвращает арктангенс number [17] |
ATTR | (line, column) | EXTENDED MODE затем SYMBOL SHIFT+ L | Функция | Возвращает байт , содержащий информацию о цветах текстовой ячейки на экране, соответствующих заданному line и column ;обратите внимание, что, в отличие от большинства ключевых слов Sinclair BASIC, круглые скобки обязательны; первые три бита указывают цвет чернил (переднего плана), четвертый, пятый и шестой биты — цвет бумаги (фона), седьмой бит — насколько яркие цвета или нет, а восемь — мигают ли они. [21] |
BEEP | duration, pitch | EXTENDED MODE затем SYMBOL SHIFT+ Z | Команда | Производит звук из динамика компьютера; duration в секундах, высота звука в полутонах выше (положительное значение) или ниже (отрицательное значение) средней C [22] |
BIN | number | EXTENDED MODE затем B | Другой | Указывает number находится в двоичной записи [23] |
BORDER | number | B | Команда | Устанавливает границу экрана в цвет, указанный параметром number [примечание 4] [24] |
BRIGHT | number | EXTENDED MODE затем SYMBOL SHIFT+ B | Команда/другое | Делает все последующие цвета ярче, если number равен 1 или его обычный оттенок, если 0 [примечание 5] [25] |
CAT | number | EXTENDED MODE затем SYMBOL SHIFT+ 9 | Команда | Отображает содержимое ZX Microdrive, указанное number [примечание 6] [26] |
CHR$ | number | EXTENDED MODE затем U | Функция | Возвращает символ, соответствующий десятичной дроби number компьютера в наборе символов [27] |
CIRCLE | x, y, r | EXTENDED MODE затем SYMBOL SHIFT+ H | Команда | Рисует круг с центром в координатах ( x , y ) и радиус r [28] |
CLEAR | address | X | Команда | Очищает экран, [29] все переменные и GO SUB куча, [30] и опционально устанавливает максимальный адрес ОЗУ, который будет использоваться BASIC [31] |
CLOSE # | number | EXTENDED MODE затем SYMBOL SHIFT+ 5 | Команда | Закрывает указанный номер потока для доступа [примечание 6] |
CLS | V | Команда | Удаляет весь текст и графику с экрана. [29] | |
CODE | string | EXTENDED MODE затем I | Функция/другое | Возвращает число, соответствующее первому символу в string компьютера в наборе символов ; [27] также используется для сохранения произвольных фрагментов памяти на ленту, диск и т. д. и загрузки их обратно — см. LOAD , SAVE и VERIFY для подробностей |
CONTINUE | C | Команда | Перезапускает программу после ее остановки из-за ошибки или нажатия пользователем кнопки CAPS SHIFT+ SPACE или BREAK ключи [32] | |
COPY | Z | Команда | Отправляет отображаемый в данный момент экран на принтер [33] | |
COS | number | EXTENDED MODE затем W | Функция | Возвращает косинус number [34] |
DATA | comma-separated values | EXTENDED MODE затем D | Команда/другое | Предоставляет числа и/или строки для использования с READ команда [35] и позволяет сохранять содержимое массива на ленту при использовании с SAVE команда [36] (как SAVE filename DATA array name() ) |
DEF FN | name(variable) = operation | EXTENDED MODE затем 1 | Команда | Определяет пользовательскую функцию, которую можно использовать с FN команда; определения функций должны иметь вид f(x)=operations , например f(x)=x*2 и имя функции не может состоять более чем из одной буквы плюс символ $, если функция возвращает строку [37] |
DIM | variable(dimensions) | D | Команда | Объявляет массив с указанным dimensions , который может быть многомерным (например, DIM a(10,10) ; при использовании со строками последнее измерение указывает длину каждой строки (таким образом, DIM a$(2,5) представляет собой массив из двух строк длиной по пять символов каждая, и DIM b$(5) это одна строка из пяти символов) [38] |
DRAW | x, y [, r] | W | Команда | Рисует линию в текущем INK цвет по координатам ( x , y ) из координат, использованных предыдущим PLOT или DRAW команда; если опционально r поставляется, он указывает радиус сегмента круга, который нужно нарисовать, в радианах [39] |
ERASE | drive;"filename" | EXTENDED MODE затем SYMBOL SHIFT+ 7 | Команда | Удаляет указанный файл с ZX Microdrive. [примечание 6] [40] |
EXP | number | EXTENDED MODE затем X | Функция | Возвращает e в степень number [41] |
FLASH | number | EXTENDED MODE затем SYMBOL SHIFT+ V | Команда/другое | Заставляет весь следующий текст чередовать передний план ( INK ) и фон ( PAPER ) цвета [примечание 5] |
FN | function(value) | EXTENDED MODE затем SYMBOL SHIFT+ 2 | Функция | Называет function определено ранее в программе с помощью DEF FN [37] |
FORMAT | drive;"name" | EXTENDED MODE затем SYMBOL SHIFT+ 0 | Команда | Форматирует картридж в указанном Microdrive и присваивает ему идентификатор. name [примечание 6] [42] |
FOR | variable = start TO end | F | Команда | Запускает FOR - NEXT петля; [43] имя переменной может состоять только из одного символа [44] |
GO SUB | number | H | Команда | Заставляет программу перейти на строку BASIC, указанную number ; когда программа встречает команду RETURN , он вернется к оператору после GO SUB [45] |
GO TO | number | G | Команда | Заставляет программу перейти на строку BASIC, указанную number |
IF | condition THEN | U | Команда | Оценивает condition , и если true, выполняет оператор, следующий за ключевым словом THEN это должно идти после условия, [46] например IF a=1 THEN LET b=2 [примечание 7] |
IN | address | EXTENDED MODE затем SYMBOL SHIFT+ I | Функция | Возвращает байт , прочитанный из аппаратного порта ввода/вывода, соответствующего address [47] |
INK | number | EXTENDED MODE затем SYMBOL SHIFT+ X | Команда/другое | Устанавливает цвет переднего плана для текста и графики. [примечание 4] [примечание 5] [48] |
INKEY$ |
| EXTENDED MODE затем SYMBOL SHIFT+ Z | Функция | Возвращает строку, представляющую клавишу, нажатую на клавиатуре в момент вызова функции, или пустую строку, если ее нет. [49] но не ждет нажатия клавиши |
INPUT | [prompt,] variable | I | Команда | Останавливает выполнение программы до тех пор, пока пользователь не введет что-нибудь на клавиатуре и не нажмет кнопку Enter ключ, затем сохраняет введенное значение в указанном variable ; если опционально prompt поставляется, это будет показано на экране [50] |
INT | number | EXTENDED MODE затем R | Функция | Возвращает целое значение number , округляя до ближайшего целого числа [16] (таким образом, INT -1.1 возвращает −2, а не −1) |
INVERSE | number | EXTENDED MODE затем SYMBOL SHIFT+ M | Команда/другое | Меняет цвета всего следующего текста, если number равно 1, поэтому он использует текущий цвет чернил для фона и текущий цвет бумаги для текста или возвращает их в нормальное состояние, если number 0 [примечание 5] [51] |
LEN | string | EXTENDED MODE затем K | Функция | Возвращает количество символов (байтов) в string [52] |
LET | variable=value | L | Команда | Назначает value к именованной переменной [53] |
LINE |
| EXTENDED MODE затем SYMBOL SHIFT+ 3 | Другой | |
LIST | [number] | K | Команда | Выводит текущую программу BASIC на экран; если опционально number предоставляется, он пропускает все строки с меньшим номером [55] |
LLIST | [number] | EXTENDED MODE затем SYMBOL SHIFT+ V | Команда | Как LIST за исключением того, что список выводится на принтер [33] |
LN | number | EXTENDED MODE затем SYMBOL SHIFT+ Z | Функция | Возвращает натуральный логарифм number [56] |
LOAD | "[filename]" [CODE [address[, length]]| DATA variable()] | J | Команда | Загружает программу или данные в ОЗУ с ленты, ZX Microdrive , диска и т. д., удаляя любую существующую программу и переменные BASIC; [50] если пустая строка ( "" ), при этом загружается первая найденная программа, в противном случае на ленте будет выполняться поиск программы, указанной в строке; если опционально CODE предоставлено, загрузит программу в память по тому адресу, который она имела при сохранении, или по указанному address ( length предназначен в целях безопасности, чтобы попытаться загрузить нужную программу в случае, если на ленте их несколько с правильным именем, но разной длины); [57] если опционально DATA variable() предоставлен, загрузит данные с ленты в массив с именем variable() [36] |
LPRINT | text | EXTENDED MODE затем SYMBOL SHIFT+ C | Команда | Как PRINT за исключением того, что вывод отправляется на принтер [33] |
MERGE | "[filename]" | EXTENDED MODE затем SYMBOL SHIFT+ T | Команда | Как LOAD , за исключением того, что текущая программа и переменные не удаляются; если номер строки существует в обоих, номер вновь загруженной программы перезаписывает существующий. С использованием MERGE предотвращает программу, сохраненную с помощью LINE из автоматического запуска после загрузки [58] |
MOVE | stream1 TO stream2 | EXTENDED MODE затем SYMBOL SHIFT+ 6 | Команда | Перемещает данные из одного потока (клавиатуры, экрана, файла, принтера, сети и т. д.) в другой. [примечание 6] [59] |
NEW | A | Команда | Удаляет текущую программу BASIC и все переменные. [50] | |
NEXT | variable | N | Команда | Закрывает FOR - NEXT петля; переменная должна совпадать с переменной соответствующего FOR команда [60] - "пустой" NEXT s для ссылки на непосредственно предшествующий FOR в программе не допускаются |
NOT | condition | SYMBOL SHIFT+ S | Логический оператор | Возвращает истину, если condition ложно, иначе возвращает ложь [примечание 3] [18] |
OPEN # | stream | EXTENDED MODE затем SYMBOL SHIFT+ 4 | Команда | Открывает поток для чтения и/или записи в [примечание 6] [61] |
OR | SYMBOL SHIFT+ Y | Логический оператор | Возвращает true, если любое из условий по обе стороны от OR ключевое слово истинно, иначе возвращает ложь [примечание 3] [18] | |
OUT | address, value | EXTENDED MODE затем SYMBOL SHIFT+ O | Команда | Отправляет value ( байт ) в аппаратное обеспечение [отображенный в памяти ввод-вывод | порт ввода/вывода], соответствующий address [47] |
OVER | number | EXTENDED MODE затем SYMBOL SHIFT+ N | Команда/другое | С помощью операции XOR будет наложен следующий текст на то, что уже есть на экране, если number равно 1, вместо стирания или стирания, если number 0 [примечание 5] [51] |
PAPER | number | EXTENDED MODE затем SYMBOL SHIFT+ C | Команда/другое | Устанавливает цвет фона для текста и графики. [примечание 4] [примечание 5] [48] |
PAUSE | delay | M | Команда | Останавливает выполнение программы на указанную задержку, в секунды в Европе или в Северной Америке [62] (таким образом, PAUSE 50 останавливается на одну секунду в Европе) |
PEEK | address | EXTENDED MODE затем O | Функция | Возвращает байт, представляющий содержимое ячейки памяти, на которую указывает address [63] |
PI |
| EXTENDED MODE затем M | Функция | Возвращает значение числа Пи [56] |
PLOT | x, y | Q | Команда | Рисует пиксель в текущем INK цвет на экране по координатам ( x , y ) [64] |
POINT | (x,y) | EXTENDED MODE затем SYMBOL SHIFT+ 8 | Функция | Возвращает 1, если пиксель указывает на графические координаты ( x , y ) в данный момент находится в цвете рукописного ввода (переднего плана), иначе возвращается 0 [28] |
POKE | address, value | O | Команда | Устанавливает содержимое address в оперативной памяти, чтобы value [65] |
PRINT | [AT x,y;] text | P | Команда | Принты text (которые должны представлять собой одну или несколько строк или чисел, разделенных точкой с запятой) на экран. [53] Если используется с #0 или #1, он печатается в двух нижних (входных) строках экрана; если использовать с AT , он печатает по указанным координатам текста; в противном случае он печатает либо сразу после вывода любого предыдущего PRINT (если предыдущий оператор заканчивался точкой с запятой) или в первом столбце строки ниже предыдущего PRINT выход, [20] по умолчанию 0,0. |
RANDOMIZE | [number] | T | Команда | Инициализирует генератор случайных чисел ; если используется без number (или с 0), он делает это на основе внутренних часов компьютера, в противном случае он использует number предоставлено, которое должно находиться в диапазоне [1,65535] [66] |
READ | variable | EXTENDED MODE затем A | Команда | Принимает значение из DATA оператор и сохраняет его в указанном variable : первый раз READ используется, он получает первое значение после первого DATA , во второй раз он получает следующий и так далее. [35] |
REM | текст | E | Команда | Начинает комментарий в исходном коде, что означает, что все после REM оператор игнорируется до конца строки [50] — обратите внимание, что сюда входит все, что идет после двоеточия, которое обычно начинает новый сегмент: 10 REM Nothing to see here : PRINT "Unprintable" не будет производить никакого вывода, например |
RESTORE | [number] | EXTENDED MODE затем S | Команда | Сбрасывает, где READ команды ищут значения в DATA операторы: если они используются без номера, следующий READ буду использовать первый DATA в программе с номером будет использоваться первый DATA на или после строки, номер которой указан [67] |
RETURN | Y | Команда | Возвращает выполнение первому оператору, следующему за последним. GO SUB команда, которая была выполнена [45] | |
RND |
| EXTENDED MODE затем T | Функция | Возвращает псевдослучайное число с восемью значащими цифрами в диапазоне [0,1) [68] |
RUN | [number] | R | Команда | Запускает текущую программу BASIC с первой строки, если нет. number указан, иначе из строки с этим номером (или первой после, если он не существует) [69] |
SAVE | "filename" [DATA variable() | LINE number] | S | Команда | Сохраняет текущую программу BASIC на ленту или другое запоминающее устройство с помощью filename указанный; если опционально LINE за которым следует номер строки, то программа запустится автоматически с указанного номера строки, когда она будет LOAD Эд вернулся; с дополнительным DATA , команда сохраняет содержимое массива, указанного в переменной, вместо текущей программы BASIC. [36] |
SCREEN$ | [(line, column)] | EXTENDED MODE затем SYMBOL SHIFT+ | Функция/другое | Как функция идентифицирует символ в указанной строке и столбце на экране. [20] Используется после имени файла в LOAD или SAVE команда указывает, что содержимое памяти дисплея должно быть загружено или сохранено; по сути это делает его ярлыком для CODE 16384,6912 [примечание 8] но не работает с VERIFY поскольку содержимое памяти дисплея будет другим к моменту, когда команда считывает сохраненные данные; [70] |
SGN | number | EXTENDED MODE затем F | Функция | Возвращает 1, если number положительное значение, 0, если оно равно 0, и -1, если оно отрицательное. [16] |
SIN | number | EXTENDED MODE затем Q | Функция | Возвращает синус number [34] |
STEP | number | SYMBOL SHIFT+ D | Другой | Указывает интервал, используемый FOR заявление, [44] например FOR n=2 TO 6 STEP 2 пропущу n=3 и n=5 в цикле |
STOP | SYMBOL SHIFT+ A | Команда | Завершает выполнение текущей программы с выходом в редактор BASIC; также может быть задано, когда компьютер ожидает ввода с помощью INPUT команда; [69] после остановки программы ее можно возобновить с помощью CONTINUE | |
SQR | number | EXTENDED MODE затем H | Функция | Возвращает квадратный корень из number [37] |
STR$ | number | EXTENDED MODE затем Y | Функция | Преобразует число в строку. |
TAB | column | EXTENDED MODE затем P | Другой | В PRINT оператор, гарантирует, что выводимый текст начинается в указанном столбце, при необходимости переносясь на следующую строку, но не более чем на одну строку [29] |
TAN | number | EXTENDED MODE затем E | Функция | Возвращает тангенс number [71] |
THEN | statement | SYMBOL SHIFT+ G | Другой | Следует условию в IF оператор, указывающий, что должно произойти, когда условие станет истинным [примечание 7] [46] |
TO |
| SYMBOL SHIFT+ F | Другой | Указывает диапазон от числа слева от TO по числу прав на него включительно; [72] при использовании с FOR оба числа должны быть указаны, а если они используются для разрезания строк, любое из них может быть опущено, чтобы указать начало или конец строки. |
USR | string or address | EXTENDED MODE затем L | Функция | При вызове с односимвольной строкой возвращается адрес памяти, по которому определен глиф для определяемого пользователем графического символа, соответствующего этому символу. [23] Если она вызывается с адресом, она начинает выполнение машинного кода по этому адресу (таким образом делая ее одной из немногих функций Sinclair BASIC, имеющих побочный эффект ) и возвращает содержимое Z80 BC пары регистров . [73] |
VAL | string | EXTENDED MODE затем J | Функция | Оценивает string как число и возвращает результат; [74] это может выполнять вычисления: VAL "1+2" возвращает 3, например, а также оценивает переменные и даже другие VAL заявления: LET a=1: VAL "a+VAL ""2""" [примечание 9] также возвращает 3 |
VAL$ | string | EXTENDED MODE затем SYMBOL SHIFT+ J | Функция | Похоже на: VAL но оценивает строку как строку [16] |
VERIFY | "[filename]" | EXTENDED MODE затем SYMBOL SHIFT+ R | Команда | Считывает программу или данные с ленты или другого хранилища, аналогично LOAD , но вместо загрузки в память сравнивает с программой или данными, которые уже находятся в памяти. Это предназначено для использования сразу после SAVE команда, чтобы убедиться, что программа или данные сохранены без повреждений. [75] |
Официальные версии
[ редактировать ]4К БАЗОВЫЙ
[ редактировать ]4K BASIC for ZX80 [76] (названный так из-за размещения в (ПЗУ) емкостью 4 КиБ постоянной памяти ), был разработан Джоном Грантом из Nine Tiles для ZX80. Он имеет только целочисленную арифметику.
- Системные команды:
NEW
RUN
LIST
LOAD
SAVE
- Управляющие заявления:
GOTO
IF
THEN
GOSUB
STOP
RETURN
FOR
TO
NEXT
CONTINUE
- Операторы ввода/вывода:
PRINT
INPUT
- Заявление о назначении:
LET
- Другие заявления:
CLEAR
CLS
DIM
REM
RANDOMIZE
POKE
- Функции:
ABS
CHR$
CODE
PEEK
RND
STR$
TL$
USR
8К БАЗОВЫЙ
[ редактировать ]8K BASIC — это ZX81 BASIC (также доступен в качестве обновления для ZX80). [5] с использованием арифметики с плавающей запятой ), обновленный Стивом Викерсом , названный так за проживание в ПЗУ размером 8 КиБ.
- Заявления:
PRINT
RAND
LET
CLEAR
RUN
LIST
GOTO
CONT
INPUT
NEW
REM
PRINT
STOP
BREAK
IF
STOP
FOR
NEXT
TO
STEP
SLOW
FAST
GOSUB
RETURN
SAVE
LOAD
CLS
SCROLL
PLOT
UNPLOT
PAUSE
LPRINT
LLIST
COPY
DIM
POKE
NEW
- Функции:
ABS
SGN
SIN
COS
TAN
ASN
ACS
ATN
LN
EXP
SQR
INT
PI
RND
FUNCTION
LEN
VALSTR$
NOT
CODE
CHR$
INKEY$
AT
TAB
INKEY$
PEEK
USR
48 БАЗОВЫЙ
[ редактировать ]48 BASIC — это BASIC для оригинального ZX Spectrum с оперативной памятью 16/48 КБ (и его клонов), с цветом и другими периферийными устройствами, добавленными Стивом Викерсом и Джоном Грантом. Он находится в ПЗУ объемом 16 КБ и стал называться 48 BASIC с появлением ZX Spectrum 128, когда Spectrum 16 КБ больше не продавался, а большинство существующих в использовании были обновлены до 48 КБ. [6]
128 БАЗОВЫЙ
[ редактировать ]128 BASIC — это BASIC для ZX Spectrum 128. [7] Он предлагает дополнительные команды и использует побуквенный ввод.
- Новые команды:
LOAD !
SAVE !
MERGE !
ERASE !
PLAY
SPECTRUM
+3 БАЗОВЫЙ
[ редактировать ]+3 BASIC — это BASIC с поддержкой дисков для ZX Spectrum +3 и +2A. [6]
- Новые команды:
FORMAT
COPY
Т/С 2000 БАЗОВЫЙ
[ редактировать ]T/S 2000 BASIC используется на Spectrum-совместимом Timex Sinclair 2068 (T/S 2068) и добавляет следующие шесть новых ключевых слов:
DELETE
удаляет диапазоны строк программы BASIC.FREE
— функция, которая определяет объем свободной оперативной памяти.PRINT FREE
покажет, сколько оперативной памяти свободно.ON ERR
— это функция обработки ошибок, чаще всего используемая какON ERR GO TO
илиON ERR CONT
.RESET
может использоваться для сброса поведенияON ERR
. Он также предназначался для сброса периферийных устройств.SOUND
управляет AY-3-8192 звуковым чипом .STICK
это функция, которая определяет положение внутреннего джойстика (Timex Sinclair 2090).
БЕЙСИК64
[ редактировать ]BASIC64 от португальской компании Timex — это расширение программного обеспечения . [77] чтобы обеспечить лучшее базовое программирование с графическими режимами 512×192 и двумя областями отображения, доступными только на компьютерах Timex Sinclair. Это расширение добавляет команды и выполняет полное перераспределение памяти, чтобы система не перезаписывала область расширенной памяти экрана. Существуют две версии из-за разных карт памяти — версия для TC 2048 и версия для T/S 2068 и TC 2068 .
PRINT #
печатает на определенный выходной канал.LIST #
перечисляет программу для определенного выходного канала.CLS*
очищает обе области отображения.INK*
устанавливает цвет чернил для обеих областей отображенияPAPER*
устанавливает цвет бумаги в обеих областях отображенияSCREEN$
выбирает режимы высокого/нормального разрешения.PLOT*
рисует пиксель и обновляет положение рисования.LINE
рисует линию из предыдущей позиции PLOT, поддерживая рисование дугиCIRCLE*
рисует круг или овал, в зависимости от режима экрана.
Timex расширенный базовый
[ редактировать ]Timex Extended Basic от португальской компании Timex используется на компьютере Timex 3256 , добавляя команды TEC - Timex Extended Commands, поддерживающие звуковой чип AY-3-8912, сеть RS-232 и графический режим высокого разрешения 512x192 пикселей. [78] [79]
- Команды RAM-диска:
LOAD!
SAVE!
CAT!
MERGE!
ERASE!
CLEAR!
- Команды RS-232:
FORMAT!
LPRINT
LLIST
- Команды AY-3-8912:
BEEP!
- Команды разрешения 512 x 192:
SCREEN$
DRAW!
PLOT!
CIRCLE!
Другие версии, расширения, производные и преемники
[ редактировать ]Интерпретаторы для семейства ZX Spectrum
[ редактировать ]Существует несколько интерпретаторов ZX Spectrum. [80]
- Бета-версия BASIC доктора Энди Райта изначально была расширением BASIC , но стала полноценным интерпретатором. [81]
- YS MegaBasic Майка Лимана. [80] [82]
- ZebraOS от Zebra Systems из Нью-Йорка, картриджная версия T/S 2000 BASIC, в которой использовался режим экрана 512×192. [83]
- ПЗУ Sea Change от Стива Викерса и Яна Логана, модифицированное Джеффом Уэрмутом, ПЗУ на замену улучшенному Sinclair BASIC. [84]
- Gosh Wonderful от Джеффа Уэрмута, заменяющее ПЗУ, которое исправляет ошибки и добавляет токенизатор, список потоков, команды удаления и перенумерации. [80] [85]
- OpenSE BASIC (ранее SE BASIC) от Эндрю Оуэна, заменяющее ПЗУ с исправлениями ошибок и множеством улучшений, включая ULAplus. [86] поддержка, опубликовано как открытый исходный код в 2011 г. [87] [88] [89]
Компиляторы для семейства ZX Spectrum
[ редактировать ]Существует несколько компиляторов ZX Spectrum . [80]
- HiSoft COLT Compiler (также известный как HiSoft COLT Integer Compiler) [90] [91]
- HiSoft BASIC (также известный как HiSoft BASIC Compiler), компилятор с поддержкой целых чисел и чисел с плавающей запятой. [92] [93]
- Лазерный компилятор [94] [95]
- Целочисленный компилятор Softek 'IS' [96] [97] (преемник Softek Integer Compiler [98] )
- Полный компилятор Softek 'FP' [99] [100]
- ZIP-компилятор [101] [102]
Производные и преемники для других компьютеров
[ редактировать ]- SuperBASIC , гораздо более продвинутый диалект BASIC, представленный в персональном компьютере Sinclair QL , имеющий некоторое сходство с более ранними версиями Sinclair BASIC. [103]
- SAM Basic , BASIC на SAM Coupé , обычно считается клоном ZX Spectrum. [104]
- ROMU6 от Сезара и Хуана Эрнандеса — MSX [80]
- Spectrum 48 от Whitby Computers — Commodore 64 [80]
- Sparky eSinclair BASIC от Ричарда Келша, операционная система, основанная на ZX Spectrum BASIC — Zilog eZ80 [105]
- Sinbas by Pavel Napravnik - DOS [80]
- Базовый [106] (и CheckBasic [107] ) Филиппа Кендалла — Unix
- БИНСИК [108] Адриан МакМенамин, повторная реализация в Groovy по образцу ZX81 BASIC - Java
- БАСин [109] Пол Данн, полная интегрированная среда разработки (IDE) Sinclair BASIC, основанная на эмуляторе ZX Spectrum. [80] - Окна
- СпецБАС [110] (также известная как SpecOS) Пола Данна, интегрированная среда разработки (IDE), предоставляющая расширенный расширенный набор Sinclair BASIC — Windows , Linux , Pandora и Raspberry Pi.
- ZX-Базовый [111] Обратно совместимый, но улучшенный компилятор программ Sinclair BASIC ZX Spectrum, написанный на Python , свободно доступный для Windows, Linux и Mac OS.
- ZX-Базикус [112] Хуан-Антонио Фернандес-Мадригал, синтезатор, анализатор, оптимизатор , интерпретатор и отладчик Sinclair BASIC 48K для ПК, который можно бесплатно загрузить для Linux и Windows.
См. также
[ редактировать ]- Список эмуляторов компьютерных систем § Sinclair ZX80
- Список эмуляторов компьютерных систем § Sinclair ZX81
- Список эмуляторов компьютерных систем § Sinclair ZX Spectrum и клоны
Примечания
[ редактировать ]- ^ Необязательные параметры заключены в [квадратные скобки]
- ^ Предполагается, что компьютер находится в режиме K (ключевое слово), который обычно находится в начале строки при вводе BASIC. На Spectrum 16K и 48K вход в расширенный режим осуществляется нажатием CAPS SHIFT и SYMBOL SHIFT одновременно, а не EXTENDED MODE ключ, который присутствует на Spectrum+ и более поздних моделях.
- ^ Перейти обратно: а б с «Ложь» в Sinclair BASIC соответствует 0 (нулю), все остальное соответствует «истине». Таким образом, функции, которые возвращают значения «истина» или «ложь», на самом деле возвращают 0 в случае «ложь» и 1 в случае «истина», в то время как
AND
обычно возвращает первое из условий, заданных как true, или 1, если числовые значения не были указаны. Например,6 AND 7
возвращает 6, аNOT 6=7
возвращает 1. - ^ Перейти обратно: а б с Доступные номера цветов:
1 2 3 4 5 6 7 0 синий красный пурпурный зеленый голубой желтый белый черный Во всех командах, связанных с цветом, цифра 8 может использоваться для обозначения «прозрачности».
INK
иPAPER
также можно установить значение 9 для «контрастности», то есть для автоматического размещения темного цвета на светлом фоне или наоборот. - ^ Перейти обратно: а б с д и ж
INK
,PAPER
,FLASH
,BRIGHT
,OVER
иINVERSE
установить атрибуты для вывода текста и графики на экран. Их можно использовать либо как команды для применения ко всем последующим выводам до тех пор, пока они не будут установлены снова, либо внутриPRINT
заявление, применяется только с этого момента и до конца заявления. - ^ Перейти обратно: а б с д и ж
CAT
,ERASE
,FORMAT
иMOVE
изначально были разработаны для использования с периферийными устройствами, но на момент запуска ZX Spectrum они не были полностью реализованы, поэтому их использование приводило к появлению сообщения об ошибке (Invalid Stream). Позже с помощью теневого ПЗУ ZX Interface 1 они использовались для ZX Microdrive . (Теневое ПЗУ было выгружено, когда интерпретатор BASIC обнаружил синтаксическую ошибку, поэтому большинство команд ZX Microdrive используют"*"
). - ^ Перейти обратно: а б В отличие от многих других диалектов BASIC, Sinclair Basic не включал в себя
ELSE
оператор в г.IF
–THEN
[–ELSE
] пункт. Обходным решением было бы использоватьIF
–THEN
–GO TO
вместо этого построить, минуя строки, которые были бы вELSE
пункт сGO TO
- ^ Память дисплея Spectrum начинается с адреса 16384 и имеет длину 6912 байт.
- ^ Строка внутри строки должна иметь двойные кавычки в Sinclair BASIC.
Ссылки
[ редактировать ]- ^ Гарфилд, Саймон (28 февраля 2010 г.). «Сэр Клайв Синклер: «Я вообще не пользуюсь компьютером» » . Хранитель . Проверено 23 мая 2011 г.
Он стремится отдать должное [...], не в последнюю очередь Nine Tiles, компании, создавшей базовое операционное программное обеспечение.
- ^ Адамсон и Кеннеди , с. 63.
- ^ Адамсон и Кеннеди 1986 , с. 64.
- ^ Адамсон и Кеннеди 1986 , с. 70.
- ^ Перейти обратно: а б «ZX80 — Обновление БАЗОВОГО ПЗУ 8K» . www.fruitcake.plus.com .
- ^ Перейти обратно: а б с д «World of Spectrum — Документация — ZX Spectrum +3 — Глава 7» . worldofspectrum.org .
- ^ Перейти обратно: а б с д «World of Spectrum — Документация — Руководство по ZX Spectrum 128, страница 6» . worldofspectrum.org .
- ^ Смит, Тони (23 апреля 2012 г.). «С 30-летием, Синклер ZX Spectrum» . Регистр .
- ^ Адамсон и Кеннеди 1986 , с. 88.
- ^ Данн, Пол (7 декабря 2022 г.), SpecBAS , дата обращения 12 декабря 2022 г.
- ^ «КСДб» . База данных сцен Commodore 64 . Проверено 12 декабря 2022 г.
- ^ Викерс 1983 , с. 7–8.
- ^ «Изображение ZX80» .
- ^ «Разборка ПЗУ Spectrum 128 — испанский Spectrum 128» . www.fruitcake.plus.com .
- ^ Синклер (1985). ZX Spectrum 128 Введение и руководство по эксплуатации . Sinclair Research Ltd и Investronica, SA с. 9.
- ^ Перейти обратно: а б с д Викерс 1983 , с. 59.
- ^ Перейти обратно: а б Викерс 1983 , с. 70.
- ^ Перейти обратно: а б с Викерс 1983 , с. 85.
- ^ Викерс 1983 , с. 69–70.
- ^ Перейти обратно: а б с д Викерс 1983 , с. 101.
- ^ Викерс 1983 , с. 116.
- ^ Викерс 1983 , с. 135.
- ^ Перейти обратно: а б Викерс 1983 , с. 93.
- ^ Викерс 1983 , с. 113.
- ^ Викерс 1983 , с. 110–111.
- ^ Cambridge Communication 1983 , с. 15.
- ^ Перейти обратно: а б Викерс 1983 , с. 91.
- ^ Перейти обратно: а б Викерс 1983 , с. 123.
- ^ Перейти обратно: а б с Викерс 1983 , с. 103.
- ^ «World of Spectrum — Документация — Руководство по ZX Spectrum — Глава 24» . worldofspectrum.org .
- ^ Викерс 1983 , с. 168.
- ^ Викерс 1983 , с. 19.
- ^ Перейти обратно: а б с Викерс 1983 , с. 151.
- ^ Перейти обратно: а б Викерс 1983 , с. 68.
- ^ Перейти обратно: а б Викерс 1983 , с. 41.
- ^ Перейти обратно: а б с Викерс 1983 , с. 142.
- ^ Перейти обратно: а б с Викерс 1983 , с. 60.
- ^ Викерс 1983 , с. 79–81.
- ^ Викерс 1983 , с. 11–123.
- ^ Cambridge Communication 1983 , с. 18.
- ^ Викерс 1983 , с. 66.
- ^ Cambridge Communication 1983 , с. 19.
- ^ Викерс 1983 , с. 31.
- ^ Перейти обратно: а б Викерс 1983 , с. 32.
- ^ Перейти обратно: а б Викерс 1983 , с. 37.
- ^ Перейти обратно: а б Викерс 1983 , с. 25.
- ^ Перейти обратно: а б Викерс 1983 , с. 159.
- ^ Перейти обратно: а б Викерс 1983 , с. 110.
- ^ Викерс 1983 , с. 131.
- ^ Перейти обратно: а б с д Викерс 1983 , с. 16.
- ^ Перейти обратно: а б Викерс 1983 , с. 112.
- ^ Викерс 1983 , с. 57.
- ^ Перейти обратно: а б Викерс 1983 , с. 13.
- ^ Викерс 1983 , с. 144.
- ^ Викерс 1983 , с. 15.
- ^ Перейти обратно: а б Викерс 1983 , с. 67.
- ^ Викерс 1983 , с. 142–143.
- ^ Викерс 1983 , с. 147.
- ^ Cambridge Communication 1983 , с. 39.
- ^ Викерс 1983 , с. 31–32.
- ^ Cambridge Communication 1983 , с. 22.
- ^ Викерс 1983 , с. 129.
- ^ Викерс 1983 , с. 130.
- ^ Викерс 1983 , с. 121.
- ^ Викерс 1983 , с. 163.
- ^ Викерс 1983 , с. 74.
- ^ Викерс 1983 , с. 42.
- ^ Викерс 1983 , с. 73.
- ^ Перейти обратно: а б Викерс 1983 , с. 14.
- ^ Викерс 1983 , с. 143.
- ^ Викерс 1983 , с. 69.
- ^ Викерс 1983 , с. 32, 51.
- ^ Викерс 1983 , с. 180.
- ^ Викерс 1983 .
- ^ Викерс 1983 , с. 141.
- ^ «Руководство пользователя Sinclair ZX80 4K Basic для ZX80» .
- ^ «Техническая информация Timex — Basic 64 для TC2048» . timex.comboios.info .
- ^ «Microset N.º46, май 1987 г.» (PDF) . loadzx.com .
- ^ «Компьютер Timex 3256, Timex Portugal» . k1.spdns.de .
- ^ Перейти обратно: а б с д и ж г час «Мир спектра — Sinclair BASIC — главная страница проекта Sinclair Extended Basic» . www.worldofspectrum.org . Архивировано из оригинала 13 октября 2002 года.
- ^ «Бета-версия Basic в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «YS MegaBasic в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «Zebra OS64 в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «История Sinclair BASIC — Sinclair Wiki» . sinclair.wiki.zxnet.co.uk .
- ^ «Неполная сборка ПЗУ спектра» . Архивировано из оригинала 1 сентября 2015 года.
- ^ «ЮЛАплюс» . сайты.google.com . Архивировано из оригинала 25 мая 2013 года . Проверено 21 марта 2016 г.
- ^ «Интерфейс ZX 2 — SE BASIC (картридж ПЗУ стороннего производителя)» . www.fruitcake.plus.com . Архивировано из оригинала 25 марта 2015 года . Проверено 23 марта 2016 г.
- ^ «ОпенСЕ БЕЙСИК» . СоурсФордж . 16 апреля 2013 г.
- ^ «OpenSE BASIC в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «Мир спектра — компилятор HiSoft COLT» . Мир Спектра .
- ^ «Компилятор HiSoft COLT в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «Мир Спектра — HiSoft BASIC» . Мир Спектра .
- ^ «HiSoft BASIC в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «Мир Спектра — Лазерный Компилятор» . Мир Спектра .
- ^ «Лазерный компилятор в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «Мир спектра — компилятор Softek IS BASIC» . Мир Спектра .
- ^ «Целочисленный компилятор в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «Мир спектра — целочисленный компилятор» . Мир Спектра .
- ^ «Мир спектра — полный компилятор Softek 'FP'» . Мир Спектра .
- ^ «Полный компилятор Softek 'FP' в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ «Мир Спектра — ZIP-компилятор» . Мир Спектра .
- ^ «ZIP-компилятор в Spectrum Computing — игры, программное и аппаратное обеспечение Sinclair ZX Spectrum» . Спектральные вычисления . Проверено 13 декабря 2022 г.
- ^ Берри, Стивен (1984). «Ключевые слова QL» . Архивировано из оригинала 22 февраля 2017 года . Проверено 27 июня 2023 г.
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка ) - ^ «Альбом для вырезок Сэма Купе: Сэм БЕЙСИК» . www.mono.org . Проверено 13 декабря 2022 г.
- ^ «Проект Sparky eZX BASIC» . rk-internet.com .
- ^ «Филип Кендалл — Базовый» . www.shadowmagic.org.uk .
- ^ «Филип Кендалл — CheckBasic» . www.shadowmagic.org.uk .
- ^ «Binsic — это не код инструкции Sinclair» . 25 июня 2012 г.
- ^ «ZX Spin и BASin — ULAplus» . сайты.google.com .
- ^ "ZXDunny/СпецБАС" . 5 июня 2021 г. – через GitHub.
- ^ «ZX-Basic: обратно совместимый, но улучшенный компилятор программ Sinclair BASIC» .
- ^ «ZX-Basicus: анализатор/синтезатор/оптимизатор/интерпретатор программ Sinclair BASIC для ZX Spectrum 48K» . jafma.net .
Библиография
[ редактировать ]- Адамсон, Ян; Кеннеди, Ричард (1986). Синклер и технология «восхода солнца» . Пингвин.
- Ардли, Нил (1984). Руководство пользователя Sinclair ZX Spectrum+ . Дорлинг Киндерсли совместно с Sinclair Research. ISBN 0-86318-080-9 .
- Викерс, Стивен (1982). Программирование Sinclair ZX Spectrum BASIC . Синклер Исследования.
- Викерс, Стивен (1983). Программирование Sinclair ZX Spectrum BASIC (2-е изд.). Синклер Исследования.
- Кембриджские коммуникации (1983). Sinclair ZX Spectrum Microdrive и интерфейс 1 руководство . Синклер Исследования.
Внешние ссылки
[ редактировать ]- Программирование Sinclair ZX Spectrum BASIC : оригинальное руководство Стивена Викерса 1982 года (упомянутое выше).
- Базовое программирование Sinclair ZX81. Архивировано 22 апреля 2007 г. в Wayback Machine : также Vickers.
- История Sinclair BASIC : Эндрю Оуэн
- Timex Computer World : Базовое руководство пользователя 64 для компьютера Timex 2048
- Грамматика Sinclair BASIC : спецификация грамматики LL(1) для анализа Sinclair BASIC 16/48K.