struct        StringsBase     *StringsBase=0L;

/*#define RUN*/
#ifdef  RUN

long stoh(d,s) register unsigned char *d,*s; {
  register long l=0; register unsigned char c,cc,*cp,*hp;
  if(!d) l=-1; if(!s) l=-1;
  if(l>=0) {
   if(*s) {
    cp=s; hp=d; c=*cp;
    do {
     cc=(c>>4)+48;
     if(cc>57) cc+=7;
     *hp=cc; hp++; l++;
     cc=(c&0xF)+48;
     if(cc>57) cc+=7;
     *hp++=cc; cp++; l++; c=*cp;
    } while(c);
   }
  }
  if(hp) *hp=0;
  return l;
 };                                                   /* htos $V0.2 */

#endif

long test(s) unsigned char *s; {
  long el=0;  unsigned char os[1024],*p;
  el=stoh(os,s); printf("<%s> = <%s> %ld",s,os,el); puts("");
  return el;
 };

int main() {                          /* MAIN */
  long el=0,l=32,i,j; unsigned char s[256],hs[128],*p,*cp,c,cc,*hp; cp=s;
  StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); p=s;
  *p++=0xB0; /* <°> */
  *p++=0xB1; /* <±> */
  *p++=0xB2; /* <²> */
  *p++=0xB3; /*<³> */
  *p++=0xB4; /* <´> */
  *p++=0xB5; /*<µ> */
  *p++=0xB6; /*<¶> */
  *p++=0xB7; /*<·>  */
  *p=0; el=test(s); el=test("Dies ist ein Test von ");
  el=test(" -- von stoh --"); el=test("@AB19"); el=test("A\nB");
  el=test(" !# $%&'");  el=test("()*+ ,-./"); el=test("0123 4567");
  el=test("89:; <=>?"); el=test("@ABC DEFG"); el=test("HIJK LMNO");
  el=test("PQRS TUVW"); el=test("XYZ[ \]^_"); el=test("`abc defg");
  el=test("hijk lmno"); el=test("pqrs tuvw"); el=test("xyz{ |}~");
/*
  el=test(" ¡¢£ ¤¥¦§"); el=test("©ª« ¬­®¯"); el=test("°±²³ ´µ¶·");
  el=test("¸¹º» ¼½¾¿"); el=test("ÀÁÂÃ ÄÅÆÇ"); el=test("ÈÉÊË ÌÍÎÏ");
  el=test("ÐÑÒÓ ÔÕÖ×"); el=test("ØÙÚÛ ÜÝÞß"); el=test("àáâã äåæç");
  el=test("èéêë ìíîï"); el=test("ðñòó ôõö÷"); el=test("øùúû üýþÿ");
*/
  if(StringsBase) CloseLibrary(StringsBase);
  return el;
 }                                                          /* END */
 /*
<°±²³´µ¶·> = <B0B1B2B3B4B5B6B7> 16
<Dies ist ein Test von > = <44696573206973742065696E205465737420766F6E20> 44
< -- von stoh --> = <202D2D20766F6E2073746F68202D2D> 30
<@AB19> = <4041423139> 10
<A
B> = <410A42> 6
< !# $%&'> = <2021232024252627> 16
<()*+ ,-./> = <28292A2B202C2D2E2F> 18
<0123 4567> = <303132332034353637> 18
<89:; <=>?> = <38393A3B203C3D3E3F> 18
<@ABC DEFG> = <404142432044454647> 18
<HIJK LMNO> = <48494A4B204C4D4E4F> 18
<PQRS TUVW> = <505152532054555657> 18
<XYZ[ ]^_> = <58595A5B205D5E5F> 16
<`abc defg> = <606162632064656667> 18
<hijk lmno> = <68696A6B206C6D6E6F> 18
<pqrs tuvw> = <707172732074757677> 18
<xyz{ |}~> = <78797A7B207C7D7E7F> 18
*/

