|
|
1.1 root 1: #
2: # 02relset.s
3: #
4: # RELATIONALS ON SETS
5: #
6: _RELT:
7: cvtbl (r10)+,r5 #r5 has jump opcode
8: cvtwl (r10)+,r1 #r1 has comparison length (bytes)
9: movl r1,r4 #r4 has stack length
10: blbc r4,l0211
11: incl r4
12: l0211:
13: addl3 sp,r4,r3 #r3 has addr of lower operand
14: addl2 r3,r4 #r4 points to cleared stack
15: ashl $1,r5,r5 #maintain compatability
16: jsb *settab(r5) #calc condition, return boolean in r0
17: movl r4,sp #reset stack
18: cmpl r5,$20 #check for branch
19: bgtr l0212
20: movw r0,-(sp) #put boolean on stack
21: jmp (r8)
22: l0212:
23: tstl r0
24: beql l0213
25: addl2 $2,r10 #continue on true
26: jmp (r8)
27: l0213:
28: cvtwl (r10),r0 #skip on false
29: addl2 r0,r10
30: jmp (r8)
31:
32: .align 1
33: settab: #condition code branch table
34: .long seteq #generate boolean answer
35: .long setne
36: .long setlt
37: .long setgt
38: .long setle
39: .long setge
40: .long seteq #branch on condition false
41: .long setne
42: .long setlt
43: .long setgt
44: .long setle
45: .long setge
46:
47: setlt:
48: moval 4(sp),r2 #skip over return address
49: ashl $-1,r1,r1
50: l0214:
51: bicw3 (r2),(r3),r0
52: bneq false
53: bicw2 (r3)+,(r2)+
54: bneq l0216 #need only check <= for remainder of set
55: sobgtr r1,l0214
56: false:
57: clrl r0
58: rsb
59: setle:
60: moval 4(sp),r2
61: ashl $-1,r1,r1
62: l0215:
63: bicw2 (r2)+,(r3)+
64: bneq false
65: l0216:
66: sobgtr r1,l0215
67: true:
68: movl $1,r0
69: rsb
70: seteq:
71: cmpc3 r1,(r3),4(sp)
72: beql true
73: clrl r0
74: rsb
75: setne:
76: cmpc3 r1,(r3),4(sp)
77: bneq true
78: clrl r0
79: rsb
80: setgt:
81: moval 4(sp),r2
82: ashl $-1,r1,r1
83: l0217:
84: bicw3 (r3),(r2),r0
85: bneq false
86: bicw2 (r2)+,(r3)+
87: bneq l0219 #need only check >= for remainder of set
88: sobgtr r1,l0217
89: clrl r0
90: rsb
91: setge:
92: moval 4(sp),r2
93: ashl $-1,r1,r1
94: l0218:
95: bicw2 (r3)+,(r2)+
96: bneq false
97: l0219:
98: sobgtr r1,l0218
99: movl $1,r0
100: rsb
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.