Mouse Port
Posted: Mon Mar 10, 2008 2:08 am
anybody has information about mouse port to use instructions like in al,mouseport etc. ? i tried to search google but could not find any
Code: Select all
#include <system.h>
//Mouse.inc by SANiK
//License: Use as you wish, except to cause damage
char mouse_cycle=0; //unsigned char
signed char mouse_byte[3], mouse_ex[3]; //signed char
signed char mouse_x=0; //signed char
signed char mouse_y=0; //signed char
int mouse_but_1=0;
int mouse_but_2=0;
int mm_n[3]={0,0,0,};
//Mouse functions
void mouse_handler(struct iregs *a_r) //struct regs *a_r (not used but just there)
{
switch(mouse_cycle)
{
case 0:
mouse_byte[0]=inportb(0x60);
mouse_cycle++;
break;
case 1:
mouse_byte[1]=inportb(0x60);
mouse_cycle++;
break;
case 2:
mouse_byte[2]=inportb(0x60);
mouse_x=mouse_byte[1];
mouse_y=mouse_byte[2];
mouse_but_1 = (mouse_byte[0] % 2);
mouse_but_2 = ((mouse_byte[0] % 4) - (mouse_byte[0] % 2)) / 2;
mouse_cycle=0;
mouse_ex[0] = mouse_byte[0];
mm_n[0]=1;
mouse_ex[1] = mouse_byte[1];
mm_n[1]=1;
mouse_ex[2] = mouse_byte[2];
mm_n[2]=1;
break;
}
}
inline void mouse_wait(char a_type) //unsigned char
{
unsigned int _time_out=100000; //unsigned int
if(a_type==0)
{
while(_time_out--) //Data
{
if((inportb(0x64) & 1)==1)
{
return;
}
}
return;
}
else
{
while(_time_out--) //Signal
{
if((inportb(0x64) & 2)==0)
{
return;
}
}
return;
}
}
inline void mouse_write(char a_write) //unsigned char
{
//Wait to be able to send a command
mouse_wait(1);
//Tell the mouse we are sending a command
outportb(0x64, 0xD4);
//Wait for the final part
mouse_wait(1);
//Finally write
outportb(0x60, a_write);
}
char mouse_read()
{
//Get's response from mouse
mouse_wait(0);
return inportb(0x60);
}
void mouse_install()
{
char _status; //unsigned char
//Enable the auxiliary mouse device
mouse_wait(1);
outportb(0x64, 0xA8);
//Enable the interrupts
mouse_wait(1);
outportb(0x64, 0x20);
mouse_wait(0);
_status=(inportb(0x60) | 2);
mouse_wait(1);
outportb(0x64, 0x60);
mouse_wait(1);
outportb(0x60, _status);
//Tell the mouse to use default settings
mouse_write(0xF6);
mouse_read(); //Acknowledge
//Enable the mouse
mouse_write(0xF4);
mouse_read(); //Acknowledge
//Setup the mouse handler
irq_install_handler(12, mouse_handler);
}
char get_mouse(int n)
{
if(mm_n[n]==1)
{
mm_n[n]=0;
return mouse_ex[n];
}
else
return 0;
}
The resistance is cominghmachine wrote:Kosovo is Serbia!!!
Code: Select all
//Wait to be able to send a command
mouse_wait(1);
//Tell the mouse we are sending a command
outb(0x64, 0xD4);
//Wait for the final part
mouse_wait(1);
//Finally write
outb(0x60, a_write);
}