Разработано | Деннис Эллисон |
---|---|
Впервые появился | 1975 г. |
Язык реализации | IL (интерпретирующий язык) |
Лицензия | Всеобщее достояние |
Диалекты | |
Denver Tiny BASIC, Enhanced 6800 Tiny BASIC, MINOL, Национальный промышленный базовый язык, Palo Alto Tiny BASIC, 6800 Tiny BASIC, TBI68K, Tiny BASIC Extended | |
Под влиянием | |
Dartmouth BASIC , 8008 BASIC | |
Под влиянием | |
Astro BASIC , Atari BASIC , Уровень I BASIC |
Крошечные BASIC семейство диалектов в BASIC языка программирования , который может поместиться на 4 или меньше KBS из памяти . Крошечный BASIC был разработан в ответ на открытое письмо , опубликованного Билл Гейтс жалуется пользователями пиратских Altair BASIC , который продается за $ 150. Tiny BASIC задумывался как полностью бесплатная версия BASIC, которая будет работать на тех же ранних микрокомпьютерах .
Tiny BASIC был выпущен как спецификация, а не реализация, опубликованная в сентябрьском выпуске бюллетеня People's Computer Company (PCC) за 1975 год . В статье программистам предлагалось реализовать ее на своих машинах и отправить полученную реализацию языка ассемблера обратно для включения в серию из трех запланированных информационных бюллетеней. Доктор Ли-Чен Ван , автор книги Palo Alto Tiny BASIC, ввел термин « авторское лево » для описания этой концепции. Реакция сообщества была настолько ошеломляющей, что информационный бюллетень был перезапущен как журнал доктора Добба , первое регулярное периодическое издание, посвященное программному обеспечению для микрокомпьютеров. «Доктор Добб» просуществовал в печатном виде 34 года, а затем в Интернете до 2014 года.
Небольшой размер и бесплатный исходный код сделали эти реализации бесценными на заре микрокомпьютеров в середине 1970-х, когда оперативная память была дорогой, а типичный размер памяти составлял всего от 4 до 8 КБ. Хотя минимальная версия Microsoft Altair BASIC также будет работать на машинах с 4 КБ, она оставила только 790 байт свободными для программ BASIC. Большее количество свободного места было значительным преимуществом Tiny BASIC. Чтобы соответствовать этим строгим ограничениям по размеру, в диалектах Tiny BASIC обычно отсутствовали различные функции, обычно встречающиеся в других диалектах, например, в большинстве версий отсутствовали строковые переменные , не было математики с плавающей запятой и разрешались только однобуквенные имена переменных.
Крошечные реализации BASIC все еще используются для программирования микроконтроллеров, таких как Arduino .
История [ править ]
Альтаир БЕЙСИК [ править ]
Самые ранние микрокомпьютеры , такие как MITS Altair 8800 , обычно не имели встроенного ввода / вывода (I / O), кроме переключателей на передней панели и светодиодных ламп. Полезная работа обычно требовала добавления карты расширения ввода / вывода и использования терминала той или иной формы . В то время видеотерминалы были очень дорогими, намного дороже, чем сам компьютер, поэтому многие пользователи обратились к механическим устройствам, таким как Teletype Model 33 . Модель 33, как и большинство телетайпов того времени, имела перфоленту.Система предназначена для того, чтобы позволить операторам предварительно записывать свои сообщения, а затем воспроизводить их на «высокой скорости», быстрее, чем при вводе сообщения в реальном времени. Для первых микрокомпьютеров это обеспечивало удобный компьютерный формат хранения , позволяющий пользователям писать программы на бумажной ленте и распространять их среди других пользователей. [1]
Клуб Homebrew Computer Club впервые собрался в марте 1975 года, и вскоре его члены использовали собрания для обмена программным обеспечением на перфоленте. На июньском собрании пропала запись с предварительной версией Altair BASIC . Лента была передана Стиву Домпье, который передал ее Дэну Соколу, у которого был доступ к высокоскоростному перфоратору ленты. На следующей встрече в картонной коробке появилось 50 экземпляров Альтаир БЕЙСИК на бумажной ленте. [2] Когда Эд Робертс , основатель MITS, узнал об этом, он заявил: «Любой, кто использует украденную копию MITS BASIC, должен идентифицировать себя как вор». [3] Билл Гейтс сделал это более формальным, написав открытое письмо любителям., жалуясь, что «как должно быть известно большинству любителей, большинство из вас крадет ваше программное обеспечение». [4]
Tiny BASIC [ править ]
Жалоба не получила одобрения. Среди множества откликов Боб Альбрехт, еще один член Homebrew и основатель People's Computer Company (PCC), посчитал, что лучшим ответом было бы создание собственного BASIC, которым можно было бы пользоваться абсолютно бесплатно. Он обратился к Деннису Эллисону , сотруднику факультета компьютерных наук Стэнфордского университета , с просьбой написать спецификацию для версии BASIC, которая уместилась бы в 2–3 килобайтах памяти. [a] Чтобы облегчить перенос , дизайн был основан на промежуточном языке (IL), интерпретаторе для интерпретатора, что означало, что портировалась лишь небольшая часть всего кода.
Первоначальный проект Эллисон был опубликован в выпуске информационного бюллетеня PCC за сентябрь 1975 года вместе с версией интерпретатора IL для Intel 8080 . В статье программистам предлагалось реализовать проект на своем компьютере и отправить полученную версию на языке ассемблера обратно в PCC. Они заявили о своих планах опубликовать три специальных информационных бюллетеня, содержащих эти отправленные пользователями версии, а также исправления ошибок, программы, написанные на новом BASIC, а также предложения и улучшения. Эта концепция получила дальнейшее признание, когда она была переиздана в выпуске ACM Special Interest Group по языкам программирования в январе 1976 года . [5]Посыпались заявки. Среди примечательных ранних версий была Tiny BASIC Extended от Дика Уиппла и Джона Арнольда, которая работала в 3 КБ ОЗУ, добавляла циклы FOR ... NXT и позволяла использовать единственный числовой массив. Они отказались от использования IL и написали его непосредственно в машинном коде с использованием восьмеричного числа . [6]
Первый из трех запланированных бюллетеней, с названием «Журнал доктора Добба компьютерных Гимнастика и ортодонтии, Бегущий свет без Overbyte», был опубликован в январе 1976 г. [6] Она начинается с запиской от Albrecht, под псевдонимом « дракон », предположив, что трех выпусков будет недостаточно, и спросил читателей, хотят ли они, чтобы он продолжался. Он также перепечатал оригинальную статью о Tiny BASIC от PCC, включал полный список Extended TB и включал ряд небольших программ BASIC, включая советы и уловки от Allison. [7] Ответ на первый выпуск был настолько впечатляющим, что во введении ко второму выпуску говорилось, что они уже решили продолжить публикацию нового информационного бюллетеня под упрощенным названием « Доктор Добб».s Журнал. В течение следующих нескольких выпусков были опубликованы дополнительные версии языка, и аналогичные статьи начали появляться в других журналах, таких как Interface Age .
Распространение [ править ]
К середине 1976 года интерпретаторы Tiny BASIC были доступны для процессоров Intel 8080 , Motorola 6800 и MOS Technology 6502 . Это было предшественником совместной разработки сообщества свободного программного обеспечения до того, как Интернет позволил легко передавать файлы, и был примером проекта свободного программного обеспечения до движения за свободное программное обеспечение . [9] Любители компьютеров обменивались бы бумажными лентами, кассетами или даже перепечатывали файлы из распечатанных списков. [10]
Джим Уоррен, редактор журнала Dr. Dobb's , написал в июльском 1976 году информационном бюллетене ACM Programming Language о мотивах и методах этого успешного проекта. Он начал с этого: «Существует реальная альтернатива проблемам, поднятым Биллом Гейтсом в его разгневанном письме компьютерным любителям по поводу« грабежа »программного обеспечения. Когда программное обеспечение является бесплатным или настолько дешевым, что за него легче платить, чем копировать тогда оно не будет «украдено» ». Письмо Билла Гейтса было написано для превращения программного обеспечения в продукты.. Альтернативный метод заключался в том, чтобы опытный профессионал сделал общий дизайн, а затем наметил стратегию реализации. Знающие любители реализовали бы дизайн для множества компьютерных систем. Уоррен предсказал, что эта стратегия будет продолжена и расширена. [10]
Мая 1976 выпуск доктор Доббса был Ли-Чен Ван «s Palo Alto Крошечного BASIC для 8080 листинг начался с обычным заголовком, именем автора и датой , но она также была„@COPYLEFT ВСЕХ обиды зарезервированной“. [11] Один из членов Homebrew Computer Club , Роджер Раусколб, модифицировал и улучшил программу Ли-Чен Ванга, и это было опубликовано в декабрьском выпуске журнала Interface Age за 1976 год . [8] Роджер добавил свое имя и сохранил уведомление COPYLEFT.
Описание [ править ]
Основные понятия [ править ]
См. Интерпретаторы BASIC
Tiny BASIC был разработан таким образом, чтобы использовать как можно меньше памяти, и это отражается в небольшом количестве функций, а также в деталях его системы интерпретатора . Ранним микрокомпьютерам не хватало оперативной памяти и вторичного хранилища для компилятора BASIC , что было более типично для систем с разделением времени.
Как и большинство BASIC того времени, Tiny Basic был интерактивным, когда пользователь вводил операторы в командную строку. Поскольку микрокомпьютеры той эпохи часто использовались с телетайпами или «тупыми» терминалами, прямое редактирование существующего текста было невозможно, и вместо этого редактор использовал вынимающие символы, часто обратную косую черту, чтобы указать, где пользователь делал резервную копию для редактирования существующего текста.
Если пользователь ввел оператор в командную строку, система проверила его, чтобы увидеть, начинается ли оно с числа. Если этого не произошло, линия немедленно анализировалась и обрабатывалась, потенциально генерируя вывод через PRINT
. Это было известно как «прямой режим».
Если строка была введена с ведущим числом, число преобразовывалось из десятичного формата, например «50», и преобразовывалось в 8-битное значение, в данном случае шестнадцатеричное значение $ 32 . Это число использовалось в качестве индекса в области хранения, подобной массиву, где остальная часть строки хранилась точно в том формате, в котором она была набрана. Когда пользователь вводил LIST
команду в командной строке, система перебирала массив, преобразовывала номер строки обратно в десятичный формат, а затем распечатывала остальной текст в строке.
Когда программа присутствует в памяти и пользователь вводит RUN
команду, система переходит в «косвенный режим». В этом режиме указатель устанавливается так, чтобы указывать на первую строку программы, например, 10 ($ 0A в шестнадцатеричной системе). Исходный текст для этой строки затем извлекается из хранилища и запускается, как если бы пользователь только что набрал его в прямом режиме. Затем указатель переместится на следующую строку, и процесс продолжится.
Формальная грамматика [ править ]
Грамматика приведена ниже в форме Бэкуса-Наура , почти так же, как она была указана в примечаниях к дизайну. [12] В листинге звездочка (« * ») обозначает ноль или более объектов слева от него - за исключением первой звездочки в определении термина , которая является оператором умножения; круглые скобки группируют объекты; и эпсилон (« ε ») означает пустое множество. Как это принято в нотации грамматики компьютерного языка, вертикальная черта (« | ») выделяет альтернативы, так же как и их перечисление в отдельных строках. Символ « CR » обозначает возврат каретки.(обычно генерируется клавишей «Enter» на клавиатуре). ПЕРЕРЫВ с консоли прервет выполнение программы.
строка :: = номер оператора CR | заявление CR оператор :: = PRINT expr-list IF выражение relop expression THEN statement GOTO expression INPUT var-list LET var = expression GOSUB expression RETURN CLEAR LIST RUN END список-выражений :: = ( строка | выражение ) ( , ( строка | выражение ) ) * список-вар :: = вар ( , вар ) * выражение :: = ( + | - | ε ) термин (( + | - ) термин ) * термин :: = коэффициент (( * | / ) коэффициент ) * фактор :: = var | номер | ( выражение ) var :: = A | B | C ... | Y | Z число :: = цифра цифра * цифра :: = 0 | 1 | 2 | 3 | ... | 8 | 9 relop :: = < ( > | = | ε ) | > ( <| = | ε ) | знак равно строка :: = "(|! | # | $ ... - |. | / | цифра |: ... @ | 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) и Гленни (синтаксическая машина). Выбор подхода виртуальной машины позволил сэкономить пространство памяти и усилия по реализации, хотя программы BASIC, запускаемые на ней, выполнялись несколько медленно. [15]
Диалекты, на которых использовалась виртуальная машина, включали Tiny BASIC Extended, 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 OR GOSUB? TST S2 , 'TO' ; ДА ... TO, OR ... SUB CALL EXPR ; GET LABEL DONE ; ERROR IF CR NOT NEXT XFER ; SET UP AND JUMP S3: TST S8 , 'PRINT' ; PRINT.
Распространенным шаблоном в программе является проверка ключевого слова или его части, а затем действие на эту информацию. Каждый тест - это утверждение о том, что будет следующим в строковом буфере. Если утверждение терпит неудачу, управление переходит к следующей метке (обычно ища новое ключевое слово или токен). Здесь система перемещает свой буферный курсор по любым пробелам и проверяет наличие GO, а если не может его найти, то переходит к строке S3 . Если он его находит, выполнение продолжается со следующей команды IL. В этом случае система затем проверяет TO , переходя к строке S2, если она терпит неудачу (проверка для SUB , чтобы увидеть, является ли это GOSUBкоманда). Если он проходит, контроль продолжается; в этом случае вызов подпрограммы IL, которая начинается с метки EXPR , которая анализирует выражение. В Tiny BASIC (вычисленный GO TO) так же законен, как и альтернатива ON-GOTO для более крупных реализаций BASIC. Подпрограмма EXPR помещает результат выражения в арифметический стек (в данном случае номер строки). DONE проверяет, что за выражением не следует другой текст, и выдает ошибку, если это так. XFER извлекает номер из стека и передает выполнение (ПЕРЕХОДИТ) на соответствующий номер строки, если он существует.GOTO X*10+100
GOTO 100
В следующей таблице приведен неполный список из 32 команд виртуальной машины, на которой был написан первый интерпретатор Tiny BASIC. [17]
- TST lbl , строка
- Если строка соответствует строке BASIC, переместите курсор на строку и выполните следующую инструкцию IL; если тест не пройден , выполните инструкцию IL с меткой lbl
- ВЫЗОВ LBL
- Выполнить подпрограмму IL, начиная с lbl ; сохранить IL-адрес после CALL в стеке управления
- ВЫПОЛНЕНО
- Сообщить о синтаксической ошибке, если после удаления начальных пробелов курсор не позиционируется для достижения возврата каретки
- XFER
- Проверьте, чтобы значение в верхней части стека AE было в пределах допустимого диапазона. Если нет, сообщите об ошибке. Если это так, попробуйте поместить курсор в эту строку. Если он существует, начните интерпретацию там; если нет, сообщите об ошибке.
- ПРЫЖОК LBL
- Продолжить выполнение IL на указанной метке
- РТН
- Вернитесь в расположение IL, указанное в верхней части стека элементов управления.
- ССН
- Печатать символы из текста BASIC до закрывающей кавычки, но не включая ее
- PRN
- Вывести число, полученное выталкиванием вершины стека выражений
- SPC
- Вставьте пробелы, чтобы переместить печатающую головку в следующую зону
- NLINE
- Вывести 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 году:
- Все добавили какую-то функцию случайных чисел, обычно RND () . Хотя это и не было включено в спецификацию, статья информационного бюллетеня, предшествовавшая примечанию к дизайну для Tiny BASIC, запрашивала только эту функцию.
- Все включенные LET являются необязательными, и большинство выражений let в операторах присваивания содержат операторы отношения .
- Все, кроме 6800TB, поддерживали разделители операторов в строках, как правило : хотя TBX использовал $ и PATB использовал ; .
- В операторах IF все, кроме MINOL, устранили необходимость в выражениях, содержащих операторы отношения (например, было допустимым). Реализации удалили ТОГДА полностью или сделали его необязательным или поддерживали только для подразумеваемого GOTO .
IF X THEN LET Y=X
- Многие модифицировали PRINT для поддержки зон печати, используя, чтобы перейти к следующей зоне и не перемещать курсор.
,
;
- Все, кроме 6800TB и DTB, добавлены NEW .
- Все, кроме 6800TB и MINOL, добавили функцию для возврата размера памяти: у TBX был SZE , у DTB и PATB был SIZE , у L1B был MEM , а у NIBL был TOP .
- Четыре реализации добавляли массивы, будь то один безразмерный массив в PATB и L1B или массивы с DIM в TBX и DTB.
- Четыре реализации добавили оператор REM ark.
- Четыре реализации добавили цикл FOR : PATB, NIBL и L1B предлагали FOR-TO-STEP / NEXT , в то время как TBX не поддерживал и использовал ключевое слово для завершения цикла.
STEP
NXT
- Только NIBL одобрял структурированное программирование с DO / UNTIL , несмотря на жалобы Эллисон в выпуске 2 о проблемах с BASIC.
В качестве альтернативы токенизации для сохранения RAM, TBX, [21] DTB, [22] и MINOL [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 , информационном бюллетене, который стал журналом доктора Добба , долгоживущим компьютерным журналом. В журнале было опубликовано около десяти версий.
Дата публикации | Проблема | Диалект | Автор | Процессор | Размер |
---|---|---|---|---|---|
Декабрь 1975 г. | 1 [25] | Примечание по дизайну | Деннис Эллисон | N / A | N / A |
Февраль 1976 г. | 2 [21] | Tiny BASIC Extended (TBX) | Дик Уиппл и Джон Арнольд | 8080 | 2,9 тыс. |
Март 1976 г. | 3 [22] | Денвер Tiny BASIC (DTB) | Фред Гриб | 8080 | 2,75 тыс. |
Март 1976 г. | 3 [26] | 6800 Tiny BASIC (6800 ТБ) | Том Питтман | 6800 | 2K [27] |
Апрель 1976 г. | 4 [23] | MINOL | Эрик Т. Мюллер | 8080 | 1,75 тыс. |
Май 1976 г. | 5 [28] | Пало-Альто Tiny BASIC (PATB) | Ли-Чен Ван | 8080 | 1,77 тыс. |
Ноябрь 1976 г. | 10 [29] | Национальный промышленный базовый язык (NIBL) | Марк Александр и Стив Лейнингер | SC / MP | 4K |
Октябрь 1980 г. | 49 [30] | Улучшенный 6800 Tiny BASIC | Роберт Хадсон | 6800 | N / A |
Февраль 1985 г. | 100 [31] | TBI68K | Гордон Брэндли | 68000 | N / A |
Январь 2006 г. | 351 [32] | Возвращение Tiny BASIC | Том Питтман | N / A ( C ) | N / A |
TBX также был известен как Texas Tiny BASIC. [33]
И SCELBAL [34], и 6800 Tiny BASIC были анонсированы в журнале, но не опубликовали их исходный код.
Palo Alto Tiny BASIC [ править ]
Разработчик | Ли Чен Ван |
---|---|
Впервые появился | 1976 г. |
Лицензия | Всеобщее достояние |
Диалекты | |
3K Control Basic | |
Под влиянием | |
Примечание по дизайну Tiny BASIC, Tiny BASIC Extended | |
Под влиянием | |
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] [b]
PATB использовал слова для сообщений об ошибках вместо чисел. Чтобы уменьшить объем требуемой памяти, было всего три сообщения, и они состояли из отдельных слов. Система будет реагировать WHAT?
на синтаксические ошибки, HOW?
на ошибки времени выполнения, такие как переход к несуществующей строке или числовое переполнение, а также SORRY
на проблемы нехватки памяти. [24]
Ван также написал программу STARTREK в своем Tiny BASIC, который появился в июльском выпуске бюллетеня People's Computer Company за 1976 год . [37] [38]
Позже он приспособил язык в 3К Control Basic для CROMEMCO , добавив имена переменных вида буквенного знака (например, A0
в Z9
), логические функции ( AND()
, OR()
, XOR()
), CALL
команду выполнить машинный язык подпрограммы, более PRINT
опции -formatting и другие ( GET()
и PUT()
вместо PEEK
и POKE
; функции порта ввода / вывода). [39]
Palo Alto Tiny BASIC был адаптирован для многих других реализаций, включая уровень I BASIC (1977), BASIC для карманного компьютера Sharp PC-1211 (1980) и Astro BASIC (1982, Джейми Фентон ). [40]
MINOL [ править ]
Написанная учеником старшей школы, 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 BASIC [ править ]
Altair BASIC , 4K BASIC, может работать в машине с 4 КБ RAM, оставляя только около 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 был первоначально опубликован на компакт-кассетах в 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 , написанный Джоном Грантом, использовал в качестве определения языка минимальный стандарт BASIC Американского национального института стандартов (ANSI) 1978 года , но сам был неполной реализацией 4Kb только с целочисленной арифметикой. [48]
Диалекты микроконтроллера [ править ]
Крошечные реализации BASIC были адаптированы для управления процессором и для микроконтроллеров, таких как Arduino :
- Стивен А. Несс написал XYBASIC для компании Mark Williams в 1977 году, целочисленную реализацию 4K. Этот язык часто использовался для приложений управления процессами. [49]
- Arduino BASIC - адаптировано из 68000 Tiny BASIC Гордона Брэндли, перенесено на C Майком Филдом.
- Tiny Basic 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]
Сравнение диалектов [ править ]
В следующей таблице сравниваются языковые особенности реализаций Tiny BASIC с другими известными BASIC, которые им предшествовали.
Диалект | Программист (ы) | Процессор | Тип | ВХОД | ПОЗВОЛЯТЬ | РАСПЕЧАТАТЬ | ПЕРЕЙТИ К | ЕСЛИ ... ТОГДА | ГОСУБ | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК | ЧИСТО | НОВЫЙ | REM | FOR / NEXT | ЧТЕНИЕ / ДАННЫЕ / ВОССТАНОВЛЕНИЕ | Добавлены ОСНОВНЫЕ команды | Настройки | Выражения | перевернуть | Функции | RND | Функция памяти | Номера строк | Разделитель заявлений | Ошибки | Точность | Арифметика | Переменные | Массивы | Струны |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DTSS Dartmouth BASIC (версия 2) [56] | (Дартмутские студенты) | GE-225 | Скомпилировать и начать | N / A [!] | LET var = выражение | ПЕЧАТЬ expr-list {, /; /} | ПЕРЕЙТИ К номеру | IF выражение relop выражение THEN номер строки | Номер GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК - начало | - | НОВИНКА [запрашивает название программы] | REM | FOR / TO / STEP / NEXT | ЧИТАТЬ, ДАННЫЕ | ОСТАНАВЛИВАТЬСЯ | N / A | приоритет, ^ | <<= => => <> | INT, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN | RND (0) 0..1 | - | 1 до 99999 | Никто | 22 определены | 9 цифр | ± 999 999 999; База обозначений E 2 от -256 до +255 (E ± 76). | AZ, A0-Z9 | DIM (название из одной буквы, два измерения); если опущено, предполагается, что будет от 0 до 10; до 1500 элементов во всех массивах | Никто |
DEC BASIC-8 [57] | (Сотрудники ОИК) | PDP-8 | Скомпилировать и начать | INPUT список переменных | LET var = выражение | ПЕЧАТЬ expr-list {, /; /} | ПЕРЕЙТИ К номеру | IF выражение relop выражение [THEN / GO TO] номер строки | Номер GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК (первый (, последний)) | - | НОВИНКА [запрашивает название программы] | REM | FOR / TO / STEP / NEXT | ЧТЕНИЕ, ДАННЫЕ, ВОССТАНОВЛЕНИЕ | ОСТАНОВИТЬ, СТАРЫЙ, СОХРАНИТЬ, ОТМЕНИТЬ | УДАЛИТЬ (первый (, последний)), ПОКА | приоритет, ^ | <<= => => <> | INT, SGN, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN | RND (0) 0..1 | - | 1 к 2045 г. | Никто | 23 определены | ? | ± 134 217 727; 14E-38 <N <1,7E38 | AZ, AA-Z9 | DIM (название из одной буквы, два размера) | Никто |
БАЗОВЫЙ UIUC [58] | Альфред Уивер, Майкл Тиндалл, Рональд Дэниэлсон | 8008 | Устный переводчик | ВХОД <переменная> {, <переменная>} * | LET var = формула | ПЕЧАТЬ <строка> / <формула> {, <строка> / <формула>} * | ПЕРЕЙТИ К номеру | IF выражение THEN номер строки | Номер GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | не задокументировано | не задокументировано | не задокументировано | REM | FOR / TO / STEP / NEXT | - | DEF FN, СТОП | N / A | приоритет, ^ | <<= => => # И ИЛИ НЕ | FNA..Z, SIN, COS, LOG, SQR, EXP, ATN | - | - | От 0 до 999 | Никто | не задокументировано | 4-байтовая мантисса и 1-байтовая экспонента [Datapoint 2200 арифметический пакет с плавающей запятой] | не задокументировано | AZ, A0-Z9 | DIM (название из одной буквы, три измерения) | Никто |
Альтаир 4K BASIC [59] | Билл Гейтс, Пол Аллен, Монте Давидофф | 8080 | Устный переводчик | INPUT ("строка";) список-переменных | (LET) var = выражение | ПЕЧАТЬ expr-list {, /; } | GOTO номер | IF выражение THEN номер строки / оператор | Номер GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК (начало) | - | НОВЫЙ | REM | FOR / TO / STEP / NEXT | ЧТЕНИЕ, ДАННЫЕ, ВОССТАНОВЛЕНИЕ | ОСТАНАВЛИВАТЬСЯ | - | приоритет | <<= => => <> | ABS, INT, SGN, SQR, TAB, USR | RND (X) <0, новый с использованием X в качестве начального числа; = 0, повторить; > 0, далее | - | 1 до 65535 | : | 12 определены | 40-битный операнд с плавающей запятой | ? | ? | DIM (одно измерение) | Никто |
Примечание разработчика [60] | Деннис Эллисон | N / A | Устный переводчик | INPUT список переменных | LET var = выражение | ПЕЧАТЬ expr-list | GOTO выражение | IF выражение relop выражение THEN statement | Выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК | [экв. в NEW] | - | - | - | - | - | - | приоритет | <<= => => <>> < | Никто | Никто | - | От 1 до 255 | Никто | 8 определены | 16 бит | ± 32767 | Аризона | Никто | Никто |
Tiny BASIC Extended [61] | Дик Уиппл и Джон Арнольд | 8080 | Устный переводчик | В | (LET) var = выражение | ;} | ПЕРЕЙТИ К | IF выражение [no THEN] инструкция | ПЕРЕЙТИ | RET | КОНЕЦ | ЗАПУСТИТЬ | LST (первый (, последний)) | - | НОВЫЙ | - | FOR-NXT (без ШАГА) | DTA (массив LET) | - | - | приоритет | <<= => => <>> < | TB () пробелы в печати | RN (случайный 0-10000) | SZE | 1 до 65535 | $ | 14 определены | 16 бит | ± 32767 | Аризона | DIM, 1- или 2-размерный, 255x255 макс. | Никто |
Denver Tiny BASIC [62] | Фред Гриб | 8080 | Устный переводчик | В | (LET) var = выражение | ;} | ПЕРЕЙТИ К | IF выражение [no THEN] инструкция | ГОСУБ | RET | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК (первый последний) | [экв. в NEW] | - | - | - | - | ЛЕНТА [СОХРАНИТЬ], ЗАГРУЗИТЬ | CLRS [CLS] | приоритет | <<= => => <>> < | RND (0), RND (1) | РАЗМЕР | От 2 до 255 | : | 20 определены | 16 бит | ± 32767 | AZ, от A1 до A6 до Z6 | DIM, 1 размер | Никто | |
6800 Tiny BASIC [62] | Том Питтман | 6800 | Устный переводчик | ВХОД (выражение) список переменных | LET var = выражение | ПЕЧАТЬ expr-list {, /; } | GOTO выражение | IF выражение relop выражение THEN statement | Выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК (первый последний) | [экв. в NEW] | - | REM | - | - | - | - | приоритет | <<= => => <>> < | USR () | RND () | - | 1 до 65535 | Никто | 53 определены | 16 бит | ± 32767 | Аризона | Никто | Никто |
MINOL [63] | Эрик Т. Мюллер | 8080 | Устный переводчик | В | (LET) var = выражение | PR expr-list {;} | [GOTO 0 возвращается к началу прямой инструкции] | IF выражение relop expression; утверждение | N / A | N / A | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК | ОЧИСТИТЬ [только переменные] | НОВЫЙ | - | - | - | - | Использование пробелов не допускается, кроме строк | Нет приоритета оператора | <= # | $ [CHR $] | ! [RND] | - | От 1 до 254 | : | 6 определены | 8 бит | От 0 до 255 | Аризона | (H, L) ячейка памяти | одиночный символ |
Palo Alto Tiny BASIC [64] | Ли-Чен Ван | 8080 | Устный переводчик | INPUT [(выражение) var] * | (LET) var = выражение | ПЕЧАТЬ expr-list | GOTO выражение | IF выражение [no THEN] инструкция | Выражение GOSUB | ВОЗВРАЩАТЬСЯ | ОСТАНАВЛИВАТЬСЯ | ЗАПУСТИТЬ | СПИСОК (начало) | - | НОВЫЙ | REM | FOR / TO / STEP / NEXT | - | ОСТАНАВЛИВАТЬСЯ | - | приоритет | <<= => => # | АБС () | RND () | РАЗМЕР | 1 к 32767 | ; | 3 определены | 16 бит | ± 32767 | Аризона | @ (1 массив из 1 измерения) | Никто |
НИБЛ [65] | Марк Александр и Стив Лейнингер | SC / MP | Устный переводчик | ВХОД ($) var | (LET) var = выражение | PR / PRINT expr-list | GOTO выражение | IF выражение (THEN) инструкция | Выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК (начало) | ОЧИСТИТЬ [переменные и стек] | НОВЫЙ | REM | FOR / TO / STEP / NEXT | - | ДЕЛАТЬ / ДО | Адресация памяти (@ [PEEK / POKE], STAT, PAGE) | приоритет | <<= => => <> | MOD (), И, ИЛИ, НЕ, | RND (A, Z) | ВЕРШИНА | От 0 до 32767 | : | 13 четырехзначных символов | 16 бит | ± 32767 | Аризона | адресация памяти | INPUT $, PRINT $, $ exp = exp |
Уровень I BASIC [66] | Стив Лейнингер | Z80 | Устный переводчик | ВХОД (# цифра) [(выражение) переменная] * | (LET) var = выражение | ПЕЧАТЬ (# цифра) список-выражений | GOTO номер | IF выражение THEN выражение | Номер GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | RUN (начало) | СПИСОК (начало) | - | НОВЫЙ | REM | FOR / TO / STEP / NEXT | ЧТЕНИЕ, ДАННЫЕ, ВОССТАНОВЛЕНИЕ | СТОП, ПРОДОЛЖЕНИЕ, ВКЛЮЧЕНИЕ / GOSUB | ЗАГРУЗИТЬ, CSAVE, CLS, УСТАНОВИТЬ, СБРОС, | приоритет | <<= => => <>> < | ABS (), INT (), MEM, ТОЧКА (X, Y) | RND () | MEM | 1 к 32767 | : | 3 определены | 16 бит | ± 32767 | Аризона | A (1 массив 1 измерения) | A $, B $ |
MICRO BASIC 1.3 [67] | Роберт Уитервик | 6800 | Устный переводчик | INPUT список переменных | (LET) var = выражение | ПЕЧАТЬ expr-list {, /; } | GOTO выражение | IF выражение relop выражение THEN statement | Выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК (первый (, последний)) | - | НОВЫЙ | - | FOR / TO / NEXT (без ШАГА) | - | TAB () | - | приоритет | <<= => => <>> < | RND, РАЗМЕР | RND [возвращает 1-32762] | SIZE (инструкция, которая печатает использованные байты и свободные байты) | 1 до 65535 | Никто | 17 определены | 16 бит [более поздний BCD!] | ± 32767 | Аризона | DIM (два измерения, максимальный размер 255) | Никто |
НАУЧНЫЙ ЭЛЕКТРОННЫЙ БАЗИЧЕСКИЙ ЯЗЫК (SCELBAL) [68] | Марк Арнольд и Нат Уодсворт | 8008 | Устный переводчик | INPUT список переменных | (LET) var = выражение | ПЕЧАТЬ expr-list {, /; /} | GOTO номер | ТО заявление | Номер GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК | - | Царапать] | REM | FOR / TO / STEP / NEXT | - | СОХРАНИТЬ ЗАГРУЗИТЬ | UDF [USR] | приоритет, ^ | <<= => => <> | INT, SGN, ABS, SQR, CHR [используется только в PRINT], TAB | RND (0) 0..1 | - | 1 до 999999 | Никто | 18 определены | 32-битный операнд с плавающей или фиксированной точкой | ± 134 217 727; 14E-38 <N <1,7E38 | ? | DIM (одно буквенное имя, одно измерение; до 4 массивов до 64 записей всего) | Никто |
Apple I BASIC [69] | Стив Возняк | 6502 | Устный переводчик | INPUT ("строка";) список-переменных | (LET) var = выражение | ПЕЧАТЬ expr-list {, /; } | GOTO выражение | IF выражение relop expression THEN номер строки / оператор | Выражение GOSUB | ВОЗВРАЩАТЬСЯ | КОНЕЦ | RUN (начало) | СПИСОК (первый (, последний)) | - | SCR | REM | FOR / TO / STEP / NEXT | - | АВТО, УДАЛЕНИЕ, ТОЧКА | TAB (команда), ВЫЗОВ | приоритет | <<= => => <> # И ИЛИ НЕ МОДИФИКАЦИЯ | SGN, ABS, PEEK (), LEN () | RND (X) 0..X (или X..0!) | ХИМЕМ, ЛОМЕМ | 1 к 32767 | Нет [ранняя версия, то:] | 16 определены | 16 бит | ± 32767 | AZ, за которым следует любое количество буквенно-цифровых | DIM (одно измерение) | размерный |
LLL BASIC [70] | (Сотрудники Университета Айдахо) | 8080 | Устный переводчик | INPUT список переменных | (LET) var = выражение | ПЕЧАТЬ список-выражений {, /;} | ПЕРЕЙТИ К номеру | IF выражение выражение relop выражение (THEN) оператор | GO SUB номер | ВОЗВРАЩАТЬСЯ | КОНЕЦ | ЗАПУСТИТЬ | СПИСОК | - | SCR | REM | FOR / TO / NEXT (без ШАГА) | - | ОСТАНАВЛИВАТЬСЯ | ВЫЗОВ, ПОЛУЧИТЬ (), ПОЛУЧИТЬ () | приоритет | <<= => => <>> < | Нет RND? | - | От 0 до 32767 | : | 14 определены | 32-битный операнд с плавающей запятой | ? | AZ, A0-Z9 | DIM (только целые числа, одно буквенное имя, одно измерение, максимальный размер 255) | Никто |
См. Также [ править ]
- БЕЙСИК-интерпретатор
- Авторское лево
- Дартмутский ОСНОВНОЙ
Заметки [ править ]
- ^ В то время наиболее распространенный размер памяти для 8800 составлял 4 КБ, что стоило сотни долларов.
- ^ Хеш также использовался для неравных в HP Time-Shared BASIC .
Ссылки [ править ]
Цитаты [ править ]
- ^ Ланкастер, Дон (1976). "Поваренная книга пишущей машинки для телевидения" (PDF) . С. 210–211.
- Перейти ↑ Manes & Andrews 1994 , p. 81.
- ↑ Робертс, Х. Эдвард (октябрь 1975 г.). «Письмо президента» . Компьютерные заметки . Альбукерке, штат Нью-Мексико: MITS. 1 (5): 3–4. Архивировано из оригинального 23 марта 2012 года.
- ^ Гривы и Andrews1994 , стр. 91.
- ↑ Эллисон, Деннис (июль 1976 г.). «Заметки по дизайну для TINY BASIC». Уведомления SIGPLAN . ACM. 11 (7): 25–33. DOI : 10.1145 / 987491.987494 .
- ^ a b «Таблица кодов ТБ» . Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (1). Декабрь 1975 г.
- Перейти ↑ Dobbs 1976 , p. 5.
- ^ a b c Раусколб, Роджер (декабрь 1976 г.). "Пало-Альто Крошечный БЕЙСИК доктора Ванга". Возраст интерфейса . 2 (1): 92–108. Исходный код начинается со следующих девяти строк:
; *********************************;; Крошечная ОСНОВНАЯ ДЛЯ INTEL 8080; ВЕРСИЯ 2.0; ЛИ-ЧЕН ВАНГ; ИЗМЕНЕНО И ПЕРЕВЕДЕНО; В INTEL MNEMONICS; РОДЖЕР РАУСКОЛЬБ; 10 ОКТЯБРЯ 1976 г.; @COPYLEFT; ВСЕ ОШИБКИ ЗАЩИЩЕНЫ;; *********************************
- ^ «Открытое оборудование: как и почему оно работает» .
Движение за открытое программное обеспечение было основано Деннисом Эллисоном в его выпуске Tiny BASIC в 1975 году.
- ^ a b Уоррен, Джим С. (июль 1976 г.). «Переписка». Уведомления SIGPLAN . ACM. 11 (7): 1-2. ISSN 0362-1340 .
- ↑ Ван, Ли-Чен (май 1976 г.). "Пало-Альто Крошечный БЕЙСИК". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (5): 12–25. Исходный код начинается со следующих шести строк.
Крошечная ОСНОВНАЯ ДЛЯ INTEL 8080ВЕРСИЯ 1.0ЛИ-ЧЕН ВАНГ10 ИЮНЯ 1976 г.@COPYLEFTВСЕ ОШИБКИ ЗАЩИЩЕНЫ
Дата июня в майском номере правильная. Журнал отставал от графика, июньский и июльский выпуски были объединены, чтобы наверстать упущенное. - ^ Эллисон, Деннис (1976). «Создай свой собственный БЕЙСИК» . Журнал доктора Добба . Vol. 1 шт. 1. п. 9.
- ^ Эллисон, Деннис (1976). «Краткое руководство по Tiny BASIC» . Журнал доктора Добба . Vol. 1 шт. 1. п. 6.
- ^ Руководство по языку BASIC-PLUS (PDF). Мейнард, Массачусетс: Digital Equipment Corporation. 1972. С. 3–13.
- ^ Аллен, Деннис. «МАЛЕНЬКИЙ БАЗОВЫЙ». Народная компьютерная компания . 4 (3).
- ^ Файт, Хольгер. "6800 крошечный БЕЙСИК Тома Питтмана" . Дата обращения 2 мая 2017 .
- ^ Журнал доктора Добба , Volume 1, Number 1, 1976, стр. 12.
- ^ CRLF есть символ возврата кареткипоследующим переводом строки .
- ^ Питтман, Том. "Tiny BASIC Experimenter's Kit" . Проверено 9 августа 2020 года .
- ^ "КРОШЕЧНЫЙ ОСНОВНОЙ 6800" (PDF) . Проверено 13 авг 2020 .
- ^ a b c "Tiny BASIC Extended". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (2). Февраль 1976 г.
- ^ а б "Денвер Крошечный БЕЙСИК". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (3). Март 1976 г.
- ^ a b c "МИНОЛ". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (4). Апрель 1976 г.
- ^ a b c d e Раусколб, Роджер (декабрь 1976 г.). "Крошечный БЕЙСИК Пало-Альто доктора Ванга" (PDF) . Возраст интерфейса . С. 92–108.
- ^ «Примечание разработчика». Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (1). Декабрь 1975 г.
- ^ "6800 Tiny BASIC". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (3). Март 1976 г.
- ^ "TINY BASIC User Manual +" .
- ↑ Ван, Ли-Чен (май 1976 г.). "Пало-Альто Крошечный БЕЙСИК". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (5): 12–25.
- ^ а б "НИБЛ". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (10). Ноябрь 1976 г.
- ^ "Улучшенный и модифицированный 6800 Tiny BASIC". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . Октябрь 1980 г.
- ^ "TBI68K". Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . Февраль 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. (NB. Исходный код начинается со следующих шести строк. «TINY BASIC FOR INTEL 8080; VERSION 1.0; BY LI-CHEN WANG; 10 ИЮНЯ 1976 ГОДА; @COPYLEFT; ВСЕ ОШИБКИ ЗАЩИЩЕНЫ». Дата июня в майском выпуске верна Журнал отставал от графика, июньский и июльский выпуски были объединены, чтобы наверстать упущенное.)
- ↑ Маккейб, Дуайт [редактор] (1 июля 1977 г.). Справочник PCC по персональным и домашним компьютерам (1-е изд.). Менло-Парк, Калифорния: Народная компьютерная компания. п. 248. ISBN 0-918790-02-6.CS1 maint: дополнительный текст: список авторов ( ссылка )
- ^ "Народная компьютерная компания" (PDF) . Проверено 25 декабря 2019 .
- ^ Тернбулл, Пит. "Startrek.asc" . Проверено 25 декабря 2019 .
- ^ "3K Control Basic Instruction Manual" (PDF) . Cromemco. Архивировано из оригинального (PDF) 22 декабря 2013 года . Проверено 18 февраля 2013 .
- ^ Эйнсворт, Дик (1982). Astro BASIC . Astrocade, Inc. стр. 3.
- ^ "БЕЙСИК Роберта Уитервика" .
- ^ "Micro Basic Роберта Уитервика" .
- ^ "Часть 1 LLL 8080 BASIC Interpreter" (PDF) .
- ^ "4 языковых систем Альтаира" . Альтаир БАЗОВЫЙ .
- ^ Альтаир ОСНОВНОЙ (PDF) . MITS. 25 августа 1975 г.
- ↑ Возняк, Стивен (1 мая 2014 г.). «Как Стив Возняк написал БЕЙСИК для оригинального яблока с нуля» . Gizmodo .
- ↑ Валлийский, Дэвид; Валлийский, Тереза (2007). Заправка насоса: как энтузиасты TRS-80 помогли разжечь компьютерную революцию . п. 7.
- ^ "ZX80 - ОБНОВЛЕНИЕ БАЗОВОГО ПЗУ 8K" .
- ^ Несс, Стивен. «XYBASIC» . Ness Software . Дата обращения 4 августа 2020 .
- ^ "TinyBasicPlus" .
- ^ «Это здесь! Half-Byte Tiny Basic 2 для Arduino и совместимых устройств» .
- ^ «Запуск Tiny Basic на Micro: Bit» .
- ^ Шайю, Эммануэль; Манури, Паскаль; Пагано, Бруно (2002). Разработка приложений с помощью Objective Caml . Франция: О'Рейли. ISBN 2841771210.
- ^ "aleozlx / tinybasic" . Проверено 20 сентября 2020 .
- ^ "PaloAltoTinyBasic" . Проверено 20 сентября 2020 .
- ^ "ОСНОВНОЙ" (PDF) .
- ^ "РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ СИСТЕМЫ РАСПРЕДЕЛЕНИЯ ВРЕМЕНИ TSS / 8" (PDF) .
- ^ "ПЕРЕВОДЧИК ОСНОВНОГО ЯЗЫКА ДЛЯ МИКРОПРОЦЕССОРА INTEL 8008" (PDF) .
- ^ "ОСНОВНОЕ СПРАВОЧНОЕ РУКОВОДСТВО MITS ALTAIR" (PDF) .
- ^ "Журнал компьютерной гимнастики и ортодонтии доктора Добба: Бегущий свет без избыточного байта" (PDF) .
- ^ "Журнал компьютерной гимнастики и ортодонтии доктора Добба: Бегущий свет без избыточного байта" (PDF) .
- ^ a b «Журнал компьютерной гимнастики и ортодонтии доктора Добба: бегущий свет без избыточного байта» (PDF) .
- ^ "Журнал компьютерной гимнастики и ортодонтии доктора Добба: Бегущий свет без избыточного байта" .
- ^ "Возраст интерфейса" .
- ^ "Журнал компьютерной гимнастики и ортодонтии доктора Добба: Бегущий свет без избыточного байта" (PDF) .
- ^ "Помощь для TRS-80 уровня I BASIC" .
- ^ "MICRO BASIC Роберта Уитервика" .
- ^ "SCELBAL - ЯЗЫК ВЫСОКОГО УРОВНЯ ДЛЯ СИСТЕМ 8008/8080" (PDF) .
- ^ «ПРЕДВАРИТЕЛЬНОЕ ОСНОВНОЕ РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ APPLE» (PDF) .
- ^ "Возраст интерфейса" (PDF) .
Библиография [ править ]
- «Кодекс ТБ» . Журнал доктора Добба по компьютерной гимнастике и ортодонтии, «Бегущий свет без избыточного байта» . 1 (1). Декабрь 1975 г.
- Манес, Стивен ; Эндрюс, Пол (1994). Гейтс: как могул из Microsoft заново изобрел индустрию и стал самым богатым человеком в Америке . Нью-Йорк: Пробный камень, Саймон и Шустер. ISBN 0-671-88074-8.
Внешние ссылки [ править ]
- Tiny Basic User Manual и Experimenter's Kit - Том Питтман
- BASIC Роберта Uiterwyk в и Роберта Uiterwyk в Micro Basic - это MC6800 крошечное BASIC позже продал с SWTPC компьютера 6800
- MINOL - MINOL Эрика Мюллера - Tiny BASIC со строками для Intel 8080
- Tiny BASIC - версия библиотеки обработки экрана персонажей curses.
- tinyBasic - реализация, написанная на iziBasic
- Tiny BASIC - живая веб-версия, перенесенная на Run BASIC из iziBasic
- Palo Alto BASIC менее 500 строк - Пример интерпретатора BASIC, написанного на Ruby.
- TinyBasic - перенос интерпретатора TinyBasic C Тома Питтмана на Java , C # и Adobe Flex . Включает живые веб-версии.
- TinyBASIC Windows - версия TinyBASIC для Windows