Commodore BASIC (также известен PET BASIC или CBM-BASIC) — один из диалектов языка программирования BASIC, использовавшийся в домашних компьютерах Commodore, начиная с PET (1977) и заканчивая C128 (1985).

Commodore BASIC
Класс языка язык программирования
Появился в 1977
Разработчик Microsoft
Выпуск 7.0 (1985)
Испытал влияние Microsoft BASIC
Платформа MOS Technology 6502
Логотип Викисклада Медиафайлы на Викискладе

История создания править

Демонстрация работы команды WAIT 6502,12 на Commodore BASIC V2 для Commodore PET 3008, после выполнения которой отображается 12 записей "MICROSOFT!"

Код Commodore BASIC основан на Microsoft BASIC для архитектуры MOS Technology 6502 с включением функционала, распространённого в других интерпретаторах BASIC для 6502 (например, использование арифметики 40-битных чисел с плавающей запятой, доступной в архитектуре 6502). Commodore лицензировала код BASIC у Microsoft в 1977 году, выплатив единовременную сумму за право использования и развития продукта в своих домашних компьютерах. Первоначальное предложение Билла Гейтса лицензировать продукт методом отчислений от продажи реализованных компьютеров (предполагалось выплачивать по три доллара с каждого проданного экземпляра) глава Commodore Джек Трэмиел отверг словами «Я уже женат», предложив единовременную выплату в размере 25 тыс. долларов. Гейтс согласился на эти условия[1]. Позднее Commodore заплатила дополнительную сумму, чтобы обновить версию исходного кода, полученного ранее. Гейтс, вероятно, опасаясь за то, что Commodore присвоит интерпретатор себе, втайне встроил в исходный код обновлённой версии тщательно обфусцированную директиву WAIT 6502, <число>, при вызове которой интерпретатор печатал слово «MICROSOFT!» заданное количество раз, что могло служить доказательством владения интеллектуальной собственностью в случае возможных судебных разбирательств[2]. Изменение осталось незамеченным и попало в итоге в релизную версию BASIC V2, поставлявшуюся вместе с первыми ревизиями Commodore PET. По свидетельству программиста Джима Баттерфилда, узнав о подобном «пасхальном яйце» в своём продукте, представители Commodore были крайне возмущены, в основном из-за того, что дополнительный код отнимал лишние 51 байт из без того ограниченного количества оперативной памяти, доступной в PET[2]. Последующие версии BASIC уже не имели данной скрытой команды.

Версия для PET была во многом сходна с оригинальной реализацией Microsoft с незначительными изменениями. BASIC 2.0 для C64 и C128 также не претерпела значительных изменений. Более поздние модели PET уже поставлялись вместе с BASIC 4.0 с дополнительным набором команд для работы с приводами дискет. Значительные изменения были добавлены в BASIC 3.5 для C16 и Plus/4, обладавший расширенной поддержкой графики и звука. BASIC 7.0, поставлявшийся с Commodore 128, заимствовал часть команд из BASIC 3.5 для Plus/4, так как для нового компьютера было важно показать новые возможности более продвинутой платформы. Последняя реализация — BASIC 10.0 — должна была стать частью невышедшего Commodore 65  (англ.)[3].

Особенности реализаций править

 
BASIC 2.0, доступный в Commodore 64. Пример программы, готовой к запуску

Популярный Commodore 64 вышел с BASIC 2.0, несмотря на то, что был выпущен позднее компьютеров линейки PET/CBM, на которых актуальной версией был BASIC 4.0. Commodore позиционировала C64 как домашний компьютер, когда как CBM/PET — нацеленные на решение бизнес- и образовательных задач соответственно, где предполагалось, что использование языка программирования будет более востребованным. К тому же V2 занимал меньший объём памяти, благодаря чему можно было выбрать менее ёмкие и более дешёвые компоненты для ПЗУ.

Как и в большинстве домашних компьютеров 1980-х годов, компьютеры Commodore загружали интерпретатор BASIC напрямую, предоставляя рудиментарные средства операционной системы для загрузки и выполнения пользовательского кода. Хотя некоторые версии Commodore BASIC содержали специфичные для работы с дискетами команды DLOAD и DSAVE, в версии для C64 они отсутствовали, из-за чего пользователю приходилось указывать номер привода дискет (8 или 9) при вызове команды LOAD, по умолчанию выполнявшую загрузку из магнитной ленты. Ещё одной командой, которая отсутствует в C64, является команда DIRECTORY, отображающая содержимое дискеты без необходимости очистки памяти. Обычно для просмотра содержимого производитель программного продукта предоставлял встроенную программу на BASIC, которая при запуске выводила необходимую информацию, однако при этом ранее записанная программа удалялась из памяти. Различные расширения BASIC (например, DOS Wedge), появившиеся после выхода C64, обеспечивали необходимый функционал без очистки памяти.

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

  1. Commodore 64—25th Anniversary Celebration. Computer History Museum (15 декабря 2007). Дата обращения: 31 января 2022. Архивировано 14 января 2022 года.
  2. 1 2 Bill Gates’ Personal Easter Eggs in 8 Bit BASIC (30 сентября 2008). Дата обращения: 31 января 2022. Архивировано 31 января 2022 года.
  3. C64DX SYSTEM SPECIFICATION. Дата обращения: 31 января 2022. Архивировано 25 января 2022 года.

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