Add original unix v6
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
/ C library -- signal
|
||||
|
||||
/ signal(n, 0); /* default action on signal(n) */
|
||||
/ signal(n, odd); /* ignore signal(n) */
|
||||
/ signal(n, label); /* goto label on signal(n) */
|
||||
/ returns old label, only one level.
|
||||
|
||||
rtt = 6
|
||||
signal = 48.
|
||||
.globl _signal, cerror
|
||||
|
||||
_signal:
|
||||
mov r5,-(sp)
|
||||
mov sp,r5
|
||||
mov 4(r5),r1
|
||||
cmp r1,$NSIG
|
||||
bhis 2f
|
||||
mov 6(r5),r0
|
||||
mov r1,0f
|
||||
asl r1
|
||||
mov dvect(r1),-(sp)
|
||||
mov r0,dvect(r1)
|
||||
mov r0,0f+2
|
||||
beq 1f
|
||||
bit $1,r0
|
||||
bne 1f
|
||||
asl r1
|
||||
asl r1
|
||||
add $tvect,r1
|
||||
mov r1,0f+2
|
||||
1:
|
||||
sys 0; 9f
|
||||
bes 3f
|
||||
bit $1,r0
|
||||
beq 1f
|
||||
mov r0,(sp)
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
mov (sp)+,r5
|
||||
rts pc
|
||||
2:
|
||||
mov $22.,r0 / EINVAL
|
||||
clr -(sp)
|
||||
3:
|
||||
tst (sp)+
|
||||
jmp cerror
|
||||
|
||||
NSIG = 0
|
||||
tvect:
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
mov r0,-(sp); mov dvect+[NSIG*2],r0; br 1f; NSIG=NSIG+1
|
||||
1:
|
||||
mov r1,-(sp)
|
||||
mov r2,-(sp)
|
||||
mov r3,-(sp)
|
||||
mov r4,-(sp)
|
||||
jsr pc,(r0)
|
||||
mov (sp)+,r4
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r2
|
||||
mov (sp)+,r1
|
||||
mov (sp)+,r0
|
||||
rtt
|
||||
.data
|
||||
9:
|
||||
sys signal; 0:..; ..
|
||||
.bss
|
||||
dvect: .=.+[NSIG*2]
|
||||
Reference in New Issue
Block a user