1: / C library -- signal 2: 3: / signal(n, 0); /* default action on signal(n) */ 4: / signal(n, odd); /* ignore signal(n) */ 5: / signal(n, label); /* goto label on signal(n) */ 6: / returns old label, only one level. 7: 8: rtt = 6 9: .signal = 48. 10: .globl _signal, cerror 11: 12: _signal: 13: mov r5,-(sp) 14: mov sp,r5 15: mov 4(r5),r1 16: cmp r1,$NSIG 17: bhis 2f 18: mov 6(r5),r0 19: mov r1,0f 20: asl r1 21: mov dvect(r1),-(sp) 22: mov r0,dvect(r1) 23: mov r0,0f+2 24: beq 1f 25: bit $1,r0 26: bne 1f 27: asl r1 28: add $tvect,r1 29: mov r1,0f+2 30: 1: 31: sys 0; 9f 32: bes 3f 33: bit $1,r0 34: beq 1f 35: mov r0,(sp) 36: 1: 37: mov (sp)+,r0 38: mov (sp)+,r5 39: rts pc 40: 2: 41: mov $22.,r0 / EINVAL 42: 3: 43: jmp cerror 44: 45: NSIG = 0 46: tvect: 47: jsr r0,1f; NSIG=NSIG+1 48: jsr r0,1f; NSIG=NSIG+1 49: jsr r0,1f; NSIG=NSIG+1 50: jsr r0,1f; NSIG=NSIG+1 51: jsr r0,1f; NSIG=NSIG+1 52: jsr r0,1f; NSIG=NSIG+1 53: jsr r0,1f; NSIG=NSIG+1 54: jsr r0,1f; NSIG=NSIG+1 55: jsr r0,1f; NSIG=NSIG+1 56: jsr r0,1f; NSIG=NSIG+1 57: jsr r0,1f; NSIG=NSIG+1 58: jsr r0,1f; NSIG=NSIG+1 59: jsr r0,1f; NSIG=NSIG+1 60: jsr r0,1f; NSIG=NSIG+1 61: jsr r0,1f; NSIG=NSIG+1 62: jsr r0,1f; NSIG=NSIG+1 63: jsr r0,1f; NSIG=NSIG+1 64: jsr r0,1f; NSIG=NSIG+1 65: jsr r0,1f; NSIG=NSIG+1 66: jsr r0,1f; NSIG=NSIG+1 67: 68: 1: 69: mov r1,-(sp) 70: mov r2,-(sp) 71: mov r3,-(sp) 72: mov r4,-(sp) 73: sub $tvect+4,r0 74: asr r0 75: mov r0,-(sp) 76: asr (sp) 77: jsr pc,*dvect(r0) 78: tst (sp)+ 79: mov (sp)+,r4 80: mov (sp)+,r3 81: mov (sp)+,r2 82: mov (sp)+,r1 83: mov (sp)+,r0 84: rtt 85: .data 86: 9: 87: sys .signal; 0:..; .. 88: .bss 89: dvect: .=.+[NSIG*2]