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