IPB

Здравствуйте, гость ( Вход | Регистрация )

> Basic Msx
SuperMax
сообщение 11.2.2015, 20:09
Сообщение #1


Администратор
*****

Группа: Root Admin
Сообщений: 6 345
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Справочник по языку программирования BASIC состоит из двух частей: Меню
и Информативной части. Передвижение как по меню, так и по информативной час-
ти осуществляется с помощью клавиш со стрелками вверх и вниз. Для ускоренно-
го передвижения можно использовать клавиши со стрелками вверх и вниз при на-
жатой клавише CTRL. Выбрав в меню оператор, функцию или команду, по которым
вам необходимо получить справку, нажмите клавишу ПРОБЕЛ. Для выхода в меню
из информативной части используйте клавишу ВВОД. В любой момент Вы можете
покинуть справочник, используя клавишу ESC. При последующем входе в справоч-
ник (с помощью клавиши SELECT) Вы окажетесь в том же самом месте справочни-
ка, из которого его покинули. Все клавиши, которые в данный момент могут
оказать на работу справочника какое-либо действие, указываются в нижней
строке.

------------------------------------------------------------------------
INPUT# - оператор чтения данных из файла

Формат: INPUT # <номер>,<список переменных>

Оператор действует аналогично оператору INPUT, но данные вводятся не с
клавиатуры ПЭВМ, а из файла с указанным номером.

Пример: 10 OPEN "TEST" FOR INPUT AS #1
20 DIM X(10)
30 FOR I=0 TO 10
40 INPUT #1,X(I)
50 PRINT X(I)
60 NEXT
70 CLOSE
Программа заполняет массив переменных данными, считанными из файла с
именем "TEST", и выводит их на экран.

Примечание: Файл, используемый в операторе INPUT#, должен быть предваритель-
но открыт с помощью оператора OPEN с атрибутом INPUT.

------------------------------------------------------------------------
BIN$ - функция преобразования числа в строку

Формат: BIN$(<арифм.выражение>)

Функция преобразует целое число, равное значению арифм.выражения, в
строку, содержащую двоичное представление данного числа.

Примеры: BIN$(10) выдает "1010"
BIN$(-1) выдает "1111111111111111"

Примечание: Значение аргумента должно находиться в интервале от -32768 до
65535.

------------------------------------------------------------------------
OPEN - оператор открытия файла

Формат: OPEN"[<имя устройства>:]<имя файла>" [FOR <режим>] AS [#]<номер>

Перед использованием файла его необходимо объявить открытым с помощью
оператора OPEN, где указываются:
1. Имя устройства, где должен находиться файл (по умолчанию - А):
CAS - для работы с магнитофоном;
A или B - для работы с дисководом;
GRP - для вывода текста на графический экран (в этом случае имя
файла указывать не нужно).
2. Имя файла, которое он будет иметь на указанном устройстве.
3. Режим:
INPUT - для чтения из файла;
OUTPUT - для создания нового файла;
APPEND - для дополнения существующего файла (только на диске-
тах!).
4. Номер файла - число от 1 до указанного в операторе MAXFILES. Этот
номер далее будет использоваться для обращения к файлу в программе.

Пример: 10 MAXFILES=2
20 OPEN"CAS:INF" FOR INPUT AS #1
30 OPEN"A:REZ" FOR OUTPUT AS #2
После выполнения этой части программы будет открыт файл INF (для чтения
с кассеты) под номером 1, и файл REZ (для записи на дискету в дисководе А)
под номером 2.

------------------------------------------------------------------------
ATN - функция arctg x

Формат: ATN (<арифм.выражение>)

Функция вычисляет арктангенс аргумента; ее значение измеряется в ради-
анах.

Пример: 4*ATN(1) дает число 3.1415926535898

Примечание: 1 радиан равен (180 градусов) / 3.1415926535898.

------------------------------------------------------------------------
POKE - оператор записи в память

Формат: POKE <адрес>,<арифм.выражение>

Оператор записывает в байт памяти с указанным адресом значение
арифм.выражения. Оба аргумента могут быть переменными или постоянными вели-
чинами, записанными как в десятичной, так и в шестнадцатиричной форме. Зна-
чение арифм.выражения должно находиться в интервале от 0 до 255, адреса - в
интервале от &H8000 до &HFFFF (т.е. от 8000 до FFFF в шестнадцатиричной сис-
теме счисления).

Пример: 10 A=27
20 POKE &HB000,A
Число 27 будет записано в ячейку памяти с адресом В000.

Примечание: При указании адреса в интервале от 0000 до 7FFF оператор POKE
выполняться не будет, хотя сообщение об ошибке в этом случае
не выдается.

------------------------------------------------------------------------
STOP - оператор остановки программы

Формат: STOP

При выполнении оператора оканчивается работа программы, происходит пе-
реход в командный режим и выдается сообщение на экран: Break in < N >, где N
номер строки, в которой встретился данный оператор STOP. Часто употребляется
для тестирования программы.

Пример: : : :
100 A=B+C
200 STOP
: : :
После выполнения данного оператора STOP можно в командном режиме узнать
значение переменной A путем выполнения оператора PRINT A (для тестирования
программы)

Примечания: 1. Продолжить работу программы после ее остановки оператором
STOP можно командой CONT.
2. Действие оператора STOP аналогично нажатию <CTRL>+<STOP> во
время работы программы в конкретной строке.

------------------------------------------------------------------------
DIM - оператор задания массива

Формат: DIM <имя массива>(<индекс1>,<индекс2>,...)[,...]

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

Примеры: DIM ТА(24),М$(1,1),F%
Оператор описывает вещественный массив TA с 25 элементами, массив
символьных переменных М$ с 4 элементами (М$(0,0),М$(0,1),М$(1,0),М$(1,1)) и
целочисленную переменную F%.

Примечания: 1. Употреблению в программе элементов массива должно предшество-
вать его описание в операторе DIM.
2. Повторное описание одного и того же массива не допускается.
3. Если точная длина задаваемого массива неизвестна, следует оп-
ределить ее по максимально вероятной величине.
4. Индексы массива могут быть арифм.выражениями, подразумевающи-
ми целые положительные значения.

------------------------------------------------------------------------
LIST - команда просмотра текста программы

Формат: LIST [<номер строки1>][-<номер строки2>] или
LIST [<номер строки1>-][<номер строки2>]

Команда используется в режиме прямого доступа для последовательного
просмотра текста программы или его фрагмента. При наличии атрибутов просмотр
текста начинается с номера строки1 и заканчивается номером строки2; а при их
отсутствии - за номер строки1 по умолчанию принимается начало программы, за
номер строки2 - конец текста.
Приостановление просмотра текста совершается после нажатия клавиши
STOP, продолжение - после повторного нажатия этой клавиши. Для прекращения
просмотра необходимо одновременное нажатие клавиш STOP и CTRL.
Команда LIST, включенная в текст программы, прерывает ее выполнение и
переключает систему в командный режим.

Примеры: LIST 10-100 просмотр со строки 10 до строки 100
LIST 100 просмотр строки 100
LIST 100- просмотр со строки 100 до конца программы
LIST -100 просмотр с начала программы до строки 100

10 А=5
20 LIST
30 PRINT A
При выполнении программы переменной А будет присвоено значение 5, но
выведено оно не будет.

Примечания: 1. Введение несуществующего номера строки не вызывает появления
сообщения об ошибке. Просмотр программы в этом случае начнется
с первой имеющейся строки в интервале от номера строки1 до но-
мера строки2.
2. Команда LIST не изменяет значений переменных.

------------------------------------------------------------------------
CLOSE - оператор закрытия файла

Формат: CLOSE [<список номеров файлов>]

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

Пример: 10 OPEN"A:REZ" FOR OUTPUT AS #1
...
200 CLOSE #1

------------------------------------------------------------------------
PEEK - функция чтения данных из памяти

Формат: PEEK(<адрес>)

Функция считывает число (лежащее в интервале от 0 до 255) из ячейки
оперативной памяти с указанным адресом. Адрес может лежать в интервале от
0000 до FFFF (в шестнадцатиричной системе счисления).

Пример: Х=PEEK(&НF676)
В результате выполнения этого оператора переменной Х будет присвоено
значение, размещенное в памяти по адресу F676.

------------------------------------------------------------------------
ON GOTO - оператор условного перехода

Формат: ON <арифм.выражение> GOTO <номера строк>

Оператор позволяет осуществить переход к одной из нескольких указанных
строк в зависимости от того, какое значение имеет арифм.выражение. Во время
выполнения оператора выражение вычисляется и целая часть его используется в
качестве указателя перехода на один из номеров строк.

Пример: 50 ON P GOTO 100,140,180
Оператор передает управление строке 100, если Р=1, строке 140, если Р=2
и строке 180, если Р=3.

Примечание: Любые другие значения Р, не выходящие за пределы 0-255,приведут
к передаче управления на следующий оператор. Если Р<0 или Р>255,
то будет выдано сообщение об ошибке.

------------------------------------------------------------------------
RETURN - оператор конца подпрограммы

Формат: RETURN [<номер строки>]

Возвращает управление из подпрограммы. Если указан номер строки, то
происходит возврат по этому номеру. Но обычно номер отсутствует и тогда уп-
равление передается оператору, следующему за оператором GOSUB, с помощью ко-
торого была вызвана данная подпрограмма. Как правило, RETURN размещается в
конце подпрограммы.

Пример: 100 GOSUB 1000
110 : : :
: : :
990 END
1000'Подпрограмма
1010 FOR I=0 TO 100 : A(I)=0 : NEXT I
1020 RETURN
Подпрограмма вызывается в 100-й строке, выполняется (обнуляется массив
A(100)), затем оператор RETURN осуществляет переход на строку номер 110

Примечание: Выполнению каждого оператора RETURN должно предшествовать выпол-
нение соответствующего оператора GOSUB.

------------------------------------------------------------------------
PRINT - оператор вывода на экран

Формат: PRINT [<список>]

Оператор используется для вывода на экран дисплея информации, определя-
емой списком, элементами которого могут быть числовые и символьные константы
и переменные. При отсутствии списка оператор PRINT используется для вывода
пустой строки.
Строка экрана разбита на зоны по 16 позиций каждая. Если элементы спис-
ка разделены запятыми, то значение следующего элемента будет напечатано в
следующей свободной зоне той же или следующей строки. Если данные разделены
";", то следующий элемент начнет печататься сразу за предыдущим.
Если оператор PRINT заканчивается ";", то следующий вывод на печать
начнется сразу за предыдущим; если в конце его стоит ",", то очередная пор-
ция информации будет печататься в следующей зоне той же строки. В остальных
случаях каждый оператор PRINT будет начинать печать с новой строки.

Пример: 20 PRINT "ABCD"
30 T$="START":B=25
40 PRINT "ABCD","EF";:PRINT T$,B
50 PRINT T$;"ABCD";"EF"
В результате выполнения программы на экран будет выведена следующая ин-
формация (символ "|" обозначает левую границу экрана):
|ABCD
|ABCD EFSTART 25
|STARTABCDEF

Примечание: В операторе PRINT можно использовать функции TAB и SPC.

------------------------------------------------------------------------
FOR - оператор цикла

Формат: FOR <имя переменной> = <арифм.выражение1> TO <арифм.выражение2>
[STEP <арифм.выражение3>]
тело цикла
NEXT [<имя переменной>]

При выполнении оператора счетчику цикла (переменной) в качестве началь-
ного значения присваивается значение арифм.выражения1, после чего выполняют-
ся операторы, входящие в тело цикла. При достижении ключевого слова NEXT к
счетчику цикла добавляется значение арифм.выражения3, называемое шагом цик-
ла. Если при этом значение счетчика превышает (а при отрицательном шаге бу-
дет меньше) значение арифм.выражения2, то программа переходит к выполнению
следующего после NEXT оператора; в противном случае - вновь выполняется тело
цикла. По умолчанию шаг цикла принимается равным 1.

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

Допускаются также вложенные циклы, причем внутренний цикл должен цели-
ком содержаться в теле внешнего цикла. Концы циклов в этом случае могут
объединяться в один оператор NEXT, и счетчик внутреннего цикла должен нахо-
диться прежде счетчика внешнего цикла.

Примеры: 10 FOR X=0 TO 1 STEP 0.1
20 PRINT X;SIN(X)
30 NEXT X
Оператор распечатывает таблицу значений функции sin x для значений ар-
гумента от 0 до 1 с шагом 0.1.

10 FOR I=1 TO 10
20 FOR J=2 TO 3
30 PRINT I^J;
40 NEXT J,I
Программа выводит на печать значения квадратов и кубов первых десяти
натуральных чисел.

------------------------------------------------------------------------
LINE INPUT# - оператор чтения данных из файла

Формат: LINE INPUT # <номер>, <символьная переменная>

Оператор действует аналогично оператору LINE INPUT, но данные вводятся
не с клавиатуры ПЭВМ, а из файла с указанным номером.

Пример: 10 OPEN "TEST" FOR INPUT AS #1
20 DIM X$(I)
30 FOR I=0 TO 10
40 LINE INPUT #1,X$(I)
50 PRINT X$(I)
60 NEXT
70 CLOSE
Программа заполняет массив символьных переменных данными, считанными из
файла с именем "TEST", и выводит их на экран.

Примечание: Файл, используемый в операторе LINE INPUT#, должен быть предва-
рительно открыт с помощью оператора OPEN с атрибутом INPUT.

------------------------------------------------------------------------
HEX$ - функция преобразования числа в строку

Формат: HEX$(<арифм.выражение>)

Функция преобразует целое число, равное значению арифм.выражения, в
строку, содержащую шестнадцатиричное представление данного числа.

Примеры: HEX$(255) выдает "FF"
HEX$(2*2) выдает "4"
HEX$(-1) выдает "FFFF"

Примечание: Значение аргумента должно находиться в интервале от -32768 до
65535.

------------------------------------------------------------------------
COS - функция cos x

Формат: COS (<арифм.выражение>)

Вычисляет косинус от аргумента, который должен быть задан в радианах.

Пример: COS(A+cool.gif вычисляет cos(a+cool.gif
COS(3.14159) дает -.99999999999643

Примечание: 1 радиан равен (180 градусов) / 3.1415926535898.

------------------------------------------------------------------------
FIX - функция [x]

Формат: FIX(<арифм.выражение>)

Функция выдает целую часть аргумента без округления.

Примеры: FIX(33.56) выдает 33
FIX(-5.56) выдает -5


--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
SuperMax
сообщение 11.2.2015, 20:13
Сообщение #2


Администратор
*****

Группа: Root Admin
Сообщений: 6 345
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



------------------------------------------------------------------------
Формат: PUT SPRITE Н,[[STEP] (X,Y)][,Ц][,O]

Оператор используется во всех экранах, кроме SCREEN0, для отображения
спрайтов в зависимости от следующих параметров:
Н - номер спрайта должен быть числом от 0 до 31. Следует помнить, что
на одной горизонтальной линии может находиться не более 4 (начиная со SCRE-
EN4 - не более 8) спрайтов, поэтому при превышении этого числа спрайты с бо-
лее высокими номерами останутся невидимыми.
(Х,Y) - координаты верхнего левого угла матрицы 8*8 или 16*16 спрайта,
который должен быть отображен. Числа Х и Y могут лежать в интервале от
-32768 до 32767, однако при отображении спрайта будут использоваться коорди-
наты, пересчитанные как модуль деления Х и Y на соответствующие размеры эк-
рана (см.оператор SCREEN). Отметим, что при отображении спрайтов верхний ле-
вый угол экрана всегда соответствует точке (0,-1). При наличии атрибута STEP
числа Х и Y означают приращение соответствующих координат последней указан-
ной точки.
Ц - цвет отображения спрайта. Допустимые значения этого аргумента зави-
сят от параметров конкретного экрана (см.оператор SCREEN).
О - номер образа отображаемого спрайта (число от 0 до 255). Назначение
чисел Н и О различно: например, один и тот же образ может соответствовать
двум различным по номерам спрайтам.
При отсутствии необязательных аргументов их значения остаются такими
же, как в ранее выполненном операторе PUT SPRITE для того же номера Н.

Пример: 10 SCREEN2:COLOR15,6,6
20 SPRITE$(0)=CHR$(255)+STRING$(6,129)+CHR$(255)
30 SPRITE$(1)=STRING$(8,128)
40 PUT SPRITE3,(50,50),15,0
50 FOR I=0 TO 200:NEXT
60 PUT SPRITE1,(40,40),7,1
70 FOR I=0 TO 200:NEXT
80 PUT SPRITE1,,9,0
90 GOTO 90
В программе задается два образа спрайтов: номер 0 - в виде незакрашен-
ного квадрата и номер 1 - в виде вертикальной черты. Белый квадрат изобража-
ется в точке (50,50), голубая черта - в точке (40,40), после чего на месте
последней появляется красный квадрат.

Примечания: 1. При наложении спрайтов друг на друга приоритет в закрашивании
точки определенным цветом имеет спрайт с меньшим номером. Это
позволяет создавать многоцветные спрайты.
2. Для исчезновения спрайта необходимо задать его цвет как проз-
рачный (т.е. Ц=0) либо заполнить нулями соответствующий образ,
либо вывести его за пределы экрана (например, задав координаты
(0,212)).

------------------------------------------------------------------------
COLOR - оператор выбора цвета

Формат: I. COLOR [<цвет текста>],[<цвет фона>],[<цвет бордюра>]
II. COLOR=(Ц,К,З,С)
III. COLOR=NEW

Первый вариант оператора задает номера цветов, в которые будут окрашены
выводимый на экран текст, фон и граница экрана (бордюр). Последний параметр
не употребляется в режиме SCREEN0: в этом режиме экран и его граница окраши-
ваются одним цветом. Если необходимо изменить только один из этих парамет-
ров, то остальные можно опустить.
Как правило, номер цвета должен быть числом от 0 до 15. Каждый цвет со-
ответствует определенным пропорциям красного, зеленого и синего цветов. Эти
пропорции могут быть изменены с помощью второго варианта оператора COLOR,
где Ц - номер изменяемого цвета, а К,З,С - соответствующие пропорции красно-
го, зеленого и синего цветов. Последние три цифры могут меняться в интервале
от 0 до 7.
При включении компьютера по умолчанию устанавливается следующая палитра
цветов:

---------------------------------------------------------
| Номер | | | | |
| цвета | Цвет | Красный | Зеленый | Синий |
|-------|-------------------|---------|---------|-------|
| 0 | Прозрачный | 0 | 0 | 0 |
| 1 | Черный | 0 | 0 | 0 |
| 2 | Зеленый | 1 | 6 | 1 |
| 3 | Светло - зеленый | 3 | 7 | 3 |
| 4 | Темно - синий | 1 | 1 | 7 |
| 5 | Светло - синий | 2 | 3 | 7 |
| 6 | Темно - красный | 5 | 1 | 1 |
| 7 | Голубой | 2 | 6 | 7 |
| 8 | Красный | 7 | 1 | 1 |
| 9 | Светло - красный | 7 | 3 | 3 |
| 10 | Темно - желтый | 6 | 6 | 1 |
| 11 | Светло - желтый | 6 | 6 | 4 |
| 12 | Темно - зеленый | 1 | 4 | 1 |
| 13 | Лиловый | 6 | 2 | 5 |
| 14 | Серый | 5 | 5 | 5 |
| 15 | Белый | 7 | 7 | 7 |
---------------------------------------------------------

Эти же цвета устанавливаются при выполнении оператора SCREEN или
третьего варианта оператора COLOR.
В режиме SCREEN 6 используются только 4 цвета, а в режиме SCREEN 8 но-
мер цвета может меняться в интервале от 0 до 255. Он определяется по следу-
ющей формуле:
<номер цвета> = 32*З + 4*К + С\2,
где З,К,С определены выше.
Следует также отметить, что в текстовых режимах (SCREEN 0 и SCREEN 1)
выполнение оператора COLOR сразу влечет за собой изменение цвета фона и все-
го ранее выведенного текста. В графических же экранах при выполнении опера-
тора COLOR меняется только цвет бордюра, а цвет фона изменится на указанный
в COLOR только после выполнения оператора CLS (в частности, и оператора
SCREEN). Новый цвет текста при этом будет действовать только для операторов,
выполненных после COLOR.

Пример: 10 SCREEN2:COLOR15,4,4
20 OPEN "GRP:" AS #1
30 PRINT #1,"ABCD"
40 COLOR 9
50 PRINT #1,"abcd"
60 GOTO 60
На синем экране отображается строка "ABCD" белого и строка "abcd" крас-
ого цвета.

Примечание: Начальная установка цветов происходит по нажатию клавиши F6.

------------------------------------------------------------------------
CIRCLE - оператор рисования кругов и эллипсов

Формат: CIRCLE [STEP] (X,Y),P[,Ц][,H][,K][,A]

Оператор используется в графических режимах (от SCREEN2 до SCREEN8) для
рисования окружностей и эллипсов со следующими параметрами:
- числа Х,Y определяют координаты центра круга или эллипса (но сама
точка при этом не отображается). При наличии атрибута STEP они указывают
приращение соответствующих координат точки, упомянутой в последнем выполнен-
ном графическом операторе;
- число Р равняется радиусу, если рисуется окружность, или длине боль-
шей оси, если рисуется эллипс;
- цвет окружности (эллипса) определяется числом Ц. По умолчанию он ра-
вен цвету изображения последнего выполненного оператора COLOR;
- число Н задает начальный (по умолчанию 0), а число К - конечный (по
умолчанию 2*3.14) угол, измеренный в радианах. Путем задания иных значений
можно рисовать не замкнутые кривые, а дуги. Если какое-либо из чисел Н или К
будет отрицательно, то соответствующий ему конец дуги будет соединен отрез-
ком с точкой (X,Y);
- отношение между горизонтальной и вертикальной осями задается коэффи-
циентом А. По умолчанию он равен 1.

Пример: 10 SCREEN 2:COLOR15,6,6
20 CIRCLE(50,60),30,8,,,1.1
30 CIRCLE(70,45),40,,,,2
40 CIRCLE STEP (15,35),25,,-3.4,-6
50 GOTO 50
Программа рисует окружность красного цвета, овал и сектор круга белого
цвета.

Примечания: 1. Пропорции между координатами Х и Y не обязательно сохраняются
при изображении на экране. Поэтому для получения действительного
круга иногда необходимо изменить параметр А (например, А=1.1).
2. Допустимые значения чисел X,Y,Ц определяются параметрами
конкретного экрана (см.оператор SCREEN). Если значение Ц выходит
за пределы допустимого, то будет выдано сообщение об ошибке. В
том случае, когда за пределы координатной системы выходят значе-
ния Х,Y или не умещается вся фигура, то на экране отображается
та часть окружности (эллипса), которая на нем помещается.

------------------------------------------------------------------------
SOUND - оператор воспроизведения звуковых эффектов

Формат: SOUND <регистр>, <значение>

Данный оператор позволяет воспроизводить различные звуковые эффекты.
Регистры звукогенератора имеют номера от 0 до 13, значения не должны превы-
шать 255. Программируются следующие характеристики звука:
1. Частота. Устанавливается следующими регистрами:
канал А - регистры 0 и 1
канал В - регистры 2 и 3
канал С - регистры 4 и 5
Реальная частота в Гц вычисляется по формулам
Частота=F/FV ,где
F=3579545/32 ,а
FV=R0+256*R1 (для канала А)
FV=R2+256*R3 (для канала В)
FV=R4+256*R5 (для канала С)

2. Генератор шумов. Кодируется в регистре 6 значениями от 0 до 31 как
"средняя частота" шума, определяющаяся по формулам:
Частота=F/R6 ,где
F=3579545/32
3. Микширование каналов. В каждом из каналов возможен следующий сигнал:
а) ничего;
б) только заданный звуковой эффект;
в) только шум;
г) заданный звуковой эффект и шум.
Старшие два бита R7 должны быть двоичным числом 10. Следующие 3 разре-
шают (0) или запрещают (1) выход шума соответственно в каналах С, В и А.
Последние три разрешают (0) или запрещают (1) выход звука соответственно в
каналах С, В и А.

Пример: 10 SOUND &B10110011
Результат: в канале А шум, в канале В ничего, в канале С только звук.

4. Установка громкости. Используются регистры:
канал А - регистр 8
канал В - регистр 9
канал С - регистр 10
Значения лежат в пределах от 0 до 15 (максимальная громкость). При зна-
чении 16 громкость контролируется генератором огибающей.

5. Частота огибающей. Кодируется в регистрах 11 и 12, в Гц вычисляется
по формулам:
Частота=F/FV ,где
F=3579545/32 ,а
FV=R11+256*R12

6. Форма огибающей. Кодируется в четырех младших битах регистра 13 по
следующей таблице:

В3 В2 В1 В0 Форма огибающей

0 0 х х \____________________

0 1 x x /|___________________

1 0 0 0 \|\|\|\|\|\|\|\|\|\|\|

1 0 0 1 \____________________

1 0 1 0 \/\/\/\/\/\/\/\/\/\/\/
____________________
1 0 1 1 \|

1 1 0 0 /|/|/|/|/|/|/|/|/|/|/|

1 1 0 1 /---------------------

1 1 1 0 /\/\/\/\/\/\/\/\/\/\/\

1 1 1 1 /|____________________

Примеры: 10 BEEP
20 FOR I=0 TO 13
30 READ V:SOUND I,V
40 NEXT
50 END
100 DATA 0,0,0,0,0,0
110 DATA 30
120 DATA &B10110111
130 DATA 16,0,0
140 DATA 0,90,&B1110
Программа имитирует шум моря.

10 BEEP
20 FOR I=0 TO 13
30 READ V:SOUND I,V
40 NEXT
50 END
100 DATA 200,14,220,14,240,14
110 DATA 0
120 DATA &B10111000
130 DATA 15,15,15
140 DATA 0,0,0
Программа имитирует звук бомбардировщика.

10 BEEP
20 FOR I=0 TO 13
30 READ V:SOUND I,V
40 NEXT
50 FOR I=5120 TO 300 STEP -10
60 SOUND 11,I MOD 256
70 SOUND 12,I/256
80 FOR J=0 TO 20
90 NEXT J,I
95 END
100 DATA 0,0,255,14,255,14
110 DATA 10
120 DATA &B10000001
130 DATA 9,8,16
140 DATA 0,20,&B1100
Программа имитирует звук вертолета.

10 FOR I=0 TO 13
20 READ V:SOUND I,V
30 NEXT
40 FOR I=50 TO 200
50 SOUND 0,I
60 A=5^5
70 NEXT
80 SOUND 12,1010 BEEP
90 END
100 DATA 50,0,0,0,0,0
110 DATA 30
120 DATA &B10111110
130 DATA 10,0,16
140 DATA 0,0,0
Программа имитирует звук падающей бомбы.

------------------------------------------------------------------------
COLOR SPRITE$ - оператор определения многоцветного спрайта

Формат: COLOR SPRITE$(<номер спрайта>)=<строка>

Оператор используется в графических экранах, начиная со SCREEN4, для
создания многоцветных спрайтов. Спрайт с указанным номером определяется
строкой длины 8 или 16 символов (в зависимости от размера спрайта), каждый
символ которой соответствует одной линии спрайта.
Двоичная структура, соответствующая ASCII-коду каждого символа содержит
следующую информацию:

БИТ 7 (крайний левый): если этот бит равен 1, то линия будет изображена
на 32 точки левее координаты Х, заданной в PUT SPRITE.
БИТ 6: если этот бит равен 0, то при наложении спрайтов друг на друга
приоритет будет иметь спрайт с меньшим номером. В противном случае цвет то-
чек, входящих в пересечение спрайтов, определяется результатом операции OR,
примененной к наложившимся цветам. Точки спрайта, не входящие в пересечение,
при этом исчезают.
БИТ 5: если этот бит равен 1, то столкновения этого спрайта с другими
фиксироваться не будут.
БИТ 4: не используется.
БИТЫ 0 - 3: позволяют закодировать номер цвета (от 0 до 15), присвоен-
ный данной линии.

Пример: 10 COLOR 15,4,4:SCREEN 4,1
20 SPRITE$(1)=STRING$(8,255)
30 PUT SPRITE 1,(77,50),10,1
40 IF INKEY$="" GOTO 40
50 S$="":FOR J=0 TO 7:READ A$:S$=S$+CHR$(VAL("&B"+A$)):NEXT J
60 COLOR SPRITE$(1)=S$
70 DATA 00000111,00000001,00001101,00001000
80 DATA 00000011,00000011,00000001,00001001
90 IF INKEY$="" GOTO 90
В программе определяется спрайт в виде закрашенного квадрата размером
8*8 точек, изображаемый на экране желтым цветом. После нажатия любой клавиши
формируется символьная переменная длиной 8, двоичное представление которой
задано операторами DATA. После выполнения оператора COLOR SPRITE$ спрайт на
экране становится разноцветным.

Примечание: Если для определения спрайта был использован оператор COLOR
SPRITE$, то при выводе его на экран оператором PUT SPRITE пара-
метр <Цвет> следует писать только в том случае, когда нужно из-
менить цвет спрайта по сравнению с уже заданным.

------------------------------------------------------------------------
PLAY - функция проверки наличия данных

Формат: PLAY(<номер голоса>)

При выполнении оператора PLAY строки, соответствующие каждому голосу,
записываются в трех очередях. По мере их считывания очереди освобождаются.
Для проверки наличия данных в очереди используется функция PLAY. Номер голо-
са должен быть равен 1, если проверяется канал А, 2 - если проверяется канал
В, 3 - если проверяется канал С и 0, если проверяются все каналы. Значение
функции равно 0, если проверяемая очередь пуста, и -1 в противном случае.
При программировании длительных по протяженности музыкальных фрагментов
функция PLAY используется для обеспечения непрерывности звучания.

Пример: 10 A$="CDEFGAB"
20 PLAY A$,"O5 XA$;","O6 XA$;"
30 IF PLAY(0) THEN 20 ELSE 30
Программа обеспечивает непрерывное звучание по трем каналам музыкальной
фразы, заданной в строке 10.


--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 24.8.2025, 20:20