마우스 드라이버를 사용하지 않고 : PS2 마우스 (메인 보드 BIOS에서 USB lagacy를 사용할 수있는 USB 마우스에 추가)를 사용하려면 BIOS 인터럽트 15h AX = 0C20? h를 사용하고 싶습니다. Cutemouse처럼 irq 처리기가 있지만 TSR을 빌드하지 않아도됩니다.
그러나이 IRQ 핸들러는 약간의 수정이 필요하므로 마우스 값을 알려진 램 위치에 저장하기위한 지침을 추가해야만 메인 루틴이 마우스 움직임을 얻을 수 있고 이 위치에서 마우스 클릭.
추가 메인 루틴은 마우스 포인터를 프레임 버퍼 자체에 그려야하므로 우리가 사용하는 비디오 모드에 따라 위치의 주소를 계산해야합니다 (4,8,15,16,24 또는 픽셀 당 32 비트 및 스캔 라인의 길이와 컬러 필드 RGB 또는 BGR의 위치).
(마우스 포인터 그리기없이)는 자신의 PS2 마우스 핸들러를 사용하기위한
예 :
; main routine
call CHECKPS2
jc NOMOUSE
call PS2ON
jc NOMOUSE
; -------------------
; place your code here
; -------------------
call PS2OFF
mov ax, 0C201h ; Reset PS2
int 15h
NOMOUSE:
; -------------------
; sub routines
; -------------------
checkPS2:
int 11h ; get equipment list
test al, 3
jz noPS2 ; jump if PS/2-Mouse not indicated
mov bh,3
mov ax, 0C205h
int 15h ; initialize mouse, bh=datasize
jc noPS2
mov bh,3
mov ax, 0C203h
int 15h ; set mouse resolution bh
jc noPS2
mov ax, cs
mov es, ax
mov bx, OFFSET PS2dummy
mov ax, 0C207h
int 15h ; mouse, es:bx=ptr to handler
jc noPS2
xor bx, bx
mov es, bx ; mouse, es:bx=ptr to handler
mov ax, 0C207h
int 15h
ret
noPS2:
stc
ret
PS2dummy:
retf
;---------------------------------------------------------
enablePS2:
call disablePS2
mov ax, cs
mov es, ax
mov bx, OFFSET IRQhandler
mov ax, 0C207h ; es:bx=ptr to handler
int 15h
mov bh,1 ; set mouse on
mov ax, 0C200h
int 15h
ret
;-------------------------------
disablePS2:
xor bx, bx ; set mouse off
mov ax, 0C200h
int 15h
xor bx, bx
mov es, bx
mov ax, 0C207h ; es:bx=ptr to handler
int 15h
ret
;---------------------------------------------------------------------------
IRQhandler:
assume ds:nothing,es:nothing
cld
push ds
push es
pusha
mov ax, cs
mov ds, ax
mov bp,sp
mov al,[bp+24+6] ; buttons
mov bl,al
shl al,3 ; CF=Y sign bit
sbb ch,ch ; signed extension 9->16 bit
cbw ; extend X sign bit
mov al,[bp+24+4] ; AX=X movement
mov cl,[bp+24+2] ; CX=Y movement
xchg bx,ax
neg cx ; reverse Y movement
popa
pop es
pop ds
retf
가 INT의 33H에 대한 몇 가지 문서가 있습니다 http://stanislavs.org/helppc/int_33.html 및 http://www.computing.dcu.ie/~ray/teaching/CA296/notes/ca296-mouse.pdf 사용하는 비디오 모드는 무엇입니까? – osgx
관련 인터럽트 기능은 http://www.ctyme.com/intr/int-33.htm에서 설명해야합니다. – Michael
MS-DOS 자체는 인터럽트 33h에 대해 알지 못합니다. 인터럽트를 사용하려면 MS-DOS 시스템에 마우스 드라이버를 설치해야합니다. DOS 에뮬레이터가 인터럽트를 지원하지 않을 수도 있습니다. 문서는 Michael의 코멘트 링크를 참조하십시오. –