diff --git a/monitor/monitor.asm b/monitor/monitor.asm index af2d994..4f149c4 100644 --- a/monitor/monitor.asm +++ b/monitor/monitor.asm @@ -5,6 +5,39 @@ invoke_monitor: cmp [0x000003FC], monitor_vsync_handler ifz jmp invoke_monitor_aleady_in_monitor + push r31 + push r30 + push r29 + push r28 + push r27 + push r26 + push r25 + push r24 + push r23 + push r22 + push r21 + push r20 + push r19 + push r18 + push r17 + push r16 + push r15 + push r14 + push r13 + push r12 + push r11 + push r10 + push r9 + push r8 + push r7 + push r6 + push r5 + push r4 + push r3 + push r2 + push r1 + push r0 + ; set the vsync handler to our own and reenable interrupts mov [MONITOR_OLD_VSYNC_HANDLER], [0x000003FC] mov [0x000003FC], monitor_vsync_handler @@ -61,6 +94,39 @@ exit_monitor: call enable_cursor + pop r0 + pop r1 + pop r2 + pop r3 + pop r4 + pop r5 + pop r6 + pop r7 + pop r8 + pop r9 + pop r10 + pop r11 + pop r12 + pop r13 + pop r14 + pop r15 + pop r16 + pop r17 + pop r18 + pop r19 + pop r20 + pop r21 + pop r22 + pop r23 + pop r24 + pop r25 + pop r26 + pop r27 + pop r28 + pop r29 + pop r30 + pop r31 + ret invoke_monitor_aleady_in_monitor: