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

BBC BASIC - это версия языка программирования BASIC, выпущенная в 1981 году в качестве родного языка программирования для домашнего / персонального компьютера BBC Micro , предоставляющая стандартизированный язык для британского проекта BBC по компьютерной грамотности . [1] Написана в основном Софи Уилсон .

BBC BASIC, основанный на более раннем Atom BASIC для Acorn Atom , расширил современные микрокомпьютерные BASIC с именованными DEF PROC/ DEF FNпроцедурами и функциями, REPEAT UNTILциклами и IF THEN ELSEструктурами, вдохновленными COMAL . Переводчик также включены заявления для управления выводом звука четыре канала на BBC Micro и ее низкое / высокое разрешение восемь-режим графического дисплея.

Благодаря ряду оптимизаций BBC BASIC запускал программы намного быстрее, чем Microsoft BASIC, работающий на аналогичных машинах. Оптимизация включала использование нескольких связанных списков для поиска переменных, а не одного длинного списка, предварительное определение местоположения целочисленных переменных и наличие отдельных процедур целочисленных математических вычислений. Скорость была дополнительно улучшена на машине BBC за счет использования быстрой оперативной памяти , которая позволила процессору MOS Technology 6502 и драйверу дисплея Motorola 6845 совместно использовать память без остановки для доступа. [а] В результате этих конструктивных особенностей, BBC BASIC побежал Дэвид Ахль «s Креативный Computing Benchmarkза 21 секунду, опережая даже персональный компьютер IBM и намного опережая большинство других 8-битных платформ. [2] Единственными коммерческими 8-битными компьютерами BASIC, которые были так же быстры, как BBC Micro, были шведские ABC 80 и ABC 800 . Улучшенный BASIC 4 на BBC Master выполняет тот же тест примерно за семь секунд. [ необходима цитата ]

Одной из уникальных особенностей BBC BASIC был встроенный ассемблер , позволяющий пользователям писать программы на языке ассемблера для 6502, а затем и Zilog Z80 , NS32016 и ARM . Ассемблер был полностью интегрирован в интерпретатор BASIC и разделял с ним переменные, которые можно было включать между символами [и], сохранять с помощью * SAVE и * LOAD и вызывать с помощью команд CALL или USR. Это позволило разработчикам писать не только код на языке ассемблера, но и код BASIC для создания языка ассемблера, что позволяет использовать методы генерации кода и даже писать простые компиляторы на BASIC.

История [ править ]

В 1978 году Герман Хаузер и Крис Карри основали Acorn Computers . Большая часть кода была разработана в Кембриджском университете Софи Уилсон [3] и ее коллегами. [4]

Платформы и версии [ править ]

BBC Micro [ править ]

Подсказка BASIC на BBC Micro после включения или аппаратного сброса

Полная история доступна здесь: [5]

Первоначальная версия BASIC I поставлялась на ранних версиях BBC Micros .

BASIC II был использован на Acorn Electron и BBC Micros отправлены после 1982 года, в том числе и модель B. Он добавил OPENUPи OSCLIключевые слова, а также со смещением сборки и исправления ошибок.

BASIC III был выпущен как в версии для Великобритании, так и в версии для рынка США, в связи с неудачной попыткой Acorn выйти на трансатлантический компьютерный рынок. Помимо нескольких исправлений ошибок, единственным изменением от BASIC II было то, что COLOURкоманда также могла быть написана COLOR: независимо от того, что было введено, версия для Великобритании всегда указывала ее как COLOUR, версия для США как COLOR. Основное место, где можно найти BASIC III, - это HI-BASIC версия для внешнего второго процессора.

BASIC IV, также известный как CMOS BASIC, доступна на BBC Master машин, был изменен , чтобы использовать новые инструкции , доступные в 65SC12 процессора, уменьшая размер кода и , следовательно , позволяет включить LIST IF, EXT#как утверждение, EDIT, TIME$, ON PROC, | в VDUоператорах и быстрее с плавающей запятой. Снова были исправлены ошибки.

BASIC IV (1986) был дальнейшим улучшением BASIC IV и был включен в машину Master Compact. Версия BASIC на Compact включает в себя перекодированные математические процедуры, которые, как утверждается, обеспечивают увеличение скорости на 30% по сравнению с версией, включенной в остальную серию Master. [6]

HI-BASIC: это было доступно в двух версиях: первая основана на BASIC III, а вторая - на BASIC IV. Оба были созданы для работы с более высоким адресом (& B800) на втором процессоре, а не с обычным адресом & 8000 на BBC B. Это позволило выделить больше места для программ либо на внешнем, либо на внутреннем процессоре 6502 Second. Была представлена ​​версия для поддержки второго процессора Zilog Z80. [7]

Другая версия BBC BASIC, названная BAS128, поставлялась на магнитной ленте и диске вместе с BBC Master и Master Compact; он загружается в основную оперативную память и использует 64 КБ боковой памяти для пользовательских программ. Это обеспечивало поддержку гораздо более крупных программ за счет того, что было намного медленнее, чем обычная версия на основе ПЗУ.

Интерпретатор может работать как с BASIC, так и с ассемблером 6502, которые могут быть включены между символами [и]. Это способствовало популярности системы среди промышленных инженеров и инженеров-исследователей. [8]

Дополнительная информация / Определение версии BASIC [ править ]

Поскольку BBC MOS и RISC OS обычно поставлялись в ПЗУ, можно предположить, что конкретный выпуск операционной системы содержал конкретную версию BASIC. Таким образом, нет простого способа определить, какая версия BASIC на самом деле работает, кроме как запросить идентификатор операционной системы и, таким образом, сделать предположение.

Обратите внимание, что все Electron'ы, а затем микрокомпьютеры BBC имеют BASIC2: более ранние микрокомпьютеры BBC имеют BASIC1. Если вы не уверены, какая версия BASIC установлена ​​на вашем компьютере, набрав REPORT после запуска BASIC (после BREAK или * BASIC), будет напечатано сообщение об авторских правах. Если дата - 1981 год, устанавливается BASIC1; если это 1982 год, у вас есть BASIC2. Американские машины или машины со вторым процессором могут иметь US BASIC или HIBASIC: подпрограммы ROM не будут находиться в одном месте для этих ROM. - РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ОСНОВНОГО ПЗУ
Osbyte & 00 (0)

Определите версию ОС (см. OSBYTE & 81 для получения дополнительной информации об идентификации ОС)

Параметры ввода:
X = 0 Выполнить BRK с сообщением, указывающим версию ОС
X <> 0 RTS с версией ОС, возвращенной в X

При выходе:
X = 0, OS 1.00 или Electron OS 1.00
X = 1, OS 1.20 или американская ОС


Osbyte & 81 (129)
Параметры входа:
X = 0
Y = & FF

При выходе:
X = 0 BBC OS 0.1
X = 1 Electron OS 1.00
X = & FF BBC OS 1.00 или OS 1.20
X = & FE US BBC OS 1.20



Примеры команды INKEY (-256) , чтобы избежать нарушения командой * SHADOW стандартной модели Electron или BBC B при ее выполнении на B + или Master / Compact, вы можете использовать
IF INKEY (-256)> 1 THEN * SHADOW1

Возвращаемые значения :
0 = BBC B со старой ОС 0.10 (устарело!)
-1 = BBC B с новой ОС 1.00+ (включая 1.20)
1 = Electron
251 = BBC B + 64/128
253 = Master 128
245 = Compact
160 = Archimedes Arthur OS ( устарело)
161 = RISC OS 2.00
162 = RISC OS 2.01
и т. д.

- Расширенное руководство пользователя Acorn Electron

Смотрите также BeebWiki запись INKEY.

В семействе BBC возможно запускать как стандартный BASIC, так и расширенный HIBASIC на втором процессоре 6502. Можно определить, выполняется ли программа на втором процессоре, исследуя начальное значение PAGE, оно будет & 800, если используется второй процессор. Чтобы различать BASIC и HIBASIC, следует проверить начальное значение HIMEM. Это будет & 8000 для BASIC, работающего на втором процессоре, и & B800 для HIBASIC на втором процессоре.

Аналогичная ситуация существует в ОС RISC, где может быть обычный BASIC или BASIC64 (который предлагает более точные математические вычисления). Обычный BASIC идентифицирует себя как «BASIC V», а BASIC64 идентифицирует себя как «BASIC VI», поэтому следующее (используемое до возникновения какой-либо ошибки) будет отличать одно от другого:

ЕСЛИ INSTR ( ОТЧЕТ $ , "VI" ) THEN PRINT "BASIC64" ELSE PRINT "BASIC"       

Есть способы сделать это лучше, см. BeebWiki . Практически во всех случаях вам не нужно тестировать, на каком БЕЙСИКЕ или платформе работает ваша программа, просто позвоните и прочтите все возвращенные данные и обработайте их.

Желудь Архимеда (ОС RISC) [ править ]

С переходом на 32-битный процессор ARM и снятием ограничения в 16 КБ для размера кода BASIC было добавлено много новых функций. [9] BASIC V версии 1.04 имел длину 61 КБ. Текущие версии ОС RISC по-прежнему содержат интерпретатор BBC BASIC V. Исходный код версии BBC BASIC V для RISC OS 5 был выпущен под лицензией Apache 2.0 компанией RISC OS Open . [10] В 2011 году компания TBA Software выпустила тестовые версии обновленного BASIC, который включает поддержку VFP / NEON из ассемблера . [11]

Среди новых поддерживаемых команд и функций были:

  • WHILE-ENDWHILE
  • IF-THEN-ELSE-ENDIF
  • CASE-OF-WHEN-OTHERWISE-ENDCASE,
  • RETURN параметры в процедурах,
  • локальные массивы,
  • библиотеки процедур ( LIBRARY, INSTALLи OVERLAY),
  • LOCAL DATAи LOCAL ERRORобработчики,
  • родственник RESTORE,
  • операции с массивами ,
  • новые операторы,
  • STEP TRACE,
  • Команды для новой звуковой системы, мыши, графики.

Графические команды были полностью обратно совместимы, звук в меньшей степени; например, ENVELOPEключевое слово от BASIC V и далее - это команда, которая принимает четырнадцать числовых параметров и фактически ничего не делает - как и в более старых версиях, она вызывает OS_Word 8, но ничего не делает в ОС RISC. [12] [13] Встроенный ассемблер 6502 был заменен ассемблером ARM . BASIC V был назван Acorn "безусловно самым быстрым интерпретируемым BASIC в мире" и "вероятно, самым мощным BASIC на любом компьютере".

BASIC VI - это версия BASIC V, которая поддерживает действительные числа в 8-байтовом формате IEEE 754 , в отличие от стандартного 5-байтового формата, представленного в BASIC I.

BBC BASIC V и VI поставлялись в стандартной комплектации на Acorn Archimedes и RiscPC . Версия BBC BASIC V была также доступна для работы на втором процессоре ARM для BBC Micro.

Компилятор для BBC BASIC V был разработан Полом Феллоузом, руководителем группы разработки ОС Артура, названный Archimedes BASIC Compiler и первоначально опубликованный DABS Press. [ необходима цитата ] ABC смогла реализовать почти весь язык, за очевидным исключением функции EVAL, которая неизбежно требовала программной интерпретации во время выполнения. В качестве доказательства полноты он мог поддерживать встроенный синтаксис ассемблера. Компилятор был написан на BBC BASIC V. Компилятор (работавший под интерпретатором на ранних этапах разработки) был способен компилировать сам себя, а распространяемые версии представляли собой самкомпилированный объектный код. [ оригинальное исследование? ] Многие приложения, изначально написанные для работы под интерпретатором, выиграли от повышения производительности, которое это дало, что поставило BBC BASIC V на один уровень с другими языками для серьезной разработки приложений.

Другие платформы [ править ]

BBC BASIC также был перенесен на многие другие платформы. [14]

NS32016 версия BBC BASIC подавался с Acorn 32016 сопроцессором и Acorn ABC.

В дополнение к версии BBC BASIC, поставляемой с процессором BBC Micro Zilog Z80 Second, версия BBC BASIC на базе Z80 также существует для систем на базе CP / M. До недавнего времени версии Sinclair ZX Spectrum не существовало ; однако, благодаря усилиям Дж. Г. Харстона (также ответственного за версию PDP-11 [15] ), BBC BASIC для Spectrum был выпущен в январе 2002 года, со многими улучшениями, внесенными в последующие выпуски.

Версия BBC BASIC Zilog Z80 также использовалась на настольном компьютере Tiki 100 , портативном компьютере Cambridge Z88 и компьютерах Amstrad NC100 Notepad и Amstrad NC200 Notebook. Эта версия была реализована на графических калькуляторах серий TI-83 Plus и TI-84 Plus .

Для систем на базе ПК BBC BASIC был также реализован для DOS как BBCBASIC (86) , который нацелен на максимальную совместимость с BBC Micro, и BBasic , который сконцентрирован на языке BASIC, с собственными улучшениями на основе BASIC II.

Версия BBC BASIC, интегрированная с графическим пользовательским интерфейсом Microsoft Windows , BBC BASIC для Windows, созданная Ричардом Расселом , разработчиком версий Z80 и x86, была выпущена в 2001 году. Эта версия все еще находится в активной разработке и в настоящее время широко используется в промышленности. Хотя версия для Windows почти полностью поддерживает оригинальную спецификацию BBC BASIC (BASIC IV), она поддерживает большую часть синтаксиса BASIC V / VI, а также некоторые собственные расширенные функции. Функции, уникальные для BBC BASIC для Windows, включают поддержку интерпретатора для типов записей / структур, а также возможность вызывать подпрограммы Windows API или подпрограммы во внешней DLL.. Последние версии включают расширенные функции, сопоставимые с такими языками, как C , а во внешней библиотеке недавно добавлена ​​поддержка объектов. Версия BBC BASIC на основе SDL доступна для Windows, Linux и ряда мобильных устройств, поддерживающих библиотеку SDL.

GPL клон BBC BASIC назвали Бренди , написанный в портативном C , также доступна. [16] [17] [18] [19] [20]

Эмулятор BBC Micro для Commodore Amiga был выпущен компанией Ariadne Software для CBM (Великобритания). Хотя он был чрезвычайно быстрым, он не эмулировал 6502 на полной скорости, поэтому ассемблерный код работал бы медленнее, чем настоящий BBC, в то время как программы BASIC работали бы намного быстрее. Из-за того, как оптимизированный BASIC и эмуляция 6502 взаимодействовали, коммерческие игры почти не запускались (но в целом хорошо работающий код и обучающее программное обеспечение работали); кроме того, он использовал немного менее точный числовой формат с плавающей запятой. Некоторое время он был связан со специальным академическим пакетом Amiga 500 в надежде, что школы заменят свои стареющие BBC B на Amiga 500.

Издательство BBC Micro Computer Concepts выпустило версию BBC Basic для Atari ST, названную Fast ST BASIC , в виде картриджа ROM. [21]

Версия BBC BASIC V (Z80) также была сделана Бенджамином Ривзом для семейств калькуляторов TI-83/84 + Texas Instruments.

Commodore 64 версия Shado был произведен небольшой дом программного обеспечения Aztec Software в начале 1980 - х годов. [22]

Примечания [ править ]

  1. ^ На большинстве машин того времени процессор тратил до 30% доступного времени в ожидании памяти.

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

  1. ^ «BBC Micro зажигает воспоминания о революции» . BBC News . 21 марта 2008 . Проверено 28 ноября 2010 года .
  2. Перейти ↑ Ahl, David (март 1984). «Тест творческих вычислений» . Творческие вычисления . п. 6.
  3. ^ "Видеопроцессор для компьютера Acorn / BBC" . BBC News . Проверено 30 ноября 2010 года .
  4. ^ «BBC Micro зажигает воспоминания о революции» . BBC News . 21 марта 2008 . Проверено 30 ноября 2010 года .
  5. ^ Список версий BBC BASIC
  6. ^ Пользователь Acorn, октябрь 1986 г. - стр. 17 {- Обзор Master Compact
  7. ^ Смит, Брюс (ноябрь 1984). A&B Computing . 1, Golden Square London: публикации специалистов Argus. п. 6.CS1 maint: location ( ссылка )
  8. Марш, Дэвид (5 декабря 2005 г.). «ARM нацелена на доминирование в автомобилестроении и промышленности» . EDN Europe . Проверено 1 августа 2012 года .
  9. Роджер Уилсон (3 июля 1989 г.). «Изменения BASIC V 1.02 и 1.04 (для Ричарда Ллойда!)» . Группа новостейeunet.micro.acorn . Usenet: [email protected] . Проверено 14 июня 2011 года . 
  10. ^ https://gitlab.riscosopen.org/RiscOS/Sources/Programmer/BASIC/-/blob/master/LICENSE
  11. ^ Ли, Джеффри (2 августа 2011 г.). "Есть ли у меня для вас старые новости" . Панель значков . Проверено 8 декабря 2011 года . Программное обеспечение TBA заняло себя выпуском тестовой версии обновленного BBC BASIC с поддержкой VFP / NEON ассемблера.
  12. ^ http://lists.cloud9.co.uk/pipermail/bbc-micro/2006-November/000257.html
  13. ^ http://mdfs.net/Archive/BBCMicro/2006/11/19/185014.htm
  14. ^ BBC BASIC - MDFS :: Программное обеспечение. $. BBCBasic
  15. ^ BBC BASIC для PDP-11
  16. ^ Уильямс, Крис (6 декабря 2003 г.). «BASIC V для Unix, DOS, Windows и RISC OS: мы говорим с автором Дэйвом Дэниелсом о духе Brandy BASIC» . Дробе . Проверено 6 июля 2011 года . Brandy BASIC - это интерпретатор BASIC V, который был скомпилирован для RISC OS, NetBSD / arm32, NetBSD / i386, Linux, DOS и Windows.
  17. ^ Дэниелс, Дэйв. «Бренди Базовый» . RISC World . Проверено 6 июля 2011 года . Brandy - это портативный интерпретатор BBC Basic, то есть он позволяет разрабатывать программы, написанные на BBC Basic, и запускать их на компьютерах, отличных от тех, на которых установлена ​​ОС RISC.
  18. ^ "Бренди" . Архивировано 17 июля 2011 года . Проверено 6 июля 2011 года .
  19. ^ "Бренди Базовый V Интерпретатор" . Проверено 6 июля 2011 года .
  20. ^ «Матрица Бренди BBC Basic V с SDL и телетекстом для Linux» . Проверено 4 августа 2018 .
  21. ^ "Быстрый БЕЙСИК компьютерными концепциями" . RetroGames .
  22. ^ http://mdfs.net/Software/BBCBasic/C64/

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • http://www.rtrussell.co.uk/products/
  • http://mdfs.net/bbcbasic/
  • TI-83 + и TI-84 + реализация BBC BASIC
  • Сайт пользователей Amstrad NC
  • Руководство по программированию электронных книг с методами взаимодействия
  • Справочное руководство BBC BASIC (для ОС RISC)
  • Руководство пользователя микрокомпьютера BBC (HTML)
  • Руководство пользователя микрокомпьютера BBC (PDF)
  • Код Python против BBC Basic для Windows
  • Z80 BBC Basic от RT Russell теперь имеет открытый исходный код на GitHub