· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Помогите поменять связку IRQ - INT

Посл.отвђт Сообщенiе


Дата: Дек 23, 2003 19:59:50

Доброго времени суток.

Помогите.
Мне надо поменять соотношение IRQ - INT. тоесть что бы скажем IRQ1 (клава) вызывала прерывание Int 87h.

Роюсь в документации но не могу найти... Если пошлете меня в ман или приведете пример - буду очень благодарен.

С уважением. Ворон.


Дата: Дек 24, 2003 09:57:03

Когда-то делал такое под досом. Судя по тому, то ты спросил в этом разделе форума, а не в соседнем, может, это тебе и надо...

Сейчас проверил - в ДОС-сессии винды98 работает нормально, причём, в том числе и в протектед моде через ДПМИ. Под НТ - скорее всего не будет.
SetIRQBase      proc    near    ; AH - new IRQ Base
        cli
        pusha
        push    es
        push    0
        pop     es
        mov     bx,word ptr es:[19Ch]
        or      bx,word ptr es:[19Eh]
        jz      @@1
        xor     bx,bx
        mov     bl,ah
        push    ax
        mov     cx,70h
        mov     ax,0DE0Bh
        int     67h
        pop     ax
@@1:    in      al,21h
        push    ax
        mov     al,15h
        out     20h,al
        mov     al,ah
        out     21h,al
        mov     al,4
        out     21h,al
        mov     al,0Dh
        out     21h,al
        pop     ax
        out     21h,al
        sti
        pop     es
        popa
        ret
SetIRQBase      endp

Если я ничего не путаю, то 20h и 21h - это порты контроллера прерываний 8259, а int 67h - это EMM. Кажется, ему надо сообщать о смене базы irq, чтобы софт под дпми не падал и под виндами работало, а в голом досе достаточно только в порты заслать.

Давно это было, поэтому, по каким докам делалось я уже и не вспомню.


Дата: Дек 24, 2003 19:51:21

Спасибо!!!
Все великолепно работает!!!.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.136