Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
Парадигма | Императив |
---|---|
Разработано | Джон Грант, Стив Викерс |
Разработчик | Сети девяти плиток, Sinclair Research |
Впервые появился | 1979 |
Платформа | ZX80 , ZX81 , ZX Spectrum |
Лицензия | Проприетарный |
Sinclair BASIC является диалектом языка программирования BASIC , используемой в 8-разрядных домашних компьютерах от Sinclair Research и Timex Sinclair . Интерпретатор Sinclair BASIC был разработан Nine Tiles Networks Ltd. [1]
История [ править ]
Sinclair BASIC был первоначально разработан в 1979 году для ZX80 компанией Nine Tiles. Программистами были Джон Грант, владелец Nine Tiles, и Стив Викерс .
Первоначально это была неполная реализация минимального BASIC-стандарта Американского национального института стандартов (ANSI) 1978 года с использованием только целочисленной арифметики, названного 4K BASIC (для размера ПЗУ) для ZX80. Он развился через 8K BASIC с плавающей запятой для ZX81 и TS1000 (который также был доступен в качестве обновления для ZX80 [2] ) и стал почти полной версией в ПЗУ ZX Spectrum 16 КБ . Он присутствует во всех совместимых устройствах ZX Spectrum.
По состоянию на 2015 год существуют интерпретаторы для современных операционных систем и более старых систем, которые позволяют легко использовать Sinclair Basic.
Синтаксис [ править ]
Программисты-новички на BASIC могут начать с простой программы, возможно, используя оператор PRINT языка для отображения сообщения на экране; хорошо известны и часто реплицируются пример Керниган и Ритчи «s всемирная программа Hello :
10 ПЕЧАТЬ "Hello, World!"
Ключевые слова [ править ]
На ZX Spectrum 16K / 48K в Sinclair BASIC есть 88 ключевых слов, обозначающих команды (из которых 50), функции и логические операторы (31), а также другие ключевые слова (16, включая 9, которые также являются командами или функциями):
Ключевое слово | Параметры [примечание 1] | Введено с использованием [примечания 2] | Тип | Резюме |
---|---|---|---|---|
ABS | number | EXTENDED MODE тогда G | Функция | Возвращает абсолютное значение из number [3] |
ACS | number | EXTENDED MODEзатем SYMBOL SHIFT+W | Функция | Возвращает арккосинус из number [4] |
AND | SYMBOL SHIFT+Y | Логический оператор | Возвращает истину, если оба условия по обе стороны от AND ключевого слова истинны, иначе возвращает ложь [примечание 3] [5] | |
ASN | number | EXTENDED MODEзатем SYMBOL SHIFT+Q | Функция | Возвращает арксинус числа number [6]. |
AT | line, column; | SYMBOL SHIFT+I | Другой | Используется в PRINT операторе для печати в указанной строке и столбце; [7], например, PRINT AT 5,10;"*" помещает звезду в столбец 10 строки 5. |
ATN | number | EXTENDED MODEзатем SYMBOL SHIFT+E | Функция | Возвращает арктангенс числа number [4]. |
ATTR | (line, column) | EXTENDED MODEзатем SYMBOL SHIFT+L | Функция | Возвращает байт, содержащий информацию о цветах текстовой ячейки на экране, соответствующий указанному line и column ; обратите внимание, что, в отличие от большинства ключевых слов Sinclair BASIC, круглые скобки обязательны; первые три бита указывают цвет чернил (переднего плана), четвертый, пятый и шестой биты - цвет бумаги (фона), седьмой бит - яркость цветов или нет, а восемь - мигают ли они [8] |
BEEP | duration, pitch | EXTENDED MODEзатем SYMBOL SHIFT+Z | Командование | Воспроизводит звук из динамика компьютера; duration в секундах, высота звука в полутонах выше (положительное значение) или ниже (отрицательное значение) среднего C [9] |
BIN | number | EXTENDED MODE тогда B | Другой | Указывает number в двоичной системе счисления [10] |
BORDER | number | B | Командование | Устанавливает внешнюю границу экрана на цвет, указанный в number [примечании 4] [11] |
BRIGHT | number | EXTENDED MODEзатем SYMBOL SHIFT+B | Команда / другое | Делает все следующие цвета ярче, если number 1, или его нормальный оттенок, если 0 [примечание 5] [12] |
CAT | number | EXTENDED MODEзатем SYMBOL SHIFT+9 | Командование | Отображает содержимое ZX Microdrive, указанное в number [примечание 6] [13] |
CHR$ | number | EXTENDED MODE тогда W | Функция | Возвращает символ, соответствующий десятичной дроби number в наборе символов компьютера [14]. |
CIRCLE | x, y, r | EXTENDED MODEзатем SYMBOL SHIFT+H | Командование | Рисует круг с центром в координатах ( x , y ) и радиусе r [15] |
CLEAR | address | X | Командование | Очищает экран, [16] все переменные и GO SUB стек, [17] и дополнительно устанавливает максимальный адрес RAM, который будет использоваться BASIC [18] |
CLOSE # | number | EXTENDED MODEзатем SYMBOL SHIFT+5 | Командование | Закрывает указанный номер потока для доступа [примечание 6] |
CLS | V | Командование | Удаляет весь текст и графику с экрана [16] | |
CODE | string | EXTENDED MODE тогда I | Функция / другое | Возвращает число, соответствующее первому символу в наборе символовstring компьютера ; [14] также используется для сохранения произвольных фрагментов памяти на ленту, диск и т.д. , и загружать их обратно в - см , а для получения более подробнойLOAD SAVE VERIFY |
CONTINUE | C | Командование | Перезапускает программу после того, как он остановлен из - за ошибки или пользователем нажатием CAPS SHIFT+ SPACEили BREAKклавиши [19] | |
COPY | Z | Командование | Отправляет текущий отображаемый экран на принтер [20] | |
COS | number | EXTENDED MODE тогда W | Функция | Возвращает косинус числа number [21]. |
DATA | comma-separated values | EXTENDED MODE тогда D | Команда / другое | Предоставляет числа и / или строки для использования с READ командой [22] и позволяет сохранять содержимое массива на ленту при использовании с SAVE командой [23] (какSAVE filename DATA array name() |
DEF FN | name(variable) = operation | EXTENDED MODE тогда 1 | Командование | Определяет настраиваемую функцию, которая может использоваться с FN командой; определения функций должны иметь форму f(x)=operations , например, f(x)=x*2 и имя функции не может состоять более чем из одной буквы плюс $ -символ, если функция возвращает строку [24] |
DIM | variable(dimensions) | D | Командование | Объявляет массив с указанным dimensions , который может быть многомерным (например DIM a(10,10) ,; если используется со строками, последнее измерение указывает длину каждой из строк (таким образом, DIM a$(2,5) это массив из двух строк, каждая из пяти символов длиной, и DIM b$(5) одна строка из пяти символов) [25] |
DRAW | x, y [, r] | W | Командование | Рисует линию текущего INK цвета в координатах ( x , y ) от координат, использованных предыдущей командой PLOT или DRAW ; если r указан необязательный параметр , он указывает радиус рисуемого сегмента круга в радианах [26] |
ERASE | drive;"filename" | EXTENDED MODEзатем SYMBOL SHIFT+7 | Командование | Удаляет указанный файл с ZX Microdrive [примечание 6] [27] |
EXP | number | EXTENDED MODE тогда X | Функция | Возвращает е во власть number [28] |
FLASH | number | EXTENDED MODEзатем SYMBOL SHIFT+V | Команда / другое | Делает весь следующий текст чередующим его цвета переднего плана ( INK ) и фона ( PAPER ) [примечание 5] |
FN | function(value) | EXTENDED MODEзатем SYMBOL SHIFT+2 | Функция | Вызывает function определенное ранее в программе с помощью DEF FN [24] |
FORMAT | drive;"name" | EXTENDED MODEзатем SYMBOL SHIFT+0 | Командование | Форматирует картридж в указанном Microdrive и присваивает ему идентификатор name [примечание 6] [29] |
FOR | variable = start TO end | F | Командование | Начинает FOR - NEXT цикл; [30] имя переменной может состоять только из одного символа [31] |
GO SUB | number | H | Командование | Заставляет программу перейти к строке BASIC, указанной в number ; когда программа встречает команду RETURN , она вернется к оператору после GO SUB [32] |
GO TO | number | G | Командование | Заставляет программу перейти на строку BASIC, указанную в number |
IF | condition THEN | U | Командование | Вычисляет condition и, если истинно, выполняет оператор, следующий за ключевым словом, THEN которое должно стоять после условия, [33] например IF a=1 THEN LET b=2 [примечание 7] |
IN | address | EXTENDED MODEзатем SYMBOL SHIFT+I | Функция | Возвращает байт, прочитанный из аппаратного порта ввода / вывода, соответствующего address [34] |
INK | number | EXTENDED MODEзатем SYMBOL SHIFT+X | Команда / другое | Устанавливает цвет переднего плана для текста и графики [примечание 4] [примечание 5] [35] |
INKEY$ |
| EXTENDED MODEзатем SYMBOL SHIFT+Z | Функция | Возвращает строку, представляющую клавишу, нажатую на клавиатуре в момент вызова функции, или пустую строку, если ее нет, [36], но не ожидает нажатия клавиши |
INPUT | [prompt,] variable | I | Командование | Останавливает выполнение программы до тех пор, пока пользователь не наберет что-нибудь на клавиатуре и не нажмет Enter клавишу, а затем сохраняет введенное значение в указанном variable ; если prompt поставляется дополнительное оборудование , это будет показано на экране [37] |
INT | number | EXTENDED MODE тогда R | Функция | Возвращает целое число с number округлением до ближайшего целого числа [3] (таким образом, INT -1.1 возвращает −2, а не −1). |
INVERSE | number | EXTENDED MODEзатем SYMBOL SHIFT+M | Команда / другое | Инвертирует цвета во всем последующем тексте, если number равно 1, так что он использует текущий цвет чернил для фона и текущий цвет бумаги для текста, или устанавливает их обратно в нормальное состояние, если number равно 0 [примечание 5] [38] |
LEN | string | EXTENDED MODE тогда K | Функция | Возвращает количество символов (байтов) в string [39]. |
LET | variable=value | L | Командование | Присваивается value названной переменной [40] |
LINE |
| EXTENDED MODEзатем SYMBOL SHIFT+3 | Другой |
|
LIST | [number] | K | Командование | Выводит текущую программу BASIC на экран; если указан необязательный параметр number , он пропускает все строки с меньшим номером [42] |
LLIST | [number] | EXTENDED MODEзатем SYMBOL SHIFT+V | Командование | Поскольку LIST кроме распечатки выводится на принтер [20] |
LN | number | EXTENDED MODEзатем SYMBOL SHIFT+Z | Функция | Возвращает натуральный логарифм числа number [43]. |
LOAD | "[filename]" [CODE [address[, length]]| DATA variable()] | J | Командование | Загружает программу или данные в RAM с ленты, ZX Microdrive , диска и т. Д., Удаляя любую существующую программу и переменные BASIC; [37] если указана пустая строка ( "" ), загружается первая найденная программа, иначе она будет искать на ленте программу, указанную в строке; если CODE указан необязательный параметр , программа будет загружена в память по адресу, который она имела при сохранении, или по указанному address ( length предназначено для обеспечения безопасности, чтобы попытаться загрузить правильную программу в случае, если на ленте их несколько правильное название, но разной длины); [44], если указан необязательный параметр DATA variable() , загружает данные с ленты в массив с именем variable() [23] |
LPRINT | text | EXTENDED MODEзатем SYMBOL SHIFT+C | Командование | За PRINT исключением вывода отправляется на принтер [20] |
MERGE | "[filename]" | EXTENDED MODEзатем SYMBOL SHIFT+T | Командование | As LOAD , кроме этого не удаляет текущую программу и переменные; если номер строки существует в обеих, то новая загруженная программа перезаписывает существующую [45] |
MOVE | stream1 TO stream2 | EXTENDED MODEзатем SYMBOL SHIFT+6 | Командование | Перемещает данные из одного потока (клавиатура, экран, файл, принтер, сеть и т. Д.) В другой [примечание 6] [46] |
NEW | A | Командование | Удаляет текущую программу BASIC и все переменные [37] | |
NEXT | variable | N | Командование | Замыкает FOR - NEXT петлю; переменная должна соответствовать переменной соответствующей FOR команды [47] - «пустые» NEXT s для ссылки на непосредственно предшествующие FOR в программе не допускаются |
NOT | condition | SYMBOL SHIFT+S | Логический оператор | Возвращает истину, если condition ложь, иначе возвращает ложь [примечание 3] [5] |
OPEN # | stream | EXTENDED MODEзатем SYMBOL SHIFT+4 | Командование | Открывает поток для чтения и / или записи в [примечание 6] [48] |
OR | SYMBOL SHIFT+Y | Логический оператор | Возвращает истину, если любое из условий по обе стороны от OR ключевого слова истинно, иначе возвращает ложь [примечание 3] [5] | |
OUT | address, value | EXTENDED MODEзатем SYMBOL SHIFT+O | Командование | Посылает value ( байт ) аппаратному [ввод-вывод с отображением памяти | порт ввода-вывода], соответствующий address [34] |
OVER | number | EXTENDED MODEзатем SYMBOL SHIFT+N | Команда / другое | Выполняет наложение следующего текста с помощью операции XOR на то, что уже отображается на экране, если оно number равно 1, вместо его стирания, или стирает его, если оно number равно 0 [примечание 5] [38] |
PAPER | number | EXTENDED MODEзатем SYMBOL SHIFT+C | Команда / другое | Устанавливает цвет фона для текста и графики [примечание 4] [примечание 5] [35] |
PAUSE | delay | M | Командование | Останавливает выполнение программы на указанную задержку в секунду в Европе или в Северной Америке [49] (таким образом, останавливается на одну секунду в Европе).PAUSE 50 |
PEEK | address | EXTENDED MODE тогда O | Функция | Возвращает байт, представляющий содержимое области памяти, на которую указывает address [50]. |
PI |
| EXTENDED MODE тогда M | Функция | Возвращает значение пи [43]. |
PLOT | x, y | Q | Командование | Рисует пиксель текущего INK цвета на экране в координатах ( x , y ) [51] |
POINT | (x,y) | EXTENDED MODEзатем SYMBOL SHIFT+8 | Функция | Возвращает 1, если пиксель, указанный в графических координатах ( x , y ), в настоящее время имеет цвет чернил (переднего плана), иначе возвращает 0 [15] |
POKE | address, value | O | Командование | Устанавливает содержимое address в ОЗУ на value [52] |
PRINT | [AT x,y;] text | P | Командование | Выводит text на экран (которое должно быть строкой или числом); [40] при использовании с AT , будет печататься в указанных текстовых координатах, иначе в первом столбце строки после того, что используется последним PRINT оператором [7] |
RANDOMIZE | [number] | T | Командование | Инициализирует генератор случайных чисел ; если используется без number (или с 0), он делает это на основе внутренних часов компьютера, в противном случае он использует number поставляемые, которые должны быть в диапазоне [1,65535] [53] |
READ | variable | EXTENDED MODE тогда A | Командование | Берет значение из DATA оператора и сохраняет его в именованном variable : при первом READ использовании оно получает первое значение после первого DATA , во второй раз получает следующее и т. Д. [22] |
REM | текст | E | Командование | Начинает комментарий в исходном коде, что означает, что все, что находится после REM оператора, игнорируется до конца строки [37] - обратите внимание, что это включает все, что находится после двоеточия, которое обычно начинается новый сегмент: 10 REM Nothing to see here : PRINT "Unprintable" не будет производить никакого вывода, например |
RESTORE | [number] | EXTENDED MODE тогда S | Командование | Сбрасывает, где READ команды ищут значения в DATA операторах: если они используются без номера, следующая READ будет использовать первое DATA в программе, с номером оно будет использовать первое DATA в строке, номер которой указан, или после нее [54] |
RETURN | Y | Командование | Возвращает выполнение к первому оператору, следующему за последней выполненной GO SUB командой [32] | |
RND |
| EXTENDED MODE тогда T | Функция | Возвращает псевдослучайное число с восемью значащими цифрами в диапазоне [0,1) [55]. |
RUN | [number] | R | Командование | Запускает текущую программу BASIC, с ее первой строки, если не number указан, иначе со строки с этим номером (или первой после, если он не существует) [56] |
SAVE | Номер строчки] | S | Командование | Сохраняет текущую программу BASIC на ленту или другое запоминающее устройство с filename указанным; если используется необязательный параметр, LINE за которым следует номер строки, то программа будет запускаться автоматически с указанного номера строки при LOAD повторном вводе; с необязательным DATA , команда сохраняет содержимое массива, названного переменной, вместо текущей программы BASIC [23] |
SCREEN$ | [(line, column)] | EXTENDED MODEзатем SYMBOL SHIFT+ | Функция / другое | В качестве функции идентифицирует символ в указанной строке и столбце на экране. [7] Используется после имени файла в команде LOAD или SAVE , указывает, что содержимое памяти дисплея должно быть загружено или сохранено; это, по сути, делает его ярлыком для CODE 16384,6912 [примечания 8], но не работает с ним, VERIFY потому что содержимое памяти дисплея будет другим к тому времени, когда эта команда считывает сохраненные данные; [57] |
SGN | number | EXTENDED MODE тогда F | Функция | Возвращает 1, если number положительное значение, 0, если оно равно 0, и -1, если оно отрицательное [3]. |
SIN | number | EXTENDED MODE тогда Q | Функция | Возвращает синус числа number [21]. |
STEP | number | SYMBOL SHIFT+D | Другой | Указывает интервал , используемый в FOR заявлении, [31] , например FOR n=2 TO 6 STEP 2 пропустит n=3 и n=5 в цикле |
STOP | SYMBOL SHIFT+A | Командование | Завершает выполнение текущей программы, выходя в редактор BASIC; также может быть предоставлена , если компьютер ожидает ввода с помощью INPUT команды; [56] после остановки программы ее можно возобновить, нажавCONTINUE | |
SQR | number | EXTENDED MODE тогда H | Функция | Возвращает квадратный корень из number [24]. |
STR$ | number | EXTENDED MODE тогда Y | Функция | Возвращает символ из набора символов компьютера, соответствующий number [58]. |
TAB | column | EXTENDED MODE тогда P | Другой | В PRINT операторе гарантирует, что выводимый текст начинается в указанном столбце с переносом на следующую строку по мере необходимости, но не более чем на одну строку [16] |
TAN | number | EXTENDED MODE тогда E | Функция | Возвращает тангенс из number [59] |
THEN | statement | SYMBOL SHIFT+G | Другой | Следует за условием в IF операторе, чтобы указать, что должно произойти, когда условие оценивается как истинное [примечание 7] [33] |
TO |
| SYMBOL SHIFT+F | Другой | Указывает диапазон от числа слева TO до числа справа включительно; [60] при использовании с FOR обоими числами должно быть указано, в то время как, если используется для нарезки строк, любое из них может быть оставлено без указания начала или конца строки. |
USR | string or address | EXTENDED MODE тогда L | Функция | При вызове с односимвольной строкой возвращается адрес памяти, по которому определяется глиф для определяемого пользователем графического символа, соответствующего этому символу. [10] Если вызывается с адресом, он запускает выполнение машинного кода по этому адресу (что делает его одной из немногих функций Sinclair BASIC с побочным эффектом ) и возвращает содержимое пары регистров BC Z80 . [61] |
VAL | string | EXTENDED MODE тогда J | Функция | Оценивает string как число и возвращает результат; [62] это может выполнять вычисления: VAL "1+2" например, возвращает 3, а также оценивает переменные и даже другие VAL операторы: LET a=1: VAL "a+VAL ""2""" [примечание 9] также возвращает 3 |
VAL$ | string | EXTENDED MODEзатем SYMBOL SHIFT+J | Функция | Аналогично, VAL но оценивает строку как строку [3] |
VERIFY | "[filename]" | EXTENDED MODEзатем SYMBOL SHIFT+R | Командование | Читает программу с магнитной ленты или другого хранилища, очень похоже LOAD , но вместо того, чтобы загружать ее в память, сравнивает ее с программой, которая в настоящее время находится в памяти; это предназначено для того, чтобы убедиться, что программа SAVE написана правильно [63] |
Ввод ключевого слова [ править ]
В моделях 48K и старше ключевые слова вводятся через уникальную систему ввода ключевых слов Sinclair, как указано в таблице. Для наиболее распространенных команд требуется только одно нажатие клавиши; например, нажатие только Pв начале строки на Spectrum производит полную команду PRINT
. Менее частые команды требуют более сложных последовательностей клавиш: BEEP
(например) вводится нажатием CAPS SHIFTплюса SYMBOL SHIFTдля доступа к расширенному режиму (более поздние модели включают EXTENDED MODEклавишу), удерживая SYMBOL SHIFTнажатой и нажимая Z. Ключевые слова имеют цветовую кодировку на оригинальной клавиатуре Spectrum, чтобы указать, какой режим требуется: [64]
- Белый : только ключ
- Красный на самом ключе: SYMBOL SHIFTплюс ключ
- Зеленый над клавишей: EXTENDED MODEза ней следует клавиша
- Красный цвет под клавишей: EXTENDED MODEзатем SYMBOL SHIFTплюс клавиша
ZX81 8K BASIC использовали более короткие формы GOTO
, GOSUB
, CONT
и RAND
, в то время как спектр используется более длинные формы 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), **
(заменено ↑
на Spectrum). Они расширяются путем ссылки на таблицу токенов в ПЗУ. Таким образом, ключевое слово использует только один байт памяти, что является значительной экономией по сравнению с традиционным побуквенным хранением. Это также означало, что интерпретатор BASIC мог быстро определить любую команду или функцию, оценив один байт, и что ключевые слова не должны быть зарезервированными словами.как и в других диалектах BASIC или других языках программирования, например, разрешено определять переменную с именем PRINT
и выводить ее значение с помощью PRINT PRINT
. Это также связано с синтаксическим требованием, чтобы каждая строка начиналась с ключевого слова команды, и нажатие одной клавиши для этой команды в начале строки переводит редактор из командного режима в буквенный. Таким образом, требуется присвоение переменной LET
(т. Е. Не только ). Эта практика также отличается от других диалектов BASIC. Кроме того, это означало, что в отличие от других диалектов BASIC, интерпретатору не нужны были скобки для обозначения функций; было достаточно, не нужно (хотя последнее было разрешено). 4K BASIC ROM из ZX80 был короткий список исключений к этому: функции , ,LET a=1
a=1
SIN x
SIN(x)
CHR$()
STR$()
TL$()
, PEEK()
, CODE()
, RND()
, USR()
И ABS()
не имеют один байт маркеров , но были напечатаны в письме-на-письма и требует скобок. Они были указаны как ИНТЕГРАЛЬНЫЕ ФУНКЦИИ на этикетке выше и справа от клавиатуры. [65]
Модели 128K Spectrum, ZX Spectrum 128, +2, +3, + 2A и + 2B, также сохраняли ключевые слова внутри в однобайтовых кодовых точках, но использовали обычную систему ввода букв за буквой BASIC. Они также представили две новые команды:
PLAY
, который управлял музыкальным чипом General Instrument AY-3-8910 моделей 128kSPECTRUM
, который переключил 128k Spectrum в режим совместимости 48k Spectrum
Оригинальный испанский ZX Spectrum 128 включал четыре дополнительных команды на испанском [66], одна из которых не была документирована. Их можно перевести как:
EDIT
(чтобы отредактировать номер строки или вызвать полноэкранный редактор строк)RENUM
(изменить нумерацию строк программы)DELETE
(для удаления программных строк)WIDTH
(для установки ширины столбца устройства RS232, но недокументировано, поскольку код был нарушен)
В отличие от функций 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)
.
Имена переменных [ править ]
Переменные, содержащие числовые значения, могут иметь любую длину, а имена переменных строк и массивов должны состоять только из одного алфавитного символа. Таким образом, , , , и все хорошо, в то время , и нет.LET a=5
LET Apples=5
LET a$="Hello"
DIM a(10)
DIM a$(10)
LET Apples$="Fruit"
DIM Apples(10)
DIM Apples$(10)
Длинные имена переменных, разрешенные для числовых переменных, могут включать буквенно-цифровые символы после первого символа, поэтому разрешено, но не разрешено . Длинные имена переменных могут также включать в себя пробелы, которые игнорируются, так что аналогичноLET a0=5
LET 0a=5
LET number of apples = 5
LET numberofapples = 5
Официальные версии [ править ]
- 4K BASIC - это оригинальный ZX80 BASIC с арифметикой только для целых чисел, разработанный Джоном Грантом из Nine Tiles для ZX80, названный так из-за того, что он находится в постоянной памяти (ROM) 4 КиБ .
- 8K BASIC - это ZX81 BASIC (также доступный в качестве обновления для ZX80 [2] ), обновленный арифметикой с плавающей запятой Стивом Викерсом , названный так из-за того, что он находится в ПЗУ объемом 8 КиБ.
- 48 BASIC - это ОСНОВНОЙ для оригинальной 16/48 КБ оперативной памяти (RAM) ZX Spectrum (и клонов), с цветом и другими периферийными устройствами, добавленными Стивом Викерсом и Джоном Грантом. Он находится в ПЗУ 16 КБ и стал называться 48 BASIC с появлением ZX Spectrum 128, когда Spectrum 16 КБ больше не продавался, а большинство используемых были обновлены до 48 КБ [67]
- 128 BASIC - это ОСНОВНОЙ для ZX Spectrum 128. [68] Он предлагает дополнительные команды и использует буквенный ввод.
- +3 BASIC - это BASIC с поддержкой дисков для ZX Spectrum +3. [67]
- T / S 2000 BASIC использовался на Spectrum-совместимом Timex Sinclair 2068 (TS2068) и имеет следующие шесть ключевых слов, а также обычные Sinclair BASIC:
DELETE
удаляет диапазоны строк программы BASIC. CAPS SHIFT+ 0сK
курсором производит командуDELETE
.FREE
это функция, которая показывает количество свободной оперативной памяти.PRINT FREE
покажет, сколько оперативной памяти свободно.ON ERR
- это функция обработки ошибок, которая в основном используется какON ERR GO TO
илиON ERR CONT
.RESET
можно использовать для сброса поведенияON ERR
. Он также был предназначен для сброса периферийных устройств.SOUND
управляет звуковым чипом AY-3-8192.STICK
- это функция, которая определяет положение внутреннего джойстика (Timex Sinclair 2090).
- BASIC64 от Timex of Portugal - это расширение программного обеспечения [69], позволяющее улучшить базовое программирование с графическим режимом 512 × 192, доступным только на компьютерах серии Timex 2000 . Это расширение добавляет команды и выполняет полное переназначение памяти, чтобы система не перезаписывала расширенную область памяти экрана. Две версии существуют из-за разных карт памяти - версия для TC2048 и версия для TS / TC2068 .
Другие версии, расширения, производные и преемники [ править ]
Интерпретаторы для семейства ZX Spectrum [ править ]
Существует несколько интерпретаторов ZX Spectrum. [70]
- Бета-версия BASIC, разработанная доктором Энди Райтом, изначально была расширением BASIC , но стала полноценным интерпретатором.
- YS MegaBasic от Mike Leaman . [70]
- ZebraOS от Zebra Systems в Нью-Йорке, картриджная версия T / S 2000 BASIC, в которой использовался режим экрана 512 × 192.
- ПЗУ Sea Change от Стива Виккерса и Яна Логана, модифицированное Джеффом Вермаутом, заменяющее ПЗУ с улучшенным Sinclair BASIC. [71]
- Gosh Wonderful от Джеффа Вермаута , заменяющее ПЗУ, которое исправляет ошибки и добавляет токенизатор, список потоков, команды удаления и перенумерации. [70] [72]
- OpenSE BASIC (ранее SE BASIC) Эндрю Оуэна , заменяющее ПЗУ с исправлениями ошибок и множеством улучшений, включая поддержку ULAplus [73] , опубликовано как открытый исходный код в 2011 году [74] [75]
Компиляторы для семейства ZX Spectrum [ править ]
Существует несколько компиляторов ZX Spectrum. [70]
- Компилятор HiSoft COLT (он же целочисленный компилятор HiSoft COLT) [76]
- HiSoft BASIC (также известный как HiSoft BASIC Compiler), компилятор, поддерживающий целые числа и числа с плавающей запятой [77]
- Лазерный компилятор [78]
- Целочисленный компилятор Softek 'IS' [79] (преемник целочисленного компилятора Softek [80] )
- Полный компилятор Softek 'FP' [81]
- Компилятор ZIP [82]
Производные и преемники для других компьютеров [ править ]
- SuperBASIC , гораздо более продвинутый диалект BASIC, представленный наперсональном компьютере Sinclair QL , с некоторым сходством с более ранними версиями Sinclair BASIC.
- SAM Basic , BASIC на SAM Coupé , обычно считается клоном ZX Spectrum
- ROMU6 Сезара и Хуана Эрнандес - MSX [70]
- Spectrum 48 от Whitby Computers - Commodore 64 [70]
- Sparky eSinclair BASIC от Ричарда Келша, операционная система, частично основанная на ZX Spectrum BASIC - Zilog eZ80 [83]
- Синбас Павла Направника - DOS [70]
- Basic [84] (и CheckBasic [85] ) Филиппа Кендалла - Unix
- BINSIC [86] Адриана Макменамина, повторная реализация в Groovy, тесно смоделированная на ZX81 BASIC - Java
- BASin [87] Пола Данна, полная интегрированная среда разработки Sinclair BASIC (IDE) на основе эмулятора ZX Spectrum [70] - Windows
- SpecBAS [88] (также известная как SpecOS) Пола Данна, интегрированная среда разработки (IDE), обеспечивающая расширенный набор Sinclair BASIC - Windows , Linux , Pandora и Raspberry Pi
- ZX-Basicus [89] Хуана-Антонио Фернандеса-Мадригал, синтезатор, анализатор, оптимизатор, интерпретатор и отладчик Sinclair BASIC 48K для ПК, свободно загружаемый для Linux и Windows .
См. Также [ править ]
- Список эмуляторов компьютерных систем § Sinclair ZX80
- Список эмуляторов компьютерных систем § Sinclair ZX81
- Список эмуляторов компьютерных систем § Sinclair ZX Spectrum и клоны
Заметки [ править ]
- ^ Необязательные параметры заключены в [квадратные скобки]
- ^ Предполагается, что компьютер находится в режиме K (ключевое слово), который обычно находится в начале строки при входе в BASIC. На Spectrum 16K и 48K в расширенный режим можно войтиодновременнымнажатиемCAPS SHIFTи,SYMBOL SHIFTа неEXTENDED MODEклавишей, которая присутствует на Spectrum + и более поздних моделях.
- ^ a b c «Ложь» в Sinclair BASIC равняется 0 (нулю), все остальное - «истина». Таким образом, функции, возвращающие истинные или ложные значения, фактически возвращают 0 для ложных и 1 для истинных, в то время как
AND
обычно возвращают первое из условий, предоставленных для истины, или 1, если числовые значения не заданы. Например,6 AND 7
возвращает 6, аNOT 6=7
возвращает 1. - ^ a b c Доступные номера цветов:
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, они не были полностью реализованы таким образом, что их использование генерируется сообщение об ошибке (некорректный поток). Позже с помощью теневого ПЗУ ZX Interface 1 они использовались для ZX Microdrive . (Теневое ПЗУ было выгружено, когда интерпретатор BASIC обнаружил синтаксическую ошибку, поэтому в большинстве команд ZX Microdrive используется a"*"
). - ^ a b В отличие от многих других диалектов BASIC, Sinclair Basic не включал
ELSE
оператор в предложениеIF
-THEN
[-ELSE
]. Обходным путем было бы использовать вместо этого конструкциюIF
-THEN
-GO TO
, минуя строки, которые были бы вELSE
предложении сGO TO
- ^ Память дисплея Spectrum начинается с адреса 16384 и имеет длину 6912 байт.
- ^ Строка внутри строки должна иметь двойные кавычки в Sinclair BASIC
Ссылки [ править ]
- ↑ Гарфилд, Саймон (28 февраля 2010 г.). «Сэр Клайв Синклер:« Я вообще не использую компьютер » » . Хранитель . Guardian Media Group . Проверено 23 мая 2011 .
Он хочет отдать должное [...], не в последнюю очередь Nine Tiles, компании, создавшей операционное программное обеспечение Basic.
- ^ a b "ZX80 - ОБНОВЛЕНИЕ БАЗОВОГО ПЗУ 8K" .
- ^ а б в г Викерс 1983 , стр. 59.
- ↑ a b Vickers 1983 , p. 70.
- ^ a b c Vickers 1983 , стр. 85.
- Перейти ↑ Vickers 1983 , p. 69–70.
- ^ а б в г Викерс 1983 , стр. 101.
- Перейти ↑ Vickers 1983 , p. 116.
- Перейти ↑ Vickers 1983 , p. 135.
- ↑ a b Vickers 1983 , p. 93.
- Перейти ↑ Vickers 1983 , p. 113.
- Перейти ↑ Vickers 1983 , p. 110–111.
- Перейти ↑ Cambridge Communication 1983 , p. 15.
- ↑ a b Vickers 1983 , p. 91.
- ↑ a b Vickers 1983 , p. 123.
- ^ a b c Vickers 1983 , стр. 103.
- ^ http://www.worldofspectrum.org/ZXBasicManual/zxmanchap24.html
- Перейти ↑ Vickers 1983 , p. 168.
- Перейти ↑ Vickers 1983 , p. 19.
- ^ a b c Vickers 1983 , стр. 151.
- ↑ a b Vickers 1983 , p. 68.
- ↑ a b Vickers 1983 , p. 41.
- ^ a b c Vickers 1983 , стр. 142.
- ^ a b c Vickers 1983 , стр. 60.
- Перейти ↑ Vickers 1983 , p. 79–81.
- Перейти ↑ Vickers 1983 , p. 11–123.
- Перейти ↑ Cambridge Communication 1983 , p. 18.
- Перейти ↑ Vickers 1983 , p. 66.
- Перейти ↑ Cambridge Communication 1983 , p. 19.
- Перейти ↑ Vickers 1983 , p. 31.
- ↑ a b Vickers 1983 , p. 32.
- ↑ a b Vickers 1983 , p. 37.
- ↑ a b Vickers 1983 , p. 25.
- ↑ a b Vickers 1983 , p. 159.
- ↑ a b Vickers 1983 , p. 110.
- Перейти ↑ Vickers 1983 , p. 131.
- ^ а б в г Викерс 1983 , стр. 16.
- ↑ a b Vickers 1983 , p. 112.
- Перейти ↑ Vickers 1983 , p. 57.
- ↑ a b Vickers 1983 , p. 13.
- Перейти ↑ Vickers 1983 , p. 144.
- Перейти ↑ Vickers 1983 , p. 15.
- ↑ a b Vickers 1983 , p. 67.
- Перейти ↑ Vickers 1983 , p. 142–143.
- Перейти ↑ Vickers 1983 , p. 147.
- Перейти ↑ Cambridge Communication 1983 , p. 39.
- Перейти ↑ Vickers 1983 , p. 31–32.
- Перейти ↑ Cambridge Communication 1983 , p. 22.
- Перейти ↑ Vickers 1983 , p. 129.
- Перейти ↑ Vickers 1983 , p. 130.
- Перейти ↑ Vickers 1983 , p. 121.
- Перейти ↑ Vickers 1983 , p. 163.
- Перейти ↑ Vickers 1983 , p. 74.
- Перейти ↑ Vickers 1983 , p. 42.
- Перейти ↑ Vickers 1983 , p. 73.
- ↑ a b Vickers 1983 , p. 14.
- Перейти ↑ Vickers 1983 , p. 143.
- Перейти ↑ Vickers 1983 , p. 58.
- Перейти ↑ Vickers 1983 , p. 69.
- Перейти ↑ Vickers 1983 , p. 32, 51.
- Перейти ↑ Vickers 1983 , p. 180.
- Перейти ↑ Vickers 1983 .
- Перейти ↑ Vickers 1983 , p. 141.
- Перейти ↑ Vickers 1983 , p. 7–8.
- ^ "Изображение ZX80" .
- ^ Разборка ПЗУ Spectrum 128 - Испанский Spectrum 128
- ^ a b http://www.worldofspectrum.org/ZXSpectrum128+3Manual/chapter7.html
- ^ http://www.worldofspectrum.org/ZXSpectrum128Manual/sp128p06.html
- ^ http://timex.comboios.info/tmxtechb64-2048.html
- ^ Б с д е е г ч http://www.worldofspectrum.org/sinclairbasic/
- ^ "История Sinclair BASIC" .
- ^ "Неполная сборка Spectrum ROM" . Архивировано из оригинала на 2015-09-01.
- ^ https://sites.google.com/site/ulaplus/
- ^ http://www.fruitcake.plus.com/Sinclair/Interface2/Cartridges/Interface2_RC_New_3rdParty_SEBASIC.htm
- ^ https://sourceforge.net/projects/sebasic/
- ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008254
- ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008249
- ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008329
- ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008696
- ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008282
- ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008693
- ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0009452
- ^ http://rk-internet.com/eZXSparky/
- ^ http://www.shadowmagic.org.uk/spectrum/basic.html
- ^ http://www.shadowmagic.org.uk/spectrum/checkbasic.html
- ^ http://cartesianproduct.wordpress.com/binsic-is-not-sinclair-instruction-code/
- ^ https://sites.google.com/site/ulaplus/home/zx-spin-and-basin
- ^ https://github.com/ZXDunny/SpecBAS
- ^ http://jafma.net/software/zxbasicus/
Библиография [ править ]
- Ардли, Нил (1984). Руководство пользователя Sinclair ZX Spectrum + . Дорлинг Киндерсли совместно с Sinclair Research. ISBN 0-86318-080-9.
- Викерс, Стивен (1982). Sinclair ZX Spectrum BASIC Programming . Sinclair Research.
- Викерс, Стивен (1983). Sinclair ZX Spectrum BASIC Programming (2-е изд.). Sinclair Research.
- Кембриджское сообщение (1983). Sinclair ZX Spectrum Microdrive и интерфейс 1 руководство . Sinclair Research.
Внешние ссылки [ править ]
- Sinclair ZX Spectrum BASIC Programming : оригинальное руководство от 1982 года Стивена Виккерса (ссылка выше)
- Основное программирование Sinclair ZX81 : также Vickers
- История Sinclair BASIC : Эндрю Оуэн
- Timex Computer World : руководство пользователя Basic 64 для Timex Computer 2048
- Грамматика Sinclair BASIC : спецификация грамматики LL (1) для синтаксического анализа Sinclair BASIC 16 / 48K