; MOUSE.ASM

;MOUSE.ASM
; Biblioteka funkcji obsługi myszy w
; standardzie Microsoft - przerwanie 33h.
;
;Marcin Kłos

;Dyrektywa .386 umożliwia korzystanie z
;instrukcji specyficznych dla procesora 80386.
;Jest to konieczne do korzystania z trybu FLAT.
.386
.MODEL flat , C

.CODE
;Deklaracje funkcji publicznych - dostępnych
;z poza tego pliku.
PUBLIC init_mouse
PUBLIC num_of_buttons
PUBLIC show_mouse
PUBLIC hide_mouse
PUBLIC get_mouseX
PUBLIC get_mouseY
PUBLIC get_buttons

;Definicje funkcji
                       
;init_mouse:      
;Funkcja sprawdza, czy mysz jest dostępna.     
;Zwraca 0, jeżeli nie lub inną wartość, jeżeli tak.
init_mouse PROC NEAR                            
       mov AX,0                                
       int 33h                                 
       ret                                     
init_mouse ENDP
                                                     
;num_of_buttons:
;Zwraca ilość przycisków w myszy.
num_of_buttons PROC NEAR                        
       mov AX,0                                
       int 33h                                 
       mov AX,BX                               
       ret                                     
num_of_buttons ENDP                             
                                                     
;show_mouse
;Wyświetla kursor myszy.
show_mouse PROC NEAR             
       mov AX,1                 
       int 33h                  
       ret                      
show_mouse ENDP                  
                            
;hide_mouse
;Gasi kursor myszy.            
hide_mouse PROC NEAR   
       mov AX,2
       int 33h        
       ret            
hide_mouse ENDP    
                        
;get_mouseX 
;Zwraca poziomą współrzędną położenia
;kursora myszy. W trybie tekstowym 25x80
;należy podzielić tę wartość przez 8.
get_mouseX PROC NEAR                 
       mov AX,3                     
       int 33h                      
       mov AX,CX                    
       ret                          
get_mouseX ENDP                      
                                          
;get_mouseY
;Zwraca pionową współrzędną położenia
;kursora myszy. W trybie tekstowym 25x80
;należy podzielić tę wartość przez 8.
get_mouseY PROC                      
       mov AX,3                     
       int 33h
       mov AX,DX                    
       ret       
get_mouseY ENDP
                   
;get_buttons  
;Zwraca informacje o stanie przycisków: 
; bit 0 - lewy                          
; bit 1 - prawy                         
; bit 2 - trzeci (najczęściej środkowy).
;Bit ustawiony oznacza przycisk wciśnięty.
;Informacje o poszczególnych przyciskach 
;możemy uzyskać używając masek zdefiniowanych
;w mouse.h - patrz użycie tej funkcji w demo.cc.
get_buttons PROC                                
       mov AX,3                                
       int 33h                                 
       mov AX,BX                               
       ret
get_buttons ENDP

END

Stronę opracował Michał Szulowski