Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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, которые также являются командами или функциями):

ZX Spectrum +

Ввод ключевого слова [ править ]

В моделях 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=1a=1SIN xSIN(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 моделей 128k
  • SPECTRUM, который переключил 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=5LET Apples=5LET a$="Hello"DIM a(10)DIM a$(10)LET Apples$="Fruit"DIM Apples(10)DIM Apples$(10)

Длинные имена переменных, разрешенные для числовых переменных, могут включать буквенно-цифровые символы после первого символа, поэтому разрешено, но не разрешено . Длинные имена переменных могут также включать в себя пробелы, которые игнорируются, так что аналогичноLET a0=5LET 0a=5LET number of apples = 5LET 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 и клоны

Заметки [ править ]

  1. ^ Необязательные параметры заключены в [квадратные скобки]
  2. ^ Предполагается, что компьютер находится в режиме  K  (ключевое слово), который обычно находится в начале строки при входе в BASIC. На Spectrum 16K и 48K в расширенный режим можно войтиодновременнымнажатиемCAPS SHIFTи,SYMBOL SHIFTа неEXTENDED MODEклавишей, которая присутствует на Spectrum + и более поздних моделях.
  3. ^ a b c «Ложь» в Sinclair BASIC равняется 0 (нулю), все остальное - «истина». Таким образом, функции, возвращающие истинные или ложные значения, фактически возвращают 0 для ложных и 1 для истинных, в то время как ANDобычно возвращают первое из условий, предоставленных для истины, или 1, если числовые значения не заданы. Например, 6 AND 7возвращает 6, а NOT 6=7возвращает 1.
  4. ^ a b c Доступные номера цветов:

    Во всех командах, связанных с цветом, цифра 8 может использоваться для обозначения «прозрачности» при включении, INKа PAPERтакже может быть установлена ​​на 9 для «контраста», то есть для автоматического добавления темного цвета на светлом фоне или наоборот.

  5. ^ Б с д е е INK , PAPER, FLASH, BRIGHT, OVERи INVERSEнабор атрибутов для вывода текста и графики на экране. Их можно использовать либо как команды, чтобы применять ко всем последующим выводам до тех пор, пока они не будут установлены снова, либо внутри PRINTоператора, чтобы применять только с этой точки до конца оператора.
  6. ^ Б с д е е CAT , ERASE, FORMATи MOVEпервоначально были разработаны для использования с периферийными устройствами, но при запуске ZX Spectrum, они не были полностью реализованы таким образом, что их использование генерируется сообщение об ошибке (некорректный поток). Позже с помощью теневого ПЗУ ZX Interface 1 они использовались для ZX Microdrive . (Теневое ПЗУ было выгружено, когда интерпретатор BASIC обнаружил синтаксическую ошибку, поэтому в большинстве команд ZX Microdrive используется a "*").
  7. ^ a b В отличие от многих других диалектов BASIC, Sinclair Basic не включал ELSEоператор в предложение IF- THEN[- ELSE]. Обходным путем было бы использовать вместо этого конструкцию IF- THEN- GO TO, минуя строки, которые были бы в ELSEпредложении сGO TO
  8. ^ Память дисплея Spectrum начинается с адреса 16384 и имеет длину 6912 байт.
  9. ^ Строка внутри строки должна иметь двойные кавычки в Sinclair BASIC

Ссылки [ править ]

  1. Гарфилд, Саймон (28 февраля 2010 г.). «Сэр Клайв Синклер:« Я вообще не использую компьютер » » . Хранитель . Guardian Media Group . Проверено 23 мая 2011 . Он хочет отдать должное [...], не в последнюю очередь Nine Tiles, компании, создавшей операционное программное обеспечение Basic.
  2. ^ a b "ZX80 - ОБНОВЛЕНИЕ БАЗОВОГО ПЗУ 8K" .
  3. ^ а б в г Викерс 1983 , стр. 59.
  4. ↑ a b Vickers 1983 , p. 70.
  5. ^ a b c Vickers 1983 , стр. 85.
  6. Перейти ↑ Vickers 1983 , p. 69–70.
  7. ^ а б в г Викерс 1983 , стр. 101.
  8. Перейти ↑ Vickers 1983 , p. 116.
  9. Перейти ↑ Vickers 1983 , p. 135.
  10. ↑ a b Vickers 1983 , p. 93.
  11. Перейти ↑ Vickers 1983 , p. 113.
  12. Перейти ↑ Vickers 1983 , p. 110–111.
  13. Перейти ↑ Cambridge Communication 1983 , p. 15.
  14. ↑ a b Vickers 1983 , p. 91.
  15. ↑ a b Vickers 1983 , p. 123.
  16. ^ a b c Vickers 1983 , стр. 103.
  17. ^ http://www.worldofspectrum.org/ZXBasicManual/zxmanchap24.html
  18. Перейти ↑ Vickers 1983 , p. 168.
  19. Перейти ↑ Vickers 1983 , p. 19.
  20. ^ a b c Vickers 1983 , стр. 151.
  21. ↑ a b Vickers 1983 , p. 68.
  22. ↑ a b Vickers 1983 , p. 41.
  23. ^ a b c Vickers 1983 , стр. 142.
  24. ^ a b c Vickers 1983 , стр. 60.
  25. Перейти ↑ Vickers 1983 , p. 79–81.
  26. Перейти ↑ Vickers 1983 , p. 11–123.
  27. Перейти ↑ Cambridge Communication 1983 , p. 18.
  28. Перейти ↑ Vickers 1983 , p. 66.
  29. Перейти ↑ Cambridge Communication 1983 , p. 19.
  30. Перейти ↑ Vickers 1983 , p. 31.
  31. ↑ a b Vickers 1983 , p. 32.
  32. ↑ a b Vickers 1983 , p. 37.
  33. ↑ a b Vickers 1983 , p. 25.
  34. ↑ a b Vickers 1983 , p. 159.
  35. ↑ a b Vickers 1983 , p. 110.
  36. Перейти ↑ Vickers 1983 , p. 131.
  37. ^ а б в г Викерс 1983 , стр. 16.
  38. ↑ a b Vickers 1983 , p. 112.
  39. Перейти ↑ Vickers 1983 , p. 57.
  40. ↑ a b Vickers 1983 , p. 13.
  41. Перейти ↑ Vickers 1983 , p. 144.
  42. Перейти ↑ Vickers 1983 , p. 15.
  43. ↑ a b Vickers 1983 , p. 67.
  44. Перейти ↑ Vickers 1983 , p. 142–143.
  45. Перейти ↑ Vickers 1983 , p. 147.
  46. Перейти ↑ Cambridge Communication 1983 , p. 39.
  47. Перейти ↑ Vickers 1983 , p. 31–32.
  48. Перейти ↑ Cambridge Communication 1983 , p. 22.
  49. Перейти ↑ Vickers 1983 , p. 129.
  50. Перейти ↑ Vickers 1983 , p. 130.
  51. Перейти ↑ Vickers 1983 , p. 121.
  52. Перейти ↑ Vickers 1983 , p. 163.
  53. Перейти ↑ Vickers 1983 , p. 74.
  54. Перейти ↑ Vickers 1983 , p. 42.
  55. Перейти ↑ Vickers 1983 , p. 73.
  56. ↑ a b Vickers 1983 , p. 14.
  57. Перейти ↑ Vickers 1983 , p. 143.
  58. Перейти ↑ Vickers 1983 , p. 58.
  59. Перейти ↑ Vickers 1983 , p. 69.
  60. Перейти ↑ Vickers 1983 , p. 32, 51.
  61. Перейти ↑ Vickers 1983 , p. 180.
  62. Перейти ↑ Vickers 1983 .
  63. Перейти ↑ Vickers 1983 , p. 141.
  64. Перейти ↑ Vickers 1983 , p. 7–8.
  65. ^ "Изображение ZX80" .
  66. ^ Разборка ПЗУ Spectrum 128 - Испанский Spectrum 128
  67. ^ a b http://www.worldofspectrum.org/ZXSpectrum128+3Manual/chapter7.html
  68. ^ http://www.worldofspectrum.org/ZXSpectrum128Manual/sp128p06.html
  69. ^ http://timex.comboios.info/tmxtechb64-2048.html
  70. ^ Б с д е е г ч http://www.worldofspectrum.org/sinclairbasic/
  71. ^ "История Sinclair BASIC" .
  72. ^ "Неполная сборка Spectrum ROM" . Архивировано из оригинала на 2015-09-01.
  73. ^ https://sites.google.com/site/ulaplus/
  74. ^ http://www.fruitcake.plus.com/Sinclair/Interface2/Cartridges/Interface2_RC_New_3rdParty_SEBASIC.htm
  75. ^ https://sourceforge.net/projects/sebasic/
  76. ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008254
  77. ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008249
  78. ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008329
  79. ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008696
  80. ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008282
  81. ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0008693
  82. ^ http://www.worldofspectrum.org/infoseekid.cgi?id=0009452
  83. ^ http://rk-internet.com/eZXSparky/
  84. ^ http://www.shadowmagic.org.uk/spectrum/basic.html
  85. ^ http://www.shadowmagic.org.uk/spectrum/checkbasic.html
  86. ^ http://cartesianproduct.wordpress.com/binsic-is-not-sinclair-instruction-code/
  87. ^ https://sites.google.com/site/ulaplus/home/zx-spin-and-basin
  88. ^ https://github.com/ZXDunny/SpecBAS
  89. ^ 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