Super Expander 64 — это картриджное расширение встроенного интерпретатора BASIC домашнего компьютера Commodore 64. Он был выпущен Commodore Business Machines в 1983 году. Встроенный BASIC C64, Commodore BASIC , был адаптирован из PET и VIC 20 , и язык не имеет прямой поддержки звукового и графического оборудования системы. Доступ к оборудованию должен был осуществляться через прямой доступ к ячейкам памяти, сопоставленным с определенными аппаратными регистрами, с помощью операторов и . Super Expander 64 добавляет функции для рисования графики, использования спрайтов , чтения джойстиков, воспроизведения звука и другие функции. PEEK
POKE
Дополнительный код отображается в области «нижнего картриджа» объемом 8 килобайт по адресу $8000-$9FFF
, сокращая 38 911 байт для пользовательских программ на указанные 8 КБ.
После инициализации экрана для графики «высокого разрешения» (320 × 200 монохромных пикселей) или многоцветной (160 широкоэкранных × 200 пикселей в четырех цветах) с помощью GRAPHIC
команды можно рисовать линии, круги, эллипсы, дуги, прямоугольники и многое другое с помощью команд DRAW
, CIRCLE
, и BOX
. PAINT
«заполнит» бы область, ограниченную линиями, например, внутреннюю часть CIRCLE
или BOX
. CHAR
Команда использовалась для «печати» символов из ПЗУ генератора символов на экран растровой графики . и сохраняла бы содержимое прямоугольной области графики высокого разрешения в строковую переменную и «отпечатывала» бы ее обратно на экран в произвольных местах. Такая «графика-в-строке» также могла бы использоваться для переноса чего-либо, нарисованного на экране высокого разрешения, в один из восьми шаблонов спрайтов.SSHAPE
GSHAPE
GSHAPE
Помимо ряда команд для инициализации, позиционирования и перемещения спрайтов (или подвижных объектов-блоков, как их называл Commodore; графических элементов с аппаратной поддержкой, которые могли свободно перемещаться по экрану независимо от другой графики и текста на экране), Super Expander имел встроенный инструмент для редактирования шаблона из 8 спрайтов (вызывался с помощью команды SPRDEF
), либо в режиме высокого разрешения (24 × 21 пиксель), либо в многоцветном режиме (12 в ширину × 21 пиксель).
Был даже способ реализации "прерываний" в программе BASIC, если сталкивались два спрайта, если спрайт сталкивался с другой графикой и/или текстом на экране, или если активировалось подключенное световое перо. Команда COLINT
устанавливала прерывание, указывая на начальный номер строки BASIC "обработчика прерываний ", который должен был заканчиваться оператором RETURN
(частью стандартного, нерасширенного BASIC) для того, чтобы передать управление обратно прерванной, "основной" части программы.
Воспроизведение последовательности музыкальных нот было привязано к стандартной PRINT
команде BASIC с помощью специального «управляющего символа», очень похожего на управление курсором, смену цвета и другие управляющие символы. Например, воспроизводилась восходящая гамма. Команды типа и использовались для установки темпа воспроизведения и тембра последовательности нот.PRINT CHR$(6);"CDEFGAB"
TEMPO
TUNE
«Причуда» этой функции заключается в том, что при вводе специального управляющего символа (нажатием CTRL+ F) вместе с кавычками, а затем при удалении кавычек машина «воспроизводит» все, что было набрано во время редактирования программы; нажимайте клавишу G, и машина воспроизводит «Плинг!» с высотой тона ноты G...!
Такие функции, как RJOY
, RPEN
и RPOT
считывали бы состояние подключенного джойстика, светового пера или аналогового манипулятора . В сочетании с командами, связанными с движением спрайта, требовалась всего одна строка кода BASIC, чтобы заставить спрайт двигаться в направлении, указанном подключенным джойстиком.
Была доступна команда KEY
, которая настраивала четыре функциональные клавиши на клавиатуре 64 на «ввод» произвольной строки. По умолчанию эти клавиши были настроены на ввод команд типа RUN
, LIST
, SPRDEF
, GRAPHICS
и других, но пользователь мог изменить это с помощью KEY
команды либо в прямом режиме, либо под управлением программы.
Все версии BASIC на 8-битных машинах Commodore использовали схему замены ключевых слов BASIC однобайтовым кодом — например, слово " PRINT
" заменялось однобайтовым значением или токеном , а не пятью ASCII-кодами для пяти букв в слове. Super Expander добавлял больше команд, чем могла вместить эта система, поэтому была реализована система двухбайтовых токенов для новых команд.
Из-за странности интерпретатора BASIC (обработка "THEN-части" конструкции IF/THEN не перепрыгивала через вектор в ОЗУ, а вместо этого выполняла прямой переход к стандартной, нерасширенной процедуре декодирования команд BASIC), операторы IF/THEN должны были иметь дополнительное двоеточие (:), вставленное сразу после ключевого слова THEN, если следующая команда была одним из нестандартных ключевых слов BASIC Super Expander. Например, выдавало бы сообщение — его нужно было написать так — обратите внимание на двоеточие между THEN и командой DRAW, добавленной Super Expander.IF (condition) THEN DRAW ...
?SYNTAX ERROR
IF (condition) THEN:DRAW ...
Руководство доступно в электронном виде . [ 1]