Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Листинг 9.2. Загрузка VОС-файла





char far *Voc_Load_Sound(char *filename,

unsigned char *header_length)

{ // загрузка звукового файла с диска в память

// и установка указателя на его начало

char far *temp_ptr;

char far *data_ptr;

unsigned int sum;

int sound_handle,t;

unsigned errno, segment, offset, num_para, bytes_read;

// открыть звуковой файл

_dos_open(filename, _O_RDONLY, &sound_handle);

// выделить память

num_para =1 + (filelength(sound_handle))/16;

_dos allocmem(num_para, &segment);

// установить указатель на выделенную память

_FP_SEG(data_ptr) = segment;

_FP_OFF(data_ptr) = 0;

// загрузить звуковые данные

temp_ptr = data_ptr;

do

{

dos_read(sound_handle,temp_ptr, 0х4000, &bytes__read);

temp_ptr += bytes_read;

sum+=bytes_read;

} while(bytes_read==0x4000);

// Проверить на всякий случай, звуковые ли это данные.

// Для этого проверяется присутствие слова "Creative".

if ((data_ptr[0]!= 'С') || (data_ptr[1]!= 'r'))

{

printf("\n%s is riot a voc file!",filename);

_dos_freemem(_FP_SEG(data_ptr));

return(0);

} // конец звукового файла

header_length = (unsigned char)data_ptr[20];

// закрыть файл

_dosclose(sound_handle);

return(data_ptr);

} // конец функции

Наиболее замечательное в этой функции то, что она возвращает адрес области памяти (точнее, указатель на него), куда был загружен VOC-файл. Мы используем этот указатель позже при проигрывании звука.

Все остальные функции, которые нам потребуются, тривиальны. Мы используем ассемблерные вставки для настройки регистров и команду процессора CALL для вызова драйвера с помощью указателя driver_ptr.

Рассмотрим несколько таких функций, чтобы понять особенности их написания. Драйвер должен быть инициализирован прежде, чем мы сможем его использовать. Это очевидное требование. Делать это мы должны с помощью функции 3, «Инициализировать драйвер». Листинг 9.3 содержит текст программы этой функции.

Date: 2015-09-18; view: 410; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.004 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию