.define _begsig .globl ___vectab, __M mtype = 2 | _M+mtype = &_M.m_type _begsig: push ax | after interrupt, save all regs push bx push cx push dx push si push di push bp push ds push es mov bx,sp mov bx,18(bx) | bx = signal number mov ax,bx | ax = signal number dec bx | __vectab[0] is for sig 1 add bx,bx | pointers are two bytes on 8088 mov bx,___vectab(bx) | bx = address of routine to call push __M+mtype | push status of last system call push ax | func called with signal number as arg call (bx) back: pop ax | get signal number off stack pop __M+mtype | restore status of previous system call pop es | signal handling finished pop ds pop bp pop di pop si pop dx pop cx pop bx pop ax add sp,*2 | remove signal number from stack iret