Помогите разобраться что делают следующие процедуры, они связаны, но я не могу понять зачем тут таймер и что передается через порт 43h: Код (Text): getticks proc mov ah,00h int 1ah mov ax, cx shl eax, 16 mov ax, dx ret getticks endp Код (Text): start_sound proc mov al, 0b6h out 43h, al mov ax, tone out 42h, al xchg al,ah out 42h, al in al, 61h or al, 3 out 61h, al ret start_sound endp
если мне не изменяет память, то через 43н проходит управляющий регистр первого таймера. -- канал 2 режим 3 дальше пойдет писк через динамик in al, 61h - устанавливает состояние порта в ал or al, 3 -устанавливает байты 0 и 1 в 1 out 61h, al - тепреь динамик включен
jora getticks - получение "времени" int 1Ah - http://www.codenet.ru/progr/dos/int_0019.php В eax заносится число тиков. start_sound - инициализация спикера Юров, Зубков, Гуголь и т.д....
токачто "порезал" процедуру инициализации спикера до Код (Text): start_sound proc in al, 61h or al, 3 out 61h, al ret start_sound endp разницы не заметил. нужны ли те строки что в первом моем посту?
Те строчки устанавливают режим канала таймера - генерация меандра с необх. периодом. 61 порт разрешает направление звука на динамик. Хорошо это описано в небезызвестной IO.PRT.
подскажите еще что эта процедура делает Код (Text): CLR proc cld mov cx,0a000h mov es,cx xor di,di mov cx, divisor mov ax, cx shl ax, 6 mov ch, cl xor cl, cl add cx, ax mov bx, 320*200 sub bx, cx mov al,1 rep stosb mov al,2 mov cx, bx rep stosb ret CLR endp
jora беглым взглядом закрашивает экран (vga, режим 13h) двумя цветами. Сперва 1-м (дивизор*256+дивизор*64=дивизор*320 точек = дивизор линий), потом 2-м (до конца).