Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3539 → Rev 3520

/kernel/trunk/drivers/intelac97.asm
21,7 → 21,7
IRQ_LINE equ 0
 
 
;irq 0,1,2,8,12,13 недоступны
;irq 0,1,2,8,12,13 íåäîñòóïíû
; FEDCBA9876543210
VALID_IRQ equ 1100111011111000b
ATTCH_IRQ equ 0000111010100000b
/kernel/trunk/drivers/apm.asm
297,7 → 297,7
ret
 
 
; ДАННЫЕ ПРОГРАММЫ
; „€›… Žƒ€ŒŒ›
title db '',0
flags dw 0
 
/kernel/trunk/drivers/com_mouse.asm
174,68 → 174,68
 
align 4
MSMouseSearch:
; ПОИСК МЫШИ ЧЕРЕЗ COM-ПОРТЫ
; ÏÎÈÑÊ ÌÛØÈ ×ÅÐÅÇ COM-ÏÎÐÒÛ
MouseSearch:
; Устанавливаем скорость
; приема/передачи 1200 бод
; Óñòàíàâëèâàåì ñêîðîñòü
; ïðèåìà/ïåðåäà÷è 1200 áîä
; in bx COM Port Base Address
mov DX, bx
add DX, 3
in AL, DX
or AL, 80h ;установить бит DLAB
or AL, 80h ;óñòàíîâèòü áèò DLAB
out DX, AL
mov DX, bx
mov AL, 60h ;1200 бод
mov AL, 60h ;1200 áîä
out DX, AL
inc DX
mov AL, 0
out DX, AL
; Установить длину слова 7 бит, 1 стоповый бит,
; четность не контролировать
; Óñòàíîâèòü äëèíó ñëîâà 7 áèò, 1 ñòîïîâûé áèò,
; ÷åòíîñòü íå êîíòðîëèðîâàòü
mov DX, bx
add DX, 3
mov AL, 00000010b
out DX, AL
; Запретить все прерывани
; Çàïðåòèòü âñå ïðåðûâàíè
mov dx, bx
inc dx
mov AL, 0
out DX, AL
; Проверить, что устройство подключено и являетс
; мышью типа MSMouse
; Отключить питание мыши и прерывани
; Ïðîâåðèòü, ÷òî óñòðîéñòâî ïîäêëþ÷åíî è ÿâëÿåòñ
; ìûøüþ òèïà MSMouse
; Îòêëþ÷èòü ïèòàíèå ìûøè è ïðåðûâàíè
mov DX, bx
add EDX, 4 ;регистр управления модемом
mov AL, 0 ;сбросить DTR, RTS и OUT2
add EDX, 4 ;ðåãèñòð óïðàâëåíèÿ ìîäåìîì
mov AL, 0 ;ñáðîñèòü DTR, RTS è OUT2
out DX, AL
; Ожидать 5 "тиков" (0,2 с)
; Îæèäàòü 5 "òèêîâ" (0,2 ñ)
mov ecx, 0xFFFF
loop $
; Включить питание мыши
; Âêëþ÷èòü ïèòàíèå ìûøè
mov al, 1
out dx, al
mov ecx, 0xFFFF
loop $
; Очистить регистр данных
; Î÷èñòèòü ðåãèñòð äàííûõ
mov dx, bx
in AL, DX
add edx, 4
mov AL, 1011b ;установить DTR и RTS и OUT2
mov AL, 1011b ;óñòàíîâèòü DTR è RTS è OUT2
out DX, AL
mov ecx, 0x1FFFF
; Цикл опроса порта
; Öèêë îïðîñà ïîðòà
WaitData:
; Ожидать еще 10 "тиков"
; Îæèäàòü åùå 10 "òèêîâ"
dec ecx
; cmp ecx,0
jz NoMouse
; Проверить наличие идентификационного байта
; Ïðîâåðèòü íàëè÷èå èäåíòèôèêàöèîííîãî áàéòà
mov DX, bx
add DX, 5
in AL, DX
test AL, 1 ;Данные готовы?
test AL, 1 ;Äàííûå ãîòîâû?
jz WaitData
; Ввести данные
; Ââåñòè äàííûå
mov DX, bx
in AL, DX
NoMouse:
257,27 → 257,27
; in: esi -> COM_MOUSE_DATA struc, dx = base port (xF8h)
add edx, 5 ; xFDh
in al, dx
test al, 1 ; Данные готовы?
test al, 1 ; Äàííûå ãîòîâû?
jz .Error
; Ввести данные
; Ââåñòè äàííûå
sub edx, 5
in al, dx
; Сбросить старший незначащий бит
; Ñáðîñèòü ñòàðøèé íåçíà÷àùèé áèò
and al, 01111111b
 
; Определить порядковый номер принимаемого байта
; Îïðåäåëèòü ïîðÿäêîâûé íîìåð ïðèíèìàåìîãî áàéòà
cmp [esi+COM_MOUSE_DATA.MouseByteNumber], 2
ja .Error
jz .ThirdByte
jp .SecondByte
; Сохранить первый байт данных
; Ñîõðàíèòü ïåðâûé áàéò äàííûõ
.FirstByte:
test al, 1000000b ; Первый байт посылки?
test al, 1000000b ; Ïåðâûé áàéò ïîñûëêè?
jz .Error
mov [esi+COM_MOUSE_DATA.FirstByte], al
inc [esi+COM_MOUSE_DATA.MouseByteNumber]
jmp .EndMouseInterrupt
; Сохранить второй байт данных
; Ñîõðàíèòü âòîðîé áàéò äàííûõ
.SecondByte:
test al, 1000000b
jnz .Error
284,14 → 284,14
mov [esi+COM_MOUSE_DATA.SecondByte], al
inc [esi+COM_MOUSE_DATA.MouseByteNumber]
jmp .EndMouseInterrupt
; Сохранить третий байт данных
; Ñîõðàíèòü òðåòèé áàéò äàííûõ
.ThirdByte:
test al, 1000000b
jnz .Error
mov [esi+COM_MOUSE_DATA.ThirdByte], al
mov [esi+COM_MOUSE_DATA.MouseByteNumber], 0
; (Пакет данных от мыши принят полностью).
; Записать новое значение состояния кнопок мыши
; (Ïàêåò äàííûõ îò ìûøè ïðèíÿò ïîëíîñòüþ).
; Çàïèñàòü íîâîå çíà÷åíèå ñîñòîÿíèÿ êíîïîê ìûøè
mov al, [esi+COM_MOUSE_DATA.FirstByte]
mov ah, al
shr al, 3
302,7 → 302,7
movzx eax, al
mov [BTN_DOWN], eax
 
; Прибавить перемещение по X к координате X
; Ïðèáàâèòü ïåðåìåùåíèå ïî X ê êîîðäèíàòå X
mov al, [esi+COM_MOUSE_DATA.FirstByte]
shl al, 6
or al, [esi+COM_MOUSE_DATA.SecondByte]
311,7 → 311,7
movzx eax, ax
mov [MOUSE_X], eax
 
; Прибавить перемещение по Y к координате Y
; Ïðèáàâèòü ïåðåìåùåíèå ïî Y ê êîîðäèíàòå Y
mov al, [esi+COM_MOUSE_DATA.FirstByte]
and al, 00001100b
shl al, 4
327,8 → 327,8
jmp .EndMouseInterrupt
 
.Error:
; Произошел сбой в порядке передачи информации от
; мыши, обнулить счетчик байтов пакета данных
; Ïðîèçîøåë ñáîé â ïîðÿäêå ïåðåäà÷è èíôîðìàöèè îò
; ìûøè, îáíóëèòü ñ÷åò÷èê áàéòîâ ïàêåòà äàííûõ
 
mov [esi+COM_MOUSE_DATA.MouseByteNumber], 0
.EndMouseInterrupt:
340,9 → 340,9
align 4
 
struc COM_MOUSE_DATA {
; Номер принимаемого от мыши байта
; Íîìåð ïðèíèìàåìîãî îò ìûøè áàéòà
.MouseByteNumber db ?
; Трехбайтовая структура данных, передаваемая мышью
; Òðåõáàéòîâàÿ ñòðóêòóðà äàííûõ, ïåðåäàâàåìàÿ ìûøüþ
.FirstByte db ?
.SecondByte db ?
.ThirdByte db ?
/kernel/trunk/drivers/emu10k1x.asm
19,7 → 19,7
IRQ_LINE equ 0
 
 
;irq 0,1,2,8,12,13 недоступны
;irq 0,1,2,8,12,13 ­¥¤®áâ㯭ë
; FEDCBA9876543210
VALID_IRQ equ 1100111011111000b
ATTCH_IRQ equ 0000111010100000b
/kernel/trunk/drivers/ensoniq.asm
17,7 → 17,7
 
REMAP_IRQ equ 0
 
;irq 0,1,2,8,12,13 недоступны
;irq 0,1,2,8,12,13 íåäîñòóïíû
; FEDCBA9876543210
VALID_IRQ equ 1100111011111000b
ATTCH_IRQ equ 0000111010101000b
/kernel/trunk/drivers/fm801.asm
17,7 → 17,7
 
USE_COM_IRQ equ 0 ;make irq 3 and irq 4 available for PCI devices
 
;irq 0,1,2,8,12,13 недоступны
;irq 0,1,2,8,12,13 íåäîñòóïíû
; FEDCBA9876543210
VALID_IRQ equ 1100111011111000b
ATTCH_IRQ equ 0000111010100000b
/kernel/trunk/drivers/sis.asm
21,7 → 21,7
IRQ_LINE equ 0
 
 
;irq 0,1,2,8,12,13 недоступны
;irq 0,1,2,8,12,13 íåäîñòóïíû
; FEDCBA9876543210
VALID_IRQ equ 1100111011111000b
ATTCH_IRQ equ 0000111010100000b
/kernel/trunk/drivers/vt823x.asm
19,7 → 19,7
IRQ_LINE equ 0
 
 
;irq 0,1,2,8,12,13 недоступны
;irq 0,1,2,8,12,13 ­¥¤®áâ㯭ë
; FEDCBA9876543210
VALID_IRQ equ 1100111011111000b
ATTCH_IRQ equ 0000111010100000b