|
|
1.1 root 1: #
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)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.