8042 Keyboards's Micro Controller (From IBM Technical Reference Manual)
8042 Keyboards's Micro Controller (From IBM Technical Reference Manual)
Keyboard Commands
; Keyboard Commands KB_MENU EQU KB_ENABLE EQU KB_MAKEBREAK EQU KB_ECHO EQU KB_RESET EQU KB_LED_CMD EQU ; Keyboard responses KB_OK EQU KB_ACK EQU KB_OVERRUN EQU KB_RESEND EQU KB_BREAK EQU KB_FA EQU KB_FE EQU KB_PR_LED EQU
;**************************************************************** ;INITKBD ; This procedure intializes the 8042 ;**************************************************************** INITKBD PROC PUSH PUSH PUSH KBD1: SUB IN TEST LOOPNZ MOV OUT KBD2: SUB IN TEST LOOPZ IN CMP JNE MOV OUT KBD3: SUB IN TEST LOOPZ IN CMP JNE FAR AX DX CX CX, CX AL, STATUS_PORT AL, INPT_BUF_FULL KBD1 AL, 0AAH KBD_CMD_BUF, AL CX, CX AL, STATUS_PORT AL, OUT_BUF_FULL KBD2 AL, KBD_OUT_BUF AL, 055H KBDF AL, 0ABH KBD_CMD_BUF, AL CX, CX AL, STATUS_PORT AL, OUT_BUF_FULL KBD3 AL, KBD_OUT_BUF AL, 000H KBDF ; wait for input buffer empty
;Display Interface test results ;Should be 00 ;Send command byte ;Wait until input buffer ;is not full ;Send command byte
KBD4:
MOV AL, 060H OUT KBD_CMD_BUF, AL SUB CX, CX IN AL, STATUS_PORT TEST AL, INPT_BUF_FULL LOOPNZ KBD4 MOV OUT AL, 01101001B KBD_DATA_BUF, AL CX, CX AL, STATUS_PORT AL, INPT_BUF_FULL KBD5 AL, 0FFH KBD_DATA_BUF,AL DLY1 CX, CX AL, STATUS_PORT AL, OUT_BUF_FULL KBD6 AL, KBD_OUT_BUF AL, 0EEH KBD_DATA_BUF,AL DLY1
KBD5:
KBD6:
KBD7:
CX, CX AL, STATUS_PORT AL, OUT_BUF_FULL KBD7 AL, KBD_OUT_BUF DLY1 AL, 0EEH KBDF AL, 0F4H KBD_DATA_BUF, AL CX, CX AL, STATUS_PORT AL, OUT_BUF_FULL KBD8 AL, KBD_OUT_BUF CX DX AX
KBD8:
KBDF:
INITKBD
;******************************************** C8042 PROC FAR OUT STATUS_PORT, AL C42: SUB IN TEST LOOPNZ RET ENDP CX, CX AL, STATUS_PORT AL, INPT_BUF_FULL C42
C8042