; Bootloader %include "boot.asm" section KERNEL follows=BOOTSECTOR vstart=1000h %macro mod 2 push ax push cx mov cx, %2 xor dx, dx mov ax, %1 div cx pop cx pop ax %endmacro main: call gfx_init_vga13 ; Important for mouse stuff definitely jmp 0x000:.setcs .setcs: call mouse_initialize call mouse_enable lp: call update_mouse jmp lp jmp $ ; Halt update_mouse: cli mov bx, [mouseX] mov ax, [mouseY] sti mov cx, [lastMouseX] mov dx, [lastMouseY] push bx push ax xor bx, cx jnz .update xor ax, dx jnz .update pop ax pop bx ret .update: pop ax pop bx call clear_last_mouse call render_mouse mov [lastMouseX], bx mov [lastMouseY], ax ret ; cx = lastMouseX ; dx = lastMouseY clear_last_mouse: pusha mov al, dl mov dx, 11 mov bl, 18 mov bh, 0 call gfx_rect popa ret ; bx = mouseX ; ax = mouseY render_mouse: pusha mov dx, 0 mov cx, 320 mul cx add ax, bx mov di, ax mov si, gfxd_cursor mov ax, 11 mov bl, 18 call _gfx_blit0 popa ret ; Libs %include "print_util.asm" %include "mouse_util.asm" ;%include "time_util.asm" %include "gfx_util.asm" ; Data HELLO_WORLD: db 'Hello, world! :D', 0 No: db 'No.', 0 lastMouseX: dw 0 lastMouseY: dw 0 %include "gfx/gfxd_cursor.asm"