*
* string manipulation routines - file 1
*

 name C_str1

 text

* char *strcat(s1, s2)
*        char *s1;
*        char *s2;

 global _strcat

_strcat pshs u
 ldx 4,s s1
 ldu 6,s s2
2 tst 0,x+
 bne 2b
 leax -1,x
4 lda 0,u+
 sta 0,x+
 bne 4b
 ldd 4,s return s1
 puls u,pc

* char *strchr(s, c)
*        char *s;
*        char c;

 global _strchr
 global _index

_index
_strchr ldx 2,s s
 lda 5,s c
2 cmpa 0,x
 beq 4f
 tst 0,x+
 bne 2b
 ldd #0
 rts
4 tfr x,d
 rts

* int strcmp(s1, s2)
*        char *s1;
*        char *s2;

 global _strcmp

_strcmp pshs u
 ldx 4,s s1
 ldu 6,s s2
2 ldb 0,x+
 beq 4f
 cmpb 0,u+
 beq 2b
 subb -1,u
 sex
 puls u,pc
4 subb 0,u
 sex
 puls u,pc

* char *strcpy(s1, s2)
*        char *s1;
*        char *s2;

 global _strcpy

_strcpy pshs u
 ldx 4,s s1
 ldu 6,s s2
2 lda 0,u+
 sta 0,x+
 bne 2b
 ldd 4,s return s1
 puls u,pc

* int strlen(s)
*        char *s;

 global _strlen

_strlen ldx 2,s s
 ldd #0
2 tst 0,x+
 beq 4f
 addd #1
 bra 2b
4 rts

 end
