Commodore BASIC
Диалект языка программирования BasicCommodore BASIC (PET BASIC) — является диалектом языка программирования BASIC, использовавшийся в 8-битных домашних компьютерах Commodore International. Ядро диалекта было основано на Microsoft BASIC.
Из истории
Commodore лицензировала BASIC в ранний период и заплатила разовым платежом без последующих лицензионных выплат. До сих пор не известно полагали ли в Microsoft, что компания Commodore позже возвратится для покупки новых версий BASIC. И только с версией Commodore 128 (V7.0) было заключено новое лицензионное соглашение с Microsoft, где за последней было закреплено авторское право. До этого Commodore использовала исходный код BASIC для разработки своего проекта.
Технические детали
Очень удобной особенностью резидентного интерпретатора, находящегося в ROM, Commodore BASIC был текстовый редактор, который позволял пользователю вводить, редактировать, исполнять прямые команды путем простого нажатия клавиши RETURN на строке содержащей необходимые операторы языка BASIC. Это было существенным изменением интерфейса для того времени, так как типичные редакторы для BASIC того времени использовали редактирование строк путем вызова команды EDIT
.
Другой интересной особенностью была возможность сохранения именованных файлов на любое устройство, включая кассетные носители, которые были очень популярны в дни PET. Большинство систем того времени поддерживали работу с файлами на дискетах, что делало сохранение файлов на другие устройства весьма затруднительным и зачастую результаты сохранения оказывались неточными. Большинство пользователей, не использующих Commodore, решали проблему путем сохранения одного файла на ленту. При использовании же PET файл мог быть загружен по его имени с кассеты, компьютер сканировал файлы, пропуская не подходящие по имени. Файловая система также поддерживала структуру RECORD
, которая могла быть использована для чтения или записи файлов. Еще одно отличие Commodore от других кассетных реализаций состояла в поддержке цифровой записи, а не аналоговой, которая была менее надежна.
Как и оригинальный интерпретатор Microsoft BASIC, на котором основан Commodore BASIC, более медлителен, чем машинный код. Результаты тестов показывали, что копирование 16 Кб из ROM в ОЗУ занимало менее секунды при использовании машинного кода, но более минуты BASIC. Для устранения медлительности интерпретатора программисты использовали различные хитрости. Одна из идей состояла в сохранении часто используемых целочисленных значений в переменных, поскольку в этом случае обработка занимала меньше времени, чем при использовании явных значений. А самые яростные фанатики скоростных программ писали критические разделы программ на ассемблере и исполняли их BASIC при помощи команды SYS
.
Ключевые слова в Commodore BASIC могли быть сокращены путем ввода нескольких символов с последующим специальным символом. В текстовом режиме этот специальный символ отображался как графический символ, например команда GOTO
могла быть сокращенна G {Shift-O}. Эта система, конечно же, не была совершенной и имела ряд проблем, но зачастую это упрощало написание программ.
Распространенным заблуждением является мнение, что требуется меньший объем памяти для хранения сокращенных ключевых слов, хотя иногда это оказывалось действительно так. После ввода строки программы она передавалась в ядро BASIC для замены ключевых слов однобайтными лексемами в памяти.
Однако сокращение ключевых слов позволяло умещать больший объем кода в строке программы (длина строки зависела от используемой машины и ограничивалась 2-4 экранными строками).
Интересным фактом Commodore BASIC является то, что он не требовал наличие пробелов в коде программы (наличие пробела было обязательным лишь после номера строки). И фактически большинство программ было написано в таком стиле:
100 ifa=5thenprint"yes":goto160
Порядок исполнения строк Commodore BASIC не определялся номером строки, вместо этого он определялся последовательностью строк связанных в памяти. Каждая строка программы хранилась в памяти как номер строки, указатель и связанный с ней код. Указатель содержал адрес следующей строки кода. В процессе написания программы строки постоянно упорядочивались в порядке следования. Но после написания программы имелась возможность при помощи команды POKE
изменить номера строк и указатели.
Переменные могли иметь имена длиной до двух символов. Таким образом, переменные VARIABLE1, VARIABLE2, VA толковались как имя одной переменной.
Родным числовым форматом Commodore BASIC, как и у его прародителя Microsoft BASIC, является формат с плавающей точкой. Большинство реализаций BASIC того времени использовало один байт для характеристики и три байта для мантиссы, что приводило к большим неточностям в бизнес приложениях из-за округлений. Но Commodore BASIC использовал четыре байта для мантиссы, что сделало его более приспособленным для использования в бизнес приложениях.
Имелась возможность работать со знаковыми 16-разрядными целыми числами (диапазон от -32768 до 32767). Целые числа записывались как имя переменной с знаком процента на конце, строки имели знак доллара в конце. Несмотря на ограничение в 2 символа переменные AA, AA%, AA$ считались различным.
Существовало множество расширений для Commodore BASIC, которые расширяли его функциональные возможности, синтаксис и т.д.
Комментарии
]]>blog comments powered by Disqus
]]>