.getcurdir
main()
{
str spec[30] = "..";
str curdir[64], dir[12];
filefind(".", 16, curdir);
strcat(curdir, "\");
inschrs("\", curdir, 0, 1);

while (filefind(spec, 16, dir))
      {
      inschrs(dir, curdir, 0, strlen(dir));
      inschrs("\", curdir, 0, 1);
      inschrs("\..", spec, strlen(spec), 3);
      }
prints(curdir);
}
.encode
encode(str info)
{
int length, count, loop, j;

length = strlen(info);
count = strlen(key);
 j = 0;
for (loop = 0; loop < length; ++loop)
     {
      setchr(info, loop, (subchr(info, loop) + subchr(info, loop+1) * 256)^(subchr(key, j) + subchr(key, j+1)*256));
      ++j;
      if (j >= count)
         j = 0;
     }
}
.decode
decode(str info)
{
str key[20] = "-òÉ“ößž€ª‰ÐÆåÙÅðý";
int len, kpos, loop;
len = strlen(info);
if (len%strlen(key) == 0)
    kpos = len - 1;
else
    kpos = (len%strlen(key)) - 1;

for (loop = len-1; loop >= 0; --loop)
    {
    if (loop == len - 1)
        setchr(info, loop, (subchr(info, loop))^(subchr(key, kpos)));
    else
        setchr(info, loop, (subchr(info, loop) + subchr(info, loop+1) * 256)^(subchr(key, kpos) + subchr(key, kpos+1)*256));
    --kpos;
    if (kpos < 0)
        kpos = strlen(key) - 1;
    }
}
///////////////////////////////////////////////////////////////////////////////
.saveread
//else if (longptr)
//   {
//    f = openf("READ.PTR", "r");
//    fseek(f, (longptr-1) * (1 + bitmapsize + (high_conf-40)*2, 0);
//    fseek(f, 1 + bitmapsize + (confn-1)*2, 1);
//    read = ctoi(2, f);
//    }

.bitmapprep
//     bitmap size: (high_conf - 40)/8, + 1 if (high_conf%8 > 0)
//                   * 2

//   bitmapsize = (high_conf - 40)/8;
//   if (high_conf%8)
//       ++bitmapsize;
//   bitmapsize = bitmapsize*2;

.getread
//else
//   {
//    f = openf("READ.PTR", "r+");
//    if (longptr && filesize("READ.PTR") >= longptr*len)
//       {
//       fseek(f, (longptr-1) * len, 0);
//       fseek(f, 1 + bitmapsize + (confn-1)*2, 1);
//       itoc(read, 2, f);
//       }
//    else
//      {
//       puts("^M^JCreating new record...", "32;1");
//       rec = 1;
//       while(fgetc(f) != 0 && !feof(f))     // look for empty spot
//            {
//            if (feof(f))
//               continue;
//            fseek(f, len - 1, 1);
//            ++rec;
//            }
//
//       longptr = rec;
//       if (feof(f))
//          {
//          fclose(f);
//          f = openf("READ.PTR", "a");
//          }
//       fputc(1, f);                  // create new record
//       for (x = 255; x <= len - 1; x = x + 255)
//           fwrite(tmp, 255, f);
//       fwrite(tmp, (len - 1)%255, f);
//       fseek(f, -len + 1 + bitmapsize + (confn-1)*2, 1);
//       itoc(read, 2, f);
//       }
//     }
//    }
.shell_sort
///////////////////////////////////////////////////////////////////////////////
shell_sort()
{
int gap, swap, potr, tag;

str s1[13], s2[13];

gap = strlen(file_list)/26 * 13;  //  get number of elements
                                  // get first gap (half of number of elements)

while(gap >= 13)
     {
      swap = 0;

      while (swap == 0)
       {
        swap = 1;

         for (potr = 0; potr < strlen(file_list)-gap; potr = potr+13)
            {
             subchrs(file_list, potr+1, 12, s1);
             subchrs(file_list, potr+gap+1, 12, s2);

             if (s1 > s2)
                  {
                   copychrs(s1, file_list, potr+gap+1, 12);
                   tag = subchr(file_list, potr+gap);
                   setchr(file_list, potr+gap, subchr(file_list, potr));
                   copychrs(s2, file_list, potr+1, 12);
                   setchr(file_list, potr, tag);
                   swap = 0;
                   }
              }
           }
         gap = gap/26 * 13;
        }
   pos = 0;
   pointy = 2;
   list(0, 117);
}
///////////////////////////////////////////////////////////////////////////////
