|
|
1.1 ! root 1: # ! 2: # Copyright (c) 1979 Regents of the University of California ! 3: # ! 4: # char sccsid[] = "@(#)05index.s 4.1 10/10/80"; ! 5: # ! 6: # OFF, INDEX and NIL ! 7: # ! 8: _OFF: ! 9: cvtbl (r10)+,r0 ! 10: bneq l0501 ! 11: movzwl (r10)+,r0 ! 12: l0501: ! 13: addl2 r0,(sp) ! 14: jmp (r8) ! 15: _INX2: ! 16: cvtbl (r10)+,r0 ! 17: bneq l0502 ! 18: cvtwl (r10)+,r0 #r0 has size ! 19: l0502: ! 20: clrl r3 #r3 has base subscript ! 21: subw3 (r10)+,(sp)+,r3 ! 22: blss esubscr #check lower bound ! 23: cmpw r3,(r10)+ #check upper bound ! 24: bgtru esubscr ! 25: mull2 r0,r3 #calc byte offset ! 26: addl2 r3,(sp) #calculate actual address ! 27: jmp (r8) ! 28: _INX4: ! 29: cvtbl (r10)+,r0 ! 30: bneq l0503 ! 31: cvtwl (r10)+,r0 #r0 has size ! 32: l0503: ! 33: cvtwl (r10)+,r1 #r1 has lower bound ! 34: movzwl (r10)+,r2 #r2 has upper-lower bound ! 35: subl3 r1,(sp)+,r3 #r3 has base subscript ! 36: cmpl r3,r2 #check for out of bounds ! 37: bgtru esubscr ! 38: mull2 r0,r3 #calc byte offset ! 39: addl2 r3,(sp) #calculate actual address ! 40: jmp (r8) ! 41: esubscr: ! 42: movl $ESUBSCR,_perrno ! 43: jbr error ! 44: _NIL: ! 45: incl r10 ! 46: tstl (sp) ! 47: jeql l0504 ! 48: jmp (r8) ! 49: l0504: ! 50: movw $ENILPTR,_perrno ! 51: jbr error ! 52: _INX4P2: ! 53: cvtbl (r10)+,r0 #r0 has shift amount ! 54: cvtwl (r10)+,r2 #r2 has lower bound ! 55: subl3 r2,(sp)+,r1 #r1 has base subscript ! 56: ashl r0,r1,r1 ! 57: addl2 r1,(sp) ! 58: jmp (r8) ! 59: _INX2P2: ! 60: cvtbl (r10)+,r0 #r0 has shift amount ! 61: cvtwl (r10)+,r1 #r1 has base array value ! 62: cvtwl (sp)+,r2 #r2 has subscript value ! 63: subl2 r1,r2 #r2 has element offset ! 64: ashl r0,r2,r2 #r2 has byte offset ! 65: addl2 r2,(sp) ! 66: jmp (r8)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.