struct        StringsBase     *StringsBase=0L;

/*#define RUN*/
#ifdef  RUN

char *ToLowerCpy(d,s) register char *d,*s; {
  register char c,*p=d;
  if(d) {
   do { c=*s++; if(c>='A') if(c<='Z') c|=32; *p++=c; } while(c); *p=0;
  }
  return d;
 };                                          /* $VER: ToLowerCpy feb06 0.1 */

#endif

long test(s) char *s; {
  long el=0,l=StrLen(s); char os[256],d[128],*p; sprintf(os,"<%s>",s);
  if(s) {
   printf("%29s ",os); p=(char *)ToLowerCpy(d,s); sprintf(os,"<%s>",d);
   printf(" %29s %8x  %ld\n",os,p,l);
  }
  if(!s) p=(char *)ToLowerCpy(s,s), printf("ZEROPOINTER  return = %x\n",p);
  return el;
 }

int main() {                                                      /* MAIN */
  long el; StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0);
  puts("  inputstring \t\t           outputstring\t\t     return    len");
  el=test("TESTING ToLowerCpy");
  el=test("abcdefghijklmnopqrstuvwxyz ");
  el=test("!@#$%^&*()__+|1234567890");
  el=test("ABCDEF GHIJKL MNOPQ RSTUV");
  el=test("WXYZ \[];',../<>{}:<>?"); el=test("a"); el=test("B");
  el=test(""); el=test(0);
  if(StringsBase) CloseLibrary(StringsBase);
  return 0;
 }                                                          /* END */

#ifdef  COMMENT

_ToLowerCpy:
        link    a5,#0
        move.l  8(a5),a0
        move.l  12(a5),a1
                move.l  a0,d0
                cmp.l   #0,a2
                beq     ToLowerCpyEnd
ToLowerCpyLoop: move.b  (a1)+,d1
                cmp.b   #65,d1
                blt     ToLowerCpyJump
                cmp.b   #90,d1
                bgt     ToLowerCpyJump
    ;            or.b    #32,d1
                bset #5,d1
ToLowerCpyJump: move.b  d1,(a0)+
                bne     ToLowerCpyLoop
                clr.b   (a0)
ToLowerCpyEnd: unlk    a5
        rts
  inputstring                      outputstring              return    len
         <TESTING ToLowerCpy>           <testing tolowercpy>   28AED0  18
<abcdefghijklmnopqrstuvwxyz >  <abcdefghijklmnopqrstuvwxyz >   28AED0  27
   <!@#$%^&*()__+|1234567890>     <!@#$%^&*()__+|1234567890>   28AED0  24
  <ABCDEF GHIJKL MNOPQ RSTUV>    <abcdef ghijkl mnopq rstuv>   28AED0  25
      <WXYZ [];',../<>{}:<>?>        <wxyz [];',../<>{}:<>?>   28AED0  21
                          <a>                            <a>   28AED0  1
                          <B>                            <b>   28AED0  1
                           <>                             <>   28AED0  0
ZEROPOINTER  return = 0
#endif

