Commodore BASIC
Commodore BASIC — это диалект языка программирования Бейсик (BASIC), встроенный в постоянное запоминающее устройство (ПЗУ) большинства 8-битных домашних компьютеров компании Commodore International, выпускавшихся с конца 1970-х до середины 1980-х годов. Разработанный на основе Microsoft BASIC, он служил основной операционной средой и языком программирования для пользователей, обеспечивая непосредственный доступ к аппаратному обеспечению компьютера, включая графику, звук и управление периферийными устройствами.
История
Предшественники и разработка
В середине 1970-х годов компания Microsoft, основанная Биллом Гейтсом и Полом Алленом, создала интерпретатор BASIC для микропроцессора Intel 8080, который стал стандартом для ранних любительских компьютеров, таких как Altair 8800. Когда Commodore начала разработку своего первого домашнего компьютера Commodore PET (Personal Electronic Transactor), компания приобрела лицензию на использование Microsoft BASIC. Версия, адаптированная для PET, получила обозначение Commodore BASIC 1.0 и была встроена в ПЗУ объёмом 8 КБ. Она была основана на Microsoft BASIC-80, но с существенными изменениями, внесёнными инженерами Commodore для работы с конкретной аппаратной платформой.
Эволюция версий
Развитие Commodore BASIC шло параллельно с выпуском новых моделей компьютеров. Каждая версия добавляла новые команды, улучшала работу с памятью и расширяла возможности ввода-вывода.
- Commodore BASIC 1.0 (1977): Устанавливался на первые модели PET (2001-8). Поддерживал работу с клавиатурой, дисплеем и кассетным накопителем. Отличался ограниченным набором команд и отсутствием поддержки графики и звука высокого уровня.
- Commodore BASIC 2.0 (1980): Использовался в компьютерах Commodore VIC-20 и Commodore 64. Стал самой массовой версией. В C64 он занимал 9 КБ ПЗУ. Добавил команды для работы с цветом (
POKEдля изменения цвета символов), но по-прежнему не имел встроенных команд для рисования линий или фигур. В VIC-20 была добавлена командаSOUNDдля управления звуковым чипом. - Commodore BASIC 3.5 (1983): Устанавливался на Commodore 16 и Commodore Plus/4. Эта версия была значительно расширена: добавлены команды для работы с графикой (
DRAW,CIRCLE,PAINT), звуком (VOL,SOUND), а также команды управления окнами (WINDOW) и обработки ошибок (TRAP). Объём ПЗУ составлял 16 КБ. - Commodore BASIC 4.0 (1983): Использовался в профессиональных моделях Commodore PET (серии 4000 и 8000) и Commodore 128 в режиме C64. Основное нововведение — поддержка дисководов (команды
DLOAD,DSAVE,DIRECTORY,COPY,SCRATCH), что упростило работу с дискетами. - Commodore BASIC 7.0 (1985): Устанавливался на Commodore 128. Это была самая мощная версия для 8-битных машин Commodore. Она включала все возможности BASIC 3.5 и 4.0, а также добавила команды для работы с графикой высокого разрешения (
GRAPHIC,LOCATE,DRAW), спрайтами (SPRITE,MOVSPR), звуком (PLAY,TEMPO,VOLUME), и новую структуру управления (DO...LOOP,BEGIN...BEND). Объём ПЗУ составил 32 КБ.
Архитектура и характеристики
Интерпретатор и среда
Commodore BASIC был интерпретатором, что означало, что исходный код программы выполнялся построчно без предварительной компиляции. После включения компьютера пользователь сразу попадал в среду BASIC, которая отображала приглашение в виде слова READY. и мигающего курсора. Ввод команд осуществлялся в режиме прямой строки (немедленное выполнение) или в режиме программирования (с нумерацией строк).
Работа с памятью
Память компьютера была разделена на несколько областей. Программа на BASIC хранилась в оперативной памяти (ОЗУ) начиная с определённого адреса (например, 2049 в C64). Пользователь мог напрямую обращаться к ячейкам памяти с помощью ключевых команд:
PEEK(адрес): возвращает значение байта по указанному адресу.POKE адрес, значение: записывает значение байта по указанному адресу.
Эти команды позволяли манипулировать аппаратным обеспечением, например, изменять цвет фона, управлять регистрами звукового чипа или загружать данные в видеопамять.
Графика и звук
Встроенные графические возможности Commodore BASIC были минимальными. Компьютер работал в текстовом режиме, где каждый символ отображался в матрице 8x8 пикселей. Для рисования графических примитивов (линий, точек) требовалось использовать команды POKE для записи в видеопамять или, в более поздних версиях, специальные команды:
DRAW x1,y1 TO x2,y2(BASIC 3.5/7.0): рисует линию.CIRCLE x,y,r(BASIC 3.5/7.0): рисует окружность.PAINT x,y,color(BASIC 3.5/7.0): заливает область цветом.
Для работы со звуком в ранних версиях использовались команды POKE для управления звуковым чипом (например, SID в C64). В более поздних версиях появились команды SOUND (частота, длительность, громкость) и PLAY (для воспроизведения нот).
Работа с файлами
Ввод-вывод данных осуществлялся через логические номера файлов. Команда OPEN связывала номер файла с устройством (кассетный магнитофон, дисковод, принтер). Для записи использовалась команда PRINT#, для чтения — INPUT# или GET#. В BASIC 4.0 и 7.0 были добавлены специализированные команды для работы с дисковыми накопителями, такие как DLOAD (загрузка программы с диска) и DSAVE (сохранение на диск).
Команды и синтаксис
Синтаксис Commodore BASIC был основан на стандарте Microsoft BASIC, но имел ряд отличительных особенностей:
- Нумерация строк: Каждая строка программы должна была начинаться с номера (от 0 до 63999). Номер строки служил меткой для команд перехода (
GOTO,GOSUB). - Ключевые слова: Ключевые слова (например,
PRINT,INPUT,IF,FOR,NEXT,GOTO,GOSUB,RETURN,END,STOP,LIST,RUN,LOAD,SAVE,NEW,CLR,REM,DATA,READ,RESTORE,DIM,DEF FN,ON...GOTO,POKE,PEEK,SYS,WAIT,USR). - Типы данных: Поддерживались только два типа данных: числовой (целые числа и числа с плавающей запятой) и строковый. Строки обозначались знаком доллара (
$). Массивы могли быть числовыми или строковыми. - Операторы: Арифметические (
+,-,*,/,^), логические (AND,OR,NOT), сравнения (=,<,>,<=,>=,<>). - Функции: Встроенные математические функции (
ABS,SGN,INT,RND,SIN,COS,TAN,ATN,EXP,LOG,SQR), строковые функции (LEFT$,RIGHT$,MID$,LEN,STR$,VAL,CHR$,ASC,SPC$,TAB), а также функции для работы с памятью (PEEK,POKE,SYS).
Применение и значение
Commodore BASIC был основным инструментом для обучения программированию миллионов людей в 1980-х годах. Благодаря своей простоте и доступности, он позволял новичкам создавать простые игры, утилиты и образовательные программы. Компьютеры Commodore, особенно C64, стали платформой для огромного количества коммерческого и любительского программного обеспечения, большая часть которого была написана на BASIC или с его использованием для загрузки машинного кода.
Ограничения
Основными недостатками Commodore BASIC были его медлительность (интерпретация кода), ограниченный набор команд для работы с графикой и звуком, а также отсутствие структурного программирования (например, процедур и функций с параметрами). Для создания сложных игр и приложений, требовавших высокой производительности, программисты часто писали критические участки кода на ассемблере и загружали их через команду SYS.
Критика
Commodore BASIC часто критикуется за свою примитивность по сравнению с более поздними версиями BASIC, такими как BBC BASIC или Microsoft QuickBASIC. Отсутствие встроенной поддержки графики и звука высокого уровня в версии 2.0 (самой массовой) вынуждало программистов использовать сложные и непереносимые POKE-команды. Кроме того, нумерация строк и отсутствие локальных переменных делали код трудночитаемым и сложным для поддержки. Тем не менее, для своего времени и целевой аудитории (домашние пользователи) Commodore BASIC был адекватным и эффективным решением.
Интересные факты
- В Commodore BASIC 2.0 для Commodore 64 была обнаружена ошибка в команде
WAIT, которая могла приводить к зависанию компьютера. - Исходный код Commodore BASIC 2.0 был написан Биллом Гейтсом и Полом Алленом для Microsoft, но Commodore внесла в него значительные изменения, включая добавление поддержки своего аппаратного обеспечения.
- В Commodore 128 BASIC 7.0 была реализована поддержка работы с двумя процессорами (6502 и Z80) и двумя видеорежимами (40 и 80 столбцов), что делало его одним из самых мощных встроенных BASIC для 8-битных машин.
Источники
- Commodore 64 User's Guide, Commodore Business Machines, 1982.
- Commodore 128 Programmer's Reference Guide, Commodore Business Machines, 1985.
- Commodore Plus/4 User's Guide, Commodore Business Machines, 1984.
- "The Commodore BASIC Book", by David A. Lien, 1984.
- "Mapping the Commodore 64", by Sheldon Leemon, 1984.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →