Крошечный БЕЙСИК
Разработано | Деннис Эллисон |
---|---|
Впервые появился | 1975 |
Язык реализации | IL (переводной язык) |
Лицензия | Общественное достояние |
Диалекты | |
Denver Tiny BASIC, Enhanced 6800 Tiny BASIC, MINOL, National Industrial Basic Language, Palo Alto Tiny BASIC, 6800 Tiny BASIC, TBI68K, Tiny BASIC Extended | |
Под влиянием | |
Дартмут БЕЙСИК , 8008 БЕЙСИК | |
Под влиянием | |
Astro BASIC , Atari BASIC , уровень I BASIC |
Tiny BASIC это семейство диалектов языка программирования BASIC , которые могут уместиться в 4 или менее КБ памяти — . Tiny BASIC был разработан Деннисом Эллисоном и People's Computer Company (PCC) в ответ на открытое письмо, опубликованное Биллом Гейтсом с жалобой на пользователей, пиратствующих Altair BASIC , который продавался за 150 долларов. Tiny BASIC задумывался как полностью бесплатная версия BASIC, которая могла бы работать на тех же ранних микрокомпьютерах .
Tiny BASIC был выпущен как спецификация, а не реализация, опубликованная в сентябрьском выпуске информационного бюллетеня PPC за 1975 год. В статье программистам предлагалось реализовать его на своих машинах и отправить полученную реализацию на языке ассемблера обратно для включения в серию из трех запланированных информационных бюллетеней. Ли-Чен Ван , автор Palo Alto Tiny BASIC, ввёл термин « авторское лево » для описания этой концепции. Реакция сообщества была настолько ошеломляющей, что информационный бюллетень был перезапущен под названием « Журнал доктора Добба» , первое регулярное периодическое издание, посвященное программному обеспечению для микрокомпьютеров. «Доббс» просуществовал в печатном виде 34 года, а затем в сети до 2014 года, когда его веб-сайт превратился в статический архив.
Небольшой размер и бесплатный исходный код сделали эти реализации неоценимыми на заре появления микрокомпьютеров в середине 1970-х годов, когда оперативная память была дорогой, а типичный размер памяти составлял всего от 4 до 8 КБ. Хотя минимальная версия Altair BASIC от Microsoft также могла работать на машинах с размером памяти 4 КБ, она оставляла свободными только 790 байт для программ BASIC. Больше свободного места было существенным преимуществом Tiny BASIC. Чтобы соответствовать этим строгим ограничениям размера, в диалектах Tiny BASIC обычно отсутствовали различные функции, обычно встречающиеся в других диалектах, например, в большинстве версий отсутствовали строковые переменные , отсутствовали математические операции с плавающей запятой и допускались только однобуквенные имена переменных.
Крошечные реализации BASIC до сих пор используются для программирования микроконтроллеров , таких как Arduino .
История
[ редактировать ]Альтаир БЕЙСИК
[ редактировать ]Самые ранние микрокомпьютеры , такие как MITS Altair 8800 , обычно не имели встроенных входов/выходов (I/O), за исключением переключателей на передней панели и светодиодных ламп. Полезная работа обычно требовала добавления карты расширения ввода-вывода и использования терминала той или иной формы . В то время видеотерминалы были очень дорогими и стоили намного дороже, чем компьютер, поэтому многие пользователи обратились к механическим устройствам, таким как Teletype Model 33 . Модель 33, как и большинство телетайпов того времени, включала систему перфоленты , позволяющую операторам предварительно записывать свои сообщения, а затем воспроизводить их на «высокой скорости», быстрее, чем большинство людей могли бы напечатать сообщение вживую. Для первых микрокомпьютеров это обеспечивало удобный формат хранения компьютерных данных , позволяющий пользователям записывать программы на бумажную ленту и распространять их среди других пользователей. [ 1 ]
Компьютерный клуб Homebrew впервые собрался в марте 1975 года, и вскоре его члены использовали собрания для обмена программами на перфоленте. На июньской встрече исчезла кассета с предварительной версией Altair BASIC . Ленту передали Стиву Домпиру, который передал ее Дэну Соколу, у которого был доступ к высокоскоростному перфоратору. На следующей встрече в картонной коробке появилось 50 копий Altair BASIC на бумажной ленте. [ 2 ] Когда Эд Робертс , основатель MITS, узнал об этом, он заявил: «Любой, кто использует украденную копию MITS BASIC, должен признать себя тем, кем он является, — вором». [ 3 ] Билл Гейтс сделал это более формальным, написав « Открытое письмо любителям », в котором жаловался: «Как должно быть известно большинству любителей, большинство из вас крадут ваше программное обеспечение». [ 4 ]
Крошечный БЕЙСИК
[ редактировать ]Жалоба не была принята должным образом. Среди множества ответов Боб Альбрехт, еще один член Homebrew и основатель People's Computer Company (PCC), счел, что лучшим ответом было бы создание собственного BASIC, который мог бы быть совершенно бесплатным для использования кем угодно. Он обратился к Деннису Эллисону , преподавателю компьютерных наук Стэнфордского университета , с просьбой написать спецификацию версии BASIC, которая могла бы уместиться в 2–3 килобайта памяти. [ а ] Чтобы облегчить портирование , проект был основан на промежуточном языке (IL), интерпретаторе для интерпретатора, что означало, что нужно было портировать лишь небольшую часть общего кода.
Первоначальный проект Эллисона был опубликован в выпуске информационного бюллетеня PCC за сентябрь 1975 года вместе с Intel 8080 версией интерпретатора IL для . В статье программистам предлагалось реализовать проект на своих компьютерах и отправить полученную версию на языке ассемблера обратно в PCC. Они заявили о своих планах опубликовать три специальных информационных бюллетеня, содержащих эти версии, представленные пользователями, а также исправления ошибок, программы, написанные на новом языке BASIC, а также предложения и улучшения. Эта концепция получила дальнейшее внимание, когда она была переиздана в январе 1976 года в выпуске Специальной группы по интересам ACM по языкам программирования. [ 5 ] Материалы посыпались потоком. Среди примечательных ранних версий была Tiny BASIC Extended от Дика Уиппла и Джона Арнольда, которая работала в 3 КБ ОЗУ, добавляла циклы FOR...NXT и позволяла использовать один числовой массив. Они избегали использования IL и писали его непосредственно в машинном коде, используя восьмеричный код . [ 6 ]
Первый из трех запланированных информационных бюллетеней под названием «Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта» был опубликован в январе 1976 года. [ 6 ] Он начинается с заметки Альбрехта под псевдонимом «Дракон», в которой он предполагает, что трех изданий будет недостаточно, и спрашивает читателей, хотят ли они, чтобы оно продолжалось. Он также перепечатал оригинальную статью о Tiny BASIC от PCC, включил полный список Extended TB и ряд небольших программ BASIC, включая советы и рекомендации от Эллисона. [ 7 ] Реакция на первый выпуск была настолько впечатляющей, что во введении ко второму выпуску говорилось, что они уже решили продолжить публикацию нового информационного бюллетеня под упрощенным названием « Журнал доктора Добба» . В следующих нескольких выпусках были опубликованы дополнительные версии языка, а аналогичные статьи начали появляться в других журналах, таких как Interface Age .
Распространение
[ редактировать ]К середине 1976 года интерпретаторы Tiny BASIC были доступны для процессоров Intel 8080 , Motorola 6800 и MOS Technology 6502 . Это был предшественник совместной разработки сообщества свободного программного обеспечения до того, как Интернет позволил легко передавать файлы, и был примером проекта свободного программного обеспечения до движения за свободное программное обеспечение . [ 9 ] Любители компьютеров обменивали бумажные ленты, кассеты или даже перепечатывали файлы из распечатанных списков. [ 10 ]
Джим Уоррен, редактор журнала Dr. Dobb's , написал в бюллетене ACM Programming Language за июль 1976 года о мотивах и методах этого успешного проекта. Он начал с этого: «Существует реальная альтернатива проблемам, поднятым Биллом Гейтсом в его гневном письме любителям компьютеров по поводу «грабежа» программного обеспечения. Когда программное обеспечение бесплатное или настолько дешевое, что за него легче заплатить, чем копировать это, тогда оно не будет «украдено». Письмо Билла Гейтса было написано с целью превратить программное обеспечение в продукты . Альтернативный метод заключался в том, чтобы опытный профессионал разработал общий дизайн, а затем наметил стратегию реализации. Знающие любители смогут реализовать проект для различных компьютерных систем. Уоррен предсказал, что эта стратегия будет продолжена и расширена. [ 10 ]
В майском выпуске журнала Dr. Dobbs за 1976 год был опубликован Palo Alto Tiny BASIC Ли-Чен Ванга для 8080. Список начинался с обычного названия, имени автора и даты, но также имелся знак «@COPYLEFT ВСЕ НЕПРАВИЛЬНОСТИ ЗАРЕЗЕРВИРОВАНЫ». [ 11 ] Другой член Homebrew Computer Club Роджер Рауколб модифицировал и улучшил программу Ли-Чен Ванга, и это было опубликовано в декабрьском номере журнала Interface Age за 1976 год . [ 8 ] Роджер добавил свое имя и сохранил уведомление COPYLEFT.
Описание
[ редактировать ]Основные понятия
[ редактировать ]Tiny BASIC был разработан так, чтобы использовать как можно меньше памяти, и это отражается в скудности функций, а также в деталях его системы интерпретатора . Ранним микрокомпьютерам не хватало оперативной памяти и вторичной памяти BASIC для компилятора , что было более типично для систем с разделением времени.
Как и большинство BASICов той эпохи, Tiny Basic был интерактивным, когда пользователь вводил операторы в командную строку. Поскольку микрокомпьютеры той эпохи часто использовались с телетайпами или «тупыми» терминалами, прямое редактирование существующего текста было невозможно, и вместо этого редактор использовал символы выноса, часто обратную косую черту, чтобы указать, где пользователь сделал резервную копию для редактирования существующего текста.
Если пользователь вводил оператор в командную строку, система проверяла его, чтобы определить, начинается ли он с цифры. Если этого не произошло, строка немедленно анализировалась и обрабатывалась, потенциально генерируя выходные данные через PRINT
. Это было известно как «прямой режим».
Если строка была введена с начальным числом, число было преобразовано из десятичного формата, например «50», и преобразовано в 8-битное значение, в данном случае: $32
шестнадцатеричный . Это число использовалось в качестве индекса в области хранения, похожей на массив , где остальная часть строки сохранялась точно в том формате, в котором она была набрана. Когда пользователь ввел LIST
в командную строку система будет перебирать массив, преобразовывать номер строки обратно в десятичный формат, а затем распечатывать оставшуюся часть текста в строке.
Когда программа присутствует в памяти и пользователь вводит ее RUN
команда, система переходит в «косвенный режим». В этом режиме устанавливается указатель на первую строку программы, например, 10 ( $0A шестнадцатеричный ). Исходный текст этой строки затем извлекается из хранилища и запускается так, как если бы пользователь только что набрал его в прямом режиме. Затем указатель перемещается на следующую строку, и процесс продолжается.
Формальная грамматика
[ редактировать ]Грамматика приведена ниже в форме Бэкуса-Наура , почти точно так, как указано в заметках по проекту. [ 12 ] В листинге звездочка (" *
") обозначает ноль или более объектов слева от него, за исключением первой звездочки в определении " term
", который является оператором умножения; круглые скобки группируют объекты; и эпсилон (" ε
") означает пустую строку. Как это принято в обозначениях грамматики компьютерного языка, вертикальная черта (" |
") различает альтернативы, а также их перечисление в отдельных строках. Символ " CR
«обозначает возврат каретки (обычно генерируется клавишей «Enter» на клавиатуре). BREAK с консоли прервет выполнение программы.
line ::= number statement CR | statement CR
statement ::= PRINT expr-list
IF expression relop expression THEN statement
GOTO expression
INPUT var-list
LET var = expression
GOSUB expression
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 ::= < (>|=|ε) | > (<|=|ε) | =
string ::= " ( |!|#|$ ... -|.|/|digit|: ... @|A|B|C ... |X|Y|Z)* "
Обратите внимание, что строка не была определена в примечаниях к проектированию.
Этот синтаксис, каким бы простым он ни был, добавил одно нововведение: GOTO
и GOSUB
может принимать выражение, а не просто номер строки, предоставляя назначенный GOTO [ 13 ] а не переключения оператор GOTO/GOSUB ... OF ...
, структура, которая затем поддерживалась в HP Time-Shared BASIC и ранее ON ... GOTO
. Синтаксис, позволяющий IF-THEN statement
(в отличие от просто номера строки для перехода) в то время еще не поддерживался в Dartmouth BASIC, но был представлен Digital [ 14 ] и скопирован Microsoft.
Реализация на виртуальной машине
[ редактировать ]В примечаниях к проектированию указана виртуальная машина , в которой интерпретатор Tiny BASIC сам запускается на интерпретаторе виртуальной машины. Идея дизайнера использовать виртуальную машину приложения восходит к Вэлу Шорру (с META II , 1964) и Гленни (Syntax Machine). Выбор подхода с использованием виртуальной машины позволил сэкономить пространство памяти и усилия по реализации, хотя программы BASIC, выполняемые на ней, выполнялись несколько медленно. [ 15 ]
Диалекты, в которых использовалась виртуальная машина, включали Tiny BASIC Extended, Тома Питтмана . Tiny BASIC [ 16 ] и НИБЛ. Другие диалекты, такие как Denver Tiny BASIC (DTB) и Palo Alto Tiny BASIC, были прямыми переводчиками. Некоторые программисты, такие как Фред Гриб из DTB, рассматривали программу IL (интерпретационный язык) как псевдокод для алгоритма , реализуемого на языке ассемблера; Denver Tiny BASIC не использовал виртуальную машину, но внимательно следил за программой IL.
Это репрезентативный отрывок из 120-строчной программы IL:
S1: TST S3,'GO' ;GOTO OR GOSUB?
TST S2,'TO' ;YES...TO, OR...SUB
CALL EXPR ;GET LABEL
DONE ;ERROR IF CR NOT NEXT
XFER ;SET UP AND JUMP
S3: TST S8,'PRINT' ;PRINT.
Обычной схемой работы программы является проверка ключевого слова или части ключевого слова, а затем действие на основе этой информации. Каждый тест представляет собой утверждение о том, что будет дальше в буфере строк. Если утверждение не выполнено, управление переходит к следующей метке (обычно ищет новое ключевое слово или токен). Здесь система перемещает курсор буфера по всем пробелам и проверяет GO , и если он не может его найти, он переходит на строку С3 . Если он его находит, выполнение продолжается со следующей команды IL. В этом случае система далее проверяет наличие TO , переход на строку S2 в случае неудачи (тест на SUB , чтобы узнать, не является ли это команда ГОСУБ ). Если он проходит, контроль продолжается; в этом случае вызов IL-подпрограммы, которая начинается с метки EXPR , который анализирует выражение. В Тайни БЕЙСИКе GOTO X*10+100
(вычисленный GO TO) так же законен, как и GOTO 100
и является альтернативой ON-GOTO более крупных реализаций BASIC. Подпрограмма EXPR помещает результат выражения в арифметический стек (в данном случае номер строки). DONE проверяет, что за выражением не следует никакой другой текст, и выдает ошибку, если это так. XFER извлекает число из стека и передает на выполнение (GOes TO) соответствующий номер строки, если он существует.
В следующей таблице приведен неполный список из 32 команд виртуальной машины, на которой был написан первый интерпретатор Tiny BASIC. [ 17 ]
- TST lbl , строка
- Если строка соответствует строке BASIC, переместите курсор на строку и выполнить следующую инструкцию IL; если тест не пройден, выполните инструкцию IL по метке lbl.
- ЗВОНИТЕ фунт
- Выполните подпрограмму IL, начиная с фунт ; сохраните адрес IL после CALL в стеке управления
- СДЕЛАННЫЙ
- Сообщите о синтаксической ошибке, если после удаления начальных пробелов курсор не достигает символа возврата каретки.
- XFER
- Тестовое значение в верхней части стека AE должно находиться в пределах диапазона. Если нет, сообщите об ошибке. Если да, попытайтесь поместить курсор на эту строку. Если оно существует, начните интерпретацию с него; если нет, сообщите об ошибке.
- Прыжок фунта
- Продолжить выполнение IL по указанной метке.
- РТН
- Вернитесь в местоположение IL, указанное в верхней части стека управления.
- ПРС
- Печатать символы из текста BASIC до закрывающей кавычки, но не включая ее.
- ПРН
- Число печати, полученное путем удаления вершины стека выражений
- НПЦ
- Вставьте пробелы, чтобы переместить печатающую головку в следующую зону.
- НЛАЙН
- Вывод CRLF [ 18 ] к принтеру
Том Питтман , обсуждая IL, говорит: «Интерпретатор TINY BASIC был разработан Деннисом Эллисоном как анализатор рекурсивного спуска . Часть элегантной простоты этой конструкции была потеряна из-за добавления синтаксического сахара в язык, но базовая форма осталась. IL особенно подходит для рекурсивного анализа TINY BASIC из-за общей рекурсивной природы его процедур и простоты токенов TINY BASIC. Язык IL эффективно оптимизирован для интерпретации TINY. Опыт показал, что добавление затруднено. Новые функции языка не соответствуют природе этих функций. Обычно для поддержки новых функций необходимо добавлять дополнительные функции машинного языка. Часто трудности перевешивают преимущества». [ 19 ]
Отклонения от конструкции
[ редактировать ]Определяя Tiny BASIC для Домашнего компьютерного клуба, Питтман писал: «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 году:
- Во всех добавлена какая-то функция случайных чисел, обычно
RND()
. Хотя эта функция и не включена в спецификацию, в статье информационного бюллетеня, предшествовавшей примечаниям к дизайну для Tiny BASIC, запрашивалась только эта функция. - Все включено
LET
быть необязательным, и большинство выражений let в операторах присваивания содержат операторы отношения . - Все, кроме 6800 ТБ, поддерживают разделители операторов в строках, обычно
:
хотя ТБХ использовался$
и PATB используется;
. - В
IF
операторов, все, кроме MINOL, устранили необходимость в выражениях, содержащих реляционные операторы (например,IF X THEN LET Y=X
был действительным). Реализации удаленыTHEN
вообще, или сделал его необязательным, или поддерживал его только для подразумеваемыхGOTO
. Ничего не поддерживаетсяELSE
статьи. - Многие модифицированные
PRINT
для поддержки зон печати, используя,
перейти в следующую зону и;
чтобы не продвигать курсор. - Добавлены все, кроме 6800 ТБ и DTB.
NEW
. - Все, кроме 6800TB и MINOL, добавили функцию возврата размера памяти: у TBX была
SZE
, DTB и PATB имелиSIZE
, у L1B былMEM
и NIBL имелTOP
. - Четыре реализации добавили массивы, будь то одиночный безразмерный массив в PATB и L1B или
DIM
возможные массивы в TBX и DTB. - Четыре реализации добавили
REM
заявление ковчега. - Четыре реализации добавили
FOR
цикл: предлагаются PATB, NIBL и L1B.FOR-TO-STEP/NEXT
, пока ТВХ не поддерживалSTEP
и использовал ключевое словоNXT
чтобы завершить цикл. - Только NIBL отдавал предпочтение структурному программированию.
DO/UNTIL
, несмотря на жалобы Эллисон во втором выпуске о проблемах с BASIC.
В качестве альтернативы токенизации для экономии оперативной памяти, ТВХ, [ 21 ] ДТБ, [ 22 ] и МИНОЛ [ 23 ] сокращенные ключевые слова: PR
для PRINT
, IN
для INPUT
, RET
для RETURN
. Полные традиционные ключевые слова не принимались. Напротив, PATB допускал принятие традиционных ключевых слов, но также позволял сокращать любое ключевое слово до минимальной уникальной строки с конечной точкой. Например, PRINT
можно было бы напечатать P.
, хотя PR.
и другие варианты также работали. Эта система была сохранена в уровне 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 , давно существующим компьютерным журналом. В журнале было опубликовано около десяти версий.
Дата публикации | Проблема | Диалект | Автор | Процессор | Размер |
---|---|---|---|---|---|
декабрь 1975 г. | 1 [ 25 ] | Примечание к проектированию | Деннис Эллисон | — | — |
февраль 1976 г. | 2 [ 21 ] | Расширенный Tiny BASIC (TBX) | Дик Уиппл и Джон Арнольд | 8080 | 2,9 тыс. |
Март 1976 г. | 3 [ 22 ] | Денвер Тайни БЕЙСИК (DTB) | Фред Гриб | 8080 | 2,75 тыс. |
Март 1976 г. | 3 [ 26 ] | 6800 Tiny BASIC (6800 ТБ) | Том Питтман | 6800 | 2К [ 27 ] |
апрель 1976 г. | 4 [ 23 ] | МИНОЛ | Эрик Т. Мюллер | 8080 | 1,75 тыс. |
Май 1976 г. | 5 [ 28 ] | Пало-Альто Крошечный БЕЙСИК (PATB) | Ли-Чен Ван | 8080 | 1,77 тыс. |
ноябрь 1976 г. | 10 [ 29 ] | Национальный промышленный базовый язык (NIBL) | Марк Александр и Стив Лейнингер | СК/МП | 4K |
Октябрь 1980 г. | 49 [ 30 ] | Улучшенный 6800 Tiny BASIC | Роберт Хадсон | 6800 | — |
февраль 1985 г. | 100 [ 31 ] | ТБИ68К | Гордон Брэндли | 68000 | — |
январь 2006 г. | 351 [ 32 ] | Возвращение Tiny BASIC | Том Питтман | — ( С ) | — |
TBX также был известен как Texas Tiny BASIC. [ 33 ]
Оба СКЕЛБАЛ [ 34 ] и 6800 Tiny BASIC были анонсированы в журнале, но их исходный код не был опубликован.
Пало-Альто Тайни БЕЙСИК
[ редактировать ]Разработчик | Ли Чен Ван |
---|---|
Впервые появился | 1976 |
Лицензия | Общественное достояние |
Диалекты | |
Базовое управление 3K | |
Под влиянием | |
Примечание по дизайну Tiny BASIC, расширенный вариант Tiny BASIC | |
Под влиянием | |
Astro BASIC , уровень I BASIC , Sharp PC-1211 BASIC |
Одной из самых популярных из множества версий Tiny BASIC была Palo Alto Tiny BASIC, или сокращенно PATB, авторства Ли-Чен Ванга . PATB впервые появился в майском выпуске 1976 года книги «Доббс» , написанной на специальном языке ассемблера с нестандартной мнемоникой. Это привело к появлению новых портов, которые работали с обычными ассемблерами на 8080. [ 24 ] Первая версия интерпретатора занимала 1,77 килобайт памяти и предполагала использование телетайпа (TTY) для пользовательского ввода/вывода . Ошибка в оригинальной статье появилась в июньско-июльском номере журнала Dr. Dobb's (том 1, № 6). В эту статью также включена информация о добавлении дополнительных устройств ввода-вывода кода для отображения видео VDM от Processor Technology на примере .
Ван был одним из первых, кто использовал слово «авторское лево» . В уведомлении о распространении Palo Alto Tiny BASIC он написал: «@COPYLEFT ВСЕ НЕПРАВИЛЬНОСТИ ЗАРЕЗЕРВИРОВАНЫ». [ 35 ] Tiny BASIC не распространялся под какой-либо формальной формой условий распространения авторского лева, но был представлен в контексте, когда исходный код распространялся и изменялся. Фактически, Ван ранее внес изменения в 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 ] [ б ]
PATB использовал слова для сообщений об ошибках вместо чисел. Чтобы уменьшить объем необходимой памяти, сообщений было всего три, и они состояли из отдельных слов. Система ответит WHAT?
для синтаксических ошибок, HOW?
для ошибок во время выполнения, таких как переход к несуществующей строке или числовые переполнения, и SORRY
для проблем с нехваткой памяти. [ 24 ]
Ван также написал программу STTREK на своем Tiny BASIC, которая появилась в июльском номере журнала People's Computer Company Newsletter за 1976 год . [ 37 ] [ 38 ]
Позже он адаптировал этот язык в 3K Control Basic для Cromemco , добавив имена переменных в форме буква-цифра (например, A0
к Z9
), логические функции ( AND()
, OR()
, XOR()
), а CALL
команда для выполнения подпрограмм машинного языка и т. д. PRINT
-параметры форматирования и другие ( GET()
и PUT()
вместо PEEK
и POKE
; Функции порта ввода-вывода). [ 39 ]
Palo Alto Tiny BASIC был адаптирован для многих других реализаций, включая Level I BASIC (1977), BASIC для Sharp PC-1211 карманного компьютера (1980) и Astro BASIC (1982, Джейми Фентон ). [ 40 ]
МИНОЛ
[ редактировать ]Написанный учеником старшей школы, MINOL был единственной реализацией, которая не поддерживала полную заметку о проекте, не имела приоритета операторов , имела только три повтора (<, =, #), опускала GOSUB
и RETURN
. Он поддерживал только 8-битную точность без знака (в отличие от 16-битной точности со знаком для любой другой реализации) и номера строк от 0 до 254.
Пробелы не допускались, за исключением строк; !
возвращает случайное число, $
перед тем, как выражение загрузит строку по этому адресу; OS
возвращается в операционную систему. Память была адресуемой, как если бы она представляла собой двумерный массив старших и младших байтов (например, от «(0,0)» до «(255,255)»); CALL
выполняет подпрограмму машинного языка. [ 23 ]
Разные диалекты
[ редактировать ]Многие диалекты появлялись в различных других публикациях.
Вдохновленный призывом PCC к использованию Tiny BASIC, Роберт Уитервик написал MICRO BASIC 1.3 для системы SWTPC 6800 ), который SWTPC опубликовал в июньском выпуске информационного бюллетеня SWTPC за 1976 год. Уитервик написал текст от руки на официальном планшете. Позже он расширил язык до 4K, добавив поддержку чисел с плавающей запятой; эта реализация была уникальной среди интерпретаторов BASIC, поскольку использовала двоично-десятичное число с точностью до 9 цифр и диапазоном до 10. 99 и быть опубликованным бесплатно в виде вкладыша в журнал «Floppy ROM» . В версии 8K добавлены строковые переменные и тригонометрии функции . Версии 4K и 8K продавались SWTPC. В январе 1978 года Уитервик продал права на исходный код компании Motorola . [ 41 ] [ 42 ]
Томас Ф. Уэйтман написал Tiny BASIC в 1976 году для терминалов Hewlett-Packard HP-2640 и HP-2645 (которые использовали процессоры Intel 8008 и 8080), который был опубликован в журнале Hewlett-Packard Journal .
В декабрьском выпуске журнала Interface Age за 1976 год был опубликован LLL ( Ливерморская лаборатория Лоуренса ) BASIC, первый вариант которого был разработан Стивом Лейнингером на основе спецификации Эллисон до того, как Лейнингер покинул National Semiconductor и перешёл в Tandy Corporation . Окончательный интерпретатор был разработан Джоном Дикенсоном, Джерри Барбером и Джоном Титером в Университете Айдахо по контракту с LLL. Помимо 5K, он включал в себя пакет операций с плавающей запятой, разработанный Дэвидом Мидом, Хэлом Брэндом и Фрэнком Олкеном. Программа была передана в общественное достояние компанией LLL, которая разработала систему под эгидой Управление энергетических исследований и разработок США. [ 43 ]
4K BASICs
[ редактировать ]Altair BASIC , 4K BASIC, мог работать на машине с оперативной памятью 4 КБ, оставляя свободным только около 790 байт для программного кода. [ 44 ] [ 45 ] Инициатива Tiny BASIC началась в ответ на плату в 150 долларов за Altair 4K BASIC.
В 1975 году Стив Возняк присоединился к недавно сформированному компьютерному клубу Homebrew , в который входили Ли-Чен Ван (Palo Alto Tiny BASIC) и Том Питтман (6800 Tiny BASIC). Возняк пришел к выводу, что его машина должна иметь собственный BASIC, который, как мы надеемся, будет первым для процессора MOS Technology 6502 . Поскольку для языка требовалось 4 КБ ОЗУ, он сделал это минимальным объемом памяти для проекта. [ 46 ] Integer BASIC был первоначально опубликован на компакт-кассете в 1976 году.
В 1977 году Radio Shack (как его тогда называли) выпустила свой первый компьютер TRS-80 — систему Z80 с уровнем I BASIC в ПЗУ размером 4 КБ. Сотрудник Тэнди Стив Лейнингер написал первый проект интерпретатора 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 :
- Стивен А. Несс написал XYBASIC для компании Mark Williams в 1977 году, целочисленную реализацию 4 КБ. Этот язык часто использовался для приложений управления процессами. [ 49 ]
- Arduino BASIC - адаптирован из 68000 Tiny BASIC Гордона Брэндли, портированного на C Майком Филдом.
- TinyBasic Plus – адаптированный вариант Arduino BASIC Скотта Лоуренса. [ 50 ]
- Half-Byte Tiny Basic – адаптирован из Arduino BASIC. [ 51 ]
- Tiny Basic на micro:bit – адаптировано из Palo Alto Tiny BASIC. [ 52 ]
Более поздние реализации
[ редактировать ]В 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, простые строки и просмотр/запрос памяти (байт или 16-битное слово), GOSUB/RETURN, CALL, RND с возможностью шестнадцатеричного ввода и вывода. [ 59 ]
Диалекты по сравнению
[ редактировать ]В следующей таблице сравниваются языковые особенности реализаций Tiny BASIC с другими известными BASIC, которые им предшествовали.
Дата
Опубликовано |
Диалект | Программа(ы) | Процессор | Тип | ВХОД | ПОЗВОЛЯТЬ | ПЕЧАТЬ | ПЕРЕЙТИ К | ЕСЛИ...ТО | ГОСУБ | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК | ПРОЗРАЧНЫЙ | НОВЫЙ | быстрый сон | ЗА/СЛЕДУЮЩИЙ | ЧТЕНИЕ/ДАННЫЕ/ВОССТАНОВЛЕНИЕ | Добавлены команды BASIC. | Настройки | Выражения | рецидив | Функции | РНД | Функция памяти | Номера строк | Разделитель операторов | Ошибки | Точность | Арифметика | Переменные | Массивы | Струны |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октябрь 1964 г.
|
DTSS Дартмут БЕЙСИК
(версия 2) [ 60 ] |
(студенты Дартмута) | ГЭ-225 | Компилируйте и работайте | Н/Д [!] | LET var = выражение | ПЕЧАТЬ списка выражений { , / ; / } | ПЕРЕЙТИ К номеру | IF выражение relop выражение THEN номер строки | Номер ГОСУБ | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК — начало | — | НОВИНКА [запрашивает название программы] | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | ЧИТАТЬ, ДАННЫЕ | ОСТАНАВЛИВАТЬСЯ | — | приоритет, ^ | < <= = >= > <> | INT, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN | РНД(0) 0..1 | — | от 1 до 99999 | Никто | 22 определены | 9 цифр | ±999 999 999; Система обозначений E по основанию 2 от -256 до +255 (E±76). | А–Я, А0–Z9 | ДИМ (одна буква названия, два размера); если опущено, предполагается, что оно изменяется от 0 до 10; до 1500 элементов во всех массивах | Нет (добавлено в версии 4) |
февраль 1970 г.
|
ДЕК БЕЙСИК-8 [ 61 ]
|
(сотрудники ДЭК) | ПДП-8 | Компилируйте и работайте | ВХОДНОЙ список переменных | LET var = выражение | ПЕЧАТЬ списка выражений { , / ; / } | ПЕРЕЙТИ К номеру | IF выражение relop выражение [THEN/GO TO] номер строки | Номер ГОСУБ | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК (первый (, последний)) | — | НОВИНКА [запрашивает название программы] | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | ЧТЕНИЕ, ДАННЫЕ, ВОССТАНОВЛЕНИЕ | СТОП, СТАРЫЙ, СОХРАНИТЬ, ОТМЕНИТЬ СОХРАНЕНИЕ | УДАЛИТЬ (первый (, последний)), ПОКА | приоритет, ^ | < <= = >= > <> | INT, SGN, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN | РНД(0) 0..1 | — | от 1 до 2045 | Никто | 23 определены | ? | ±134 217 727; 14Э-38<Н<1,7Е38 | А–Я, АА–Z9 | DIM (название из одной буквы, два размера) | Никто |
Июнь 1974 г.
|
УИУК БАЗОВЫЙ [ 62 ]
|
Альфред Уивер, Майкл Тиндалл, Рональд Дэниэлсон | 8008 | Устный переводчик | ВВОД <переменная> {, <переменная>}* | LET var = формула | PRINT <строка> / <формула> {, <строка> / <формула>}* | ПЕРЕЙТИ К номеру | IF выражение THEN номер строки | Номер ГОСУБ | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | не задокументировано | не задокументировано | не задокументировано | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | — | ЗАЩ ФН, СТОП | — | приоритет, ^ | < <= = >= > # И ИЛИ НЕ | FNA..Z, SIN, COS, LOG, SQR, EXP, ATN | — | — | от 0 до 999 | Никто | не задокументировано | 4-байтовая мантисса и 1-байтовая экспонента [пакет арифметических операций с плавающей запятой Datapoint 2200] | не задокументировано | А–Я, А0–Z9 | DIM (название из одной буквы, три измерения) | Никто |
1975 | Альтаир 4К БАЗОВЫЙ [ 63 ]
|
Билл Гейтс, Пол Аллен, Монте Давидофф | 8080 | Устный переводчик | INPUT ("строка",) список переменных | (LET) var = выражение | ПЕЧАТЬ списка выражений { , / ; } | ПЕРЕЙТИ к номеру | IF выражение THEN номер строки/оператор | Номер ГОСУБ | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК (начало) | — | НОВЫЙ | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | ЧТЕНИЕ, ДАННЫЕ, ВОССТАНОВЛЕНИЕ | ОСТАНАВЛИВАТЬСЯ | — | приоритет | < <= = >= > <> | ABS, INT, SGN, SQR, TAB, USR | RND(X) <0, новое с использованием X в качестве начального числа; =0, повторить; >0, следующий | — | от 1 до 65535 | : | 12 определенных | 40-битный плавающий операнд | ? | ? | РАЗМЕР (одно измерение) | Никто |
декабрь 1975 г.
|
Примечание к проектированию [ 64 ]
|
Деннис Эллисон | — | Устный переводчик | ВХОДНОЙ список переменных | LET var = выражение | РАСПЕЧАТАТЬ список выражений | выражение GOTO | Выражение IF relop выражение THEN оператор | выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК | [экв. до НОВОГО] | — | — | — | — | — | — | приоритет | < <= = >= > <> >< | Никто | Никто | — | от 1 до 255 | Никто | 8 определено | 16-битный | ± 32767 | А – Я | Никто | Никто |
февраль 1976 г.
|
Tiny BASIC Расширенный [ 65 ]
|
Дик Уиппл и Джон Арнольд | 8080 | Устный переводчик | В | (LET) var = выражение | ;} | ПЕРЕЙТИ К | IF выражение [нет THEN] оператор | ПОДПИСАТЬСЯ | ВЕРНО | КОНЕЦ | БЕГАТЬ | LST (первый (, последний)) | — | НОВЫЙ | — | FOR-NXT (без ШАГА) | ДТА (массив LET) | — | — | приоритет | < <= = >= > <> >< | Пробелы TB() в печати | РН (случайное значение 0–10 000) | ОБВЕНЧАЛИСЬ | от 1 до 65535 | $ | 14 определенных | 16-битный | ± 32767 | А – Я | DIM, 1- или 2-мерный, макс. 255x255 | Никто |
Март 1976 г.
|
Денвер Тайни БЕЙСИК [ 66 ]
|
Фред Гриб | 8080 | Устный переводчик | В | (LET) var = выражение | ;} | ПЕРЕЙТИ К | IF выражение [нет THEN] оператор | ГОСУБ | ВЕРНО | КОНЕЦ | БЕГАТЬ | СПИСОК (первый последний) | [экв. до НОВОГО] | — | — | — | — | ЛЕНТА [СОХРАНИТЬ], ЗАГРУЗИТЬ | CLRS [CLS] | приоритет | < <= = >= > <> >< | РНД(0), РНД(1) | РАЗМЕР | от 2 до 255 | : | 20 определенных | 16-битный | ± 32767 | A–Z, от A1 до A6 до Z6 | РАЗМЕР, 1 измерение | Никто | |
Март 1976 г.
|
6800 Крошечный БЕЙСИК [ 66 ]
|
Том Питтман | 6800 | Устный переводчик | INPUT (выражение) список переменных | LET var = выражение | ПЕЧАТЬ списка выражений { , / ; } | выражение GOTO | Выражение IF relop выражение THEN оператор | выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК (первый последний) | [экв. до НОВОГО] | — | быстрый сон | — | — | — | — | приоритет | < <= = >= > <> >< | ЕГР() | РНД() | — | от 1 до 65535 | Никто | 53 определены | 16-битный | ± 32767 | А – Я | Никто | Никто |
апрель 1976 г.
|
МИНОЛ [ 67 ]
|
Эрик Т. Мюллер | 8080 | Устный переводчик | В | (LET) var = expression |
PR expr-list {;} |
[ GOTO 0 возвращается к началу прямого утверждения] |
IF expression relop expression ; statement |
— | — | КОНЕЦ | БЕГАТЬ | СПИСОК | ОЧИСТИТЬ [только переменные] | НОВЫЙ | — | — | — | — | Пробелы не допускаются, кроме как в строках | Нет приоритета оператора | < = # | $ [CHR$] |
! [RND] |
— | от 1 до 254 | : | 6 определено | 8-битный | от 0 до 255 | А – Я | (H,L) ячейка памяти | одиночный символ |
Май 1976 г.
|
Пало-Альто Тайни БЕЙСИК [ 68 ]
|
Ли-Чен Ван | 8080 | Устный переводчик | ВВОД [(выражение) var]* | (LET) var = выражение | РАСПЕЧАТАТЬ список выражений | выражение GOTO | IF выражение [нет THEN] оператор | выражение GOSUB | ВОЗВРАЩАТЬСЯ | ОСТАНАВЛИВАТЬСЯ | БЕГАТЬ | СПИСОК (начало) | — | НОВЫЙ | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | — | ОСТАНАВЛИВАТЬСЯ | — | приоритет | < <= = >= > # | АБС() | РНД() | РАЗМЕР | от 1 до 32767 | ; | 3 определены | 16-битный | ± 32767 | А – Я | @(1 массив из 1 измерения) | Никто |
ноябрь 1976 г.
|
НИБЛ [ 69 ]
|
Марк Александр и Стив Лейнингер | СК/МП | Устный переводчик | ВВОД ($)вар | (LET) var = выражение | PR/PRINT экспр-список | выражение GOTO | Оператор выражения ЕСЛИ (ТОГДА) | выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК (начало) | CLEAR [переменные и стек] | НОВЫЙ | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | — | ДЕЛАТЬ/ПОКА | Адресация памяти (@ [PEEK/POKE], STAT, PAGE) | приоритет | < <= = >= > <> | МОД(), И, ИЛИ, НЕ, | РНД(А,Z) | ВЕРШИНА | от 0 до 32767 | : | определено 13 четырехсимвольных символов | 16-битный | ± 32767 | А – Я | адресация памяти | INPUT$, PRINT$, $exp=exp
|
август 1977 г.
|
Уровень I БАЗОВЫЙ [ 70 ]
|
Стив Лейнингер | Z80 | Устный переводчик | INPUT (#цифра) [(выражение) var]* | (LET) var = выражение | ПЕЧАТЬ (#цифра) списка выражений | ПЕРЕЙТИ к номеру | IF выражение THEN оператор | Номер ГОСУБ | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГ (старт) | СПИСОК (начало) | — | НОВЫЙ | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | ЧТЕНИЕ, ДАННЫЕ, ВОССТАНОВЛЕНИЕ | СТОП, ПРОДОЛЖЕНИЕ, ПЕРЕХОД/GOSUB | ЗАГРУЗИТЬ, CSAVE, CLS, УСТАНОВИТЬ, СБРОС | приоритет | < <= = >= > <> >< | АБС(), ИНТ(), ПАМЯТЬ, ТОЧКА(X,Y) | РНД() | МЕМ | от 1 до 32767 | : | 3 определены | 16-битный | ± 32767 | А – Я | A (1 массив 1 измерения) | A$, B$
|
июнь 1976 г.
|
МИКРО БЕЙСИК 1.3 [ 71 ]
|
Роберт Уитервик | 6800 | Устный переводчик | ВХОДНОЙ список переменных | (LET) var = выражение | ПЕЧАТЬ списка выражений { , / ; } | выражение GOTO | Выражение IF relop выражение THEN оператор | выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК (первый (, последний)) | — | НОВЫЙ | — | FOR/TO/NEXT (без ШАГА) | — | ТАБ () | — | приоритет | < <= = >= > <> >< | РНД, РАЗМЕР | РНД [возвращает 1-32762] | РАЗМЕР (оператор, который печатает использованные и свободные байты) | от 1 до 65535 | Никто | 17 определено | 16-битный [позже BCD!] | ± 32767 | А – Я | DIM (два измерения, максимальный размер 255) | Никто |
июнь 1976 г.
|
Марк Арнольд и Нэт Уодсворт | 8008 | Устный переводчик | ВХОДНОЙ список переменных | (LET) var = выражение | ПЕЧАТЬ списка выражений {, / ; / } | ПЕРЕЙТИ к номеру | ТОГДА заявление | Номер ГОСУБ | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК | — | Царапать] | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | — | СОХРАНИТЬ, ЗАГРУЗИТЬ | ОДФ [USR] | приоритет, ^ | < <= = >= > <> | INT, SGN, ABS, SQR, CHR [можно использовать только в режиме ПЕЧАТЬ], TAB | РНД(0) 0..1 | — | от 1 до 999999 | Никто | 18 определенных | 32-битный операнд с плавающей или фиксированной точкой | ±134 217 727; 14Э-38<Н<1,7Е38 | ? | DIM (одна буква имени, одно измерение; до 4 массивов, всего до 64 записей) | Никто | |
Октябрь 1976 г.
|
Apple I БЕЙСИК [ 73 ]
|
Стив Возняк | 6502 | Устный переводчик | INPUT ("строка",) список переменных | (LET) var = выражение | ПЕЧАТЬ списка выражений { , / ; } | выражение GOTO | IF выражение relop выражение THEN номер строки/оператор | выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГ (старт) | СПИСОК (первый (, последний)) | — | СКР | быстрый сон | ДЛЯ / ДО / ШАГ / СЛЕДУЮЩИЙ | — | АВТО, ДЕЛ, ПОК | TAB (команда), ВЫЗОВ | приоритет | < <= = >= > <> # И ИЛИ НЕ MOD | СГН, АБС, ПЭЭК(), ЛЕН() | RND(X) 0..X (или X..0!) | ХИМЕМ, ЛОМЕ | от 1 до 32767 | Нет [ранняя версия, затем:] | 16 определенных | 16-битный | ± 32767 | A–Z, за которым следует любое количество буквенно-цифровых символов. | РАЗМЕР (одно измерение) | размерный |
декабрь 1976 г.
|
LLL БЕЙСИК [ 74 ]
|
(Сотрудники Университета Айдахо) | 8080 | Устный переводчик | ВХОДНОЙ список переменных | (LET) var = выражение | ПЕЧАТЬ списка выражений { , / ;} | ПЕРЕЙТИ К номеру | Оператор выражения IF (THEN) | GO SUB номер | ВОЗВРАЩАТЬСЯ | КОНЕЦ | БЕГАТЬ | СПИСОК | — | СКР | быстрый сон | FOR/TO/NEXT (без ШАГА) | — | ОСТАНАВЛИВАТЬСЯ | ВЫЗОВ, ПОЛУЧИТЬ(), ПОЛОЖИТЬ() | приоритет | < <= = >= > <> >< | Нет РНД? | — | от 0 до 32767 | : | 14 определенных | 32-битный операнд с плавающей запятой | ? | А–Я, А0–Z9 | DIM (только целые числа, одно буквенное имя, одно измерение, максимальный размер 255) | Никто | |
Январь 1980 г.
|
Синклер 4K БАЗОВЫЙ [ 75 ]
|
Джон Грант | З-80 | Устный переводчик | ВХОД был | LET var = выражение | ПЕЧАТЬ списка выражений { , / ;} | ПЕРЕЙТИ К номеру | IF выражение THEN оператор | GO SUB номер | ВОЗВРАЩАТЬСЯ | — | ВЫПУСК (число) | СПИСОК | ПРОЗРАЧНЫЙ | НОВЫЙ | быстрый сон | FOR/TO/NEXT (без ШАГА) | — | ОСТАНАВЛИВАТЬСЯ | ПОКЕ | приоритет | < = > | ABS, CHR$, КОД, PEEK, RND, STR$, TL$, USR | РНД, СЛУЧАЙНЫЙ | — | от 1 до 9999 | — | 10 определено | 16-битное целое число | 16-битное целое число | A–Z, за которым следует любое количество буквенно-цифровых символов. | DIM AZ (только целые числа, одно буквенное имя, один размер, максимальный размер 255) | А$-Z$ |
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ В то время наиболее распространенным размером памяти для 8080 было 4 КБ, что стоило сотни долларов.
- ^ Хэш также использовался для обозначения неравных в HP Time-Shared BASIC .
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Ланкастер, Дон (1976). «Поваренная книга для телевизионной пишущей машинки» (PDF) . стр. 210–211. Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ Манес и Эндрюс 1994 , с. 81.
- ^ Робертс, Х. Эдвард (октябрь 1975 г.). «Письмо президента» . Компьютерные заметки . 1 (5). Альбукерке, Нью-Мексико: MITS: 3–4. Архивировано из оригинала 23 марта 2012 года.
- ^ Манес и Эндрюс 1994 , с. 91.
- ^ Эллисон, Деннис (июль 1976 г.). «Заметки по проектированию TINY BASIC» . Уведомления SIGPLAN . 11 (7). АКМ: 25–33. дои : 10.1145/987491.987494 . S2CID 18819472 .
- ^ Перейти обратно: а б «Кодовая таблица туберкулеза» . Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (1). Декабрь 1975 года.
- ^ Доббс 1976 , стр. 5.
- ^ Перейти обратно: а б с Рауколб, Роджер (декабрь 1976 г.). «Крошечный БЕЙСИК Пало-Альто доктора Ванга». Возраст интерфейса . 2 (1): 92–108. Исходный код начинается со следующих девяти строк:
;********************************* ; ; TINY BASIC FOR INTEL 8080 ; VERSION 2.0 ; BY LI-CHEN WANG ; MODIFIED AND TRANSLATED ; TO INTEL MNEMONICS ; BY ROGER RAUSKOLB ; 10 OCTOBER,1976 ; @COPYLEFT ; ALL WRONGS RESERVED ; ;*********************************
- ^ «Открытое оборудование: как и почему это работает» . ИБМ .
Движение за открытое программное обеспечение было основано Деннисом Эллисоном, когда он выпустил Tiny BASIC в 1975 году.
- ^ Перейти обратно: а б Уоррен, Джим К. (июль 1976 г.). «Переписка». Уведомления SIGPLAN . 11 (7). АКМ: 1–2. ISSN 0362-1340 .
- ^ Ван, Ли-Чен (май 1976 г.). «Пало-Альто Крошечный БЕЙСИК». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (5): 12–25. Исходный код начинается со следующих шести строк.
TINY BASIC FOR INTEL 8080 VERSION 1.0 BY LI-CHEN WANG 10 JUNE, 1976 @COPYLEFT ALL WRONGS RESERVED
Июньская дата в майском номере верна. Журнал отставал от графика, июньский и июльский номера были объединены, чтобы наверстать упущенное. - ^ Эллисон, Деннис (1976). «Создайте свой собственный БЕЙСИК» . Журнал доктора Добба . Том. 1, нет. 1. п. 9.
- ^ Эллисон, Деннис (1976). «Краткое справочное руководство по Tiny BASIC» . Журнал доктора Добба . Том. 1, нет. 1. п. 6.
- ^ Руководство по языку BASIC-PLUS (PDF). Мейнард, Массачусетс: Корпорация цифрового оборудования. 1972. стр. 3–13.
- ^ Аллен, Деннис. «ТИНИ БЕЙСИК». Народная компьютерная компания . 4 (3).
- ^ Фейт, Хольгер. «Крошечный BASIC 6800 Тома Питтмана» . Проверено 2 мая 2017 г.
- ^ Доктор. Журнал Добба , том 1, номер 1, 1976, стр. 12.
- ^
CRLF
там символизирует возврат каретки, за которым следует перевод строки . - ^ Питтман, Том. «Набор экспериментатора Tiny BASIC» . Проверено 9 августа 2020 г.
- ^ «TINY BASIC 6800» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 13 августа 2020 г.
- ^ Перейти обратно: а б с «Расширенный Tiny BASIC». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (2). Февраль 1976 года.
- ^ Перейти обратно: а б «Денвер Тайни БЕЙСИК». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (3). Март 1976 года.
- ^ Перейти обратно: а б с «МИНОЛ». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (4). Апрель 1976 года.
- ^ Перейти обратно: а б с д и Рауколб, Роджер (декабрь 1976 г.). «Крошечный БЕЙСИК Пало-Альто доктора Вана» (PDF) . Возраст интерфейса . стр. 92–108. Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «Заметка о дизайне». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (1). Декабрь 1975 года.
- ^ «6800 Крошечный БЕЙСИК». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (3). Март 1976 года.
- ^ «Руководство пользователя TINY BASIC+» .
- ^ Ван, Ли-Чен (май 1976 г.). «Пало-Альто Крошечный БЕЙСИК». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (5): 12–25.
- ^ Перейти обратно: а б «НИБЛ». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (10). Ноябрь 1976 года.
- ^ «Улучшенный и модифицированный 6800 Tiny BASIC». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . Октябрь 1980 года.
- ^ «ТБИ68К». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . Февраль 1985 года.
- ^ «Возвращение Tiny BASIC». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . Январь 2006 года.
- ^ «Texas Tiny BASIC (TBX) женится на операционной системе для кассетных ТВ (TVCOS)» . Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (5): 28–31. Май 1976 года.
- ^ Перейти обратно: а б Арнольд, Марк; Уодсворт, Нат (февраль 1976 г.). «SCELBAL — язык более высокого уровня для систем 8008/8080» . Журнал доктора Добба . стр. 30–53.
- ^ Ван, Ли-Чен (май 1976 г.). «Пало-Альто Крошечный БЕЙСИК». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (5): 12–25. (Примечание. Исходный код начинается со следующих шести строк: «TINY BASIC FOR INTEL 8080; ВЕРСИЯ 1.0; ЛИ-ЧЕН ВАНГ; 10 ИЮНЯ 1976 г.; @COPYLEFT; ВСЕ НЕПРАВИЛЬНОСТИ ЗАЩИЩЕНЫ». Июньская дата в майском выпуске верна. Журнал отставал от графика, июньский и июльский номера были объединены, чтобы наверстать упущенное.)
- ^ Маккейб, Дуайт [редактор] (1 июля 1977 г.). Справочник PCC по персональным и домашним компьютерам (1-е изд.). Менло-Парк, Калифорния: Народная компьютерная компания. п. 248. ИСБН 0-918790-02-6 .
{{cite book}}
:|first1=
имеет общее имя ( справка ) - ^ «Народная компьютерная компания» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 25 декабря 2019 г.
- ^ Тернбулл, Пит. "Стартрек.asc" . Проверено 25 декабря 2019 г.
- ^ «Базовое руководство по эксплуатации 3K Control» (PDF) . Кромемко. Архивировано из оригинала (PDF) 22 декабря 2013 г. Проверено 18 февраля 2013 г.
- ^ Эйнсворт, Дик (1982). Астро БЕЙСИК . Astrocade, Inc. с. 3.
- ^ «БЕЙСИК Роберта Уитервика» .
- ^ «Micro Basic Роберта Уитервика» .
- ^ «Часть 1 интерпретатора LLL 8080 BASIC» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «4 языковые системы Альтаира» . Альтаир БЕЙСИК .
- ^ Альтаир БЕЙСИК (PDF) . МИТС. 25 августа 1975 г. Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ Возняк, Стивен (1 мая 2014 г.). «Как Стив Возняк написал BASIC для оригинальной Apple с нуля» . Гизмодо .
- ^ Валлийский, Дэвид; Валлийский, Тереза (2007). Запуск насоса: как энтузиасты TRS-80 помогли спровоцировать революцию ПК . п. 7.
- ^ «ZX80 – ОБНОВЛЕНИЕ БАЗОВОЙ ПЗУ 8K» .
- ^ Несс, Стивен. «КСИБЕЙСИК» . Программное обеспечение Несс . Проверено 4 августа 2020 г.
- ^ «ТиниБейсикПлюс» . Гитхаб .
- ^ «Оно здесь! Half-Byte Tiny Basic 2 для Arduino и совместимых устройств» . 27 ноября 2014 г.
- ^ «Запуск Tiny Basic на Micro: Bit» . 28 марта 2020 г.
- ^ Шайу, Эммануэль; Манури, Паскаль; Пагано, Бруно (2002). Разработка приложений с помощью Objective Caml . Франция: О'Рейли. ISBN 2841771210 .
- ^ "aleozlx/tinybasic" . Гитхаб . Проверено 20 сентября 2020 г.
- ^ «ПалоАльтоТиниБазик» . Проверено 20 сентября 2020 г.
- ^ Уильямс, Эл (31 июля 2019 г.). «bootBASIC соответствует вашему любимому языку в загрузочном секторе» . Взломать день . Проверено 26 марта 2022 г.
- ^ Гутьеррес, Оскар Толедо. «bootBASIC — это язык BASIC с 512-байтовым машинным кодом x86» . Гитхаб . Проверено 26 марта 2022 г.
- ^ Гутьеррес, Оскар Толедо (27 июля 2019 г.). Программирование игр с загрузочным сектором . Лулу. п. 155. ИСБН 978-0-359-76262-0 .
- ^ Хендерсон, Гордон (2023). «Крошечный базовый вариант для 6502» . Проекты Дрогона .
- ^ «БАЗОВЫЙ» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ СИСТЕМЫ РАЗДЕЛЕНИЯ ВРЕМЕНИ TSS/8» . Февраль 1970 года.
- ^ «ИНТЕРПРЕТЕР БАЗОВОГО ЯЗЫКА ДЛЯ МИКРОПРОЦЕССОРА INTEL 8008» . 1974.
- ^ «БАЗОВОЕ СПРАВОЧНОЕ РУКОВОДСТВО ПО MITS ALTAIR» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «Журнал доктора Добба по компьютерной гимнастике и ортодонтии: бегущий свет без лишних байтов» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «Журнал доктора Добба по компьютерной гимнастике и ортодонтии: бегущий свет без лишних байтов» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ Перейти обратно: а б «Журнал доктора Добба по компьютерной гимнастике и ортодонтии: бегущий свет без лишних байтов» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «Журнал доктора Добба по компьютерной гимнастике и ортодонтии: бегущий свет без лишнего байта» .
- ^ «Возраст интерфейса» .
- ^ «Журнал доктора Добба по компьютерной гимнастике и ортодонтии: бегущий свет без лишних байтов» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «Справка по TRS-80 Level I BASIC» .
- ^ «MICRO BASIC Роберта Уитервика» .
- ^ «SCELBAL — язык более высокого уровня для систем 8008/8080» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ «ПРЕДВАРИТЕЛЬНОЕ РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ APPLE BASIC» . Октябрь 1976 года.
- ^ «Возраст интерфейса» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ https://cdn.hackaday.io/files/1707077303528288/ZX80_OperatingManual.pdf .
{{cite web}}
: Отсутствует или пусто|title=
( помощь )
Библиография
[ редактировать ]- «Кодовая таблица туберкулеза» . Журнал доктора Добба по компьютерной гимнастике и ортодонтии, Бегущий свет без лишнего байта . 1 (1). Декабрь 1975 года.
- Манес, Стивен ; Эндрюс, Пол (1994). Гейтс: Как магнат Microsoft заново изобрел индустрию и стал самым богатым человеком в Америке . Нью-Йорк: Touchstone, Саймон и Шустер. ISBN 0-671-88074-8 .
Внешние ссылки
[ редактировать ]- Руководство пользователя Tiny Basic и набор экспериментатора – Том Питтман
- BASIC Роберта Уитервика, заархивированный 7 января 2011 г. в Wayback Machine , и Micro Basic Роберта Уитервика - крошечный BASIC MC6800, позже проданный вместе с SWTPC 6800. компьютером
- MINOL - MINOL Эрика Мюллера - Tiny BASIC со строками для Intel 8080
- Tiny BASIC — версия библиотеки обработки символов экрана Curs.
- tinyBasic — реализация, написанная на iziBasic.
- Tiny BASIC – действующая веб-версия, портированная для запуска BASIC из iziBasic.
- Palo Alto BASIC менее 500 строк — пример интерпретатора BASIC, написанного на Ruby.
- TinyBasic — порт интерпретатора TinyBasic C Тома Питтмана на Java , C# и Adobe Flex . Включает живые веб-версии.
- TinyBASIC Windows – версия TinyBASIC для Windows.
- Категория:Tiny BASIC Задачи, реализованные в Tiny BASIC на сайтеrosettacode.org
- Категория:Palo Alto Tiny BASIC Задачи, реализованные в Palo Alto Tiny BASIC на сайтеrosettacode.org