+/* index.s 4.1 84/11/01 */
+
+/*
+ * Find the first occurence of c in the string cp.
+ * Return pointer to match or null pointer.
+ *
+ * char *
+ * index(cp, c)
+ * char *cp, c;
+ */
+ .globl _index
+
+_index:
+ .word 0x0
+ movq 4(ap),r1 # r1 = cp; r2 = c
+ tstl r2 # check for special case c == '\0'
+ bneq 2f
+1:
+ locc $0,$65535,(r1) # just find end of string
+ beql 1b # still looking
+ movl r1,r0 # found it
+ ret
+2:
+ movab tbl[r2],r5 # table entry for c
+ incb (r5)
+ movzwl $65535,r4 # fast access
+3:
+ scanc r4,(r1),tbl,$1 # look for c or '\0'
+ beql 3b # still looking
+ movl r1,r0 # return pointer to char
+ tstb (r0) # if have found '\0'
+ bneq 4f
+ clrl r0 # else return 0
+4:
+ clrb (r5) # clean up table
+ ret
+
+ .data
+tbl: .byte 1
+ .space 255
+ .text