|
|
1.1 root 1: ; Copyright Barbara Liskov 1985
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: mull 6,rr,n1
9: movzwl n1,n0
10: ifeql cmpl n1,n0
11: then addl 7,n0
12: bicb 3,n0
13: subl n0,heaplo
14: iflss cmpl heaplo,freelo
15: then jsb memout
16: end
17: movl heaplo,rr
18: movw n1,(rr)
19: movb %bvecb,3(rr)
20: return(rr)
21: end
22: signal toobig
23: end create
24:
25: store = qproc (list: cvt, i: int, x, y, flags: int) signals (bounds)
26: subl 1,i,n1
27: mull 6,n1
28: movl list,n2
29: movzwl (n2),n3
30: iflssu cmpl n1,n3
31: then movab 4(n2)[n1],n3
32: movw x,(n3)+
33: movw y,(n3)+
34: movw rr,(n3)
35: return
36: end
37: signal bounds
38: end store
39:
40: fetch = qproc (list: cvt, i: int) returns (int, int, int) signals (bounds)
41: subl 1,rr,n1
42: mull 6,n1
43: movl list,n2
44: movzwl (n2),n3
45: iflssu cmpl n1,n3
46: then movab 4(n2)[n1],n3
47: cvtwl (n3)+,-(sp)
48: cvtwl (n3)+,-(sp)
49: movzwl (n3),rr
50: return(*, *, *)
51: end
52: signal bounds
53: end fetch
54:
55: size = qproc (list: cvt) returns (int)
56: movzwl (rr),rr
57: divl 6,rr
58: return(rr)
59: end size
60:
61: equal = qproc (list1, list2: cvt) returns (bool)
62: ifeql cmpl list1,rr
63: then return(true)
64: end
65: return(false)
66: end equal
67:
68: end x_vlist
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.