1: / ofunc = signal(sig, func); 2: / void (*func)(); 3: 4: rtt = 6 5: .globl _signal 6: .globl cerror 7: 8: _signal: 9: mov r5,-(sp) 10: mov sp,r5 11: mov 4(r5),r1 12: cmp r1,$NSIG 13: bhis 2f 14: mov 6(r5),r0 15: mov r1,0f 16: asl r1 17: mov dvect(r1),-(sp) 18: mov r0,dvect(r1) 19: mov r0,0f+2 20: beq 1f 21: bit $1,r0 22: bne 1f 23: asl r1 24: add $tvect,r1 25: mov r1,0f+2 26: 1: 27: sys 0; 9f 28: bes 3f 29: bit $1,r0 30: beq 1f 31: mov r0,(sp) 32: 1: 33: mov (sp)+,r0 34: mov (sp)+,r5 35: rts pc 36: 2: 37: mov $22.,r0 / EINVAL 38: 3: 39: jmp cerror 40: 41: NSIG = 0 42: tvect: 43: jsr r0,1f; NSIG=NSIG+1 44: jsr r0,1f; NSIG=NSIG+1 45: jsr r0,1f; NSIG=NSIG+1 46: jsr r0,1f; NSIG=NSIG+1 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: 64: 1: 65: mov r1,-(sp) 66: mov r2,-(sp) 67: mov r3,-(sp) 68: mov r4,-(sp) 69: sub $tvect+4,r0 70: asr r0 71: mov r0,-(sp) 72: asr (sp) 73: jsr pc,*dvect(r0) 74: tst (sp)+ 75: mov (sp)+,r4 76: mov (sp)+,r3 77: mov (sp)+,r2 78: mov (sp)+,r1 79: mov (sp)+,r0 80: rtt 81: .data 82: 9: 83: sys signal; 0:..; .. 84: .bss 85: dvect: .=.+[NSIG*2]