stringtranslate.com

Маленький БАЗОВЫЙ

Tiny BASIC — это семейство диалектов языка программирования BASIC , которые могут поместиться в 4 или менее КБ памяти . Tiny BASIC был разработан Деннисом Эллисоном и People's Computer Company (PCC) в ответ на открытое письмо, опубликованное Биллом Гейтсом, в котором он жаловался на пользователей, пиратствующих Altair BASIC , который продавался по цене 150 долларов. Tiny BASIC задумывался как полностью бесплатная версия BASIC, которая могла бы работать на тех же ранних микрокомпьютерах .

Tiny BASIC был выпущен как спецификация, а не реализация, опубликованная в выпуске информационного бюллетеня PCC за сентябрь 1975 года. Статья приглашала программистов реализовать его на своих машинах и отправить полученную реализацию языка ассемблера обратно для включения в серию из трех запланированных информационных бюллетеней. Ли-Чен Ван , автор Palo Alto Tiny BASIC, придумал термин « copyleft » для описания этой концепции. Реакция сообщества была настолько ошеломляющей, что информационный бюллетень был перезапущен как Dr. Dobb's Journal , первое регулярное периодическое издание, посвященное программному обеспечению микрокомпьютеров. Dr. Dobb's просуществовал в печатном виде 34 года, а затем в онлайне до 2014 года, когда его веб-сайт стал статическим архивом.

Небольшой размер и бесплатный исходный код сделали эти реализации бесценными в ранние дни микрокомпьютеров в середине 1970-х годов, когда ОЗУ было дорогим, а типичный размер памяти составлял всего 4–8 КБ. Хотя минимальная версия Altair BASIC от Microsoft также работала на машинах с 4 КБ, для программ BASIC оставалось всего 790 байт. Больше свободного места было существенным преимуществом Tiny BASIC. Чтобы соответствовать этим строгим ограничениям по размеру, диалекты Tiny BASIC, как правило, не имели множества функций, обычно встречающихся в других диалектах, например, в большинстве версий отсутствовали строковые переменные , отсутствовала математика с плавающей точкой и допускались только однобуквенные имена переменных.

Миниатюрные реализации BASIC до сих пор используются для программирования микроконтроллеров , таких как Arduino .

История

Альтаир БАЗОВЫЙ

Бумажная лента, содержащая расширенную версию Microsoft BASIC 8K

Самые ранние микрокомпьютеры , такие как MITS Altair 8800 , обычно не имели встроенного ввода/вывода (I/O) за исключением переключателей на передней панели и светодиодных ламп. Полезная работа обычно требовала добавления карты расширения ввода/вывода и использования какой-либо формы терминала . В то время видеотерминалы были очень дорогими, стоили намного больше, чем сам компьютер, поэтому многие пользователи обратились к механическим устройствам, таким как Teletype Model 33. Model 33, как и большинство телетайпов той эпохи, включала систему перфорации ленты , предназначенную для того, чтобы операторы могли предварительно записывать свои сообщения, а затем воспроизводить их на «высокой скорости», быстрее, чем большинство людей могли набрать сообщение вживую. Для ранних микрокомпьютеров это обеспечивало удобный формат хранения компьютерных данных , позволяя пользователям записывать программы на бумажную ленту и распространять их среди других пользователей. [1]

Клуб любителей домашних компьютеров впервые собрался в марте 1975 года, и вскоре его члены стали использовать встречи для обмена программным обеспечением на перфоленте. На июньской встрече пропала лента с предварительной версией Altair BASIC . Лента была передана Стиву Домпье, который передал ее Дэну Соколу, у которого был доступ к высокоскоростному перфоратору. На следующей встрече в картонной коробке появилось 50 копий Altair BASIC на бумажной ленте. [2] Когда Эд Робертс , основатель MITS, узнал об этом, он заявил: «Любой, кто использует украденную копию MITS BASIC, должен признаться, что он вор». [3] Билл Гейтс сделал это более формальным, написав « Открытое письмо любителям », в котором жаловался, что «как должно быть известно большинству любителей, большинство из вас крадут ваше программное обеспечение». [4]

Маленький БАЗОВЫЙ

Жалоба не была хорошо принята. Среди многочисленных ответов Боб Альбрехт, другой член Homebrew и основатель People's Computer Company (PCC), посчитал, что лучшим ответом будет создание собственного BASIC, который был бы абсолютно бесплатным для использования любым человеком. Он обратился к Деннису Эллисону , члену факультета компьютерных наук Стэнфордского университета , с просьбой написать спецификацию для версии BASIC, которая поместилась бы в 2–3 килобайта памяти. [a] Для облегчения портирования дизайн был основан на промежуточном языке (IL), интерпретаторе для интерпретатора, что означало, что нужно было портировать только небольшую часть общего кода.

Первоначальный проект Эллисона был опубликован в выпуске информационного бюллетеня PCC за сентябрь 1975 года вместе с версией интерпретатора IL для Intel 8080. Статья призывала программистов реализовать проект на своих компьютерах и отправить полученную версию на языке ассемблера обратно в PCC. Они заявили о своих планах опубликовать три специальных информационных бюллетеня, содержащих эти отправленные пользователями версии, а также исправления ошибок, программы, написанные на новом BASIC, а также предложения и улучшения. Концепция получила дальнейшее внимание, когда была переиздана в выпуске ACM Special Interest Group on Programming Languages ​​за январь 1976 года. [5] Посыпались предложения. Среди известных ранних версий был Tiny BASIC Extended Дика Уиппла и Джона Арнольда, который работал в 3 КБ ОЗУ, добавлял циклы FOR...NXT и допускал один числовой массив. Они избегали использования IL и писали его непосредственно в машинном коде, используя восьмеричное число . [6]

Первый из трех запланированных информационных бюллетеней под названием «Журнал компьютерной гимнастики и ортодонтии доктора Добба, бегущий налегке без овербайта» был опубликован в январе 1976 года. [6] Он начинается с заметки Альбрехта под псевдонимом «дракон», в которой он предполагает, что трех выпусков будет недостаточно, и спрашивает читателей, хотят ли они, чтобы он продолжился. Он также перепечатал оригинальную статью о Tiny BASIC из PCC, включил полный список Extended TB и включил несколько небольших программ BASIC, включая советы и рекомендации от Эллисон. [7] Отклик на первый выпуск был настолько впечатляющим, что во введении ко второму выпуску было заявлено, что они уже решили продолжить публикацию нового информационного бюллетеня под упрощенным названием Dr. Dobb's Journal . В течение следующих нескольких выпусков были опубликованы дополнительные версии языка, и похожие статьи начали появляться в других журналах, таких как Interface Age .

Распространение

Моноширинный шрифт гласит: «Tiny basic для Intel 8080, версия 2.0, автор Ли-Чен Ванг, изменено и переведено на мнемонику Intel Роджером Раусклобом, 10 октября 1976 г. @ Copyleft, все ошибки защищены».
Использование «Copyleft; All Wronts Reserved» в 1976 году [8]

К середине 1976 года интерпретаторы Tiny BASIC были доступны для процессоров Intel 8080 , Motorola 6800 и MOS Technology 6502. Это было предвестником совместной разработки сообщества свободного программного обеспечения до того, как Интернет позволил легко передавать файлы, и было примером проекта свободного программного обеспечения до движения за свободное программное обеспечение . [9] Компьютерные любители обменивались бумажными лентами, кассетами или даже перепечатывали файлы с печатных листов. [10]

Джим Уоррен, редактор Dr. Dobb's , написал в июльском 1976 году информационном бюллетене ACM Programming Language о мотивах и методах этого успешного проекта. Он начал с этого: «Существует жизнеспособная альтернатива проблемам, поднятым Биллом Гейтсом в его гневном письме любителям компьютеров относительно «воровства» программного обеспечения. Когда программное обеспечение бесплатно или настолько недорого, что за него легче заплатить, чем копировать, тогда его не «украдут». Письмо Билла Гейтса было написано, чтобы превратить программное обеспечение в продукты . Альтернативный метод состоял в том, чтобы опытный профессионал сделал общий дизайн, а затем набросал стратегию внедрения. Знающие любители реализовали бы дизайн для различных компьютерных систем. Уоррен предсказал, что эта стратегия будет продолжена и расширена. [10]

В выпуске журнала Dr. Dobbs за май 1976 года есть Palo Alto Tiny BASIC Ли-Чена Вана для 8080. Список начинается с названия, имени автора и даты, но также есть «@ COPYLEFT ALL WRONGS RESERVED». [11] Другой член Homebrew Computer Club Роджер Раускольб модифицировал и улучшил программу Вана, и это было опубликовано в выпуске журнала Interface Age за декабрь 1976 года . [8] Роджер добавил свое имя и сохранил уведомление COPYLEFT.

Описание

Основные понятия

Tiny BASIC был разработан для использования как можно меньшего количества памяти, и это отражено в скудности функций, а также деталей его системы интерпретатора . Ранние микрокомпьютеры не имели оперативной памяти и вторичного хранилища для компилятора BASIC , что было более типично для систем с разделением времени.

Как и большинство BASIC той эпохи, Tiny Basic был интерактивным, и пользователь мог вводить операторы в командную строку. Поскольку микрокомпьютеры той эпохи часто использовались с телетайпами или «немыми» терминалами, прямое редактирование существующего текста было невозможно, и редактор вместо этого использовал символы выноса, часто обратную косую черту, чтобы указать, где пользователь должен вернуться к редактированию существующего текста.

Если пользователь вводил оператор в командную строку, система проверяла его, чтобы увидеть, начинается ли он с цифры. Если нет, строка немедленно анализировалась и обрабатывалась, потенциально генерируя вывод через PRINT. Это было известно как «прямой режим».

Если строка была введена с ведущим числом, число было преобразовано из десятичного формата, например "50", и преобразовано в 8-битное значение, в данном случае $32 шестнадцатеричное . Это число использовалось как индекс в массивоподобной области хранения, где остальная часть строки сохранялась точно в том формате, в котором она была набрана. Когда пользователь вводил данные LISTв командной строке, система проходила по массиву, преобразовывала номер строки обратно в десятичный формат, а затем выводила остальной текст в строке.

Когда программа присутствует в памяти, и пользователь вводит команду RUN, система переходит в «косвенный режим». В этом режиме указатель устанавливается на первую строку программы, например, 10 ( $0A hex ). Исходный текст для этой строки затем извлекается из хранилища и запускается так, как если бы пользователь только что ввел его в прямом режиме. Затем указатель переходит на следующую строку, и процесс продолжается.

Формальная грамматика

Грамматика приведена ниже в форме Бэкуса–Наура , почти в точности как она была указана в Design Note. [12] В листинге звездочка (« *») обозначает ноль или более объектов слева от нее — за исключением первой звездочки в определении « term», которая является оператором умножения; скобки группируют объекты; а эпсилон (« ε») обозначает пустую строку. Как это принято в нотации грамматики компьютерных языков, вертикальная черта (« |») различает альтернативы, как и их перечисление на отдельных строках. Символ « CR» обозначает возврат каретки (обычно генерируемый клавишей «Enter» на клавиатуре). BREAK с консоли прервет выполнение программы.

 строка  :: = число оператор CR | оператор CR оператор :: = PRINT expr-list IF выражение relop выражение THEN оператор GOTO выражение INPUT var-list LET var = выражение GOSUB выражение RETURN CLEAR LIST RUN END expr-list :: = ( string | expression ) ( , ( string | expression ) ) * var-list :: = var ( , var ) * expression :: = ( +|-|ε ) term (( +|- ) term ) * term :: = factor (( * | / ) factor ) * factor :: = var | number | ( expression ) var :: = A | B | C ... | Y | Z number :: = digit digit * digit :: = 0 | 1 | 2 | 3 | ... | 8 | 9 relop :: = < ( >| =) | > ( <| =) | =                                                                                                               строка  :: = " ( |!|#|$ ... -|.|/|цифра|: ... @|A|B|C ... |X|Y|Z)* " 

Обратите внимание, что строка не была определена в заметке к проекту.

Этот синтаксис, каким бы простым он ни был, добавлял одно новшество: GOTOи GOSUBмог принимать выражение, а не просто номер строки, предоставляя назначенный GOTO [13] вместо оператора switchGOTO/GOSUB ... OF ... , структуры, которая затем поддерживалась в HP Time-Shared BASIC и предшествовала ON ... GOTO. Синтаксис, позволяющий IF-THEN statement(в отличие от простого номера строки для перехода) еще не поддерживался в Dartmouth BASIC в то время, но был введен Digital [14] и скопирован Microsoft.

Реализация на виртуальной машине

В Design Note была указана виртуальная машина , в которой интерпретатор Tiny BASIC сам запускался на интерпретаторе виртуальной машины. Идея дизайнера использовать виртуальную машину приложения восходит к Валу Шорре (с META II , 1964) и Гленни (Syntax Machine). Выбор подхода виртуальной машины позволил сэкономить на памяти и усилиях по реализации, хотя программы BASIC, запущенные на ней, выполнялись несколько медленно. [15]

Диалекты, которые использовали виртуальную машину, включали Tiny BASIC Extended, Tom Pittman 's Tiny BASIC [16] и NIBL. Другие диалекты, такие как Denver Tiny BASIC (DTB) и Palo Alto Tiny BASIC, были прямыми интерпретаторами. Некоторые программисты, такие как Фред Гриб с DTB, рассматривали программу IL (Interpretive Language) как псевдокод для алгоритма , реализуемого на языке ассемблера; Denver Tiny BASIC не использовал виртуальную машину, но он действительно близко следовал программе IL.

Это показательный отрывок из 120-строчной программы IL:

S1: TST S3 , 'GO' ;GOTO ИЛИ GOSUB? TST S2 , 'TO' ;ДА...TO, ИЛИ...SUB ВЫЗОВ EXPR ;ПОЛУЧЕНИЕ МЕТКИ ВЫПОЛНЕНО ;ОШИБКА, ЕСЛИ CR НЕ СЛЕДУЮЩИЙ XFER ;НАСТРОЙКА И ПЕРЕХОД S3: TST S8 , 'PRINT' ;ПЕЧАТЬ.                

Распространенным шаблоном в программе является проверка ключевого слова или части ключевого слова, а затем действие на основе этой информации. Каждая проверка является утверждением относительно того, что находится дальше в буфере строки. Если утверждение не выполняется, управление переходит к следующей метке (обычно ищет новое ключевое слово или токен). Здесь система перемещает свой курсор буфера через любые пробелы и проверяет GO , и если она не может его найти, то переходит к строке S3 . Если она находит его, выполнение продолжается со следующей команды IL. В этом случае система затем проверяет TO , пропуская строку S2 , если она не выполняется (проверка на SUB , чтобы узнать, является ли это командой GOSUB ). Если она проходит, управление продолжается; в этом случае вызов подпрограммы IL, которая начинается с метки EXPR , которая анализирует выражение. В Tiny BASIC (вычисляемый GO TO) так же допустим, как и альтернатива ON-GOTO более крупных реализаций BASIC. Подпрограмма EXPR помещает результат выражения в арифметический стек (в данном случае номер строки). DONE проверяет, нет ли другого текста после выражения, и выдает ошибку, если это так. XFER извлекает номер из стека и передает выполнение (GOes TO) на соответствующий номер строки, если он существует.GOTO X*10+100GOTO 100

В следующей таблице представлен частичный список 32 команд виртуальной машины, на которой был написан первый интерпретатор Tiny BASIC. [17]

TST lbl , строка
Если строка соответствует строке BASIC, переместить курсор на строку и выполнить следующую инструкцию IL; если тест не пройден, выполнить инструкцию IL с метки lbl
ВЫЗОВ фунт
Выполнить подпрограмму IL, начиная с lbl ; сохранить адрес IL после CALL в стеке управления
СДЕЛАННЫЙ
Сообщить об ошибке синтаксиса, если после удаления начальных пробелов курсор не устанавливается в положение возврата каретки
XFER
Проверьте значение в верхней части стека AE на соответствие диапазону. Если нет, сообщите об ошибке. Если да, попытайтесь установить курсор на этой строке. Если она существует, начните интерпретацию там; если нет, сообщите об ошибке.
ПРЫЖОК lbl
Продолжить выполнение IL на указанной метке
РТН
Возврат к местоположению IL, указанному в верхней части стека управления.
ПРС
Печать символов из текста BASIC до закрывающей кавычки, но не включая ее.
ПРН
Вывести число, полученное путем извлечения вершины стека выражений
СПЦ
Вставьте пробелы, чтобы переместить печатающую головку в следующую зону.
НЛАЙН
Вывести CRLF [18] на принтер

Том Питтман , обсуждая IL, говорит: «Интерпретатор TINY BASIC был разработан Деннисом Эллисоном как рекурсивный спусковой парсер . Часть элегантной простоты этой конструкции была утеряна при добавлении синтаксического сахара к языку, но базовая форма осталась. IL особенно подходит для рекурсивного спускового парсинга TINY BASIC из-за общей рекурсивной природы его процедур и простоты токенов TINY BASIC. Язык IL эффективно оптимизирован для интерпретации TINY. Опыт показал, что сложность добавления новых функций в язык совершенно несоразмерна природе этих функций. Обычно необходимо добавлять дополнительные подпрограммы машинного языка для поддержки новых функций. Часто сложность перевешивает преимущества». [19]

Отклонения от проекта

Определяя Tiny BASIC для Homebrew Computer Club, Питтман написал: «Tiny BASIC — это подмножество Dartmouth BASIC, состоящее только из следующих типов операторов: LET, PRINT, INPUT, IF, GOTO, GOSUB, RETURN, END, CLEAR, LIST, RUN. Арифметика выполняется только в 16-битных целых числах с операторами + - * / и вложенными скобками. Имеется только 26 однобуквенных имен переменных A, B, ...Z и нет функций. Нет строк или массивов... Tiny BASIC определяет номера строк меньше 256». [20] Затем он продолжил описывать свою реализацию: «Этот язык был расширен за счет включения функций RND, USR, PEEK и POKE, что дает пользователю доступ ко всем его системным компонентам в 6800 из программы BASIC».

Многие разработчики привнесли в свои проекты собственный опыт работы с HP Time-Shared BASIC или DEC BASIC-PLUS и смягчили формальную спецификацию языка Tiny BASIC. Из семи выдающихся реализаций, опубликованных к 1977 году:

В качестве альтернативы токенизации, для экономии оперативной памяти, TBX, [21] DTB, [22] и MINOL [23] укороченные ключевые слова: PRfor PRINT, INfor INPUT, RETfor RETURN. Полные традиционные ключевые слова не принимались. Напротив, PATB допускал принятые традиционные ключевые слова, но также позволял сокращать любое ключевое слово до его минимальной уникальной строки с конечной точкой. Например, PRINTможно было набрать P., хотя PR.и другие вариации также работали. Эта система была сохранена в Level I BASIC для TRS-80 , который использовал PATB, а также позже была обнаружена в Atari BASIC и BASIC различных карманных компьютеров Sharp . [24]

Диалекты

Наиболее известными диалектами Tiny BASIC были оригинальный Design Note, Tiny BASIC Extended, Palo Alto Tiny BASIC и 6800 Tiny BASIC. Однако существовало много других версий Tiny BASIC.

Список известных диалектов

Tiny BASIC был впервые опубликован в информационном бюллетене, ответвлении People's Computer Company , информационном бюллетене, который стал Dr. Dobb's Journal , долгоживущим компьютерным журналом. В журнале было опубликовано около десяти версий.

TBX также был известен как Texas Tiny BASIC. [33]

SCELBAL [34] и 6800 Tiny BASIC были анонсированы в журнале, но их исходный код не был опубликован .

Пало-Альто Tiny BASIC

Одной из самых популярных из множества версий Tiny BASIC был Palo Alto Tiny BASIC, или сокращенно PATB, авторства Ли-Чена Вана . PATB впервые появился в издании Dr. Dobbs за май 1976 года , написанный на пользовательском языке ассемблера с нестандартной мнемоникой. Это привело к появлению дополнительных портов, которые работали с обычными ассемблерами на 8080. [24] Первая версия интерпретатора занимала 1,77 килобайт памяти и предполагала использование телетайпа (TTY) для ввода/вывода пользователем . Исправление к оригинальной статье появилось в июньском/июльском выпуске Dr. Dobb's (т. 1, № 6). Эта статья также включала информацию о добавлении дополнительных устройств ввода/вывода, используя в качестве примера код для видеодисплея VDM от Processor Technology .

Ван был одним из первых, кто использовал слово copyleft . В уведомлении о распространении Palo Alto Tiny BASIC он написал «@COPYLEFT ALL WRONGS RESERVED». [35] Tiny BASIC не распространялся ни в какой формальной форме на условиях распространения copyleft, но был представлен в контексте, где исходный код был общим и изменялся. Фактически, Ван ранее внес изменения в Tiny BASIC Extended, прежде чем написать свой собственный интерпретатор. [21] Он призвал других адаптировать его исходный код и опубликовать свои адаптации, как это было с версией PATB Роджера Раускольба, опубликованной в Interface Age . [8] Он также опубликовал третью версию в Справочнике PCC по персональным и домашним вычислениям . [36]

Одним из самых заметных изменений в PATB является добавление цикла FOR...NEXT . В оригинальном TB циклы могли быть реализованы только с помощью IFи GOTO. Как и в Microsoft BASIC , верхняя и нижняя границы цикла устанавливались при входе в цикл и не менялись во время цикла, поэтому, если одна из границ основывалась на выражении переменной; изменение переменной не изменяло границу. Модификатор STEPбыл необязательным, как в MS. [24]

Другим значительным изменением стала возможность размещать несколько операторов на одной строке. По необъясненным причинам PATB использовал точку с запятой ;для разделения операторов, а не уже распространенное двоеточие :.

Другие изменения включают добавление одного числового массива с именем переменной @, STOPв дополнение к END, и использование #для неравенств в сравнениях, вместо <>. [24] [b]

PATB использовала слова для сообщений об ошибках вместо чисел. Чтобы уменьшить объем требуемой памяти, было всего три сообщения, и они состояли из отдельных слов. Система отвечала на WHAT?синтаксические ошибки, HOW?на ошибки времени выполнения, такие как GOTO на строку, которая не существует, или числовые переполнения, а также SORRYна проблемы нехватки памяти. [24]

Ван также написал программу STARTREK на своем Tiny BASIC, которая появилась в июльском выпуске People's Computer Company Newsletter за 1976 год . [37] [38]

Позже он адаптировал язык в 3K Control Basic для Cromemco , добавив имена переменных в форме буква-цифра (например, A0to Z9), логические функции ( AND(), OR(), XOR()), CALLкоманду для выполнения процедур машинного языка, больше PRINTопций форматирования и другие ( GET()and PUT()вместо PEEKand POKE; функции порта ввода-вывода). [39]

Palo Alto Tiny BASIC был адаптирован для многих других реализаций, включая Level I BASIC (1977), BASIC для карманного компьютера Sharp PC-1211 (1980) и Astro BASIC (1982, Джейми Фентон ). [40]

МИНОЛ

Написанная учеником предпоследнего курса средней школы, MINOL была единственной реализацией, которая не поддерживала полную версию Design Note, отсутствовала приоритетность операторов , имелось только три оператора связи (<, =, #), опускались GOSUBи RETURN. Она поддерживала только беззнаковую 8-битную точность (в отличие от знаковой 16-битной точности для всех остальных реализаций) и номера строк от 0 до 254.

Пробелы не разрешались, за исключением строк; !возвращает случайное число, $прежде чем выражение загрузит строку по этому адресу; OSвозвращается в операционную систему. Память адресуема, как если бы она была двумерным массивом старших и младших байтов (например, "(0,0)" до "(255,255)"); CALLвыполняет подпрограмму машинного языка. [23]

Разные диалекты

Многие диалекты появлялись в различных других публикациях.

В выпуске за май 1977 года была представлена ​​дискета с MICRO-BASIC.

Вдохновленный призывом PCC к Tiny BASIC, Роберт Уитервик написал MICRO BASIC 1.3 для системы SWTPC 6800 , которую SWTPC опубликовал в выпуске информационного бюллетеня SWTPC за июнь 1976 года. Уитервик вручную написал язык на легальном планшете. Позже он расширил язык до 4 КБ, добавив поддержку плавающей точки; эта реализация была уникальной среди интерпретаторов BASIC, используя двоично-десятичное кодирование до 9 цифр точности с диапазоном до 10 99 , и была опубликована бесплатно в виде вкладыша в журнал "Floppy ROM" . Версия 8 КБ добавляла строковые переменные и тригонометрические функции. Обе версии 4 КБ и 8 КБ продавались SWTPC. В январе 1978 года Уитервик продал права на исходный код компании Motorola . [41] [42]

Томас Ф. Уэйтман написал Tiny BASIC в 1976 году для терминалов Hewlett-Packard HP-2640 и HP-2645 (которые использовали процессоры Intel 8008 и 8080), который был опубликован в журнале Hewlett-Packard Journal .

В выпуске Interface Age за декабрь 1976 года был опубликован LLL ( Lawrence Livermore Laboratory ) BASIC, первый черновик которого был разработан Стивом Лейнингером на основе спецификации Эллисона до того, как Лейнингер ушел из National Semiconductor в Tandy Corporation . Окончательный интерпретатор был разработан Джоном Дикенсоном, Джерри Барбером и Джоном Титером в Университете Айдахо по контракту с LLL. Занимая 5K, он включал пакет с плавающей точкой, разработанный Дэвидом Мидом, Хэлом Брэндом и Фрэнком Олкеном. Программа была помещена в общественное достояние LLL, которая разработала систему под эгидой Управления энергетических исследований и разработок США. [43]

ОСНОВЫ 4K

Altair BASIC , 4K BASIC, мог работать на машине с 4 КБ ОЗУ, оставляя только около 790 байт свободными для программного кода. [44] [45] Инициатива Tiny BASIC началась в ответ на плату в размере 150 долларов за Altair 4K BASIC.

В 1975 году Стив Возняк присоединился к недавно сформированному Homebrew Computer Club , в который входили Ли-Чен Ванг (Palo Alto Tiny BASIC) и Том Питтман (6800 Tiny BASIC). Возняк пришел к выводу, что его машина должна иметь собственный BASIC, который, как он надеялся, станет первым для процессора MOS Technology 6502. Поскольку языку требовалось 4 КБ ОЗУ, он сделал это минимальным объемом памяти для проекта. [46] Integer BASIC был первоначально опубликован на Compact Cassette в 1976 году.

В 1977 году компания Radio Shack (как она тогда называлась) выпустила свой первый компьютер, TRS-80 , систему Z80 с Level I BASIC в 4 КБ ПЗУ. Сотрудник Tandy Стив Лейнингер написал первый черновик интерпретатора NIBL ​​(National Industrial Basic Language) для SC/MP , работая в National Semiconductor . [29] Не имея возможности взять этот исходный код с собой, он адаптировал Palo Alto Tiny BASIC Ли-Чэня Вана для оригинального прототипа TRS-80 Model I. Он значительно переработал интерпретатор, добавив поддержку чисел с плавающей точкой, простую черно-белую графику и READ/DATA/RESTOREоператоры. [47]

Первоначально разработанный в 1979 году, Sinclair 4K BASIC , написанный Джоном Грантом, использовал в качестве определения языка стандарт Minimal BASIC Американского национального института стандартов (ANSI) 1978 года, но сам по себе был неполной реализацией размером 4 КБ только с целочисленной арифметикой. [48]

Диалекты микроконтроллеров

Реализации Tiny BASIC были адаптированы для управления процессором и микроконтроллерами, такими как Arduino :

Более поздние реализации

В 2002 году Эммануэль Шайю, Паскаль Манури и Бруно Пагано опубликовали Tiny BASIC (без GOSUB/ RETURN) в книге «Разработка приложений с Objective Caml» в качестве примера приложения Objective Caml . [53]

В 2013 году Алекс Янг опубликовал реализацию на Python . [54]

В 2019 году Сергей Кузнецов опубликовал версию на языке Ruby . [55]

Также в 2019 году Оскар Толедо Гутьеррес опубликовал bootBASIC, который помещается в 512 байт загрузочного сектора машины 8086/8088, что делает его самой маленькой реализацией BASIC на сегодняшний день. Чтобы добиться этого, язык отказывается от реляционных операторов (операторы IF работают с ненулевыми значениями), ограничивает строки кода 19 символами или меньше и не обновляет дисплей при нажатии клавиши backspace. [56] Кроме того, в нем отсутствуют GOSUB и RETURN, но есть функция RND (без аргументов, возвращающая значение от 0 до 255). [57] Язык использует массив для хранения строк программы, для чего требуется 20 000 байт. [58]

В 2023 году Гордон Хендерсон опубликовал реализацию Tiny Basic на ассемблере 6502. Она находится под влиянием NIBL ​​и может работать всего в 3,5 КБ ПЗУ, требуя не менее 1 КБ ОЗУ для хранения данных и программ. Она поддерживает DO/UNTIL, FOR/NEXT, простые строки и peek/poke памяти (байт или 16-битное слово), GOSUB/RETURN, CALL, RND с возможностями для шестнадцатеричного ввода и вывода. [59]

Диалекты в сравнении

В следующей таблице сравниваются языковые возможности реализаций Tiny BASIC с другими известными версиями BASIC, которые им предшествовали.

Смотрите также

Примечания

  1. ^ В то время наиболее распространенным размером памяти для 8080 было 4 КБ, что стоило сотни долларов.
  2. ^ Хэш также использовался для неравенства в HP Time-Shared BASIC .

Ссылки

Цитаты

  1. ^ Ланкастер, Дон (1976). «Кулинарная книга по использованию телевизионной пишущей машинки» (PDF) . стр. 210–211. Архивировано (PDF) из оригинала 09.10.2022.
  2. Манес и Эндрюс 1994, стр. 81.
  3. ^ Робертс, Х. Эдвард (октябрь 1975 г.). «Письмо президента». Computer Notes . 1 (5). Альбукерке, Нью-Мексико: MITS: 3–4. Архивировано из оригинала 23 марта 2012 г.
  4. ^ Манес и Эндрюс, 1994, стр. 91.
  5. Эллисон, Деннис (июль 1976 г.). «Заметки о дизайне TINY BASIC». Уведомления SIGPLAN . 11 (7). ACM: 25–33. doi : 10.1145/987491.987494 . S2CID  18819472.
  6. ^ ab "TB Code Sheet". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (1). Декабрь 1975 г.
  7. ^ Доббс 1976, стр. 5.
  8. ^ abc Rauskolb, Roger (декабрь 1976 г.). "Dr. Wang's Palo Alto Tiny BASIC". Interface Age . 2 (1): 92–108.Исходный код начинается со следующих девяти строк:
    ;*********************************;; TINY BASIC ДЛЯ INTEL 8080; ВЕРСИЯ 2.0; АВТОР ЛИ-ЧЭНЬ ВАНГ; ИЗМЕНЕНО И ПЕРЕВЕДЕНО; К INTEL МНЕМОНИКЕ; РОДЖЕР РАУСКОЛБ; 10 ОКТЯБРЯ 1976 ГОДА; @COPYLEFT; ВСЕ ОШИБКИ ЗАЩИЩЕНЫ;;*********************************
  9. ^ "Открытое оборудование: как и почему оно работает". IBM . Движение за открытое программное обеспечение было основано Деннисом Эллисоном в его выпуске Tiny BASIC в 1975 году.
  10. ^ ab Warren, Jim C. (июль 1976 г.). «Переписка». SIGPLAN Notices . 11 (7). ACM: 1–2. ISSN  0362-1340.
  11. ^ Ван, Ли-Чен (май 1976 г.). «Palo Alto Tiny BASIC». Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (5): 12–25.Исходный код начинается со следующих шести строк.
    TINY BASIC ДЛЯ INTEL 8080ВЕРСИЯ 1.0АВТОР ЛИ-ЧЭНЬ ВАНГ10 ИЮНЯ 1976 ГОДА@COPYLEFTВСЕ ОШИБКИ ЗАЩИЩЕНЫ
    Июньская дата в майском номере правильная. Журнал отставал от графика, июньский и июльский номера были объединены, чтобы наверстать упущенное.
  12. ^ Эллисон, Деннис (1976). «Создай свой собственный BASIC». Журнал доктора Добба . Том 1, № 1. С. 9.
  13. ^ Эллисон, Деннис (1976). "Краткое справочное руководство по Tiny BASIC". Журнал доктора Добба . Т. 1, № 1. С. 6.
  14. ^ Руководство по языку BASIC-PLUS (PDF). Мейнард, Массачусетс: Digital Equipment Corporation. 1972. С. 3–13.
  15. ^ Аллен, Деннис. «TINY BASIC». People's Computer Company . 4 (3).
  16. ^ Файт, Хольгер. "Tom Pittman's 6800 tiny BASIC" . Получено 2 мая 2017 г. .
  17. ^ Журнал доктора Добба , Том 1, Номер 1, 1976, стр. 12.
  18. ^ Здесь CRLFсимволизируется возврат каретки, за которым следует перевод строки .
  19. ^ Питтман, Том. "Tiny BASIC Experimenter's Kit" . Получено 9 августа 2020 г.
  20. ^ "TINY BASIC 6800" (PDF) . Архивировано (PDF) из оригинала 2022-10-09 . Получено 13 авг. 2020 .
  21. ^ abc "Tiny BASIC Extended". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (2). Февраль 1976 г.
  22. ^ ab "Denver Tiny BASIC". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (3). Март 1976 г.
  23. ^ abc "MINOL". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (4). Апрель 1976 г.
  24. ^ abcde Rauskolb, Roger (декабрь 1976 г.). "Dr. Wang's Palo Alto Tiny BASIC" (PDF) . Interface Age . стр. 92–108. Архивировано (PDF) из оригинала 2022-10-09.
  25. ^ "Design Note". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (1). Декабрь 1975 г.
  26. ^ "6800 Tiny BASIC". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (3). Март 1976 г.
  27. ^ "Руководство пользователя TINY BASIC+".
  28. ^ Ван, Ли-Чен (май 1976 г.). «Palo Alto Tiny BASIC». Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (5): 12–25.
  29. ^ ab "NIBL". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (10). Ноябрь 1976 г.
  30. ^ "Улучшенный и модифицированный 6800 Tiny BASIC". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . Октябрь 1980 г.
  31. ^ "TBI68K". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . Февраль 1985 г.
  32. ^ "Возвращение Tiny BASIC". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . Январь 2006 г.
  33. ^ "Texas Tiny BASIC (TBX) Marries TV-Cassette Operating System (TVCOS)". Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (5): 28–31. Май 1976 г.
  34. ^ ab Арнольд, Марк; Уодсворт, Нат (февраль 1976 г.). «SCELBAL – язык более высокого уровня для систем 8008/8080». Журнал доктора Добба . стр. 30–53.
  35. ^ Ван, Ли-Чен (май 1976 г.). «Palo Alto Tiny BASIC». Журнал компьютерной гимнастики и ортодонтии доктора Добба, Running Light Without Overbyte . 1 (5): 12–25.(Примечание. Исходный код начинается со следующих шести строк. «TINY BASIC FOR INTEL 8080; ВЕРСИЯ 1.0; АВТОР LI-CHEN WANG; 10 ИЮНЯ 1976; @COPYLEFT; ВСЕ НЕПРАВИЛЬНЫЕ ДОСТОВЕРЕНИЯ ЗАЩИЩЕНЫ». Дата за июнь в майском выпуске указана правильно. Журнал отставал от графика, поэтому июньский и июльский выпуски были объединены, чтобы наверстать упущенное.)
  36. ^ МакКейб, Дуайт [редактор] (1 июля 1977 г.). Справочник PCC по персональным и домашним вычислениям (1-е изд.). Менло-Парк, Калифорния: People's Computer Company. стр. 248. ISBN 0-918790-02-6. {{cite book}}: |first1=имеет общее название ( помощь )
  37. ^ "People's Computer Company" (PDF) . Архивировано (PDF) из оригинала 2022-10-09 . Получено 25 декабря 2019 .
  38. ^ Тернбулл, Пит. "Startrek.asc" . Получено 25 декабря 2019 г.
  39. ^ "3K Control Basic Instruction Manual" (PDF) . Cromemco. Архивировано из оригинала (PDF) 2013-12-22 . Получено 2013-02-18 .
  40. ^ Эйнсворт, Дик (1982). Astro BASIC . Astrocade, Inc. стр. 3.
  41. ^ «BASIC Роберта Уитервика».
  42. ^ "Micro Basic Роберта Уитервика" .
  43. ^ "Часть 1 интерпретатора LLL 8080 BASIC" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  44. ^ "4 языковые системы Altair". Altair BASIC .
  45. ^ Altair BASIC (PDF) . MITS. 25 августа 1975 г. Архивировано (PDF) из оригинала 09.10.2022.
  46. ^ Возняк, Стивен (1 мая 2014 г.). «Как Стив Возняк написал BASIC для оригинальной Apple с нуля». Gizmodo .
  47. ^ Уэлш, Дэвид; Уэлш, Тереза ​​(2007). Priming the Pump: Как энтузиасты TRS-80 помогли зажечь революцию ПК . стр. 7.
  48. ^ "ZX80 – ОБНОВЛЕНИЕ БАЗОВОГО ПЗУ 8K".
  49. ^ Несс, Стивен. "XYBASIC". Ness Software . Получено 4 августа 2020 г.
  50. ^ "TinyBasicPlus". GitHub .
  51. ^ "Он здесь! Half-Byte Tiny Basic 2 для Arduino и совместимых". 27 ноября 2014 г.
  52. ^ «Запуск Tiny Basic на Micro: Bit». 28 марта 2020 г.
  53. ^ Chailloux, Emmanuel; Manoury, Pascal; Pagano, Bruno (2002). Разработка приложений с Objective Caml . Франция: O'Reilly. ISBN 2841771210.
  54. ^ "aleozlx/tinybasic". GitHub . Получено 20-09-2020 .
  55. ^ "PaloAltoTinyBasic" . Получено 20.09.2020 .
  56. ^ Уильямс, Эл (31 июля 2019 г.). "bootBASIC подходит для вашего любимого языка в загрузочном секторе". Hack A Day . Получено 26 марта 2022 г. .
  57. ^ Гутьеррес, Оскар Толедо. "bootBASIC — это язык BASIC в 512 байтах машинного кода x86". Github . Получено 26 марта 2022 г.
  58. ^ Гутьеррес, Оскар Толедо (27 июля 2019 г.). Программирование игр в загрузочном секторе . Lulu. стр. 155. ISBN 978-0-359-76262-0.
  59. ^ Хендерсон, Гордон (2023). «Крошечная базовая модель для 6502». Проекты Drogon .
  60. ^ "BASIC" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  61. ^ "РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ СИСТЕМЫ РАЗДЕЛЕНИЯ ВРЕМЕНИ TSS/8". Февраль 1970 г.
  62. ^ "ИНТЕРПРЕТАТОР ЯЗЫКА BASIC ДЛЯ МИКРОПРОЦЕССОРА INTEL 8008". 1974.
  63. ^ "MITS ALTAIR BASIC REFERENCE MANUAL" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  64. ^ "Журнал компьютерной гимнастики и ортодонтии доктора Добба: бег налегке без овербайта" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  65. ^ "Журнал компьютерной гимнастики и ортодонтии доктора Добба: бег налегке без овербайта" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  66. ^ ab "Журнал компьютерной гимнастики и ортодонтии доктора Добба: бег налегке без овербайта" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  67. ^ «Журнал компьютерной гимнастики и ортодонтии доктора Добба: бег налегке без перегрузки».
  68. ^ «Век интерфейса».
  69. ^ "Журнал компьютерной гимнастики и ортодонтии доктора Добба: бег налегке без овербайта" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  70. ^ "Помощь для TRS-80 Level I BASIC".
  71. ^ "MICRO BASIC Роберта Уитервика" .
  72. ^ "SCELBAL – язык более высокого уровня для систем 8008/8080" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  73. ^ «ПРЕДВАРИТЕЛЬНОЕ РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ APPLE BASIC». Октябрь 1976 г.
  74. ^ "Interface Age" (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  75. ^ https://cdn.hackaday.io/files/1707077303528288/ZX80_OperatingManual.pdf. {{cite web}}: Отсутствует или пусто |title=( помощь )

Библиография

Внешние ссылки