Sinclair BASIC — различия между версиями
Alone (обсуждение | вклад) |
Zxdn (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
Изначально разработан в 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. |
+ | |||
+ | При сбросе BASIC48 выполняет тестирование доступного объёма памяти (для поддержки компьютеров с 16 КБ и 48 КБ ОЗУ), сопровождаемое характерным графическим эффектом - устанавливается белый [[бордюр]] и чёрный фон рабочей области экрана; экран заполняется красными вертикальными полосками, которые быстро стираются сверху вниз; устанавливается белый фон рабочей области и чёрный цвет шрифта, выводится приглашение ''(C) 1982 Sinclair Research Ltd'', исчезающее после нажатия любой клавиши. Этот эффект намеренно имитируется в некоторых программах, в частности, в игре [[Logics]] ([[2001]]). | ||
+ | |||
+ | При сбросе BASIC128 красные полоски не появляются, после сброса появляется меню выбора режима работы. | ||
+ | |||
+ | == Оригинальный Sinclair BASIC == | ||
[[Image:3DMAZE-line370-delay5-to-0.png|thumbnail|256px|Сессия редактирования в ZX81 BASIC]] | [[Image:3DMAZE-line370-delay5-to-0.png|thumbnail|256px|Сессия редактирования в ZX81 BASIC]] | ||
− | ===Операторы=== | + | === Операторы === |
В версии для компьютера ZX Spectrum существует 86 операторов Sinclair BASIC, включая команды (50), <u>функции</u> (31), и ''другие ключевые слова'' (5): | В версии для компьютера ZX Spectrum существует 86 операторов Sinclair BASIC, включая команды (50), <u>функции</u> (31), и ''другие ключевые слова'' (5): | ||
Строка 19: | Строка 25: | ||
: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: | Строка 35: | ||
В отличии от диалектов 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, но в итоге стал полноценным интерпретатором. | ||
Строка 43: | Строка 49: | ||
*Версии [[ПЗУ]] Basic 48 1987, 1990, 1991 годов ((c)RaK), содержащие исправления ошибок, добавляющие теневой монитор и турбо-загрузчик с ленты. | *Версии [[ПЗУ]] Basic 48 1987, 1990, 1991 годов ((c)RaK), содержащие исправления ошибок, добавляющие теневой монитор и турбо-загрузчик с ленты. | ||
− | ==Компиляторы== | + | == Компиляторы == |
*[[ToBoS Fp]] - компилятор с поддержкой плавающей точки | *[[ToBoS Fp]] - компилятор с поддержкой плавающей точки | ||
*[[MCoder]] - серия целочисленных компиляторов | *[[MCoder]] - серия целочисленных компиляторов | ||
Строка 49: | Строка 55: | ||
*[[Integer Compiler]] и [[Softek FP]] | *[[Integer Compiler]] и [[Softek FP]] | ||
− | ==Источники== | + | == Источники == |
*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 года, написанная Стивеном Викерсом (упоминается выше) | *[http://www.worldofspectrum.org/ZXBasicManual/ Sinclar 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 |
Версия 04:35, 1 августа 2008
Sinclair BASIC (назван по фамилии Клайва Синклера) - диалект BASIC'а, применявшийся на 8-разрядных компьютерах производства Sinclair Research и Timex Sinclair. Интерпретатор Sinclair BASIC разработан компанией Nine Tiles Networks Ltd (разработкой версии для ZX Spectrum занимался Стивен Викерс - Steven Vickers).
Изначально разработан в 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 КБ ОЗУ), сопровождаемое характерным графическим эффектом - устанавливается белый бордюр и чёрный фон рабочей области экрана; экран заполняется красными вертикальными полосками, которые быстро стираются сверху вниз; устанавливается белый фон рабочей области и чёрный цвет шрифта, выводится приглашение (C) 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
Примечания
- Функции AND, NOT, и OR являются логическими операторами.
- CAT, CLOSE#, ERASE, FORMAT, MOVE, и OPEN# являются командами для работы с файлами на устройстве хранения данных ZX Microdrive, при попытке использования без наличия такого устройства (или дисковой системы, поддерживающей эти команды) приводят к ошибке.
- Имена строковых переменных могут содержать только одну букву.
Таким образом, команды «LET A=5», «LET Apples=5», и «LET A$="Hello"» являются правильными, но «LET APPLES$="Fruit"» будет ошибочной. - Оператор 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 - Оператор LET является обязательным (то есть, нужно использовать «LET A=1», но не «A=1»); что является заметным отличием от большинства диалектов языка BASIC.
- Функция 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), содержащие исправления ошибок, добавляющие теневой монитор и турбо-загрузчик с ленты.
Компиляторы
- ToBoS Fp - компилятор с поддержкой плавающей точки
- MCoder - серия целочисленных компиляторов
- HiSoft Colt Compiler
- Integer Compiler и Softek FP
Источники
- 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.
Ссылки
- Sinclar ZX Spectrum BASIC Programming — оригинальная инструкция 1982 года, написанная Стивеном Викерсом (упоминается выше)
- Sinclair ZX81 Basic Programming — также написан Vickers
- The History of Sinclair BASIC — от Andrew Owen, чья документация по Sinclair BASIC размещена на сайте World of Spectrum