summaryrefslogtreecommitdiff
path: root/driver/mouse.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-26 23:58:14 +0200
committerMiguel <m.i@gmx.at>2018-09-26 23:58:14 +0200
commitb86f48da7fc46934d576698bb4f16be9b2a7eaf9 (patch)
treeea42a72faeb406c303025b0c981a76e533a8b110 /driver/mouse.c
parent915791f6acedbb35db73216156c1baa790e384d9 (diff)
some bugfixes
Diffstat (limited to 'driver/mouse.c')
-rw-r--r--driver/mouse.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/driver/mouse.c b/driver/mouse.c
index 7ec5e68..cebafed 100644
--- a/driver/mouse.c
+++ b/driver/mouse.c
@@ -1,6 +1,9 @@
+#include "mouse.h"
+
+#include "ringbuffer.h"
+#include "interrupts.h"
#include "kernel/kernel.h"
#include "log.h"
-#include "mouse.h"
#include "driver/vesa.h"
//http://forum.osdev.org/viewtopic.php?t=10247
@@ -17,6 +20,8 @@ volatile int16_t mouse_x;
volatile int16_t mouse_y;
static volatile uint8_t mouse_a;
+static ringbuffer mouse_in;
+
uint8_t mouse_read();
void mouse_wait(uint8_t a_type) //unsigned char
@@ -67,8 +72,20 @@ int8_t mouse_get_y()
return mouse_y;
}
+uint32_t mouse_interrupt(uint32_t esp)
+{
+ uint8_t b=x86_inb(0x60);
+ ringbuffer_put(&mouse_in,b);
+ //klog("%d",b);
+ return esp;
+}
+
void mouse_init()
{
+
+ interrupt_register(INTERRUPT_MOUSE,&mouse_interrupt);
+ mouse_in=ringbuffer_init(1);// 4096 bytes ringbuffer;
+
mouse_x=mouse_y=0;
mouse_cycle=0;