; MIT License, Copyright (c) 2021 Marvin Borner %macro INT_REGISTER 1 dd int%1 %endmacro %macro INT_ERR 1 int%1: push %1 jmp int_common %endmacro %macro INT_NOERR 1 int%1: push 0 push %1 jmp int_common %endmacro %macro INT_SYSCALL 1 int%1: push 0 push %1 jmp int_common %endmacro extern int_handler int_common: cld pushad push ds push es push fs push gs mov ax, 0x10 mov ds, ax mov es, ax mov fs, ax mov gs, ax push esp call int_handler mov esp, eax pop gs pop fs pop es pop ds popad add esp, 8 iret INT_NOERR 0 INT_NOERR 1 INT_NOERR 2 INT_NOERR 3 INT_NOERR 4 INT_NOERR 5 INT_NOERR 6 INT_NOERR 7 INT_ERR 8 INT_NOERR 9 INT_ERR 10 INT_ERR 11 INT_ERR 12 INT_ERR 13 INT_ERR 14 INT_NOERR 15 INT_NOERR 16 INT_ERR 17 INT_NOERR 18 INT_NOERR 19 INT_NOERR 20 INT_NOERR 21 INT_NOERR 22 INT_NOERR 23 INT_NOERR 24 INT_NOERR 25 INT_NOERR 26 INT_NOERR 27 INT_NOERR 28 INT_NOERR 29 INT_ERR 30 INT_NOERR 31 INT_NOERR 32 INT_NOERR 33 INT_NOERR 34 INT_NOERR 35 INT_NOERR 36 INT_NOERR 37 INT_NOERR 38 INT_NOERR 39 INT_NOERR 40 INT_NOERR 41 INT_NOERR 42 INT_NOERR 43 INT_NOERR 44 INT_NOERR 45 INT_NOERR 46 INT_NOERR 47 INT_SYSCALL 128 INT_NOERR 129 global int_table int_table: INT_REGISTER 0 INT_REGISTER 1 INT_REGISTER 2 INT_REGISTER 3 INT_REGISTER 4 INT_REGISTER 5 INT_REGISTER 6 INT_REGISTER 7 INT_REGISTER 8 INT_REGISTER 9 INT_REGISTER 10 INT_REGISTER 11 INT_REGISTER 12 INT_REGISTER 13 INT_REGISTER 14 INT_REGISTER 15 INT_REGISTER 16 INT_REGISTER 17 INT_REGISTER 18 INT_REGISTER 19 INT_REGISTER 20 INT_REGISTER 21 INT_REGISTER 22 INT_REGISTER 23 INT_REGISTER 24 INT_REGISTER 25 INT_REGISTER 26 INT_REGISTER 27 INT_REGISTER 28 INT_REGISTER 29 INT_REGISTER 30 INT_REGISTER 31 INT_REGISTER 32 INT_REGISTER 33 INT_REGISTER 34 INT_REGISTER 35 INT_REGISTER 36 INT_REGISTER 37 INT_REGISTER 38 INT_REGISTER 39 INT_REGISTER 40 INT_REGISTER 41 INT_REGISTER 42 INT_REGISTER 43 INT_REGISTER 44 INT_REGISTER 45 INT_REGISTER 46 INT_REGISTER 47 INT_REGISTER 128 INT_REGISTER 129