Sinclair BASIC — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
(Расширения и варианты)
(См. также)
 
(не показано 18 промежуточных версии 4 участников)
Строка 1: Строка 1:
'''Sinclair BASIC''' (назван по фамилии [[Клайв Синклер|Клайва Синклера]]) - диалект BASIC, применявшийся на 8-разрядных компьютерах производства [[Sinclair Research]] и [[Timex Sinclair]]. Интерпретатор Sinclair BASIC разработан компанией Nine Tiles Networks Ltd.
+
'''Sinclair BASIC''' (назван по фамилии [[Клайв Синклер|Клайва Синклера]]) диалект языка программирования BASIC, применявшийся на 8-разрядных компьютерах производства [[Sinclair Research]] и [[Timex Sinclair]]. Интерпретатор Sinclair BASIC разработан компанией [[Nine Tiles Networks]] (разработкой версии для [[ZX Spectrum]] занимался [[Steven Vickers|Стивен Викерс]]).
  
Изначально разработан в 1979 году, для размещения в 4 КБ ПЗУ компьютера [[ZX80]]. Эта версия представляла собой неполную реализацию минимального стандарта ANSI 1978 года. При адаптации для компьютеров [[ZX81]] и [[Timex Sinclair 1000]], имевших 8 КБ ПЗУ, интерпретатор был улучшен, и в версии для компьютера [[ZX Spectrum]] с 16 КБ ПЗУ стал почти полной реализацией стандарта.
+
Изначально разработан в 1979 году, для размещения в 4 КБ [[ПЗУ]] компьютера [[ZX80]]. Эта версия представляла собой неполную реализацию минимального стандарта ANSI 1978 года. При адаптации для компьютеров [[ZX81]] и [[Timex Sinclair 1000]], имевших 8 КБ ПЗУ, интерпретатор был улучшен (в частности, добавлена поддержка вычислений с плавающей точкой), и в версии для компьютера [[ZX Spectrum]] с 16 КБ ПЗУ стал почти полной реализацией стандарта.
  
==Оригинальный Sinclair BASIC==
+
ПЗУ [[ZX Spectrum 128K]] содержит два варианта Sinclair BASIC — обычный вариант от ZX Spectrum 48K, иногда называемый BASIC48, сохранённый для совместимости с ранее разработанными программами, и расширенный вариант, называемый BASIC128.
[[Image:3DMAZE-line370-delay5-to-0.png|thumbnail|256px|Сессия редактирования в ZX81 BASIC]]
+
  
===Операторы===
+
При сбросе BASIC48 выполняет тестирование доступного объёма памяти (для поддержки компьютеров с 16 КБ и 48 КБ ОЗУ), сопровождаемое характерным графическим эффектом - устанавливается белый [[бордюр]] и чёрный фон рабочей области экрана; экран заполняется красными вертикальными полосками, которые быстро стираются сверху вниз; устанавливается белый фон рабочей области и чёрный цвет шрифта, выводится приглашение ''© 1982 Sinclair Research Ltd'', исчезающее после нажатия любой клавиши. Этот эффект намеренно имитируется в некоторых программах, в частности, в игре [[Logics]] ([[2001]]).
 +
 
 +
При сбросе BASIC128 красные полоски не появляются, после сброса появляется меню выбора режима работы.
 +
 
 +
== Оригинальный Sinclair BASIC ==
 +
=== Операторы ===
 
В версии для компьютера ZX Spectrum существует 86 операторов Sinclair BASIC, включая команды (50), <u>функции</u> (31), и ''другие ключевые слова'' (5):
 
В версии для компьютера ZX Spectrum существует 86 операторов Sinclair BASIC, включая команды (50), <u>функции</u> (31), и ''другие ключевые слова'' (5):
  
:<u>ABS</u>, <u>ACS</u>, <u>AND</u><sup><small>1</small></sup>, <u>ASN</u>, ''AT'', <u>ATN</u>, <u>ATTR</u>, BEEP, BIN, BORDER, BRIGHT, CAT<sup><small>2</small></sup>, <u>CHR$</u></u><sup><small>3</small></sup>, CIRCLE, CLEAR, CLOSE#<sup><small>2</small></sup>, CLS, <u>CODE</u><sup><small>3</small></sup>, CONTINUE, COPY, <u>COS</u>, DATA, DEF FN, DIM, DRAW, ERASE<sup><small>2</small></sup>, <u>EXP</u>, FLASH, <u>FN</u>, FOR, FORMAT<sup><small>2</small></sup>, GO SUB, GO TO, IF<sup><small>4</small></sup>, <u>IN</u>, INK, <u>INKEY$</u><sup><small>3</small></sup>, INPUT, <u>INT</u>, INVERSE, <u>LEN</u>, LET<sup><small>5</small></sup>, ''LINE'', LIST, LLIST, <u>LN</u>, LOAD, LPRINT, MERGE, MOVE<sup><small>2</small></sup>, NEW, NEXT, <u>NOT</u><sup><small>1</small></sup>, OPEN#<sup><small>2</small></sup>, <u>OR</u><sup><small>1</small></sup>, OUT, OVER, PAPER, PAUSE, <u>PEEK</u>, <u>PI</u>, PLOT, <u>POINT</u>, POKE, PRINT, RANDOMIZE, READ, REM, RESTORE, RETURN, <u>RND</u>, RUN, SAVE, <u>SCREEN$</u><sup><small>3</small></sup>, <u>SGN</u>, <u>SIN</u>, <u>SQR</u>, ''STEP'', <u>STR$</u><sup><small>3</small></sup>, ''TAB'', <u>TAN</u>, ''THEN'' <sup><small>4</small></sup>, <u>TO</u>, <u>USR</u>, <u>VAL</u><sup><small>3, 6</small></sup>, <u>VAL$</u><sup><small>3</small></sup>, VERIFY
+
:<u>ABS</u>, <u>ACS</u>, <u>AND</u><sup><small>1</small></sup>, <u>ASN</u>, ''AT'', <u>ATN</u>, <u>ATTR</u>, BEEP, BIN, BORDER, BRIGHT, CAT<sup><small>2</small></sup>, <u>CHR$</u><sup><small>3</small></sup>, CIRCLE, CLEAR, CLOSE#<sup><small>2</small></sup>, CLS, <u>CODE</u><sup><small>3</small></sup>, CONTINUE, COPY, <u>COS</u>, DATA, DEF FN, DIM, DRAW, ERASE<sup><small>2</small></sup>, <u>EXP</u>, FLASH, <u>FN</u>, FOR, FORMAT<sup><small>2</small></sup>, GO SUB, GO TO, IF<sup><small>4</small></sup>, <u>IN</u>, INK, <u>INKEY$</u><sup><small>3</small></sup>, INPUT, <u>INT</u>, INVERSE, <u>LEN</u>, LET<sup><small>5</small></sup>, ''LINE'', LIST, LLIST, <u>LN</u>, LOAD, LPRINT, MERGE, MOVE<sup><small>2</small></sup>, NEW, NEXT, <u>NOT</u><sup><small>1</small></sup>, OPEN#<sup><small>2</small></sup>, <u>OR</u><sup><small>1</small></sup>, OUT, OVER, PAPER, PAUSE, <u>PEEK</u>, <u>PI</u>, PLOT, <u>POINT</u>, POKE, PRINT, RANDOMIZE, READ, REM, RESTORE, RETURN, <u>RND</u>, RUN, SAVE, <u>SCREEN$</u><sup><small>3</small></sup>, <u>SGN</u>, <u>SIN</u>, <u>SQR</u>, ''STEP'', <u>STR$</u><sup><small>3</small></sup>, ''TAB'', <u>TAN</u>, ''THEN'' <sup><small>4</small></sup>, <u>TO</u>, <u>USR</u>, <u>VAL</u><sup><small>3, 6</small></sup>, <u>VAL$</u><sup><small>3</small></sup>, VERIFY
  
 
Операторы, присутствующие только в версиях для ZX81, и его клонов TS1000 и [[TS1500]]:
 
Операторы, присутствующие только в версиях для ZX81, и его клонов TS1000 и [[TS1500]]:
Строка 19: Строка 23:
 
:PLAY, SPECTRUM
 
:PLAY, SPECTRUM
  
===Примечания===
+
=== Примечания ===
 
# Функции AND, NOT, и OR являются логическими операторами.
 
# Функции AND, NOT, и OR являются логическими операторами.
 
# CAT, CLOSE#, ERASE, FORMAT, MOVE, и OPEN# являются командами для работы с файлами на устройстве хранения данных [[ZX Microdrive]], при попытке использования без наличия такого устройства (или дисковой системы, поддерживающей эти команды) приводят к ошибке.
 
# CAT, CLOSE#, ERASE, FORMAT, MOVE, и OPEN# являются командами для работы с файлами на устройстве хранения данных [[ZX Microdrive]], при попытке использования без наличия такого устройства (или дисковой системы, поддерживающей эти команды) приводят к ошибке.
Строка 29: Строка 33:
 
В отличии от диалектов BASIC для бытовых компьютеров, подобных Microsoft BASIC, где для доступа к фрагментам строк используются функции LEFT$(), MID$() и RIGHT$(), Sinclair BASIC использует способ, подобный работе с массивами. Например, «A$ (5 TO 10) » вернёт подстроку, начинающуюся с пятого, и кончающуюся десятым символом строковой переменной A$.
 
В отличии от диалектов BASIC для бытовых компьютеров, подобных Microsoft BASIC, где для доступа к фрагментам строк используются функции LEFT$(), MID$() и RIGHT$(), Sinclair BASIC использует способ, подобный работе с массивами. Например, «A$ (5 TO 10) » вернёт подстроку, начинающуюся с пятого, и кончающуюся десятым символом строковой переменной A$.
  
==Timex BASIC==
+
== Timex BASIC ==
 
+
 
'''Timex BASIC''' - диалект, используемый на Spectrum-совместимом компьютере [[Timex Sinclair 2068]] (но не [[Timex Sinclair 2048]], который использует обычный Sinclair BASIC). Помимо стандартных операторов Sinclair BASIC, имеет шесть дополнительных:
 
'''Timex BASIC''' - диалект, используемый на Spectrum-совместимом компьютере [[Timex Sinclair 2068]] (но не [[Timex Sinclair 2048]], который использует обычный Sinclair BASIC). Помимо стандартных операторов Sinclair BASIC, имеет шесть дополнительных:
  
 
:DELETE, <u>FREE</u>, ON ERR, RESET, SOUND, <u>STICK</u>
 
:DELETE, <u>FREE</u>, ON ERR, RESET, SOUND, <u>STICK</u>
  
==Расширения и варианты==
+
== Расширения и варианты ==
*[[128 BASIC]] - версия бейсика для ZX Spectrum 128
+
*128 BASIC - версия бейсика для ZX Spectrum 128, отличается экранным редактором (без токенов) и наличием двух дополнительных операторов
 
*[[Beta BASIC]], разработанный Dr. Andy Wright, изначально являлся расширением Sinclair BASIC, но в итоге стал полноценным интерпретатором.
 
*[[Beta BASIC]], разработанный Dr. Andy Wright, изначально являлся расширением Sinclair BASIC, но в итоге стал полноценным интерпретатором.
*[[Laser BASIC]]
+
*[[Laser Basic]]
*[[Mega BASIC]]
+
*[[YS MegaBasic]]
 
*[[SAM BASIC]], также разработанный Dr. Andy Wright, являлся интерпретатором BASIC для компьютера [[SAM Coupe]], и имел обратную совместимость с версией Sinclair BASIC для ZX Spectrum.
 
*[[SAM BASIC]], также разработанный Dr. Andy Wright, являлся интерпретатором BASIC для компьютера [[SAM Coupe]], и имел обратную совместимость с версией Sinclair BASIC для ZX Spectrum.
 
*[[Sinclair Extended BASIC]] является развивающимся ретро-проектом, целью которого является создание улучшенной версии Sinclair BASIC (бета-версия доступна на момент 2005 июля).
 
*[[Sinclair Extended BASIC]] является развивающимся ретро-проектом, целью которого является создание улучшенной версии Sinclair BASIC (бета-версия доступна на момент 2005 июля).
 
*Версии [[ПЗУ]] Basic 48 1987, 1990, 1991 годов ((c)RaK), содержащие исправления ошибок, добавляющие теневой монитор и турбо-загрузчик с ленты.
 
*Версии [[ПЗУ]] Basic 48 1987, 1990, 1991 годов ((c)RaK), содержащие исправления ошибок, добавляющие теневой монитор и турбо-загрузчик с ленты.
==Компиляторы==
+
 
*[[ToBoS Fp]] - компилятор с поддержкой плавающей точки
+
== Компиляторы ==
 +
*[[ToBoS FP]] - компилятор с поддержкой плавающей точки
 
*[[MCoder]] - серия целочисленных компиляторов
 
*[[MCoder]] - серия целочисленных компиляторов
 
*[[HiSoft Colt Compiler]]
 
*[[HiSoft Colt Compiler]]
 
*[[Integer Compiler]] и [[Softek FP]]
 
*[[Integer Compiler]] и [[Softek FP]]
  
==Источники==
+
== Скриншоты ==
 +
 
 +
{|
 +
|[[Image:Sinclair_Basic_ZX81.gif|thumb|320px|Сессия редактирования в ZX81 BASIC]]
 +
|[[Image:Sinclair_Basic_Reset.gif|thumb|320px|Анимация сброса в BASIC48]]
 +
|[[Image:Sinclair_Basic_128K_Menu.gif|thumb|320px|Меню ZX Spectrum 128K]]
 +
|}
 +
 
 +
== Источники ==
 
*Vickers, Steven (1982). ''Sinclar ZX Spectrum BASIC Programming''. Sinclair Research.
 
*Vickers, Steven (1982). ''Sinclar ZX Spectrum BASIC Programming''. Sinclair Research.
 
*Ardley, Neil (1984). ''Sinclair ZX Spectrum+ User Guide''. [[Dorling Kindersley]] совместно с Sinclair Research. ISBN 0-86318-080-9.
 
*Ardley, Neil (1984). ''Sinclair ZX Spectrum+ User Guide''. [[Dorling Kindersley]] совместно с Sinclair Research. ISBN 0-86318-080-9.
  
==Ссылки==
+
== См. также ==
*[http://www.worldofspectrum.org/ZXBasicManual/ Sinclar ZX Spectrum BASIC Programming] — Оригинальная инструкция 1982 года, написанная Steven Vickers (упоминается выше)
+
*[[BASin]] — пакет для [[кросс-средства|кросс-разработки]] программ на Sinclair BASIC
 +
*[[OpenSE Basic]] - альтернативная прошивка
 +
 
 +
== Ссылки ==
 +
*[http://www.worldofspectrum.org/sinclairbasic/history.html The History of Sinclair BASIC] — от [[Andrew Owen]], чья документация по Sinclair BASIC размещена на сайте [[World of Spectrum]]
 +
*[http://www.worldofspectrum.org/ZXBasicManual/ Sinclair ZX Spectrum BASIC Programming] — оригинальная инструкция 1982 года, написанная Стивеном Викерсом (упоминается выше)
 
*[http://www.worldofspectrum.org/ZX81BasicProgramming/ Sinclair ZX81 Basic Programming] — также написан Vickers
 
*[http://www.worldofspectrum.org/ZX81BasicProgramming/ Sinclair ZX81 Basic Programming] — также написан Vickers
*[http://www.worldofspectrum.org/sinclairbasic/history.html The History of Sinclair BASIC] — от Andrew Owen, чья документация по Sinclair BASIC размещена на сайте World of Spectrum
 
  
 
[[Категория:Языки программирования]]
 
[[Категория:Языки программирования]]

Текущая версия на 20:04, 2 октября 2015

Sinclair BASIC (назван по фамилии Клайва Синклера) — диалект языка программирования BASIC, применявшийся на 8-разрядных компьютерах производства Sinclair Research и Timex Sinclair. Интерпретатор Sinclair BASIC разработан компанией Nine Tiles Networks (разработкой версии для ZX Spectrum занимался Стивен Викерс).

Изначально разработан в 1979 году, для размещения в 4 КБ ПЗУ компьютера ZX80. Эта версия представляла собой неполную реализацию минимального стандарта ANSI 1978 года. При адаптации для компьютеров ZX81 и Timex Sinclair 1000, имевших 8 КБ ПЗУ, интерпретатор был улучшен (в частности, добавлена поддержка вычислений с плавающей точкой), и в версии для компьютера ZX Spectrum с 16 КБ ПЗУ стал почти полной реализацией стандарта.

ПЗУ ZX Spectrum 128K содержит два варианта Sinclair BASIC — обычный вариант от ZX Spectrum 48K, иногда называемый BASIC48, сохранённый для совместимости с ранее разработанными программами, и расширенный вариант, называемый BASIC128.

При сбросе BASIC48 выполняет тестирование доступного объёма памяти (для поддержки компьютеров с 16 КБ и 48 КБ ОЗУ), сопровождаемое характерным графическим эффектом - устанавливается белый бордюр и чёрный фон рабочей области экрана; экран заполняется красными вертикальными полосками, которые быстро стираются сверху вниз; устанавливается белый фон рабочей области и чёрный цвет шрифта, выводится приглашение © 1982 Sinclair Research Ltd, исчезающее после нажатия любой клавиши. Этот эффект намеренно имитируется в некоторых программах, в частности, в игре Logics (2001).

При сбросе BASIC128 красные полоски не появляются, после сброса появляется меню выбора режима работы.

Оригинальный Sinclair BASIC

Операторы

В версии для компьютера ZX Spectrum существует 86 операторов Sinclair BASIC, включая команды (50), функции (31), и другие ключевые слова (5):

ABS, ACS, AND1, ASN, AT, ATN, ATTR, BEEP, BIN, BORDER, BRIGHT, CAT2, CHR$3, CIRCLE, CLEAR, CLOSE#2, CLS, CODE3, CONTINUE, COPY, COS, DATA, DEF FN, DIM, DRAW, ERASE2, EXP, FLASH, FN, FOR, FORMAT2, GO SUB, GO TO, IF4, IN, INK, INKEY$3, INPUT, INT, INVERSE, LEN, LET5, LINE, LIST, LLIST, LN, LOAD, LPRINT, MERGE, MOVE2, NEW, NEXT, NOT1, OPEN#2, OR1, OUT, OVER, PAPER, PAUSE, PEEK, PI, PLOT, POINT, POKE, PRINT, RANDOMIZE, READ, REM, RESTORE, RETURN, RND, RUN, SAVE, SCREEN$3, SGN, SIN, SQR, STEP, STR$3, TAB, TAN, THEN 4, TO, USR, VAL3, 6, VAL$3, VERIFY

Операторы, присутствующие только в версиях для ZX81, и его клонов TS1000 и TS1500:

FAST, SCROLL, SLOW, UNPLOT, GOSUB, GOTO (вместо GO SUB, GO TO в версии для ZX Spectrum)

В версии интерпретатора для 128K моделей (Spectrum 128K, Spectrum +2, +3, +2A, and +2B) было добавлено два оператора:

PLAY, SPECTRUM

Примечания

  1. Функции AND, NOT, и OR являются логическими операторами.
  2. CAT, CLOSE#, ERASE, FORMAT, MOVE, и OPEN# являются командами для работы с файлами на устройстве хранения данных ZX Microdrive, при попытке использования без наличия такого устройства (или дисковой системы, поддерживающей эти команды) приводят к ошибке.
  3. Имена строковых переменных могут содержать только одну букву.
    Таким образом, команды «LET A=5», «LET Apples=5», и «LET A$="Hello"» являются правильными, но «LET APPLES$="Fruit"» будет ошибочной.
  4. Оператор ELSE в IF–THEN(–ELSE) условиях не предусмотрен.
    Таким образом, вместо кода
       10 IF V=5 THEN GO TO 50 ELSE GO TO 100
    нужно использовать
       10 IF V=5 THEN GO TO 50
       20 GO TO 100
  5. Оператор LET является обязательным (то есть, нужно использовать «LET A=1», но не «A=1»); что является заметным отличием от большинства диалектов языка BASIC.
  6. Функция VAL обрабатывает не только числа, но и выражения. Например, «PRINT VAL(A$)», где строка A$ содержит "3*3+4+COS(0)". выведет число 14.

В отличии от диалектов BASIC для бытовых компьютеров, подобных Microsoft BASIC, где для доступа к фрагментам строк используются функции LEFT$(), MID$() и RIGHT$(), Sinclair BASIC использует способ, подобный работе с массивами. Например, «A$ (5 TO 10) » вернёт подстроку, начинающуюся с пятого, и кончающуюся десятым символом строковой переменной A$.

Timex BASIC

Timex BASIC - диалект, используемый на Spectrum-совместимом компьютере Timex Sinclair 2068 (но не Timex Sinclair 2048, который использует обычный Sinclair BASIC). Помимо стандартных операторов Sinclair BASIC, имеет шесть дополнительных:

DELETE, FREE, ON ERR, RESET, SOUND, STICK

Расширения и варианты

  • 128 BASIC - версия бейсика для ZX Spectrum 128, отличается экранным редактором (без токенов) и наличием двух дополнительных операторов
  • Beta BASIC, разработанный Dr. Andy Wright, изначально являлся расширением Sinclair BASIC, но в итоге стал полноценным интерпретатором.
  • Laser Basic
  • YS MegaBasic
  • SAM BASIC, также разработанный Dr. Andy Wright, являлся интерпретатором BASIC для компьютера SAM Coupe, и имел обратную совместимость с версией Sinclair BASIC для ZX Spectrum.
  • Sinclair Extended BASIC является развивающимся ретро-проектом, целью которого является создание улучшенной версии Sinclair BASIC (бета-версия доступна на момент 2005 июля).
  • Версии ПЗУ Basic 48 1987, 1990, 1991 годов ((c)RaK), содержащие исправления ошибок, добавляющие теневой монитор и турбо-загрузчик с ленты.

Компиляторы

Скриншоты

Сессия редактирования в ZX81 BASIC
Анимация сброса в BASIC48
Меню ZX Spectrum 128K

Источники

  • Vickers, Steven (1982). Sinclar ZX Spectrum BASIC Programming. Sinclair Research.
  • Ardley, Neil (1984). Sinclair ZX Spectrum+ User Guide. Dorling Kindersley совместно с Sinclair Research. ISBN 0-86318-080-9.

См. также

Ссылки