БЕЙСИК 128 КРАТКОЕ РУКОВОДСТВО Scan, OCR & spellcheck by NUK БЕЙСИК 128 Язык программирования Бейсик-128, "зашитый" в память, очень похож на стандартный ZX- Бейсик. В основном, отличие заключается в расширении функций редактора, а также в поддержке дополнительных аппаратных средств: музыкального процессора и электронного диска. При включении компьютера на экран выводится главное меню, предлагающее на выбор один из режимов работы компьютера: Таре Loader, 128 BASIC, Calculator, 48 BASIC и TR - DOS. Войти в нужный режим можно, установив голубую полоску на соответствующую позицию меню с помощью курсорных клавиш и нажав клавиши ENTER или EDIT. Коротко опишем эти режимы. TAPE LOADER Единственное назначение режима - загружать программу магнитофона, т.е. выполнять самую популярную команду Бейсика LOAD"". Загружать можно как программы для Spectrum 128, так и для Spectrum 48. Но не все программы, написанные на стандартном ZX-Бейсике, после загрузки в этом режиме будут работать. При нажатии клавиши BREAK происходит возврат в главное меню. 128 BASIC После выбора этой позиции меню компьютер переходит в интерпретатор Бейсика 128. Его мы подробно опишем далее. CALCULATOR Эта опция превращает компьютер в калькулятор, производящий математические расчеты с использованием всех операций и функций Бейсика. В режиме калькулятора работает экранный редактор, поэтому можно рассчитывать значения выражений уже находящихся на экране. В выражениях могут стоять не только числовые значения, но и переменные, ранее определенные в бейсик- программе. Задать переменную можно и в самом калькуляторе, выполнив, например, LET a=1 Расчет выражения производится после нажатия клавиши ENTER. Результат выводится в следующую за выражением строку. Для выхода из режима нужно нажать клавишу Edit и в появившемся меню из двух пунктов (Calculator и Exit) выбрать второй. 48 BASIC Работая в этом режиме, компьютер становится практически полностью совместимым с ZX Spectrum 48 (некоторая несовместимость может возникнуть, например, из-за отличий в "прошивке" ПЗУ). Выйти из режима 48 BASIC можно только выключив компьютер или нажав кнопку RESET, TR-DOS Этот режим действует только при подключенном к компьютеру дисководе. При отсутствии дисковода на экране вновь появится основное меню. Если при включении компьютера удерживать клавишу Break, то компьютер начинает выполнять тестовую программу, выйти из которой можно, только выключив его или нажав кнопку RESET. КЛАВИАТУРА Клавиатура компьютера содержит 58 клавиш. Следует отметить, что в режиме 128 BASIC некоторые клавиши не выполняют приписанных им в стандартном ZX-Бейсике функций. Например, в этом режиме не работают клавиши True Video и Inverse Video, хотя они и имеются на клавиатуре. В Бейсике 128 ключевые слова вводятся посимвольно (в том числе знаки , , и ). Символы [, ], I, {, } и " по-прежнему набираются через Extend Mode (CS/SS). Кроме того, в ключевых словах при вводе не делается различий между строчными и прописными буквами. В редакторе Бейсика 128 нет явного деления экрана на основной (верхний) и служебный (нижний). Вводить и редактировать строки программы можно на всем пространстве экрана, точнее в верхних 22 его строках. Нижние две строки вспомогательные: в 23-й индицируется режим работы, в 24-й выводятся сообщения об ошибках. Впрочем, можно изменить режим и перевести редактор в две нижние строки экрана (см. дальше). Знакоместо, в которое при нажатии клавиши будет помещен очередной символ, выделяется голубым курсором. Курсор перемещается по экрану клавишами , , и . Удалить символ, стоящий перед курсором, можно, нажав клавишу Delete. Поскольку ключевые слова Бейсика 128 вводятся по буквам, то нужно отделять их друг от друга пробелами. Цифры и знаки математических операций в программах также являются разделителями. Набранная строка вводится клавишей Enter. Если у интерпретатора нет претензий к синтаксису строки, то раздается короткий звуковой сигнал и она выполняется или помещается в программу. Переход на другую строку с помощью команд редактора (о них дальше) также приравнивается к нажатию Enter. Об обнаружении ошибки интерпретатор оповещает характерным звуком и помечает красным курсором позицию в строке, в которой ошибка найдена. И пока она не будет исправлена, интерпретатор не только не примет строку, но и не позволит выйти за ее пределы. В Бейсике 128 нельзя ввести с клавиатуры коды непосредственного управления цветом (как в стандартном Бейсике в режиме курсора [Е]). В табл.1 приведены комбинации клавиш клавиатуры, при нажатии которых выполняются те или иные команды редактора. Таблица 1. Команды редактора Бейсика 128. Клавиша Действие Extend+P курсор на 10 строк вверх SS/1 курсор на 10 строк вниз Extend+1 курсор на слово влево Extend+SS/J курсор на слово вправо Extend+N курсор в начало программы Extend+T курсор в конец программы Extend+SS/2 курсор в начало строки Extend+M курсор в конец строки Extend+SS/K удалить символ под курсором Extend+W удалить слово справа от курсора Extend+E удалить слово слева от курсора Extend+J удалить символы от курс. до конца строки Extend+K удалить символы от начала строки до курс. Extend+SS/8 аналогично функции Screen Бейсика 128 МЕНЮ БЕЙСИКА 128 Нажав клавишу Edit, можно из редактора войти в меню Бейсика 128. Кратко опишем пункты этого меню. 128 BASIC Возврат к редактированию программы. RENUMBER Перенумерация строк программы, начиная с номера 10 и с шагом 10. Команда изменяет параметры в операторах перехода и вызова подпрограмм, но только при условии, что номера строк перехода заданы в явном виде (числом). Номер первой строки и шаг перенумерации можно менять, записывая с помощью оператора РОКЕ другие значения в ячейки памяти с адресами, соответственно, 23444/45 и 23446/47. Приведем небольшую программу, которая задает параметры перенумерации: 10 РОКЕ 23444, begin-256*INT(begin/256) 20 РОКЕ 23445, INT(begin/256) 30 POKE 23446,step-256*INT(step/256) 40 POKE 23447, INT(step/256) Переменная begin должна содержать номер первой строки, step - шаг перенумерации. Если при заданных параметрах номер последней строки оказывается более 9999, то перенумерация не будет осуществлена. SCREEN Перевод окна редактора в две нижние строки экрана. Опция предназначена для тех случаев, когда желательно сохранять в процессе редактирования информацию в верхних строках экрана. Возвратиться к основному режиму работы редактора можно, повторно выбрав этот пункт меню. PRINT Распечатка на принтере листинга бейсик-программы, находящейся в памяти. EXIT Переход в главное меню. ОПЕРАТОРЫ Список операторов Бейсика 128 дополнен относительно стандартного лишь двумя новыми операторами SPECTRUM и PLAY, кроме того, модифицированы некоторые старые. Скорость выполнения программ в режиме 128 BASIC несколько ниже, чем в режиме 48 BASIC. Это связано с тем, что при выполнении многих операторов используются подпрограммы стандартного Бейсика и на переключение режимов уходит дополнительное, хотя и небольшое, время. Ниже описаны новые операторы Бейсика. SPECTRUM Оператор PLAY основная достопримечательность Бейсика 128." Он обслуживает встроенный в компьютер трехканальный музыкальный процессор (тип процессора AY-3-8912), на порядок увеличивающий звуковые возможности компьютера. Вслед за ключевым словом PLAY размещаются строки символов - стринги. Именно они задают музыкальную программу, то есть определяют, когда и что играть. В общем виде формат оператора записывается так: PLAY Оператор PLAY - основная достопримечательность Бейсика 128. Он обслуживает встроенный в Contact 128 трехканальный музыкальный процессор (тип процессора - AY-3-8912), на порядок увеличивающий звуковые возможности компьютера. Вслед за ключевым словом PLAY размещаются строки символов - стринги. Hlemmn они задают музыкальную программу, то есть определяют, когда и что играть. В общем виде формат оператора записывается так: PLAY a$[,b$,c$,d$,e$,f$,g$,h$] где a$,b$.....h$ стринги. Как видно из формата, за ключевым словом PLAY может следовать от 1 до 8 стрингов. Однако сам музыкальный процессор пользуется только первыми тремя из них - а$, b$ и с$. Они задают программы, соответственно, для каналов А, В, и С музыкального процессора. Эти программы выполняются одновременно, причем можно заставить звучать как все три канала, так и один или два, задав необходимое количество стрингов. Остальные стринги (d$, e$, .... h$) предназначены для управления музыкальными инструментами, которые можно подключить к компьютеру через специальный MIDl-интерфейс (цифровой интерфейс для музыкальных инструментов). Ноты ДО, РЕ, МИ, ФА, СОЛЬ, ЛЯ и СИ записываются латинскими буквами, соответственно, с, d, e, f, g, а и b. Например, оператор PLAY "cdefgabC" проиграет гамму ДО-мажор. Ноты следующей октавы обозначаются прописными латинскими буквами С, D, E, F, G, А и В. Полутона задаются знаками: # - диез и $ - бемоль. Например, ДО-диез, запишется как #с, СИ-бемоль - $В, ДО-минор - cd$efg$a$bC. Длительность звучания нот определяется числом от 1 (минимальная) до 9 (максимальная), стоящим перед нотой (табл. 2), например: PLAY"3G". Заданная длительность распространяется на все последующие ноты и паузы (см.команду задания паузы &). Числами от 10 до 12 программируются триоли. Ноты триоли следуют непосредственно за числом: 3fed&11fed&fed. Триоли не изменяют установленной длительности нот. Возможно сыграть ноту произвольной длительности. Для этого перед ней через символ подчеркивания (_) ставят несколько параметров, задающих требуемую длительность. Например, нота ДО длительностью 3/8 (1/8+1/4) запишется так: 3_5с. Длительность звучания последующих нот определяет последний параметр. Таблица 2. Длительность звучания нот в операторе PLAY. Число Нота Одиночные ноты 1 Одна шестнадцатая 2 Одна шестнадцатая с точкой 3 Одна восьмая 4 Одна восьмая с точкой 5 Одна четвертая 6 Одна четвертая с точкой 7 Одна вторая 8 Одна вторая с точкой 9 Целая Триоли 10 Одна шестнадцатая 11 Одна восьмая 12 Одна четвертая Кроме нот, в музыкальных программах могут использоваться специальные команды оператора PLAY: О Изменение октавы. Номер октавы задается числом от 00 до 8 (по умолчанию установлена 5-я октава). Все ноты после этой команды будут звучать в выбранной октаве, пока она не будет сменена (Заметим, что самые низкие ноты в 0-й и 1 -и октавах без MIDI-интерфейса воспроизводиться будут неправильно). Диапазон звучания в пределах заданной октавы можно расширить, используя серии диезов или бемолей. Например, O6d можно записать как 04###В. N Разделитель параметров. Он используется в том случае, если нужно задать длительность звучания нот сразу за командой с числовым параметром: O6N4gD; хотя тоже самое допустимо записывать и с пробелом: О6 4gD. & Пауза установленной длительности. 6с&С (здесь длительность паузы равна 6). V Громкость звучания. Громкость задается параметром, следующим за командой: от О (минимальная - выключено) до 15 (максимальная). Минимальная громкость (команда V0) может использоваться для временного отключения канала. W Программирование эффектов. Ноты могут воспроизводиться не только с фиксированной громкостью, но и и со всевозможными эффектами: затуханиями, всплесками, и т.д. Характер эффекта задается числом от 0 до 7, в соответствии с табл.3. X Временный параметр звукового эффекта. Для эффектов 0...3 параметр задает длительность действия эффекта, для 4 и 5 - период, для 6 и 7 - полупериод. Значение параметра выбирается из диапазона 0...65535. Для эффектов 0...3 оптимальное значение - около 1000, для 4...7 - около 300. По умолчанию значение параметра равно 65535. U Включение звукового эффекта. После этой команды все ноты будут воспроизводиться с эффектом, установленным командой W. Эффекты отключаются по завершении стринга либо при изменении громкости (команда V). Следующая программа продемонстрирует действие всех эффектов: 10 FOR i=0 ТО 7 20 PLAY"UX1000W"+STR$ i+"cdef&" 30 NEXT i Таблица 3. Программирование звуковых эффектов. Т Темп исполнения. Задается числом в интервале от 60 до 240. По умолчанию устанавливается темп, соответствующий команде Т120. Задать темп можно лишь для всей мелодии в целом, поэтому он определяется только в стринге канала А (в других каналах команда Т игнорируется). О Повтор музыкальной фразы. Музыкальная фраза, взятая в скобки, повторится еще раз: (ec)fe7d. Допустимо использовать не более 4 пар скобок. Закрывающая скобка без соответствующей ей открывающей заставит музыкальную фразу повторяться бесконечно от начала стринга. Используется это, например, в басовых партиях. Н Останов оператора PLAY. Встретив эту команду в стринге любого канала, оператор PLAY закончит свою работу. Команда используется, например, для выхода из "зацикленной" басовой партии, когда заканчивается основная мелодия. ! Ограничитель комментариев. В стринг можно вставлять комментарии - любой текст, ограничивая его знаками !. Например: PLAY"#c!cis$d!des!" Знак ! в конце музыкальной программы ставить не обязательно. М Режим работы каналов. Каждый канал может не только воспроизводить чистый тон, но и одновременно генерировать так называемый белый шум. Распределение режимов задается командой М с параметром в интервале 1...63. Значение параметра определяется суммой кодов, соответствующих режиму каждого из каналов. Канал А В С Тон 1 2 4 Шум 8 16 32 В следующем примере канал А настраивается на тон, а канал В - на шум. PLAY"M17cegbdfaCH","O3cC" Y Установка канала MIDI-интерфейса. Число от 1 до 16, следующее за командой, задает номер канала интерфейса, в который необходимо направить вывод музыкальных данных. Z Передача управляющих кодов MIDI-интерфейсу. электронный диск В дополнительных 80 килобайтах памяти компьютера организован электронный диск, позволяющий оперировать несколькими программами без обращения к внешним носителям. Естественно, программы должны быть предварительно на этот диск записаны в виде файлов. Особенностью файловой структуры электронного диска является то, что на него не могут быть записаны файлы разных типов с одинаковыми именами. Емкость электронного диска более 400 файлов. Перед выключением или сбросом компьютера файлы с электронного диска нужно переписать на магнитный носитель. Действие команды Бейсика NEW не затрагивает электронный диск. Операторы, поддерживающие работу электронного диска: SAVE! Запись файла на электронный диск. LOAD! Считывание файла с электронного диска. MERGE! Подгрузка к программе с электронного диска. Эти три оператора похожи на инструкции работы с магнитофоном SAVE, LOAD (Символьный массив перед загрузкой с электронного диска должен быть определен оператором DIM. Иначе он будет загружен как простая строка символов. Это замечание справедливо и для загрузки с магнитофона символьного массива в режиме 128 BASIC) и MERGE и имеют аналогичный синтаксис. CAT! Вывод на экран каталога электронного диска (списка всех файлов). Файлы выводятся в алфавитном порядке. К сожалению, в каталоге не указываются типы файлов. ERASE! Удаление файла с электронного диска. Имя файла записывается вслед за ключевым словом без указания типа файла. Например, оператор ERASE! "Name" удалит файл с именем "Name" (независимо от его типа). Если файлов много, то выполнение этой команды может занять несколько минут! РАБОТА С ПРИНТЕРОМ Еще одно отличие Бейсика 128 от стандартного - поддержка другого типа принтера. Операторы печати, такие как LPRINT, LLIST и COPY, работают с Epson-совместимыми моделями принтеров. Подключается принтер с помощью последовательного интерфейса RS-232. Скорость передачи данных по последовательному интерфейсу устанавливается оператором: FORMAT "p"; Параметр выбирается из ряда: 50, 110, 300, 600, 1200, 2400, 4800, 9600 и должен соответствовать скорости обмена в бодах (бит/сек.), установленный в принтере. При запуске компьютера устанавливается скорость 9600 бод. ПРИЛОЖЕНИЯ 1. Сообщения об ошибках интерпретатора Бейсик 128 Интерпретатор Бейсика 128 в дополнение к сообщениям об ошибках стандартного Бейсика имеет и свои собственные: a) MERGE error Не может быть выполнена команда MERGE! b) Wrong file type Несоответствие найденного и ожидаемого типа файла в команде, работающей с электронным диском. c) CODE error Заданная в команде VERIFY!"NAME"CODE , длина () больше реальной длины файла. d) Too many brackets Превышено число скобок в операторе PLAY. e) File already exists Файл с указанным именем уже существует на электронном диске. f) Invalid name Неправильное имя файла (либо пустое, либо более 10 символов). g) File does not exist Файл с заданным именем не существует на электронном диске. h) File does not exist Файл с заданным именем не существует на электронном диске (это сообщение, очевидно, аналогично сообщению с кодом g, однако ссылки на него в ПЗУ найти не удалось). i) Invalid device В команде FORMAT задано неправильное имя устройства. j) Invalid baud rate В команде FORMAT задано нулевое значение скорости передачи по последовательному интерфейсу. к) Invalid note name В одном из стрингов оператора PLAY встретилась неопознанная команда. l) Number too big В одном из стрингов оператора PLAY указано недопустимое значение параметра. m) Note out of range Нота не может быть воспроизведена музыкальным процессором (например, нота С в 8-ой октаве). n) Out of range Числовой параметр в команде музыкальной программы слишком мал или велик. о) Too many tied note Слишком много параметров, задающих длительность, связано знаком _. 2. Системные переменные В BASIC 128 расширена область системных переменных. Сделано это за счет использования части оперативной памяти, отведенной в компьютере под буфер принтера. Ниже приводятся название, адрес и краткое описание некоторых системных переменных, значения которых могут быть использованы из Бейсика. 23389 (BANKM) копия внутреннего системного регистра, определяющего текущую архитектуру компьютера (из Бейсика изменять не рекомендуется). 23391 (BAUD) скорость обмена по последовательному интерфейсу. Хранится в "обратном" виде, то есть сначала записан старший байт, затем младший. 23395 (COL) позиция (номер столбца) вывода на принтер. 23396 (WIDTH) количество печатных позиций на принтере. При достижении этого числа программа печати автоматически переводит строку. 23429/30/31 (SFSPACE) количество свободных байтов на электронном диске. 23444/45 (RNFIRST) номер строки начала при перенумерации строк. Хранится в "обратном" виде. 23446/47 (RNSTEP) шаг перенумерации. Хранится в "обратном" виде.