Commit | Line | Data |
---|---|---|
b202b2da CH |
1 | #\f |
2 | # 25set.s | |
3 | # | |
4 | # SET OPERATIONS | |
5 | # | |
6 | _ADDT: | |
7 | cvtbl (r10)+,r0 | |
8 | bneq l2501 | |
9 | cvtwl (r10)+,r0 | |
10 | l2501: | |
11 | blbc r0,l2502 | |
12 | incl r0 #r0 has number of bytes in set | |
13 | l2502: | |
14 | addl3 sp,r0,r1 #r1 has pointer to second set | |
15 | ashl $-1,r0,r0 #r0 has number of words in set | |
16 | l2503: | |
17 | bisw2 (sp)+,(r1)+ | |
18 | sobgtr r0,l2503 | |
19 | jmp (r8) | |
20 | _SUBT: | |
21 | cvtbl (r10)+,r0 | |
22 | bneq l2504 | |
23 | cvtwl (r10)+,r0 | |
24 | l2504: | |
25 | blbc r0,l2505 | |
26 | incl r0 #r0 has number of bytes in set | |
27 | l2505: | |
28 | addl3 sp,r0,r1 #r1 has pointer to second set | |
29 | ashl $-1,r0,r0 #r0 has number of words in set | |
30 | l2506: | |
31 | bicw2 (sp)+,(r1)+ | |
32 | sobgtr r0,l2506 | |
33 | bicw2 (r10)+,-(r1) | |
34 | jmp (r8) | |
35 | _MULT: | |
36 | cvtbl (r10)+,r0 | |
37 | bneq l2507 | |
38 | cvtwl (r10)+,r0 | |
39 | l2507: | |
40 | blbc r0,l2508 | |
41 | incl r0 #r0 has number of bytes in set | |
42 | l2508: | |
43 | addl3 sp,r0,r1 #r1 has pointer to second set | |
44 | ashl $-1,r0,r0 #r0 has number of words in set | |
45 | l2509: | |
46 | mcomw (sp)+,r3 | |
47 | bicw2 r3,(r1)+ | |
48 | sobgtr r0,l2509 | |
49 | jmp (r8) | |
50 | _CARD: | |
51 | cvtbl (r10)+,r0 #r0 has number of bytes in set | |
52 | bneq l2510 | |
53 | cvtwl (r10)+,r0 | |
54 | l2510: | |
55 | blbc r0,l2511 | |
56 | incl r0 | |
57 | l2511: | |
58 | addl3 r0,sp,r4 #r4 has new stack addr | |
59 | ashl $3,r0,r0 #r0 has number of bits in set | |
60 | mnegl $1,r1 #will init r1 to zero | |
61 | mnegl $1,r5 #will init r2 to zero | |
62 | l2512: | |
63 | incl r1 #count found element | |
64 | incl r5 #advance to next field position | |
65 | l2521: | |
66 | ffs r5,$32,(sp),r5 #find next set bit | |
67 | beql l2521 #nothing found, so continue | |
68 | cmpl r5,r0 #check for end of field | |
69 | blss l2512 #element found, so count and continue | |
70 | movl r4,sp #clear stack | |
71 | movw r1,-(sp) #put answer on stack | |
72 | jmp (r8) | |
73 | _CTTOT: | |
74 | cvtbl (r10)+,-(sp) | |
75 | bneq l2513 | |
76 | cvtwl (r10)+,(sp) | |
77 | l2513: | |
78 | cvtwl (r10)+,-(sp) | |
79 | cvtwl (r10)+,-(sp) | |
80 | calls $4,_pcttot | |
81 | movw r0,sp | |
82 | jmp (r8) | |
83 | _IN: | |
84 | cvtbl (r10)+,r0 | |
85 | bneq l2514 | |
86 | cvtwl (r10)+,r0 #r0 has size of set | |
87 | l2514: | |
88 | blbc r0,l2515 | |
89 | incl r0 | |
90 | l2515: | |
91 | cvtwl (sp)+,r1 #r1 has set index | |
92 | addl3 r0,sp,r4 #r4 points to new top of stack | |
93 | subw2 (r10)+,r1 #check below lower | |
94 | blssu l2516 | |
95 | cmpw r1,(r10)+ #check above upper | |
96 | bgtru l2517 | |
97 | bbc r1,(sp),l2517 #check for bit set | |
98 | movl r4,sp #bit found | |
99 | movw $1,-(sp) | |
100 | jmp (r8) | |
101 | l2516: | |
102 | addl2 $2,r10 | |
103 | l2517: | |
104 | movl r4,sp #bit not found | |
105 | clrw -(sp) | |
106 | jmp (r8) | |
107 | _INCT: | |
108 | incl r10 | |
109 | cvtwl (sp)+,r0 #r0 has value to find | |
110 | cvtwl (sp)+,r1 #r1 has pair count | |
111 | l2518: | |
112 | cmpw r0,(sp)+ | |
113 | blss l2519 | |
114 | cmpw r0,(sp)+ | |
115 | bgtr l2520 | |
116 | decl r1 | |
117 | moval (sp)[r1],sp #clear off remaining data on stack | |
118 | movw $1,-(sp) #success | |
119 | jmp (r8) | |
120 | l2519: | |
121 | addl2 $2,sp | |
122 | l2520: | |
123 | sobgtr r1,l2518 | |
124 | clrw -(sp) #failure | |
125 | jmp (r8) |