stringtranslate.com

Коммодор БЕЙСИК

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

Ядро основано на 6502 Microsoft BASIC и поэтому имеет много общих характеристик с другими 6502 BASIC того времени, такими как Applesoft BASIC . Commodore лицензировала BASIC у Microsoft в 1977 году по принципу «оплата один раз, без гонораров » после того, как Джек Трэмиел отклонил предложение Билла Гейтса о гонораре в размере 3 долларов за единицу, заявив: «Я уже женат», и будет платить не более 25 000 долларов. за бессрочную лицензию. [1]

Исходная версия PET была очень похожа на исходную реализацию Microsoft с небольшими изменениями. BASIC 2.0 на C64 также был похож на C128 (в режиме C64) и других моделях. На более поздних 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 .

История

Commodore взяла исходный код платного BASIC и доработала его для всех остальных 8-битных домашних компьютеров. Только в Commodore 128 (с версией V7.0) появилось уведомление об авторских правах Microsoft. Однако Microsoft встроила пасхальное яйцо в версию 2 или «обновление» Commodore Basic, что доказало ее происхождение: ввод (непонятной) команды WAIT 6502, 1приводил к Microsoft!появлению на экране. (Пасхалка была хорошо запутана — сообщение не появилось ни при какой дизассемблере интерпретатора.) [2]

Популярный Commodore 64 поставлялся с BASIC v2.0 в ПЗУ, хотя компьютер был выпущен после серии PET/CBM с версией 4.0, поскольку 64 был задуман как домашний компьютер, а серия PET/CBM была ориентирована на бизнес и образование. использовать там, где предполагалось, что их встроенный язык программирования будет использоваться более интенсивно. Это позволило сэкономить производственные затраты, поскольку V2 помещался в ПЗУ меньшего размера.

Технические детали

Редактирование программы

Удобной особенностью резидентного в ПЗУ интерпретатора BASIC и KERNAL компании Commodore был полноэкранный редактор . [3] [4] Хотя клавиатуры Commodore имеют только две клавиши курсора , направление которых менялось на противоположное при удерживании клавиши Shift, редактор экрана позволял пользователям вводить прямые команды или вводить и редактировать строки программы из любого места экрана. Если перед строкой стоял номер строки, она маркировалась и сохранялась в памяти программы. Строки, не начинающиеся с цифры, выполнялись нажатием RETURNклавиши всякий раз, когда курсор находился на строке. Это ознаменовало собой значительное обновление интерфейсов ввода программ по сравнению с другими распространенными в то время BASIC для домашних компьютеров, которые обычно использовали редакторы строк , вызываемые отдельной EDITкомандой, или «курсор копирования», который обрезал строку в позиции курсора.

Он также имел возможность сохранять именованные файлы на любом устройстве, включая кассету — популярное устройство хранения во времена PET, которое использовалось на протяжении всего срока службы 8-битных Commodores как недорогая форма запоминающего устройства большой емкости. . Большинство систем поддерживали имена файлов только на дискете , что затрудняло сохранение нескольких файлов на других устройствах. Пользователю одной из этих других систем приходилось отмечать показания счетчика рекордера в месте расположения файла, но это было неточно и приводило к ошибкам. В PET (и BASIC 2.0) файлы с кассет можно было запрашивать по имени. Устройство будет искать имя файла, последовательно считывая данные, игнорируя любые несовпадающие имена файлов. Файловая система также поддерживалась мощной структурой записей , которую можно было загружать или сохранять в файлы. Данные на кассете Commodore записывались в цифровом формате, а не менее дорогими (и менее надежными) аналоговыми методами, используемыми другими производителями. Поэтому требовался специализированный набор данных , а не стандартный магнитофон. Были доступны адаптеры, в которых использовался аналого-цифровой преобразователь , позволяющий использовать стандартный рекордер, но они стоили лишь немного дешевле, чем Datasette.

Команда ЗАГРУЗИТЬ может использоваться с необязательным параметром 1, который загружает программу по адресу памяти, содержащемуся в первых двух байтах файла (эти байты отбрасываются и не сохраняются в памяти). Если параметр ,1 не используется, программа загружается в начало программной области BASIC, которая сильно различается на разных машинах. Некоторые варианты Commodore BASIC предоставляли команды , которые работали так же, как их аналоги в Applesoft BASIC , загружая или сохраняя растровые изображения из указанных ячеек памяти.BLOADBSAVE

PET не поддерживает перемещаемые программы, и команда ЗАГРУЗИТЬ всегда загружает первые два байта, содержащиеся в файле программы. Это создавало проблему при попытке загрузить программы BASIC, сохраненные на других машинах Commodore, поскольку они загружались по более высокому адресу, чем ожидал BASIC PET. Были обходные пути для «перемещения» программ в нужное место. Если программа была сохранена на машине CBM-II , единственным способом загрузить ее на PET было изменение первых двух байтов с помощью редактора секторов диска, поскольку в серии CBM-II область программы BASIC была равна $0, что привело бы к в PET пытается загрузить нулевую страницу и зависает.

Ключевые слова Commodore BASIC можно сократить, введя сначала несмещенное нажатие клавиши, а затем сдвинутое нажатие следующей буквы. При этом устанавливается старший бит , в результате чего интерпретатор прекращает чтение и анализирует оператор согласно справочной таблице. Это означало, что оператор до того места, где был установлен старший бит, принимался вместо ввода всей команды. Однако, поскольку все ключевые слова BASIC хранились в памяти в виде однобайтовых токенов, это было скорее удобством для ввода операторов, чем оптимизацией.

В наборе символов по умолчанию, состоящем только из заглавных букв, сдвинутые символы отображаются как графические символы; например, команду GOTOможно сократить G{Shift-O}(что похоже на экранную форму). Большинство таких команд состояло из двух букв, но в некоторых случаях они были длиннее. В подобных случаях возникала двусмысленность, поэтому требовалось больше несмещенных букв команды, например ( ) для . Некоторые команды не имели сокращенной формы либо из-за краткости, либо из-за неоднозначности других команд. Например, у команды не было сокращения, поскольку ее написание противоречило отдельному ключевому слову, которое располагалось ближе к началу таблицы поиска ключевых слов . Часто используемая команда имела один ярлык, как это было принято в большинстве диалектов Microsoft BASIC. Сокращение команд сдвинутыми буквами уникально для Commodore BASIC.GΓGO{Shift-S}GO♥GOSUBINPUTINPUT#PRINT?

В этом методе токенизации был сбой: если включить REM(оператор BASIC для добавления комментария к коду), за которым следует {Shift-L}, при попытке просмотреть листинг программы интерпретатор BASIC немедленно прервал бы листинг, отобразил a ?SYNTAX ERRORи вернулся к READY.быстрый. Этот глюк в некоторой степени использовался программистами, которые хотели попытаться защитить свою работу, хотя его было довольно легко обойти.

Сокращая ключевые слова, можно было разместить больше кода в одной строке программы (которая могла занимать две строки экрана на дисплеях с 40 столбцами - т. е. C64 или PET, или четыре строки на дисплее VIC-20 с 22 столбцами). Это позволило немного сэкономить на накладных расходах на хранение необходимых в противном случае дополнительных строк программы, но не более того. Все команды BASIC были токенизированы и занимали в памяти 1 байт (или два, в случае нескольких команд BASIC 7 или BASIC 10), независимо от того, каким способом они были введены. Такие длинные строки было неудобно редактировать. Команда LISTотображала все ключевое слово команды, расширяя строку программы за пределы 2 или 4 строк экрана, которые можно было ввести в память программы.

Производительность

Как и оригинальный интерпретатор Microsoft BASIC , Commodore BASIC работает медленнее, чем собственный машинный код . Результаты испытаний показали, что копирование 16 килобайт из ПЗУ в ОЗУ занимает менее секунды в машинном коде по сравнению с более чем минутой в BASIC. [ нужна цитата ] Чтобы выполнять быстрее, чем интерпретатор, программисты начали использовать различные методы для ускорения выполнения. Один из них заключался в том, чтобы хранить часто используемые значения с плавающей запятой в переменных, а не использовать литеральные значения, поскольку интерпретация имени переменной была быстрее, чем интерпретация буквального числа. Поскольку плавающая запятая является типом по умолчанию для всех команд, в качестве аргументов быстрее использовать числа с плавающей запятой, а не целые числа. Когда скорость была важна, некоторые программисты преобразовывали разделы программ BASIC в язык ассемблера 6502 или 6510 , который загружался отдельно из файла или помещался в память из операторов DATA в конце программы BASIC и выполнялся из BASIC с помощью команды либо из прямой режим или из самой программы . Когда скорость выполнения машинного языка была слишком велика, например, в игре или при ожидании пользовательского ввода, программисты могли опрашивать , считывая выбранные ячейки памяти (например, [5] для 64 или [6] для 128, обозначая размер очереди клавиатуры), чтобы задержать или остановить выполнение.SYS$C6$D0

Уникальной особенностью Commodore BASIC является использование управляющих кодов для выполнения таких задач, как очистка экрана или позиционирование курсора внутри программы; их можно вызвать либо путем ввода команды, где X соответствует выдаваемому управляющему коду (например, является управляющим кодом для очистки экрана), либо путем нажатия соответствующей клавиши между кавычками, таким образом нажимая + после кавычки заставит BASIC отображать визуальное представление управляющего кода (в данном случае перевернутое сердце), которое затем применяется при выполнении программы (непосредственная распечатка управляющих кодов требует меньше памяти и выполняется быстрее, чем вызов функции CHR$ ). Это по сравнению с другими реализациями BASIC, которые обычно имеют специальные команды для очистки экрана или перемещения курсора.PRINT CHR$(X)PRINT CHR$(147)⇧ ShiftCLR HOME

В BASIC 3.5 и более поздних версиях есть соответствующие команды для очистки экрана и перемещения курсора.

Строки программы в Commodore BASIC нигде не требуют пробелов (но команда LIST всегда отображает единицу между номером строки и оператором), например, , и обычно программы пишутся без пробелов. Эта функция была добавлена ​​для экономии памяти, поскольку токенизатор никогда не удаляет пробелы, вставленные между ключевыми словами: наличие пробелов приводит к появлению дополнительных байтов в токенизированной программе, которые просто пропускаются во время выполнения. Пробелы между номером строки и оператором программы удаляются токенизатором.100 IFA=5THENPRINT"YES":GOTO1600x20

На большинстве машин строки программы могут иметь общую длину 80 символов, но на машинах с текстом из 40 столбцов строка будет перетекать на следующую строку на экране, а на VIC-20, который имел дисплей с 22 столбцами, строки программы могли занимать целых четыре. BASIC 7.0 на Commodore 128 увеличил лимит строки программы до 160 символов (четыре строки по 40 столбцов или две строки по 80 столбцов). Используя сокращения, например , ?вместо PRINT, можно уместить в строке еще больше символов. BASIC 7.0 отображает?СТРОКА СЛИШКОМ ДЛИННАЯошибка, если пользователь вводит строку программы длиной более 160 символов. Более ранние версии не выдавали ошибок и просто отображали приглашение READY двумя строками ниже, если длина строки превышена. Номер строки учитывается по количеству символов в строке программы, поэтому пятизначный номер строки приведет к тому, что будет разрешено на четыре символа меньше, чем однозначное число.

Порядок выполнения строк Commodore BASIC не определялся нумерацией строк; вместо этого он следовал порядку, в котором строки были связаны в памяти. [7] Строки программы хранились в памяти в виде односвязного списка с указателем (содержащим адрес начала следующей строки программы), номером строки, а затем токенизированным кодом строки. Во время ввода программы BASIC постоянно менял порядок строк программы в памяти, чтобы номера строк и указатели располагались в порядке возрастания. Однако после запуска программы ручное изменение номеров строк и указателей с помощью команд POKE может привести к неупорядоченному выполнению или даже дать каждой строке одинаковый номер строки. В первые дни, когда BASIC использовался в коммерческих целях, это был метод защиты программного обеспечения , предотвращающий случайную модификацию программы.

Номера строк могут находиться в диапазоне от 0 до 65520, и для их хранения требуется пять байтов, независимо от того, сколько цифр содержится в номере строки, хотя выполнение тем быстрее, чем меньше цифр. Размещение нескольких операторов в строке будет использовать меньше памяти и выполняться быстрее.

Операторы GOTO и GOSUB будут выполнять поиск номера строки вниз от текущей строки, если выполняется переход вперед, в случае перехода назад они возвращаются к началу программы, чтобы начать поиск. Это замедлит работу больших программ, поэтому предпочтительно размещать часто используемые подпрограммы в начале программы.

Имена переменных имеют значение только до двух символов; таким образом, имена переменных VARIABLE1, VARIABLE2и VAвсе относятся к одной и той же переменной.

Commodore BASIC также поддерживает побитовые операторы — AND, OR и XOR , хотя эта функция была частью основного кода Microsoft 6502 BASIC, в других реализациях, таких как Applesoft BASIC, она обычно опускалась .

Собственный числовой формат Commodore BASIC, как и у его родительского MS BASIC , был с плавающей запятой . Большинство современных реализаций BASIC использовали один байт для характеристики ( показатель степени ) и три байта для мантиссы . Точность числа с плавающей запятой с использованием трехбайтовой мантиссы составляет всего около 6,5 десятичных цифр, и ошибка округления является обычным явлением. В версиях Microsoft BASIC 6502 использовалась 40-битная арифметика с плавающей запятой, а это означает, что для хранения переменных требовалось пять байтов (четыре байта мантиссы и один байт для экспоненты), в отличие от 32-битной арифметики с плавающей запятой, найденной в BASIC-80.

В то время как реализации Microsoft BASIC 8080/Z80 поддерживали целочисленные переменные и переменные двойной точности, реализации 6502 были только с плавающей запятой.

Хотя Commodore BASIC поддерживает целочисленные переменные со знаком (обозначаемые знаком процента) в диапазоне от -32768 до 32767, на практике они используются только для переменных массива и выполняют функцию экономии памяти, ограничивая элементы массива двумя байтами каждый (массив 2000 элементов будут занимать 10 000 байт, если они объявлены как массив с плавающей запятой, и только 4000, если они объявлены как целочисленный массив). Обозначение любой переменной как целого числа просто приводит к тому, что BASIC преобразует ее обратно в число с плавающей запятой, замедляя выполнение программы и тратя память, поскольку для хранения каждого знака процента требуется один дополнительный байт (поскольку это также относится к целочисленным массивам, программисту следует избегать их использования, если только это не очень важно). используются большие массивы, которые превысили бы доступную память, если бы они хранились в формате с плавающей запятой). Кроме того, невозможно POKE или PEEK в ячейках памяти выше 32767 с адресом, определенным как целое число со знаком.

Вместо числа 0 можно использовать точку (.) (таким образом, вместо или вместо ), это будет выполняться немного быстрее.10 A=.10 A=010 FOR A=. TO 10010 FOR A=0 to 100

Оператор SYS , используемый для запуска программ на машинном языке, был добавлен Commodore и отсутствовал в исходном коде Microsoft BASIC, который содержал только функцию USR для вызова подпрограмм машинного языка. Он автоматически загружает в регистры ЦП значения (C64, на других машинах различается) — это можно использовать для передачи данных в подпрограммы машинного языка или как средство вызова функций ядра из BASIC (например, очищает экран). .$30C-$30FPOKE 780,147:SYS 65490

Поскольку 8-разрядные машины Commodore, кроме C128, не могут автоматически загружать программное обеспечение с диска, обычным методом является включение заглушки BASIC, например, для начала выполнения программы. Можно автоматически запускать программное обеспечение после загрузки и не требовать от пользователя ввода оператора RUN . Это достигается за счет наличия фрагмента кода, который перехватывает вектор «готовности» BASIC в .10 SYS 2048$0302

Как и в большинстве других версий Microsoft BASIC , если массив не объявлен с помощью инструкции DIM , ему автоматически присваивается десять элементов (на практике 11, поскольку элементы массива отсчитываются с 0). Необходимо объявить массивы большего размера, иначе BASIC отобразит ошибку при запуске программы, и массив не может быть изменен в программе, если все переменные не будут удалены с помощью оператора CLR. Числовые массивы автоматически заполняются нулями при их создании. При измерении большого массива может возникнуть кратковременная задержка в выполнении программы.

Строковые переменные представляются путем пометки имени переменной знаком доллара. Таким образом, переменные AA$, AAи AA%будут пониматься как отдельные. Переменные массива также считаются отличными от простых переменных, поэтому A и A(1) не относятся к одной и той же переменной. Размер массива строк просто относится к количеству строк, хранящихся в массиве, а не к размеру каждого элемента, который выделяется динамически. В отличие от некоторых других реализаций Microsoft BASIC, Commodore BASIC не требует резервирования строкового пространства в начале программы.

В отличие от других 8-битных машин, таких как Apple II, все машины Commodore имеют встроенные часы, которые инициализируются до 0 при включении питания и обновляются с каждым тактом таймера PIA/VIA/TED/CIA, то есть 60 раз в секунду. . В BASIC ему присвоены две системные переменные, TI и TI$ , которые содержат текущее время. TI доступен только для чтения и не может быть изменен; это приведет к появлению сообщения о синтаксической ошибке. TI$ можно использовать для установки времени с помощью строки из шести цифр (при использовании строки, отличной от шести цифр, возникает ошибка). Часы не являются очень надежным методом измерения времени, поскольку они останавливаются всякий раз, когда отключаются прерывания (выполняемые некоторыми процедурами ядра), а доступ к порту IEC (или порту IEEE на PET) замедлит обновление часов на несколько тактов.

Функция RND в Commodore BASIC может использовать часы для генерации случайных чисел; это достигается с помощью , однако его применение относительно ограничено, поскольку возвращаются только числа от 0 до 255. В остальном RND работает так же, как и другие реализации Microsoft BASIC, в том смысле, что псевдослучайная последовательность используется через фиксированное 5-байтовое начальное значение, сохраняемое при включении питания в ячейках памяти на C64 (на других машинах это место отличается). RND с любым числом больше 0 будет генерировать случайное число, объединенное из значения, включенного в функцию RND , и начального значения, которое обновляется на 1 каждый раз, когда выполняется функция RND. RND с отрицательным числом переходит в точку в последовательности текущего начального значения, заданную числом.RND(0)$8B-$8F

Поскольку генерация истинного случайного числа с помощью оператора RND невозможна , для C64 и C128 более типично использовать канал белого шума чипа SID для случайных чисел.

BASIC 2.0, как известно, страдал от чрезвычайно медленной сборки мусора в строках. Сбор мусора автоматически вызывается каждый раз, когда выполняется функция FRE , и если в ходе программы обрабатывалось много строковых переменных и массивов, их очистка может занять более часа в худших условиях. Также невозможно прервать сборку мусора, поскольку BASIC не сканирует клавишу RUN/STOP во время выполнения этой процедуры. BASIC 4.0 представил улучшенную систему сбора мусора с обратными указателями, и все более поздние реализации Commodore BASIC также имеют ее.

Функция FRE в BASIC 2.0 имела еще один технический недостаток: она не могла обрабатывать числа со знаком, превышающие 32768, поэтому, если функция вызывается на C64 (память BASIC 38 КБ), будет отображаться отрицательный объем свободной памяти BASIC (добавление 65535 к сообщенное число получит правильный объем свободной памяти). PET и VIC-20 никогда не имели более 32 КБ общей памяти, доступной для BASIC, поэтому это ограничение не стало очевидным до тех пор, пока не был разработан C64. Функция FRE в BASIC 3.5 и 7.0 исправила эту проблему, а FRE в BASIC 7.0 также была «разделена» на две функции: одна для отображения свободной текстовой памяти программы BASIC, а другая для отображения свободной памяти переменных.

Альтернативы

Начальный экран BASIC Simons

Многие расширения BASIC были выпущены для Commodore 64 из-за относительно ограниченных возможностей родного BASIC 2.0. Одним из самых популярных расширений было DOS Wedge , которое было включено в тестовый/демонстрационный диск Commodore 1541. Это расширение BASIC размером 1 КБ добавило ряд команд, связанных с диском, включая возможность чтения каталога диска без разрушения программы в памяти. Его функции впоследствии были включены в различные сторонние расширения, такие как популярный картридж Epyx FastLoad . В другие расширения BASIC добавлены дополнительные ключевые слова, упрощающие кодирование спрайтов, звука и графики высокого разрешения, например BASIC Саймонса (1983 г.) и Vision BASIC (2022 г.).

Хотя отсутствие звуковых и графических функций в BASIC 2.0 расстраивало многих пользователей, некоторые критики [ кто? ] утверждал, что в конечном итоге это было выгодно, поскольку заставляло пользователя изучать машинный язык.

Ограничения BASIC 2.0 на C64 привели к использованию встроенного в ПЗУ машинного языка BASIC. Чтобы загрузить файл в назначенную ячейку памяти, имя файла, диск и номер устройства будут считаны вызовом: ; [8] местоположение будет указано в регистрах X и Y: ; [9] и процедура загрузки будет называться: . [10]SYS57812"filename",8POKE780,0:POKE781,0:POKE782,192SYS65493

Дисковый журнал для C64, Loadstar , был местом встречи программистов-любителей, которые делились коллекциями прото-команд для BASIC, вызываемых командой SYS address + offset. [ нужна цитата ]

С точки зрения современного программирования, более ранние версии Commodore BASIC представляли собой множество ловушек для программиста. Поскольку большинство этих проблем возникло из-за Microsoft BASIC , практически каждый домашний компьютер BASIC той эпохи страдал аналогичными недостатками. [11] Каждой строке программы Microsoft BASIC программист присвоил номер строки . Обычной практикой было увеличение чисел на определенное значение (5, 10 или 100), чтобы упростить вставку строк во время редактирования или отладки программы, но плохое планирование означало, что вставка больших разделов в программу часто требовала реструктуризации всего кода. Распространенным методом был запуск программы с некоторого низкого номера строки с помощью таблицы переходов ON...GOSUB , при этом тело программы было структурировано на разделы, начинающиеся с определенного номера строки, например 1000, 2000 и т. д. Если необходимо добавить большой раздел, ему можно просто присвоить следующий доступный основной номер строки и вставить его в таблицу переходов.

Кроме того, все переменные рассматриваются как глобальные переменные. Четко определенные циклы, выходящие за рамки конструкции FOR...NEXT, создать сложно, поэтому программисту часто приходится полагаться на команду GOTO (позже это было исправлено в BASIC 3.5 добавлением команд DO, LOOP, WHILE, UNTIL и EXIT) . ). Переменные флагов часто приходилось создавать для выполнения определенных задач.

Более поздние версии BASIC на Commodore и других платформах включали команды DELETE и RENUMBER , а также команду автоматической нумерации строк, которая автоматически выбирала и вставляла номера строк в соответствии с выбранным шагом. В более ранних версиях BASIC от Commodore также отсутствуют команды отладки, а это означает, что ошибки и неиспользуемые переменные трудно обнаружить. Структуры IF...THEN...ELSE , стандартная часть Z80 Microsoft BASIC, были добавлены в BASIC 3.5 после того, как они были недоступны в более ранних версиях Commodore BASIC.

Использовать в качестве пользовательского интерфейса

Как и другие домашние компьютеры , машины Commodore загружались непосредственно в интерпретатор BASIC. Файлы BASIC и команды программирования можно было вводить в прямом режиме для загрузки и выполнения программного обеспечения. Если выполнение программы было остановлено с помощью клавиши RUN/STOP, значения переменных будут сохранены в оперативной памяти и могут быть распечатаны для отладки. Модель 128 даже выделила свой второй банк размером 64 КБ для хранения переменных, позволяя значениям сохраняться до тех пор, пока не будет выполнена команда NEWили RUN. Это, наряду с расширенным экранным редактором, включенным в Commodore BASIC, придало среде программирования ощущение, подобное REPL ; программисты могли вставлять и редактировать строки программы в любом месте экрана, создавая программу в интерактивном режиме. [12] В этом отличие от бизнес-ориентированных операционных систем того времени, таких как CP/M или MS-DOS , которые обычно загружались с интерфейсом командной строки . Если на этих платформах требовался язык программирования, его приходилось загружать отдельно.

В то время как некоторые версии Commodore BASIC включали команды DLOADи DSAVEкоманды, специфичные для диска, в версии, встроенной в Commodore 64 , их не было, и пользователю требовалось указать номер устройства дисковода (обычно 8 или 9) в стандартной LOADкоманде, которая в противном случае по умолчанию использовала ленту. Еще одним упущением в BASIC 2.0 для Commodore 64 была DIRECTORYкоманда отображения содержимого диска без очистки основной памяти. В версии 64 просмотр файлов на диске был реализован как загрузка «программы», которая при указании отображала каталог как псевдо-BASIC-программу с размером блока файла в качестве номера строки. Это привело к перезаписи загруженной в данный момент программы. Такие дополнения, как DOS Wedge, преодолели эту проблему, отображая список каталогов непосредственно в памяти экрана.

Версии и возможности

Список версий CBM BASIC в хронологическом порядке с последовательно добавляемыми функциями:

Выпущенные версии

Неизданные версии

Известные пакеты расширений

Рекомендации

  1. ^ Заявлено Джеком Трэмиэлом на праздновании 25-летия Commodore 64 в Музее истории компьютеров 10 декабря 2007 г. [1] Архивировано 11 декабря 2008 г. в Wayback Machine [2] Архивировано 3 октября 2017 г. в Wayback Machine [3] .
  2. ^ «Личные пасхальные яйца Билла Гейтса в 8-битном BASIC - pagetable.com» . www.pagetable.com . Проверено 8 августа 2018 г.
  3. ^ «Клавиатура и редактор экрана». Июль 1985 года.
  4. ^ «Байт, июль 1983 г.» (PDF) . Архивировано из оригинала (PDF) 24 августа 2017 г. Проверено 1 мая 2015 г.
  5. ^ Лимон, Шелдон (1987). Сопоставление Commodore 64 и 64C. ВЫЧИСЛИТЬ! Публикации. п. 37. ИСБН 9780874550825. Проверено 25 марта 2018 г.
  6. ^ Каупер, Оттис Р. (1986). Картирование Commodore 128. ВЫЧИСЛЯЙТЕ! Публикации. п. 66. ИСБН 9780874550603.
  7. ^ "Составление карты C64" . www.unusedino.de . Проверено 21 августа 2023 г.
  8. ^ Лимон, Шелдон (1987). Сопоставление Commodore 64 и 64C. ВЫЧИСЛИТЕ! Публикации. п. 209. ИСБН 9780874550825. Проверено 25 марта 2018 г.
  9. ^ Лимон, Шелдон (1987). Сопоставление Commodore 64 и 64C. ВЫЧИСЛИТЬ! Публикации. п. 71. ИСБН 9780874550825. Проверено 25 марта 2018 г.
  10. ^ Лимон, Шелдон (1987). Сопоставление Commodore 64 и 64C. ВЫЧИСЛИТЕ! Публикации. п. 231. ИСБН 9780874550825. Проверено 25 марта 2018 г.
  11. ^ "Первая книга Atari Compute! ". www.atariarchives.org . Проверено 21 августа 2023 г.
  12. ^ Скримшоу, Нью-Йорк (11 ноября 2013 г.). Введение в Commodore 64: приключения в программировании. Биркхойзер. ISBN 9781489967879.
  13. ^ ab «Карта памяти BASIC 4.0». zimmers.net . Проверено 21 августа 2023 г.
  14. ^ «Майк Набережный - Прошивка ЖК-дисплея Commodore» . mikenaberezny.com . Проверено 8 августа 2018 г.

Источники

БЕЙСИК 2.0
БАЗОВЫЙ 3.5
БЕЙСИК 7.0
БЕЙСИК 10.0