|
|
1.1 root 1: ; Copyright Barbara Liskov 1986
2:
3: x_vlist = cluster is create, fetch, store, size, equal
4:
5: rep = null
6:
7: create = qproc (n: int) returns (cvt) signals (toobig)
8: ifle move rr,n1
9: blt next
10: cmpi #5,,#5555,n1
11: then add n1,n1
12: add rr,n1
13: add n1,n1
14: subq 5,n1
15: move n1,n2
16: asr 1,n2
17: addq 7,n2
18: andib -4,n2
19: movea heaphi,rr
20: iflt sub n2,freecnt
21: then jsr memout
22: end
23: add n2,heaphi
24: move n1,(rr)
25: return(rr)
26: end
27: signal toobig
28: end create
29:
30: store = qproc (list: cvt, i: int, x, y, flags: int) signals (bounds)
31: move i,n2
32: subq 5,n2
33: add n2,n2
34: add i,n2
35: addq 1,n2
36: movea list,r1
37: move (r1),n1
38: asr 1,n1
39: ifhi cmp n2,n1
40: then lea 4(r1,n2),r1
41: move x,n1
42: asr 1,n1
43: movew n1,(r1)+
44: move y,n1
45: asr 1,n1
46: movew n1,(r1)+
47: move rr,n1
48: asr 1,n1
49: movew n1,(r1)
50: movea n0,r1
51: return
52: end
53: signal bounds
54: end store
55:
56: fetch = qproc (list: cvt, i: int) returns (int, int, int) signals (bounds)
57: move rr,n1
58: subq 5,n1
59: add n1,n1
60: lea 1(rr,n1),rr
61: movea list,r1
62: move (r1),n1
63: asr 1,n1
64: ifhi cmp rr,n1
65: then lea 4(r1,rr),rr
66: moveaw (rr)+,r1
67: pea 1(r1,r1)
68: moveaw (rr)+,r1
69: pea 1(r1,r1)
70: moveaw (rr),rr
71: lea 1(rr,rr),rr
72: return(*, *, *)
73: end
74: signal bounds
75: end fetch
76:
77: size = qproc (list: cvt) returns (int)
78: move (rr),n1
79: asr 1,n1
80: divu 3,n1
81: moveaw n1,rr
82: addq 1,rr
83: return(rr)
84: end size
85:
86: equal = qproc (list1, list2: cvt) returns (bool)
87: moveq 0,n1
88: cmpa list1,rr
89: seq n1
90: return(n1)
91: end equal
92:
93: end x_vlist
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.