|
|
1.1 root 1: #
2: # Copyright (c) 1979 Regents of the University of California
3: #
4: # char sccsid[] = "@(#)23case.s 4.1 10/10/80";
5: #
6: # CASE OPERATORS
7: #
8: _CASE1OP:
9: cvtbl (r10)+,r0
10: bneq l2401
11: cvtwl (r10)+,r0 #r0 has length of case table
12: l2401:
13: movaw (r10)[r0],r2 #r2 has pointer to cases
14: cvtwl (sp)+,r3 #r3 has case element to find
15: locc r3,r0,(r2) #find case element
16: beql caserr #case not found
17: offset:
18: mnegl r0,r0 #calc new lc
19: cvtwl (r2)[r0],r1
20: addl2 r1,r10
21: jmp (r8)
22: _CASE2OP:
23: cvtbl (r10)+,r0
24: bneq l2402
25: cvtwl (r10)+,r0 #r0 has length of case table
26: l2402:
27: movaw (r10)[r0],r1 #r1 has pointer to cases
28: movl r1,r2 #save base pointer
29: movzwl (sp)+,r3 #r3 has case element to find
30: l2403:
31: cmpw r3,(r1)+ #search for case
32: beqlu offset
33: sobgtr r0,l2403
34: brb caserr #not found
35: _CASE4OP:
36: cvtbl (r10)+,r0
37: bneq l2404
38: cvtwl (r10)+,r0 #r0 has length of case table
39: l2404:
40: movaw (r10)[r0],r1 #r1 has pointer to cases
41: movl r1,r2 #save base pointer
42: movl (sp)+,r3 #r3 has case element to find
43: l2405:
44: cmpl r3,(r1)+ #search for case
45: beqlu offset
46: sobgtr r0,l2405
47: caserr:
48: movw $ECASE,_perrno
49: jbr error
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.