struct        StringsBase     *StringsBase=0L;

/*#define RUN*/
#ifdef  RUN

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

#endif

long test(s) char *s; {
  long el=0,l=StrLen(s); char os[256],*p; sprintf(os,"<%s>",s);
  if(s) {
   printf("%29s ",os); p=(char *)ToLower(s); sprintf(os,"<%s>",s);
   printf(" %29s %8x  %ld\n",os,p,l);
  }
  if(!s) p=(char *)ToUpper(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 ToLower(LOWERCASE)");
  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
_ToLower:
             move.l  8(a5),a0
             move.l  a0,d0
             cmp.l   #0,a0
             beq     ToLowerEnd
             move.l  a0,a1
             move.b  (a1),d1
ToLowerLoop: cmp.b   #65,d1
             blt     ToLowerJump
             cmp.b   #90,d1
             bgt     ToLowerJump
             or.b    #32,d1
ToLowerJump: move.b  d1,(a1)+
             move.b  (a1),d1
             bne     ToLowerLoop
ToLowerEnd:  rts                   ; mrz06

  inputstring                      outputstring              return    len
 <TESTING ToLower(LOWERCASE)>   <testing tolower(lowercase)>   2868F2  26
<abcdefghijklmnopqrstuvwxyz >  <abcdefghijklmnopqrstuvwxyz >   2868D6  27
   <!@#$%^&*()__+|1234567890>     <!@#$%^&*()__+|1234567890>   2868BD  24
  <ABCDEF GHIJKL MNOPQ RSTUV>    <abcdef ghijkl mnopq rstuv>   2868A3  25
      <WXYZ [];',../<>{}:<>?>        <wxyz [];',../<>{}:<>?>   28688D  21
                          <a>                            <a>   28688B  1
                          <B>                            <b>   286889  1
                           <>                             <>   286888  0
ZEROPOINTER  return = 0
#endif
