Русская Википедия:Commodore BASIC
Commodore BASIC (также известен PET BASIC или CBM-BASIC) — один из диалектов языка программирования BASIC, использовавшийся в домашних компьютерах Commodore, начиная с PET (1977) и заканчивая C128 (1985).
История создания
Код 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 — должна была стать частью невышедшего Шаблон:Нп3[3].
Особенности реализаций
Популярный 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, обеспечивали необходимый функционал без очистки памяти.
Примечания
Ссылки
Шаблон:Диалекты языка программирования Basic