Языки программирования: Мега-Бейсик, Бета-Бейсик, Бета-Бейсик, Лазер-Бейсик, ZX-Форт, Паскаль HP4TM 1993 г.

MEGA-BASIC - графика. Управление выполнением программ. Отладка и редактирование программ. Звук.


3. ГРАФИКА.

КОМАНДЫ CHANGE U SWAP.

В МЕГАБЕЙСИК включены некоторые команды, которые позволяют
пользователю непосредственно манипулировать с файлом атрибутов.
Команда CHANGE_ позволяет изменить определенную часть байтов атри-
бутов. После этой команды записывают 2 числа, представляющие собой
маску и данные. Маска определяет, какой из битов каждого байта файла
атрибутов должен быть изменен. Данные указывают, в чем должно состо-
ять это изменение:

CHANGE1 - логическое NOT. Все единичные биты в каждом байте
становятся нулевыми и наоборот;

CHANGE 2 - логическое AND между всеми байтами файла атрибутов и
значением маски;

CHANGE 3 - логическое OR между всеми байтами файла атрибутов и
байтом данных.

Команда SWAP_ - позволяет поменять одни атрибуты на другие. По-

еле команды записываются два числа: первое число определяет значение
новых атрибутов, а второе - значение тех атрибутов, 'которые должны
измениться.

КОМАНДА FADE_

С помощью этой команды можно получить особые эффекты. Введите
и запустите следующую короткую программу:
10 FOR А=0 ТО 703
20 РОКЕ 22528+А,РЕЕК А
30 NEXT А
40 FADE0

Первые три строки этой программы обеспечивают заполнение файла
атрибутов случайными числами. В 40-й строке по команде FADE0 выпол-
няется сравнение значения каждого байта файла атрибутов с числом,
записанным после этой команды. Если эти значения равны, то байт ос-
тается неизменным, если же нет, то значение байта в файле атрибутов
изменяется, пока не станет равным записанному числу.

КОМАНДА INVEST

Это простая команда, по которой инвертируется весь экран. Цвет
INK изменяется на цвет PAPER, а цвет PAPER - на цвет INK.

КОМАНДА DEFG_.

Способ, позволяющий создавать в стандартном БЕЙСИКе новые символы
графики пользователя (UDG) довольно громоздок. В МЕГАБЕЙСИКЕ же эта
задача решается с помощью одной команды DEFG_, после которой записы-
вается символ (любая из литер от а до и) а затем 8 чисел, разделен-
ных запятыми. Символ определяет местонахождение UDG, а числа - его
форму.

КОМАНДЫ GET_ U FUT_.

В МЕГАБЕЙСИКЕ можно запомнить часть изображения экрана в ОЗУ, и
при необходимости вернуть это изображение на экран в любую позицию.
Для передачи части экрана в ОЗУ используют команду:

GET_0,а,у,х,d,w.

Здесь: а - адрес, начиная с которого хранится в ОЗУ изображение эк-
рана, у,х - соответственно номер строки и номер столбца верхнего ле-
вого угла сохраняемого участка экрана, d,w - длина и ширина этого
участка. Команды GET_ и PUT_ применяют такую же координатную систе-
му, что и команды ATTR и SCREENS. Их координаты абсолютны и не зави-
сят от положения верхнего левого угла окна на экране. Число байтов,
занимаемых изображением экрана в ОЗУ, определяется по формуле:

64*w*d.

Команда PUT_ прямо противоположна по действию команде GET_. За-
писывается она в следующей форме: PUT_f,a,y,x,d,w. Здесь f опреде-
ляет способ восстановления изображения экрана:

f=0 - изображение из ОЗУ переписывается в дисплейный файл без
изменений;

f=l - восстановление изображения осуществляется через логичес-
кое OR значений дисплейного файла и сохраняемого в ОЗУ изображения;

f=2 - восстановление через логическое XOR;

f=4 - то же, что и f=0, но вместо атрибутов, хранимых в памяти,

используются значения текущих атрибутов;

f=5 - то же, что и f=l, но используются текущие атрибуты;
f=6 - то же, что и f=2, но используются текущие атрибуты.
Переменные a,x,y,d,w аналогичны определяемым в команде GET_.

КОМАНДА SPUT_.

Это вариация команды PUT_, позволяющая не только восстановить
изображение экрана, но и увеличить его:

SPUTa,x,y,b,c,w,d
Здесь: а - начальный адрес блока в ОЗУ; х,у - координаты верх-
него левого угла экрана при восстановлении изображения; Ь,с - коэф-
фициенты увеличения по оси х и у соответственно. При этой команде
всегда используются текущие атрибуты, а координатная система точно
такая же, как и для команды SPRINT.

4. УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ

ПРОЦЕДУРЫ.

МЕГАБЕЙСИК обеспечивает работу с процедурами, вызов которых осу-
ществляется по их имени. Точно так же, как и после команды, после
имени процедуры может быть записана серия арифметических выражений
или чисел. Эти выражения определяют необходимые переменные для рабо-
ты в процедуре.

Недостатком процедур в МЕГАБЕЙСИКе является то, что они не мо-
гут работать с локальными переменными; их переменные являются общими
для всей программы.

Используя процедуры, можно разделить всю Программу на ряд част-
ных задач. Каждая процедура отлаживается отдельно, а затем все они
объединяются в программу. Начало процедуры задается символом ' @*,
следом за которым записывается имя процедуры. После имени процедуры
записываются необходимые параметры. Окончание процедуры обозначает-
ся оператором ENDPROC_. Как только будет достигнут этот оператор,
управление выполнением программы будет передано оператору, записан-
ному за оператором вызова процедуры.

После оператора ENDPROC_ можно записать имя процедуры:
9000 @DISPLAY_A,A$
9010 PAPER A: INK 9
9020 M0DE_4: STIPPLE_6
9030 PRINT A$
9040 ENDPROC_DISPLAY

Это пример процедуры. В строке 9010 определяется имя процедуры
DISPLAY и, как видно, для ее работы необходимо определить две пере-
менные -А и А$. В строке 9030 определяется размер и оттенок симво-
лов, выводимых на экран. Для вызова процедуры необходимо записать,
например:

DISPLAY_2,"MEGABASIC"
Процедуры могут вызываться и из процедур.

REPEAT-UNTIL

Мега-Бейсик обеспечивает работу с циклами типа REPEAT-UNTIL. Опе-
ратор REPEAT определяет начало цикла. После оператора UNTIL должна
быть записана односимвольная переменная. Если значение этой перемен-

ной равно нулю, то цикл прерывается и выполнение программы переходит
к оператору, записанному после последнего оператора REPEAT, если же
эта переменная отлична от 0, то выполняется следующий оператор про-
граммы. Допускается вложение до 10 циклов типа REPEAT-UNTIL.

ПРОЦЕДУРНЫЙ СТЕК

Для хранения номеров строк операторов, к которым выполняется
возврат после использования процедур и циклов REPEAT-UNTIL, применя-
ется специальный стек. Когда вызывается процедура, номер строки,
следующий за оператором вызова, записывается в стек, что позволяет
системе знать адрес возврата после окончания процедуры.

Аналогично и для циклов типа REPEAT-UNTIL. Здесь также в стек
записываются номера строки и оператора, к которым осуществляется
возврат после оператора UNTIL.

После выполнения оператора ENDPROC_ и перехода к строке, номер
которой хранился в стеке, этот номер удаляется со стека. Любая по-
пытка записать в стек больше 10 номеров заканчивается сообщением
"PROC STACK OVERLOW" (Процедурный стек переполнен).

КОМАНДЫ POP U PUSH.

Оператор РОР_ служит для "снятия" значений со стека, оператор
PUSH_ - для записи значений в стек. За оператором PUSH_ следуют 2
числа: номер оператора в строке и номер строки. Для очистки стека
перед началом выполнения программ необходимо дать команду PCLEAR.

КОМАНДА BRANCH

По этой команде после выполнения каждой программной строки бу-
дет вызываться подпрограмма, записанная в строках основной програм-
мы. Начальная строка этой подпрограммы указывается после команды
BRANCH, а конец подпрограммы определяется оператором ENDPROC_.

ОПЕРАТОР МТASK

Это оператор многозадачного режима. Он позволяет выполнять про-
грамму одновременно из двух разных мест. Считается, что программа
как бы разделена на две части: первая начинается после строки, где
записан оператор MTASK_, а вторая - со строки, номер которой записан
после оператора MTASK_. МЕГАБЕЙСИК выполняет поочередно строки из
каждой части программы.

5. ОТЛАДКА И РЕДАКТИРОВАНИЕ ПРОГРАММ
ОПЕРАТОРЫ BRANCHTRON_, TROFF_ U SPEED.

Оператор BRANCH_ оказывается весьма полезным при отладке про-
грамм. Если, к примеру, Вас интересует какая-то переменная, то Вы
можете с помощью этой команды вызывать подпрограмму печати значения
этой переменной после каждой программной строки. Другой способ про-
верить выполнение программы - выводить на экран номер выполняемой
строки, что возможно по команде TRON_. При этом номер выполняемой
строки программы будет выведен в нижний угол экрана. Команда TROFF_

отменяет такой режим. Связана с этими двумя командами также команда
SPEED_, после которой записано число, определяющее скорость выполне-
ния программных строк. Максимально возможное число - 255. При этом
выполнение программы будет приостановлено до тех пор, пока пользова-
тель не нажмет любую клавишу.

КОМАНДЫ AUTO U DELETE.

При вводе больших программ весьма полезным может быть автомати-
ческий ввод номера следующей строки после нажатия клавиши ENTER. Та-
кой режим работы возможен при применении команды AUTO_, после кото-
рой следуют 2 числа, разделенные запятыми. Первое число задает на-
чальный номер строки, с которого начнется автоматическая нумерация,
а второе - шаг нумерации.

Остановить режим автонумерации можно так: EXTEND SYMB.SHIFT * L *.

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

КОМАНДЫ BRON_ U BROFF_.

Желающие защитить свои программы от любопытных глаз, найдут
полезным возможность отключать клавишу BREAK. Это может быть сделано
при примении команды BROFF_. Возвращение клавише ее возможностей
осуществляется по команде BRON_.

КОМАНДА RESTART.

Многие версии языка Бейсик имеют команду ON ERROR GO ТО, позво-
ляющую не прерывать выполнение программы в случае обнаружения ошиб-
ки, а осуществлять обход строки с ошибкой. Аналогичная команда име-
ется и в МЕГАБЕЙСИКе. Это команда RESTART_, после которой записыва-
ется номер строки, к которой осуществляется переход в случае обнару-
жения ошибки. По команде RESTART_OFF такой режим отменяется. После
обработки ошибки с помощью команды RESTART_ некоторая полезная ин-
формация сохраняется в ячейках памяти:

5987 3/4 - номер строки, в которой обнаружена ошибка;
59875 - номер оператора внутри строки с ошибкой;
59862 - код обнаруженной ошибки.

6. ЗВУК

МЕГАБЕСИК открывает для Вас новые возможности создания звуков
на Вашем компьютере. Для этого необходимо использовать команду PLAY_
и генератор звука ISG

PLAY_n,l,s,d,f

Здесь:

п=0 - ноты;
п=1 - белый шум;

1 - длительность звучания на каждом шаге;
s - значение начальной звуковой частоты;
d - число шагов;

f - изменение частоты после каждого шага.

РЕЗИДЕНТНЫЙ ЗВУКОВОЙ ГЕНЕРАТОР

Если команда PLAY_ только улучшает возможности команды ВЕЕР,
то использование звукового генератора позволит получить новые эффек-
ты. Дело в том, что при выполнении программы в ZX SPECTRUM происхо-
дят прерывания 50 раз в секунду.' Во время обслуживания прерываний
выполняются например такие необходимые процессы, как сканирование
клавиатуры. В это же время может работать и резиденьный звуковой
генератор. В МЕГАБЕЙСИКе имеется ряд команд, которые могут управ-
лять этим генератором.

SOUND_n,а,b,с,d - команда для работы с звуковым буфером.

Здесь:

п=0 очистка звукового буфера перед очередной загрузкой;
п=1 добавление новой информации в звуковой буфер;
а=0 воспроизведение нот;
а=1 воспроизведение шума;
b - шаг звуковой частоты;

с - число шагов в последовательности нот;
d - число повторений последовательности нот.

Другие команды:

SOFF - отключение генератора;
SON - включение генератора;

SREPn - количество повторений звуковой последователь-
ности ; если п=0, то данные, записанные в зву-
ковом буфере будут использоваться только один
раз, в противном случае - многократно.

Когда выполняется команда PLAY, генератор автоматически отклю-
чается. Для включения генератора применяйте команду SON. Более слож-
ные звуковые эффекты можно получить, если замедлить выполнение про-
граммы. Этот короткий фрагмент программы демонстрирует работу гене-
ратора:

10 SOUND_ 0,0,1,20,255
20 SREPl
30 SON

40 MODE4: STIPPLE_6: FONT_2
50 VDU_(128+RND*15)
60 PAPER RND*7: INK 9
70 GO TO 50




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Железо - Бис контроллера KP1818ВГ93 накопителя на гибком диске. Блок схема контролера НГМД. Система команд микроконтроллера.
Pentagon - Проблема плохого звука на Пентагоне 2+ и способ её устранения.
Дом 16а - продолжение рассказа.
Руль - письма в редакци от C-jeff и Trident'a из СПб.
От автора - Позади установочная сессия...

В этот день...   19 апреля