struct        StringsBase     *StringsBase=0L;
/*#define RUN*/
#ifdef  RUN
char *ToUpperCpy(d,s) register char *d,*s; {
  register char c,*p;
  if(d) {
   p=d; c=*s++;
   do { if(c>='a') if(c<='z') c&=223; *p++=c; c=*s++; } while(c); *p=0;
  }
  return d;
 };                                          /* $VER: ToUpper 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 *)ToUpperCpy(d,s); sprintf(os,"<%s>",d);
   printf(" %29s %8x  %ld\n",os,p,l);
  }
  if(!s) p=(char *)ToUpper(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 ToUpperCpy");
  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
_ToUpperCpy:
        link    a5,#0
        move.l  8(a5),a0
        move.l  12(a5),a1
                move.l  a0,d0
                cmp.l   #0,a0
                beq     ToUpperCpyEnd
                move.b  (a1)+,d1
ToUpperCpyLoop: cmp.b   #97,d1
                blt     ToUpperCpyJump
                cmp.b   #122,d1
                bgt     ToUpperCpyJump
                and.b   #223,d1
ToUpperCpyJump: move.b  d1,(a0)+
                move.b  (a1)+,d1
                bne     ToUpperCpyLoop
                clr.b   (a0)
ToUpperCpyEnd:
        unlk    a5
        rts     ; mrz06
  inputstring                      outputstring              return    len
         <TESTING ToUpperCpy>           <TESTING TOUPPERCPY>   2874C0  18
<abcdefghijklmnopqrstuvwxyz >  <ABCDEFGHIJKLMNOPQRSTUVWXYZ >   2874C0  27
   <!@#$%^&*()__+|1234567890>     <!@#$%^&*()__+|1234567890>   2874C0  24
  <ABCDEF GHIJKL MNOPQ RSTUV>    <ABCDEF GHIJKL MNOPQ RSTUV>   2874C0  25
      <WXYZ [];',../<>{}:<>?>        <WXYZ [];',../<>{}:<>?>   2874C0  21
                          <a>                            <A>   2874C0  1
                          <B>                            <B>   2874C0  1
                           <>                             <>   2874C0  0
ZEROPOINTER  return = 0
#endif
