INT 33,18 - Set alternate subroutine call mask and address
AX = 18h DX = offset to function CX = user interrupt mask: │F-8│7│6│5│4│3│2│1│0│ user interrupt mask in CX │ │ │ │ │ │ │ │ └─── alt key pressed during event │ │ │ │ │ │ │ └──── ctrl key pressed during event │ │ │ │ │ │ └───── shift key pressed during event │ │ │ │ │ └────── right button up event │ │ │ │ └─────── right button down event │ │ │ └──────── left button up event │ │ └───────── left button down event │ └────────── cursor moved └──────────── unused - entire mask is set to zero when INT 33,0 is called - up to three handlers may be defined with this call - mask should be cleared before program exit - when handler is called it receives parameters in the following registers: AX = condition mask causing call CX = horizontal cursor position DX = vertical cursor position DI = horizontal counts SI = vertical counts DS = mouse driver data segment BX = button state: │F-2│1│0│ │ │ └─── left button (1 = pressed) │ └──── right button (1 = pressed) └────── unused