diff --git a/Asuro.iso b/Asuro.iso index 361858f9..356aa785 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 7f0632de..09925898 100755 Binary files a/bin/kernel.bin and b/bin/kernel.bin differ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 7f0632de..09925898 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 181fcac3..d51b9e1b 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 051cab51..fca8b6bd 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 14c0e539..b3051727 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index a86a2ba5..0589db07 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/mouse.ppu b/lib/mouse.ppu index e4466003..0431f89c 100644 Binary files a/lib/mouse.ppu and b/lib/mouse.ppu differ diff --git a/src/driver/hid/PS2_MOUSE_ISR.pas b/src/driver/hid/PS2_MOUSE_ISR.pas deleted file mode 100644 index eb6179a2..00000000 --- a/src/driver/hid/PS2_MOUSE_ISR.pas +++ /dev/null @@ -1,189 +0,0 @@ -{ ************************************************ - * Asuro - * Unit: Drivers/ISR45 - * Description: Mouse ISR (IRQ12) - ************************************************ - * Author: K Morris - * Contributors: - ************************************************ } - -unit PS2_MOUSE_ISR; - -interface - -uses - tracer, - util, - console, - isr_types, - isrmanager, - IDT; - -procedure register(); -procedure hook(hook_method : uint32); -procedure unhook(hook_method : uint32); - -implementation - -var - Hooks : Array[1..MAX_HOOKS] of pp_hook_method; - Cycle : uint32 = 0; - Mouse_Byte : Array[0..2] of uint8; - Packet : uint32; - Registered : Boolean = false; - -procedure mouse_wait(w_type : uint8); -var - timeout : uint32; - -begin - push_trace('isr44.mouse_wait'); - timeout:= 100000; - if (w_type = 0) then begin - while (timeout > 0) do begin - if ((inb($64) AND $01) = $01) then break; - timeout:= timeout-1; - end; - end else begin - while (timeout > 0) do begin - if ((inb($64) AND 2) = 0) then break; - timeout := timeout - 1; - end; - end; - pop_trace; -end; - -procedure mouse_write(value : uint8); -begin - push_trace('isr44.mouse_write'); - mouse_wait(1); - outb($64, $D4); - mouse_wait(1); - outb($60, value); - pop_trace; -end; - -function mouse_read : uint8; -begin - push_trace('isr44.mouse_read'); - mouse_wait(0); - mouse_read:= inb($60); - pop_trace; -end; - -procedure Main(); -var - i : integer; - b : byte; - -begin - {push_trace('isr44.main'); - b:= mouse_read; - push_trace('isr44.main1'); - if Cycle = 0 then begin - push_trace('isr44.main2'); - if (b AND $08) = $08 then begin - push_trace('isr44.main3'); - Mouse_Byte[Cycle]:= b; - push_trace('isr44.main4'); - inc(Cycle); - end; - end else begin - push_trace('isr44.main5'); - Mouse_Byte[Cycle]:= b; - push_trace('isr44.main6'); - inc(Cycle); - end; - push_trace('isr44.main7'); - if Cycle > 2 then begin - Cycle:= 0; - push_trace('isr44.main8'); - // console.writestring('Packet[0]: '); - // console.writeintln(Mouse_Byte[0]); - // console.writestring('Packet[1]: '); - // console.writeintln(Mouse_Byte[1]); - // console.writestring('Packet[2]: '); - // console.writeintln(Mouse_Byte[2]); - push_trace('isr44.main9'); - Packet:= (Mouse_Byte[0] SHL 24) OR (Mouse_Byte[1] SHL 16) OR (Mouse_Byte[2] SHL 8) OR ($FF); - push_trace('isr44.main10'); - for i:=0 to MAX_HOOKS-1 do begin - if uint32(Hooks[i]) <> 0 then Hooks[i](void(Packet)); - end; - push_trace('isr44.main11'); - end; - push_trace('isr44.main12'); - outb($20, $20); - outb($A0, $20); - pop_trace;} -end; - -procedure register(); -var - status : uint8; - bm : PBitMask; - ak : uint8; - -begin - push_trace('isr44.register'); - if not Registered then begin - Registered:= true; - memset(uint32(@Hooks[0]), 0, sizeof(pp_hook_method)*MAX_HOOKS); - mouse_wait(1); - outb($64, $A8); - mouse_wait(1); - outb($64, $20); - mouse_wait(0); - status:= inb($60) OR $02; - mouse_wait(1); - outb($64, $60); - mouse_wait(1); - outb($60, status); - mouse_write($F6); - mouse_read(); - mouse_write($F4); - mouse_read(); - isrmanager.registerISR(44, @Main); - //IDT.set_gate(44, uint32(@Main), $08, ISR_RING_0); - end; - pop_trace; -end; - -procedure hook(hook_method : uint32); -var - i : uint32; - cont : boolean; - -begin - push_trace('isr44.hook'); - cont:= true; - for i:=0 to MAX_HOOKS-1 do begin - if uint32(Hooks[i]) = hook_method then begin - cont:= false; - break; - end; - end; - if cont then begin - for i:=0 to MAX_HOOKS-1 do begin - if uint32(Hooks[i]) = 0 then begin - Hooks[i]:= pp_hook_method(hook_method); - break; - end; - end; - end; - pop_trace; -end; - -procedure unhook(hook_method : uint32); -var - i : uint32; -begin - push_trace('isr44.unhook'); - for i:=0 to MAX_HOOKS-1 do begin - If uint32(Hooks[i]) = hook_method then Hooks[i]:= nil; - break; - end; - pop_trace; -end; - -end. \ No newline at end of file diff --git a/src/driver/hid/mouse.pas b/src/driver/hid/mouse.pas index bce8a510..5f6fae7a 100644 --- a/src/driver/hid/mouse.pas +++ b/src/driver/hid/mouse.pas @@ -152,22 +152,23 @@ begin if Packet.y_sign then y32:= y32 OR $FFFFFF00; if x32 <> 0 then begin if x32 > 0 then begin - inc(Current.x); + inc(Current.x, (Packet.x_movement div 4)); end else begin - Dec(Current.x); + Dec(Current.x, (Packet.x_movement div 4)); end; end; if y32 <> 0 then begin - if y32 > 0 then begin - inc(Current.y); + if y32 < 0 then begin + inc(Current.y, (Packet.y_movement div 4)); end else begin - dec(Current.y) + dec(Current.y, (Packet.y_movement div 4)) end; end; if Current.x < 0 then Current.x:= 0; if Current.y < 0 then Current.y:= 0; if Current.x > 1279 then Current.x:= 1279; if Current.y > 1023 then Current.y:= 1023; + DrawCursor; end; {console.writestring('Packet[0]: '); console.writeintln(Mouse_Byte[0]); @@ -176,8 +177,6 @@ begin console.writestring('Packet[2]: '); console.writeintln(Mouse_Byte[2]);} Cycle:= 0; - - DrawCursor; end; pop_trace; end; diff --git a/src/kernel.pas b/src/kernel.pas index 816688eb..9de3d301 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -246,7 +246,7 @@ begin tracer.push_trace('kmain.DEVDRV'); console.outputln('KERNEL', 'DEVICE DRIVERS: INIT BEGIN.'); keyboard.init(keyboard_layout); - mouse.init(); + //mouse.init(); testdriver.init(); E1000.init(); IDE.init();