Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Sound - NoSound ; ;beginer1 help me


vidiv ©   (2002-10-23 09:12:00) 

Здравствуте. Помогите еще такой вопрос. ниже приведен код который мне дал Beginer1 по теме Thread. Помогите переделать его на Sound(f:integer) и NoSound . Я бы и сам бы рад, да в асме не шарю, но вижу что через $61 порт, а попробую переделать, что нибудь обязательно напутаю...



beginer1 © (22.10.02 17:16)
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Генерация звукого сигнала на встроенном динамике

Frequency - частота звука, Гц
Duration - длительность звучания, 1/1000 сек

Зависимости: Windows, SysUtils,
Автор: Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт- Петербург
Copyright: Dimka Maslov
Дата: 29 апреля 2002 г.
***************************************************** }

procedure Sound(Frequency, Duration: Integer);
asm
push edx
push eax
mov eax, Win32Platform
cmp eax, VER_PLATFORM_WIN32_NT
jne @@9X
call Windows.Beep
ret
@@9X:
pop eax
pop edx
push ebx
push edx
mov bx, ax
mov ax, 34DDh
mov dx, 0012h
cmp dx, bx
jnc @@2
div bx
mov bx, ax
in al, 61h
test al, 3
jnz @@1
or al, 3
out 61h, al
mov al, 0B6h
out 43h, al
@@1:
mov al, bl
out 42h, al
mov al, bh
out 42h, al
call Windows.Sleep
in al, 61h
and al, 0FCh
out 61h, al
jmp @@3
@@2:
pop edx
@@3:
pop ebx
end;


Sharik_212   (2002-10-23 15:20:00) [1]

Для NT можно использовать Windows.Beep


AlexKniga   (2002-10-23 11:30:00) [2]

2 vidiv
Приведенное выше разделение на Sound/NoSound только для линейки Win9x, недля NT.


AlexKniga   (2002-10-23 11:25:00) [3]

2 vidiv
В конференции не принято, задавая вопрос, обращаться к кому-то конкретно. Для этого есть e-mail.
И еще общий совет: почаще заглядывай на UBPFD by delphibase.endimus.com


AlexKniga   (2002-10-23 11:15:00) [4]

Procedure Sound (Frequency: Word); Assembler;
Asm
PUSH EBX // must preserve
MOV BX, AX // BX := Frequency;
MOV AX, 34DDH
MOV DX, 0012H
CMP DX, BX
JNC @@2
DIV BX
MOV BX, AX
IN AL, 61H
TEST AL, 3
JNZ @@1
OR AL, 3
OUT 61H, AL
MOV AL, 0B6H
OUT 43H, AL
@@1: MOV AL, BL
OUT 42H, AL
MOV AL, BH
OUT 42H, AL
@@2: POP EBX
End;

Procedure NoSound; Assembler;
Asm
IN AL,61H
AND AL,0FCH
OUT 61H,AL
End;


Наверх

Титульная страница Поиск, карта сайта Написать письмо