Программирование на Бейсик 48/128 для ZX-Spectrum 1993 г.

SPECTRUM-бейсик 128 - язык программирования Бейсик, «зашитый» в память ZX Spectrum 128, очень похож на стандартный Spectrum-Бейсик.


БЕИСИК 128

Язык программирования Бейсик, «зашитый» в память
ZX Spectrum 128, очень похож на стандартный Spectrum-Бейсик. В
основном, отличие заключается в расширении функций редакто-
ра, а также в поддержке дополнительных аппаратных средств:
музыкального процессора и электронного диска.

При включении ZX Spectrum 128 на экран выводится главное
меню, предлагающее на выбор один из режимов работы компьюте-
ра: Таре Loader, 128 BASIC, Calculator, 48 BASIC и Tape tester.

Войти в нужный режим можно, установив клавишами f и |
голубую полоску на соответствующую позицию меню и нажав
клавиши Enter или Edit. Коротко опишем эти режимы.

Таре Loader Единственное назначение режима — загружать про-
грамму с магнитофона, то есть выполнять самую
популярную команду Бейсика LOAD "". Загружать можно как
программы для Spectrum 128, так и для Spectrum 48. Но не
все программы, написанные на стандартном Spectrum-Бей-
сике, после загрузки в этом режиме будут работать. При
нажатии клавиши Break происходит возврат в главное меню.

128 BASIC ' После выбора этой позиции меню компьютер перехо-
дит в интерпретатор Бейсика 128*. Его мы подробно
опишем далее.

Calculator Эта опция превращает компьютер в калькулятор,
производящий математические расчеты с использо-
ванием всех операций и функций Бейсика. В режиме кальку-
лятора работает экранный редактор, поэтому можно рас-
считывать значения выражений уже находящихся на экране.
В выражениях могут стоять не только числовые значения, но
и переменные, ранее определенные в бейсик-программе. За-
дать переменную можно и в самом калькуляторе, выполнив,
например, LET а=1. Расчет выражения производится после

* Так для краткости будем называть Бейсик, «зашитый» в ZX Spectrum 128.

нажатия клавиши Enter. Результат выводится* в бедующую
за выражением строку. Для выхода из режима нужно нажать
клавишу Edit и в появившемся меню из двух пунктов
(Calculator и Exit) выбрать второй.

48 BASIC Работая в этом режиме, компьютер становится прак-
тически полностью совместимым с ZX Spectrum 48*.
Выйти из режима 48 BASIC можно, только выключив компью-
тер или нажав кнопку RESET.

Таре tester Не будем подробно описывать этот режим, отметим
только то, что он предназначен для настройки маг-
нитофона на запись/считывание информации. Возврат в
главное меню осуществляется по клавише Break.

Если при включении ZX Spectrum 128 удерживать клавишу
Break, то компьютер начинает выполнять тестовую программу,
выйти из которой можно, только выключив его или нажав кнопку
RESET.

клавиатура

Клавиатура ZX Spectrum 128 содержит 58 клавиш. Аппаратно
она организована аналогично клавиатуре ZX Spectrum (и полно-
стью совпадает с клавиатурой ZX Spectrum+). Дополнительные 18
клавиш лишь дублируют наиболее часто используемые сочетания
пар клавиш. Например, нажатие клавиши Edit аналогично дейст-
вию пары CS/1. Соответствие дополнительных клавиш стандарт-
ным парам приведено в табл. 22.

Таблица 22. Дополнительные клавиши ZX Spectrum 128.

Таблица 22. Дополнительные клавиши ZX Spectrum 128.

ZX Spectrum 128

XX- Sjpetftum

ZX Sp*dnm 128

ZX Sjpectakn

True Video

■ «/>

i

cs/«

Inv Video

CS/*

cs/$

Delete

CS/6

C$/B

Graphics

CSA

t

CS/?

Edit

cs/r

$$/M

Extend Mode

CS/SS

$$fi*

Caps Lock

CS/2

1

5S/0

Break

CS/Spaee

II

SS/P

Некоторая несовместимость может возникнуть, например, из-за отличий в «про-
шивке» ПЗУ.

Некоторая несовместимость может возникнуть, например, из-за отличий в «про-
шивке» ПЗУ.

Следует отметить, что в режиме 128 BASIC некоторые клавиши
не выполняют приписанных им в стандартном Spectrum-Бейсике
функций. Например, в этом режиме не работают клавиши True
Video и Inverse Video, хотя они и имеются на клавиатуре.

В Бейсике 128 ключевые слова вводятся посимвольно (в том
числе знаки О, <= и >=). Символы [, J, |, , {, } и по-прежнему
набираются через Extend Mode (CS/SS). Кроме того, в ключевых
словах при вводе не делается различий между строчными и про-
писными буквами.

экранный рвдактор

В редакторе Бейсика 128 нет явного деления экрана на основ-
ной (верхний) и служебный (нижний). Вводить и редактировать
строки программы можно на всем пространстве экрана, точнее в
верхних 21 его строках. Нижние три строки вспомогательные: в
22-й индицируется режим работы, в 24-й выводятся сообщения об
ошибках. Впрочем, можно изменить режим и перевести редактор в
две нижние строки экрана (см. дальше).

Знакоместо, в которое при нажатии клавиши будет помещен
очередной символ; выделяется голубым курсором. Курсор переме-
щается по экрану клавишами f, I, и Удалить символ, сто-
ящий перед курсором, можно, нажав клавишу Delete.

Поскольку ключевые слова Бейсика 128 вводятся по буквам, то
нужно отделять их друг от друга пробелами. Цифры и знаки
математических операций в программах также являются раздели-
телями.

Набранная строка вводится i vaBHiueft Enter. Если у интерпрета-
тора нет претензий к синтаксису строки, то раздается короткий
звуковой сигнал и она выполняется или помещается в программу.
Переход на другую строку с помощью команд редактора (о них
дальше) также приравнивается к нажатию Enter.

Об обнаружении ошибки интерп эетатор оповещает характер-
ным звуком и помечает красным курсором позицию в строке, в
которой ошибка найдена. И пока она не будет исправлена, интер-
претатор не только не примет строку, но и не позволит выйти за ее
пределы.

В Бейсике 128 нельзя ввести с клавиатуры коды непосредствен-
ного управления цветом (как в стандартном Бейсике в режиме
курсора [EJ).

К ZX Spectrum 128 предусмотрено подключение специальной
дополнительной клавиатуры, делающей более удобной работу с
редактором. Достать или сделать ее самому достаточно сложно, но
не стоит расстраиваться: все возможности экранного редактора
можно использовать, работая и только на основной клавиатуре. В
табл. 23 приведены комбинации клавиш основной клавиатуры,
при нажатии которых выполняются те или иные команды ре-
дактора.

Таблица 23. Команды редактора Бейсика 128.

Таблица 23. Команды редактора Бейсика 128.

KMMIHWtt

д«йсю*

Extend+P

курсор на 10 строк вверх

SS/I

курсор на 10 строк вниз

Extend+I

курсор на слово влево

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. Кратко опишем пункты этого меню.

Возврат к редактированию программы.

Перенумерация строк программы, начиная с номера
10 и с шагом 10. Команда изменяет параметры в
операторах перехода и вызова подпрограмм, Но только при
условии, что номера строк перехода заданы в явном виде
(числом). Номер первой строки и шаг перенумерации можно
менять, записывая с помощью оператора РОКЕ другие значе-
ния в ячейки памяти с адресами, соответственно, 23444/45 и
23446/47. Приведем небольшую программу, которая задает
параметры перенумерации:

10 РОКЕ 23444, begin—256*INT(begin/256)
20 POKE 23445,INT(begin/256)
30 POKE 23446,step—256*INT(step/256)
40 POKE 23447,INT(step/256)

Переменная begin должна содержать номер первой строки,
step — шаг перенумерации.

128 BASIC

Renumber

Если при заданных параметрах номер последней строки ока-
зывается более 9999, то перенумерация не будет осуществле-
на.

Screen Перевод окна редактора в две нижние строки экрана.

Опция предназначена для тех случаев, когда жела-
тельно сохранять в процессе редактирования информацию в
верхних строках экрана (например, при графических постро-
ениях). Возвратиться к основному режиму работы редактора
можно, повторно выбрав этот пункт меню.

Print Распечатка на принтере листинга бейсик-программы,

находящейся в памяти.

Exit Переход в главное меню ZX Spectrum 128 (текст бей-

сик-программы сохраняется).

операторы бейсика 128_

Список операторов Бейсика 128 дополнен относительно стан-
дартного лишь двумя новыми операторами SPECTRUM и PLAY, кроме
того, модифицированы некоторые старые.

Скорость выполнения программ в режиме 128 BASIC несколько
ниже, чем в режиме 48 BASIC. Это связано с тем, что при выполне-
нии многих операторов используются подпрограммы стандартного
Бейсике! и на переключение режимов уходит дополнительное, хотя
и небольшое, время.

Ниже описаны новые операторы Бейсика.
SPECTRUM

Оператор SPECTRUM переключает компьютер в режим эмуляции
ZX Spectrum 48, то есть выполняет действие, аналогичное опции
48 BASIC главного меню. Отличие только в том, что при переходе с
помощью оператора SPECTRUM программа, находящаяся в памяти,
сохраняется. Если оператор SPECTRUM выполняется в программе, то
она останавливается с сообщением О ОК.

Кроме того, оператор SPECTRUM переопределяет канал, обслу-
живающий принтер. После выполнения оператора вся инфор-
мация, поступавшая ранее на принтер, будет выводиться на экран.

PLAY

Оператор PLAY — основная достопримечательность Бейси-
ка 128. Он обслуживает встроенный в ZX Spectrum 128 трехка-
нальный музыкальный процессор*, на порядок увеличивающий
звуковые возможности компьютера.

* Тип процессора - AY-3-8912 или AY-3-8910.

Вслед за ключевым словом PLAY размещаются строки символов

— стринги. Именно они задают музыкальную программу, то есть
определяют, когда и что играть. В общем виде формат оператора
записывается так:

PLAY a$[,b$,c$,d$,e$ff$,g$,h$]

— где а$, Ь$, ..., h$ — стринги. Как видно из формата, за ключевым
словом PLAY может следовать от 1 до 8 стрингов. Однако сам
музыкальный процессор пользуется только первыми тремя из них

— а$, Ь$ и с$. Они задают программы, соответственно, для каналов
А, В и С музыкального процессора. Эти программы выполняются
одновременно, причем можно заставить звучать как все три кана-
ла, так и один или два, задав необходимое количество стрингов.

Остальные стринги (d$, е$, ..., h$) предназначены для управле-
ния музыкальными инструментами, которые можно подключить к
ZX Spectrum 128 через специальный MIDI-интерфейс*.

Ноты ДО, РЕ, МИ, ФА, СОЛЬ, ЛЯ и СИ записываются ла-
тинскими буквами, соответственно, с, d, е, f, g, а и Ь. Например,
оператор

PLAY "cdefgabC"

проиграет гамму ДО-мажор.

Ноты следующей октавы обозначаются прописными латински-
ми буквами С, D, Е, F, G, А и В. Полутона задаются знаками: # —
диез и $ — бемоль. Например, ДО-диез, запишется как #с, СИ-бе-
моль — $Ь, а гамма ДО-минор — cd$efg$a$bC.

Длительность звучания нот определяется числом от 1 (мини-
мальная) до 9 (максимальная), стоящим перед нотой (табл. 24),
например: PLAY "3G". Заданная длительность распространяется на
все последующие ноты и паузы (см. команду задания паузы &).

Числами от 10 до 12 программируются триоли. Ноты триоли
следуют непосредственно за числом: 3fed&1 Ifed&fed. Триоли не
изменяют установленной длительности нот.

Возможно сыграть ноту произвольной длительности. Для этого
перед ней через символ подчеркивания (_) ставят несколько пара-
метров, задающих требуемую длительность. Например, нота ДО
длительностью 3/8 [1/8+1/4) запишется так: 3_5с. Длительность
звучания последующих нот определяет последний параметр.

Кроме нот, в музыкальных программах могут использоваться
специальные команды оператора PLAY:

О Изменение октавы. Номер октавы задается числом от 0 до 8
(по умолчанию установлена 5-я октава). Все ноты после этой
команды будут звучать в выбранной октаве, пока она не будет
сменена**.

Диапазон звучания в переделах заданной октавы можно рас-
ширить, используя серии диезов или бемолей. Например, 06d
можно записать как 04###В.

Musical Instrument Digital Interface — цифровой интерфейс для музыкальных инст-
рументов.

** Заметим, что самые низкие ноты в 0-й и 1-й октавах без MIDI-интерфейса вос-
производиться будут неправильно.

Таблица 24. Длительность звучания нот в операторе PLAY.

Таблица 24. Длительность звучания нот в операторе PLAY.

Число

Нот»

Одиночные ноты

1

Одна шестнадцатая

2

Одна шестнадцатая с точкой

>

3

Одна восьмая

j>

4

Одна восьмая с точкой

j>.

5

Одна четвертая

J

6

Одна четвертая с точкой

J.

7

Одна вторая

J

8

Одна вторая с точкой

J.

9

Целая

о

Триоли

10

Одна шестнадцатая

11

Одна восьмая

Jb

12

Одна четвертая

JJJ

N Разделитель параметров. Он используется в том случае, если
нужно задать длительность звучания нот сразу за командой с
числовым параметром: 06N4gD; хотя тоже самое допустимо
записывать и с пробелом: Об 4gD.

& Пауза установленной длительности: бс&С (здесь длительность
паузы равна 6).

V Громкость звучания. Громкость задается параметром, следую-
щим за командой: от 0 (минимальная — выключено) до 15
(максимальная). Минимальная громкость (команда V0) может
использоваться для временного отключения канала.

W Программирование эффектов. Ноты могут воспроизводиться
не только с фиксированной громкостью, но и со всевозмож-
ными эффектами: затуханиями, всплесками и т. д. Характер
эффекта задается числом от 0 до 7, в соответствии с табл. 25.

X Временной параметр звукого эффекта. Для эффектов 0...3
параметр задает длительность действия эффекта, для 4 и 5 —
период, для 6 и 7 — полупериод. Значение параметра выби-
рается из диапазона 0...65535. Для эффектов 0...3 оптималь-
ное значение — около 1000, для 4...7 — около 300. По
умолчанию значение параметра принято равным 65535.

U Включение звукового эффекта. После этой команды все ноты
будут воспроизводиться с эффектом, установленным коман-
дой W. Эффекты отключаются по завершении стринга либо
при изменении громкости (команда V). Следующая програм-
ма продемонстрирует действие всех эффектов:
10 FOR 1=0 ТО 7

20 PLAY "UX1000W"+STR$ i+"cdef&"
30 NEXT i

Таблица 25. Программирование звуковых эффектов.

Таблица 25. Программирование звуковых эффектов.

Зффщт

ДиагЕтймм*

0

единичный спад,
затем тихо

1

единичный подъем,
затем тихо

/

2

единичный спад,
затем громко

3

единичный подъем,
затем громко

/

4

повторяющийся
спад

NNNNI

5

повторяющийся
подъем

И

АЛЛЛЛЛЛЛЛ

6

повторяющийся
подъем-спад

7

повторяющийся
спад-подъем

/ Параметр команды X

Т Темп исполнения. Задается числом в интервале от 60 до 240.
По умолчанию'устанавливается темп, соответствующий ко-
манде Т120. Задать темп можно лишь для всей мелодии в целом,
поэтому он определяется только в стринге канала А (в других
каналах команда Т игнорируется).

() Повтор музыкальной фразы. Музыкальная фраза, взятая в
скобки, повторится еще раз: (ec)fe7d. Допустимо использовать
не более 4 пар скобок.

Закрывающая скобка без соответствующей ей открывающей
заставит музыкальную фразу повторяться бесконечно от на-
чала стринга. Используется это, например, в басовых партиях.

Н Останов оператора PLAY. Встретив эту команду в стринге
любого канала, оператор PLAY закончит свою работу. Команда

используется, например, для выхода из «зацикленной» басо-
вой партии, когда заканчивается основная мелодия.
! Ограничитель комментариев. В стринг можно вставлять ком-
ментарии — любой текст, ограничивая его знаками !. Напри-
мер:

PLAY "#c!cis!$d!des!"

Знак ! в конце музыкальной программы ставить не обяза-
тельно.

М Режим работы каналов. Каждый канал может не только вос-
производить чистый тон, но и одновременно генерировать так
называемый белый шум. Распределение режимов задается ко-
мандой М с параметром в интервале 1 ...63. Значение парамет-
ра определяется суммой кодов, соответствующих режиму каж-
дого из каналов (табл. 26).

Таблица 26. Режимы работы каналов.

Таблица 26. Режимы работы каналов.

www»

111Ш1111

В

С

Тон

1

2

4

Шум

8

16

32

В следующем примере канал А настраивается на тон, а канал
В — на шум:

PLAY "Ml7cegbdfaCH","ОЗсС)"

Y Установка канала MIDI-интерфейса. Число от 1 до 16, следу-
ющее за командой, задает номер канала интерфейса, в кото-
рый необходимо направить вывод музыкальных данных.
Z Передача управляющих кодов MIDI-интерфейсу*.

электронный диск

В дополнительных 80 килобайтах памяти ZX Spectrum 128 орга-
низован электронный диск, позволяющий оперировать нескольки-
ми программами без обращения к внешним носителям. Естествен-
но, программы должны быть предварительно на этот диск записа-
ны в виде файлов. Особенностью файловой структуры электрон-
ного диска является то, что на него не могут быть записаны файлы
разных типов с одинаковыми именами. Емкость электронного дис-
ка более 400 файлов. Перед выключением или сбросом компьюте-
ра файлы с электронного диска нужно переписать на магнитный
носитель. Действие команды Бейсика NEW не затрагивает элект-
ронный диск.

Подробнее см. в описании MIDI-интерфейса [8].

Операторы, поддерживающие работу электронного диска:

SAVE!

Запись файла на электронный диск.

LOAD!

Считывание файла с электронного диска.

MERGE!

Подгрузка к программе файла с электронного диска.

VERIFY!

Проверка правильности записи файла на электронный диск.

Эти четыре оператора похожи на инструкции работы с магнито-
фоном SAVE, LOAD*, MERGE и VERIFY и имеют аналогичный синтак-
сис.

CAT!

Вывод на экран каталога электронного диска (списка всех фай-
лов). Файлы выводятся в алфавитном порядке. К сожалению, в
каталоге не указываются типы файлов.

ERASE!

Удаление файла с электронного диска. Имя файла записывается
вслед за ключевым словом без указания типа файла. Например,
оператор ERASE! "Name" удалит файл с именем "Name" (независимо
от его типа). Если файлов много, то выполнение этой команды
может занять несколько минут!

работа с принтером

Еще одно отличие Бейсика 128 от стандартного — поддержка
другого типа принтера. Операторы печати, такие как LPRINT, LLIST и
COPY, работают с Epson-совместимыми моделями принтеров. Под-
ключается принтер с помощью встроенного в Spectrum 128 после-
довательного интерфейса RS-232.

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

FORMAT "р" ;< speed >

Параметр <speed> выбирается из ряда: 50, 110, 300, 600, 1200,
2400, 4800, 9600 и должен соответствовать скорости обмена в

Символьный массив перед загрузкой с электронного диска должен быть опреде-
лен оператором DIM. Иначе он будет загружен как простая строка символов. Это
замечание справедливо и для загрузки с магнитофона символьного массива в
режиме 128 BASIC.

бодах (бит/сек.), установленной в принтере. При запуске компью-
тера устанавливается скорость 9600 бод.

приложения

1. Сообщения об ошибках интерпретатора Бейсик 128

Интерпретатор Бейсика 128 в дополнение к сообщениям об
ошибках стандартного Бейсика имеет и свои собственные:

a MERGE error____

не может быть выполнена команда MERGE!.

b Wrong file type__

несоответствие найденного и ожидаемого типа файла в команде,
работающей с электронным диском.

с СОРЕ error__

заданная в команде VERIFY!"NAME"CODE <start>,<length> длина
(< length>) больше реальной длины файла.

d Too many brackets_

превышено число скобок в операторе PLAY.

• File already exists__

файл с указанным именем уже Существует на , электронном
диске.

I Invalid name_

неправильное имя файла (либо пустое, либо более 10 символов).

g File does not exist_

файл с заданным именем не существует на электронном диске.

h File does not exist___

файл с заданным именем не существует на электронном диске*.

i Invalid device_

в команде FORMAT задано неправильное имя устройства.

] Invalid baud rate_

в команде FORMAT задано нулевое значение скорости передачи
по последовательному интерфейсу.

Это сообщение, очевидно, аналогично сообщению с кодом 9. однако ссылки на
него в ПЗУ найти не удалось.

к Invalid note name_

в одном из стрингов оператора PLAY встретилась неопознанная
команда.

I Number too Ыд______

в одном из стрингов оператора PLAY указано недопустимое зна-
чение параметра.

m Note out of range______

нота не может быть воспроизведена музыкальным процессором
(например, нота С в 8-й октаве).

n Out of range_

числовой параметр в команде музыкальной программы слишком
мал или велик.

о Too many tied note_

слишком много параметров, задающих длительность, связано
знаком

2. Системные переменные ZX Spectrum 128

В ZX Spectrum 128 расширена область системных переменных.
Сделано это за счет использования части оперативной памяти,
отведенной в ZX Spectrum 48 под буфер принтера. Ниже приво-
дятся название, адрес и краткое описание некоторых системных
переменных, значения которых могут быть использованы из Бей-
сика.

13389_(BANKM)

копия внутреннего системного регистра, определяющего те-
кущую архитектуру компьютера (из Бейсика изменять не
рекомендуется).

13391_(BAUD)

скорость обмена по последовательному интерфейсу. Хранится
в «обратном» виде, то есть сначала записан старший байт,
затем младший.

1339S_(COL)

позиция (номер столбца) вывода на принтер.

23396___(WIDTH)

количество печатных позиций на принтере. При достиже-
нии этого числа программа печати автоматически перево-
дит строку.

23429/ 3>/ 3 1_(SFSPACE)

количество свободных байтов на электронном диске.

23444/4S_(RNFIRST)

номер строки начала при перенумерации строк. Хранится в
«обратном» виде.

23446/47__(RNSTEP)

шаг перенумерации. Хранится в «обратном» виде.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Видео - Психологический боевик "Гонконг'97".
Реклама - Реклама и объявления.
Обзор - Обзор игровых новинок: Leprekon, Fuck Communistov, Sherwood, КОЗЕЛ, Kill PC 2, Chainick: Horror in the flat.
Marazm - Сытый и уквашеный... Любовью обдубашеный...
События - правила предстоящего Казанского пати Computer Art Festival 2002.

В этот день...   21 ноября