From cf09c58448023a44dcb452dc331efeadd8b1f27e Mon Sep 17 00:00:00 2001 From: Arne <78976058+4rneee@users.noreply.github.com> Date: Sun, 24 Nov 2024 17:58:19 +0100 Subject: add interrupt handler (#2) --- src/main.asm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src') diff --git a/src/main.asm b/src/main.asm index ff509ed..548aaac 100644 --- a/src/main.asm +++ b/src/main.asm @@ -18,6 +18,11 @@ section .data timespec dq 0 dq 250000000 + sigaction dq 0 ; sa_handler + dq 0 ; sa_flags + dq 0 ; sa_restorer + dq 0 ; sa_mask + section .rodata ; width and height of the playable area ; (without the borders) @@ -227,8 +232,24 @@ _loop_through_snake: _loop_return: ret +_set_interrupt_handler: + ; set sa_handler and sa_flags + lea rax, [exit] + mov [sigaction], rax + mov qword [sigaction + 8], 0x04000000 ; SA_RESTORER + + mov rax, 0xD ; rt_sigaction + mov rdi, 2 ; SIGINT + lea rsi, [sigaction] + xor rdx, rdx + mov r10, 8 ; sizeof(sigset_t) + syscall + + ret + _start: call set_terminal_options + call _set_interrupt_handler call clear_screen call draw_border call hide_cursor -- cgit 1.4.1