ALRIGHTY, so I have been working on assembly long enough to understand decent code.
I have been trying to get a mouse up w/o int 33h mainly because there is no 33h in VMware or Bochs (emulators w/o MS-DOS).
Does my code seem right? I followed OSDev Wiki and Cosmos c#
;==================================== ;#Handles the mouse routines # ; # ;#TODO: Find a way to make it so # ;# the mouse_wait_signal times out # ;==================================== mouse_initalize: ;first enable IRQ12 mov al, 0xA8 out 0x64, al ;wait for signal call mouse_wait_signal ;next enable interrupt mov al, 0x20 ;command out 0x64, al ;wait for data call mouse_wait_data ;get data in al, 0x60 mov [mouse_status], al ;wait for more signal call mouse_wait_signal ;command mov al, 0x60 out 0x64, al ;wait le sig call mouse_wait_signal ;set the status in al, 0x60 mov [mouse_status], al ;finnaly enable mouse ;---DEFAULT----- mov al, 0xF6 call mouse_write call mouse_read ;acknowlage ;---DEFAULT----- ;---ENABLE------ mov al, 0xF4 call mouse_write call mouse_read ;acknowlage ;---ENABLE------ ret ;------------------------------------ ;Waits for signal from mouse port mouse_wait_signal: ;save prev al mov [.buffer], al .a1:;jump into this loop until we rec a signal in al, 0x64 cmp al, 0 je .a1 ;loop stoped meaning we have a signal mov al, [.buffer] ret .buffer db 0x00 ;------------------------------------ ;Waits for data signal from port 0x64 mouse_wait_data: ;save prev al mov [.buffer], al .a1:;jump into this loop until we rec a signal in al, 0x64 cmp al, 1 jne .a1 ;loop stoped meaning we have a signal mov al, [.buffer] ret .buffer db 0x00 ;------------------------------------ ;Writes to the mouse ;IN: AL = cmd mouse_write: ;save prev al mov [.buffer], al ;wait,send1,wait,sendcmd call mouse_wait_signal mov al, 0xD4 out 0x64, al call mouse_wait_signal mov al, [.buffer] out 0x60, al ;loop stoped meaning we have a signal mov al, [.buffer] ret .buffer db 0x00 ;------------------------------------ ;Reads the mouse ;RET: AL = data mouse_write: call mouse_wait_data in al, 0x60 ret ;===VARIABLES======================== mouse_status db 0x00