Разработчик | Acorn Computers Ltd |
---|---|
Впервые появился | 1981 ( 1981 ) |
Платформа | Микрокомпьютер BBC (6502) Acorn Archimedes (ARM) Acorn RISC PC (ARM / StrongARM) |
ОС | Acorn 6502 MOS Acorn RISC ОС |
Под влиянием | |
Порты сторонних разработчиков для MS Windows Продолжение поддержки ARM сторонними разработчиками |
BBC BASIC — это интерпретируемая версия языка программирования BASIC . Он был разработан компанией Acorn Computers Ltd , когда BBC выбрала их в качестве поставщика компьютера для своего проекта BBC Literacy Project в 1981 году.
Первоначально он поставлялся на установленном ПЗУ для BBC Microcomputer , который использовал микропроцессор 6502. Когда Acorn выпустила компьютер Archimedes , который использовал их процессор ARM , были выпущены дополнительные версии BBC BASIC. Acorn включила встроенный ассемблер , сначала для процессора 6502, а затем и для процессора ARM2 .
Первоначально BBC указала совместимость с Microsoft BASIC . Acorn уже расширяли свой ранний Atom BASIC , чтобы включить структурные программные конструкции. В частности, на более поздних компьютерах Archimedes, поскольку ограничения памяти уменьшились, BBC BASIC включил более полный набор структурных программных конструкций, обычно встречающихся в группе компьютерных языков ALGOL 60 .
Наряду с версией BBC BASIC от Acorn на Archimedes, сторонние компании производили скомпилированные версии языка. Разработка и поддержка продолжались после прекращения деятельности Acorn Computers Ltd для более новых компьютеров на базе ARM. BBC BASIC теперь доступен на других платформах либо для эмуляторов, таких как MS Windows , либо изначально.
До 1957 года программирование осуществлялось с использованием машинного кода или ассемблерного кода . Они были специфичны для процессора и не переносимы.
Затем были разработаны языки программирования высокого уровня, позволяющие легче переносить программы между компьютерами:
В период 1960-1980 годов было разработано гораздо больше компьютерных языков. Сейчас лишь немногие из них используются регулярно. Наиболее известными были ALGOL W [6] в Стэнфордском университете , Pascal [7] [8] и POP-2 [9] в Эдинбургском университете .
K&R C [10] был разработан как язык для написания операционной системы UNIX . Он был формализован как ANSI C [11] [12], из которого позже произошли C++ и JAVA .
В Дартмутском колледже два профессора математики [13] хотели, чтобы все студенты могли программировать на их новом колледжском компьютере. Существующие языки высокого уровня использовались профессионалами. В 1964 году они создали Dartmouth BASIC [14] (сокращение от B eginner’s A ll-Purpose S ymbolic I nstruction C ode) как компьютерный язык, который мог бы использовать каждый. Имея синтаксическую структуру на основе формул, он представляет собой упрощенный FORTRAN.
Вместе Пол Аллен и Билл Гейтс разработали BASIC для Altair 8800. Развитие продолжилось и стало BASIC A от IBM и BASIC от Microsoft . [15]
В 1970-х годах Департамент непрерывного образования BBC рассматривал, как прогресс в области компьютерных технологий повлияет на британское общество. В их отчете по микроэлектронике [16] от 1979 года для Комиссии по кадровым службам формально описывается их обеспокоенность растущей поляризацией и отчуждением на рабочем месте, которую 43 годами ранее Чарльз Чаплин комически продемонстрировал в «Новых временах» .
BBC требовался микрокомпьютер, пригодный для демонстраций в их программах, который мог бы быть куплен широкой публикой, чтобы позволить зрителю самому экспериментировать. Они решили, что такой микрокомпьютер должен быть надежным, иметь возможности расширения и реализацию BASIC, совместимую с Microsoft BASIC VN5 . [17]
Правительство и BBC совместно организовали кампанию по повышению осведомленности и просвещению общественности. Этот проект по повышению компьютерной грамотности (1980-1989) [18] использовал выбор BBC в виде микрокомпьютера BBC , произведенного Acorn Computers Ltd. BBC BASIC был центральным элементом пользовательского опыта программирования.
Acorn впервые разработала System BASIC и Atom BASIC для своих ранних компьютеров на базе микропроцессора 6502 [19] , которые продавались клиентам, собирающим комплекты. С разработкой Proton как процессора Front-end , Acorn проектировала более мощные вычисления.
Для того, чтобы создать компьютер, удовлетворяющий спецификации BBC, Proton стал BBC Microcomputer, пригодным для использования в качестве отдельного компьютера. Сохранив возможность подключения к компьютеру Z80 , Acorn смогла выполнить требование компьютера, поддерживающего CP/M . [20]
Софи Уилсон разработала реализации BASIC в Acorn. [21] Диалект на BBC Microcomputer стал совместим с Microsoft BASIC и, таким образом, был принят BBC. Он уже имел функции из группы компьютерных языков ALGOL 60, которые Уилсон добавила, чтобы позволить использовать некоторую методологию структурного программирования.
Полный список версий доступен здесь: [22]
Первоначальная версия BASIC I поставлялась на ранних моделях BBC Micros .
BASIC II использовался на компьютерах Acorn Electron и BBC Micros, выпущенных после 1982 года, включая модель B. Он добавлял ключевые слова OPENUP
и OSCLI
, а также смещение сборки и исправление ошибок. [23]
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. [24]
HI-BASIC был доступен в двух версиях, первая из которых была основана на BASIC III, а вторая — на BASIC IV. Обе были созданы для работы с более высоким адресом (&B800) на втором процессоре, а не с обычным адресом &8000 на BBC B. Это позволяло использовать больше места для программ на внешнем или внутреннем втором процессоре 6502. Была представлена версия для поддержки второго процессора Zilog Z80 . [25]
Другая версия BBC BASIC, называемая BAS128, поставлялась на ленте и диске с BBC Master и Master Compact; она загружалась в основное ОЗУ и использовала 64 КБ Sideways RAM для пользовательских программ. Это обеспечивало поддержку гораздо больших программ ценой гораздо более медленной работы, чем обычная версия на основе ПЗУ.
Интерпретатор может работать как с BASIC, так и с языком ассемблера 6502, который может быть включен между символами [ и ]. Это способствовало популярности системы среди промышленных и исследовательских инженеров. [26]
Поскольку 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.
— ОСНОВНОЕ РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПЗУ
См. также статью BeebWiki для INKEY.
В семействе BBC можно запустить как стандартный BASIC , так и расширенный HIBASIC на втором процессоре 6502. Можно определить, запущена ли программа на втором процессоре, проверив начальное значение PAGE, оно будет &800, если используется второй процессор. Чтобы отличить BASIC от HIBASIC, следует проверить начальное значение HIMEM. Оно будет &8000 для BASIC, запущенного на втором процессоре, и &B800 для HIBASIC на втором процессоре.
Аналогичная ситуация существует в RISC OS , где может быть обычный BASIC или BASIC64 (который предлагает более высокую точность математики). Обычный BASIC идентифицирует себя как "BASIC V", а BASIC64 идентифицирует себя как "BASIC VI", поэтому следующее (используемое до возникновения какой-либо ошибки) будет отличать один от другого:
ЕСЛИ INSTR ( REPORT$ , "VI" ) ТО ПЕЧАТЬ "BASIC64" ИНАЧЕ ПЕЧАТЬ "BASIC"
Есть лучшие способы сделать это. [ по мнению кого? ] См. BeebWiki. Почти во всех случаях вам не нужно тестировать, на каком BASIC или платформе работает ваша программа, просто сделайте вызов и прочитайте все возвращенные данные и разберитесь с ними. [ оригинальное исследование? ]
С переходом на 32-битный процессор ARM и снятием ограничения в 16 КБ на размер кода BASIC было добавлено много новых функций. [27] Версия BASIC V 1.04 имела длину 61 КБ. Текущие [ когда? ] версии RISC OS все еще содержат интерпретатор BBC BASIC V. Исходный код версии RISC OS 5 BBC BASIC V был выпущен под лицензией Apache 2.0 компанией RISC OS Open .
Среди новых поддерживаемых команд и функций:
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 OS. [28] Встроенный ассемблер 6502 был заменен ассемблером ARM . По словам Acorn, BASIC V был «безусловно самым быстрым интерпретируемым 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 был создан Полом Феллоузом, руководителем группы разработки ОС Arthur, названным Archimedes BASIC Compiler и первоначально опубликованным DABS Press. [ требуется ссылка ] ABC смогла реализовать почти весь язык, за очевидным исключением функции EVAL, которая неизбежно требовала программной интерпретации во время выполнения. Как доказательство его полноты, он мог поддерживать синтаксис встроенного ассемблера. Компилятор был написан на BBC BASIC V. Многие приложения, изначально написанные для работы под интерпретатором, выиграли от прироста производительности, который это дало, поставив BBC BASIC V в один ряд с другими языками для серьезной разработки приложений.
BBC BASIC также был портирован на многие другие платформы. [29]
Версия BBC BASIC NS32016 поставлялась с сопроцессором Acorn 32016 и Acorn ABC.
В дополнение к версии BBC BASIC, поставляемой со вторым процессором BBC Micro Zilog Z80, версия BBC BASIC на базе Z80 также существует для систем на базе CP/M . Версия BBC BASIC на базе Zilog Z80 также использовалась на настольном компьютере Tiki 100 , портативном компьютере Cambridge Z88 и компьютерах Amstrad NC100 Notepad и Amstrad NC200 Notebook. Эта версия была реализована на графических калькуляторах серий TI-83 Plus и TI-84 Plus . Благодаря усилиям Дж. Г. Харстона (также ответственного за версию PDP-11 [30] ) версия BBC BASIC для ZX Spectrum была выпущена в январе 2002 года со многими улучшениями, внесенными в последующие выпуски.
Для систем на базе ПК 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, [21] а также версию, которая позволяет запускать программы BBC BASIC как апплеты на веб-странице через фреймворк Web Assembly. Первая версия была выпущена в феврале 2019 года и остается в активной разработке по состоянию на август 2024 года [обновлять]. [31]
Также доступен GPL- клон BBC BASIC под названием Brandy , написанный на переносимом языке C. [32] [33] Его ответвление, Matrix Brandy , находится в стадии активной разработки. [34]
Эмулятор BBC Micro для Commodore Amiga был создан Ariadne Software для CBM (Великобритания). Несмотря на свою исключительную скорость, он не эмулировал 6502 на полной скорости, поэтому ассемблерный код работал медленнее, чем настоящий BBC, в то время как программы на BASIC работали намного быстрее. Из-за того, как взаимодействовали оптимизированный BASIC и эмуляция 6502, почти ни одна коммерческая игра не запускалась, но хорошо работающий код и образовательное программное обеспечение в целом работали. Кроме того, он использовал немного менее точный числовой формат с плавающей точкой . Некоторое время он был связан со специальным академическим пакетом Amiga 500 , в надежде, что школы заменят свои устаревшие BBC B на Amiga 500.
Бенджамин Райвс также создал версию BBC BASIC V (Z80) для семейств калькуляторов Texas Instruments TI-83/84+.
Версия Shado для Commodore 64 была выпущена небольшой компанией-разработчиком программного обеспечения Aztec Software в начале 1980-х годов. [35] Исправленные версии HI-BASIC на базе Acorn 6502 также экспериментально запускались на C64 с интерфейсом к ядру C64, заменяющим вызовы Acorn MOS, которые выполнялись иным образом.
Также были предприняты попытки сделать версию BBC BASIC на базе 6502 доступной на Apple II . Applecorn — одна из таких попыток.
BBC BASIC — язык программирования, используемый в Agon Light, одноплатном компьютере и микроконтроллере с открытым исходным кодом на базе 8-битной архитектуры Z80, разработанном Бернардо Каструпом и выпущенном в 2022 году. [36]
REM Acorn Archimedes версия ON ERR ИЛИ : ON ERR ИЛИ OFF : ПЕЧАТЬ ОТЧЕТА$ ; " в строке " ; ERL : КОНЕЦ РЕЖИМ РЕЖИМ : REM очищает экран PROC _triangle ( 700 , 700 , 500 , 200 , 500 , 900 , "F" ) КОНЕЦ DEF PROC _triangle ( x1 % , y1 % , x2 % , y2 % , x3 % , y3 % , fill$ ) LOCAL triangle_fill_plot_code% triangle_fill_plot_code% = &55 MOVE x1 % , y1 % DRAW x2 % , y2 % IF fill$ = "F" THEN PLOT triangle_fill_plot_code% , x3 % , y3 % ELSE DRAW x3 % , y3 % : DRAW x1 % , y1 % ENDIF ENDPROC : REM of PROC_triangle()