Sinclair BASIC

Поделись знанием:
Перейти к: навигация, поиск

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

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





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

Операторы

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

ABS, ACS, AND¹, ASN, AT, ATN, ATTR, BEEP, BIN, BORDER, BRIGHT, CAT², CHR$</u>³, CIRCLE, CLEAR, CLOSE#², CLS, CODE³, CONTINUE, COPY, COS, DATA, DEF FN, DIM, DRAW, ERASE², EXP, FLASH, FN, FOR, FORMAT², GO SUB, GO TO, IF4, IN, INK, INKEY$³, INPUT, INT, INVERSE, LEN, LET5, LINE, LIST, LLIST, LN, LOAD, LPRINT, MERGE, MOVE², NEW, NEXT, NOT¹, OPEN#², OR¹, OUT, OVER, PAPER, PAUSE, PEEK, PI, PLOT, POINT, POKE, PRINT, RANDOMIZE, READ, REM, RESTORE, RETURN, RND, RUN, SAVE, SCREEN$³, SGN, SIN, SQR, STEP, STR$³, TAB, TAN, THEN 4, TO, USR, VAL3, 6, VAL$³, VERIFY

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

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

В версии интерпретатора для 128K моделей (Spectrum 128K, Spectrum +2, +3, +2A и +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 — диалект, используемый на Spectrum-совместимом компьютере TS2068 (но не TS2048, который использует обычный Sinclair BASIC). Помимо стандартных операторов Sinclair BASIC, имеет шесть дополнительных: DELETE, FREE, ON ERR, RESET, SOUND, STICK.
  • Beta BASIC[en], расширение Sinclair BASIC выпущенное в 1983 году, разработчик — Dr. Andy Wright из компании BetaSOFT[1]. Распространено мнение о том, что это полноценный интерпретатор аргументированное тем, что имеется собственный редактор программ. На самом деле Beta BASIC (как и остальные расширения) не позволяет создавать программы работающие без загрузки кода Beta BASIC и использует процедуры ПЗУ (Sinclair BASIC).
  • YS MegaBasic[en] — разработано в 1984 году[2], Майком Лименом (англ. Mike Leaman) из компании Your Spectrum, имеет операторы while, repeat, until, команды для управления набором спрайтов. Расширение нацелено на облегчение создание игровых и учебных программ. Сопровождалось программой Sprite Designer для создания спрайтов.
  • PRO-DOS, расширение разработанное компанией HJB в 1985 году.
  • Laser BASIC, расширение разработанное Oasis Software в 1986 году[3]. Предназначалось специально для создания игровых программ, в каком качестве и стало популярно (из отечественных, на этом языке написана игра «Подкидной дурак» от Вячеслава Медноногова[4]). Этот Бейсик входил в пакет Laser Compact, также включавший впечатляющие demo-программы и компилятор Бейсика Laser Compiler.
  • SAM BASIC, также разработанный Dr. Andy Wright, являлся интерпретатором BASIC для компьютера SAM Coupé, и имел обратную совместимость с версией Sinclair BASIC для ZX Spectrum.
  • Show, расширение предназначенное не для программирования, а для создания простых презентационных роликов. Содержит демонстрационную программу. Дополнительные операторы позволяют создавать бегущие строки и надписи скроллирующиеся в любом направлении и выводимые разными шрифтами. Расширение оказалось востребованным студиями кабельного телевидения выводившими таким образом свою программу на день. Имеет версию адаптированную для IS-DOS.К:Википедия:Статьи без источников (тип: не указан)[источник не указан 2945 дней]
  • Sinclair Extended BASIC является развивающимся ретро-проектом, целью которого является создание улучшенной версии Sinclair BASIC (бета-версия доступна на момент 2005 июля).

Источники

  • 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.
  • [zxpress.ru/book.php?id=6 Диалекты бейсика для ZX Spectrum]. — Питер, 1992. — ISBN 5-7190-0001-1.

Напишите отзыв о статье "Sinclair BASIC"

Ссылки

  • [www.worldofspectrum.org/ZXBasicManual/ Sinclar ZX Spectrum BASIC Programming] — Оригинальная инструкция 1982 года, написанная Стивом Викерсом[en] (англ. Steven Vickers).
  • [www.worldofspectrum.org/ZX81BasicProgramming/ Sinclair ZX81 Basic Programming] — также написан Стивом Викерсом.
  • [www.worldofspectrum.org/sinclairbasic/history.html The History of Sinclair BASIC] — от Andrew Owen, чья документация по Sinclair BASIC размещена на сайте World of Spectrum.
  • [www.users.globalnet.co.uk/~jg27paw4/pourri/megtitle.htm YS MegaBasic manual] — Руководство пользователя интерпретатора MegaBasic от журнала Your Spectrum.
  • Basinc — эмулятор для Windows.
  • [www.youtube.com/watch?v=XPRzcjOP40Y Уроки изучения бейсика (ZX-Spectrum)] на YouTube канале (Блоги и обзоры советского радио).

Примечания

  1. [www.worldofspectrum.org/infoseekid.cgi?id=0007956 Beta Basic] на сайте World of Spectrum
  2. [www.worldofspectrum.org/infoseekid.cgi?id=0008997 YS MegaBasic] на сайте World of Spectrum
  3. [www.worldofspectrum.org/infoseekid.cgi?id=0008327 Laser Basic] на сайте World of Spectrum
  4. [zx-pk.ru/showthread.php?t=2593 «Спектрум. Возникновение» (Vega)]


Отрывок, характеризующий Sinclair BASIC

Он тронул лошадь и, подозвав к себе начальника колонны Милорадовича, передал ему приказание к наступлению.
Войско опять зашевелилось, и два батальона Новгородского полка и батальон Апшеронского полка тронулись вперед мимо государя.
В то время как проходил этот Апшеронский батальон, румяный Милорадович, без шинели, в мундире и орденах и со шляпой с огромным султаном, надетой набекрень и с поля, марш марш выскакал вперед и, молодецки салютуя, осадил лошадь перед государем.
– С Богом, генерал, – сказал ему государь.
– Ma foi, sire, nous ferons ce que qui sera dans notre possibilite, sire, [Право, ваше величество, мы сделаем, что будет нам возможно сделать, ваше величество,] – отвечал он весело, тем не менее вызывая насмешливую улыбку у господ свиты государя своим дурным французским выговором.
Милорадович круто повернул свою лошадь и стал несколько позади государя. Апшеронцы, возбуждаемые присутствием государя, молодецким, бойким шагом отбивая ногу, проходили мимо императоров и их свиты.
– Ребята! – крикнул громким, самоуверенным и веселым голосом Милорадович, видимо, до такой степени возбужденный звуками стрельбы, ожиданием сражения и видом молодцов апшеронцев, еще своих суворовских товарищей, бойко проходивших мимо императоров, что забыл о присутствии государя. – Ребята, вам не первую деревню брать! – крикнул он.
– Рады стараться! – прокричали солдаты.
Лошадь государя шарахнулась от неожиданного крика. Лошадь эта, носившая государя еще на смотрах в России, здесь, на Аустерлицком поле, несла своего седока, выдерживая его рассеянные удары левой ногой, настораживала уши от звуков выстрелов, точно так же, как она делала это на Марсовом поле, не понимая значения ни этих слышавшихся выстрелов, ни соседства вороного жеребца императора Франца, ни всего того, что говорил, думал, чувствовал в этот день тот, кто ехал на ней.
Государь с улыбкой обратился к одному из своих приближенных, указывая на молодцов апшеронцев, и что то сказал ему.


Кутузов, сопутствуемый своими адъютантами, поехал шагом за карабинерами.
Проехав с полверсты в хвосте колонны, он остановился у одинокого заброшенного дома (вероятно, бывшего трактира) подле разветвления двух дорог. Обе дороги спускались под гору, и по обеим шли войска.
Туман начинал расходиться, и неопределенно, верстах в двух расстояния, виднелись уже неприятельские войска на противоположных возвышенностях. Налево внизу стрельба становилась слышнее. Кутузов остановился, разговаривая с австрийским генералом. Князь Андрей, стоя несколько позади, вглядывался в них и, желая попросить зрительную трубу у адъютанта, обратился к нему.
– Посмотрите, посмотрите, – говорил этот адъютант, глядя не на дальнее войско, а вниз по горе перед собой. – Это французы!
Два генерала и адъютанты стали хвататься за трубу, вырывая ее один у другого. Все лица вдруг изменились, и на всех выразился ужас. Французов предполагали за две версты от нас, а они явились вдруг, неожиданно перед нами.
– Это неприятель?… Нет!… Да, смотрите, он… наверное… Что ж это? – послышались голоса.
Князь Андрей простым глазом увидал внизу направо поднимавшуюся навстречу апшеронцам густую колонну французов, не дальше пятисот шагов от того места, где стоял Кутузов.
«Вот она, наступила решительная минута! Дошло до меня дело», подумал князь Андрей, и ударив лошадь, подъехал к Кутузову. «Надо остановить апшеронцев, – закричал он, – ваше высокопревосходительство!» Но в тот же миг всё застлалось дымом, раздалась близкая стрельба, и наивно испуганный голос в двух шагах от князя Андрея закричал: «ну, братцы, шабаш!» И как будто голос этот был команда. По этому голосу всё бросилось бежать.
Смешанные, всё увеличивающиеся толпы бежали назад к тому месту, где пять минут тому назад войска проходили мимо императоров. Не только трудно было остановить эту толпу, но невозможно было самим не податься назад вместе с толпой.
Болконский только старался не отставать от нее и оглядывался, недоумевая и не в силах понять того, что делалось перед ним. Несвицкий с озлобленным видом, красный и на себя не похожий, кричал Кутузову, что ежели он не уедет сейчас, он будет взят в плен наверное. Кутузов стоял на том же месте и, не отвечая, доставал платок. Из щеки его текла кровь. Князь Андрей протеснился до него.
– Вы ранены? – спросил он, едва удерживая дрожание нижней челюсти.
– Раны не здесь, а вот где! – сказал Кутузов, прижимая платок к раненой щеке и указывая на бегущих. – Остановите их! – крикнул он и в то же время, вероятно убедясь, что невозможно было их остановить, ударил лошадь и поехал вправо.
Вновь нахлынувшая толпа бегущих захватила его с собой и повлекла назад.
Войска бежали такой густой толпой, что, раз попавши в середину толпы, трудно было из нее выбраться. Кто кричал: «Пошел! что замешкался?» Кто тут же, оборачиваясь, стрелял в воздух; кто бил лошадь, на которой ехал сам Кутузов. С величайшим усилием выбравшись из потока толпы влево, Кутузов со свитой, уменьшенной более чем вдвое, поехал на звуки близких орудийных выстрелов. Выбравшись из толпы бегущих, князь Андрей, стараясь не отставать от Кутузова, увидал на спуске горы, в дыму, еще стрелявшую русскую батарею и подбегающих к ней французов. Повыше стояла русская пехота, не двигаясь ни вперед на помощь батарее, ни назад по одному направлению с бегущими. Генерал верхом отделился от этой пехоты и подъехал к Кутузову. Из свиты Кутузова осталось только четыре человека. Все были бледны и молча переглядывались.
– Остановите этих мерзавцев! – задыхаясь, проговорил Кутузов полковому командиру, указывая на бегущих; но в то же мгновение, как будто в наказание за эти слова, как рой птичек, со свистом пролетели пули по полку и свите Кутузова.
Французы атаковали батарею и, увидав Кутузова, выстрелили по нем. С этим залпом полковой командир схватился за ногу; упало несколько солдат, и подпрапорщик, стоявший с знаменем, выпустил его из рук; знамя зашаталось и упало, задержавшись на ружьях соседних солдат.
Солдаты без команды стали стрелять.
– Ооох! – с выражением отчаяния промычал Кутузов и оглянулся. – Болконский, – прошептал он дрожащим от сознания своего старческого бессилия голосом. – Болконский, – прошептал он, указывая на расстроенный батальон и на неприятеля, – что ж это?
Но прежде чем он договорил эти слова, князь Андрей, чувствуя слезы стыда и злобы, подступавшие ему к горлу, уже соскакивал с лошади и бежал к знамени.
– Ребята, вперед! – крикнул он детски пронзительно.
«Вот оно!» думал князь Андрей, схватив древко знамени и с наслаждением слыша свист пуль, очевидно, направленных именно против него. Несколько солдат упало.
– Ура! – закричал князь Андрей, едва удерживая в руках тяжелое знамя, и побежал вперед с несомненной уверенностью, что весь батальон побежит за ним.