Какие есть тонкости по настройки?
Клавиатуру не могу заставить работать. IRQ не генерируется.
Использую PIC. Работаю в защищенном режиме.
Код:
// Инициализация контроллера 8042
procedure PS2Init;
var b:Byte;
begin
PS2Flush;
PS2Command(PS2CMD_ReadCFG);
b:=IOReadB($60);
b:=(b and $8C) or $43; // Включаем IRQ для клавы и мыши.
PS2Command(PS2CMD_WriteCFG);
IOWriteB($60,b);
end;
procedure EnableInt;
assembler;
asm
IN AL,70h
AND AL,07Fh
OUT 70h,AL
STI
IN AL, 21h
MOV AL, 0FDh // Включаем только клаву
OUT 21h, AL
RET
end;
procedure InitPICs;
// Иницилизируем контролеры прерываний PIC 8259A.
begin
asm
MOV DX, MASTER8259A // Ведущий
MOV AH, 20h //Номер начального прерывания для ведущего контроллера 08 стандартное для реального режима
// Для защищенного Я выбрал 20h
MOV AL,11h //ICW1 бит 0=1 сигнализирует, что будет послан ICW4
OUT DX,AL
MOV AL,AH //ICW2 - начальный номера прерываний биты 2-0=0.
INC DX
OUT DX,AL
MOV AL,4 //ICW3 ведущий 00000100 - ведомый подключен ко второй линии
OUT DX,AL
MOV AL,1 //ICW4 режим 86/88
OUT DX,AL
MOV DX, SLAVE8259A // Ведомый
MOV AH, 28h //Номер начального прерывания для ведомого контроллера 70h стандартное для реального режима
// Для защищенного Я выбрал 28h
MOV AL,11h //ICW1 бит 0=1 сигнализирует, что будет послан ICW4
OUT DX,AL
MOV AL,AH //ICW2 - начальный номера прерываний биты 2-0=0.
INC DX
OUT DX,AL
MOV AL,2 //ICW3 ведомый, ведомый подключен ко второй линии ведущего
OUT DX,AL
MOV AL,1 //ICW4 режим 86/88
OUT DX,AL
RET
end;
end;