fox32rom/vsync.asm

44 lines
707 B
NASM

; vsync interrupt routine
system_vsync_handler:
add rsp, 4
push r0
push r1
push r2
push r3
push r4
push r5
push r6
push r7
call mouse_update
call keyboard_update
cmp.8 [UPDATE_ICON], 0
ifnz call icon_update
; check if monitor should be started
cmp r0, 0
ifnz jmp system_vsync_handler_breakpoint
pop r7
pop r6
pop r5
pop r4
pop r3
pop r2
pop r1
pop r0
reti
system_vsync_handler_breakpoint:
pop r7
pop r6
pop r5
pop r4
pop r3
pop r2
pop r1
pop r0
; breakpoint handler expects that there is an extra 4 bytes on the stack
sub rsp, 4
jmp system_breakpoint_handler