| Справочник программиста на персональном компьютере фирмы IBM | 116 |
Хотя в Бейсике это делается очень просто, на самом деле это
нетривиальный трюк программирования в реальном времени. Для реше-
ния этой задачи нужно использовать генерацию звука через микрос-
хему 8253 [2.2.3], так как метод, использующий микросхему 8255
[2.2.2], занимает процессор. Соответственно, только строки чистых
музыкальных тонов могут производиться таким методом - всякого
рода звуковые эффекты при этом недоступны. Основная техника прог-
раммирования в реальном времени показана в [2.1.7]. Программы,
работающие в реальном времени, модифицируют прерывание таймера,
которое останавливает процессор 18.2 раз в секунду, чтобы изме-
нить показание счетчика времени суток. Расширение процедуры пре-
рывания сравнивает новое значение счетчика времени суток со зна-
чением, показывающим время завершения генерации тона, и когда это
значение достигнуто, прерывает звук, начинает генерацию другого
тона и устанавливает время его окончания.
Высокий уровень.
Генерация строки звуков одновременно с другими операциями
является одной из возможностей очень мощного оператора PLAY,
который детально обсуждался в [2.2.5]. Надо просто добавить в
начало управляющей строки MB. Это сокращение от Music Background
(фоновая музыка); для того чтобы заставить PLAY прекратить все
другие операции, пока генерация звуковой строки не будет заверше-
на, вставьте MF. В нижеприведенном примере во время рисования и
заполнения рамки исполняется гамма (для его работы требуется
наличие графических возможностей).
100 PLAY "MB T100 O3 L4;CDEFG>ABC" 'исполняем набор нот
110 LINE (10,10)-(80,80),1,BF 'одновременно рисуем рамку
Предыдущая страница 116 Следующая страница
2010107156
|