Beispiel #1
0
void MON_LABELS::add(u8 *address, char *name)
{
   if (n_pairs >= align_by(n_pairs, 1024))
      pairs = (MON_LABEL*)realloc(pairs, sizeof(MON_LABEL) * align_by(n_pairs+1, 1024));
   pairs[n_pairs].address = address;
   pairs[n_pairs].name_offs = add_name(name);
   n_pairs++;
}
Beispiel #2
0
//=============================================================================
//	eTape::Reserve
//-----------------------------------------------------------------------------
void eTape::Reserve(dword datasize)
{
	const int blocksize = 16384;
	dword newsize = align_by(datasize+tape_imagesize+1, blocksize);
	if(!tape_image)
		tape_image = (byte*)malloc(newsize);
	if(align_by(tape_imagesize, blocksize) < newsize)
		tape_image = (byte*)realloc(tape_image, newsize);
}
Beispiel #3
0
unsigned MON_LABELS::add_name(char *name)
{
   unsigned len = strlen(name)+1, new_size = names_size + len;
   if (new_size > align_by(names_size, 4096))
      names = (char*)realloc(names, align_by(new_size, 4096));
   unsigned result = names_size;
   memcpy(names + result, name, len);
   names_size = new_size;
   return result;
}
Beispiel #4
0
int FDD::read_udi()
{
   free();
   unsigned c,s;
   unsigned mem = 0;
   u8 *ptr = snbuf + 0x10;

   for (c = 0; c <= snbuf[9]; c++)
   {
      for (s = 0; s <= snbuf[10]; s++)
      {
         if (*ptr)
             return 0;
         unsigned sz = *(u16*)(ptr+1);
         sz += sz/8 + ((sz & 7)? 1 : 0);
         mem += sz;
         ptr += 3 + sz;
         if (ptr > snbuf + snapsize)
             return 0;
      }
   }

   cyls = snbuf[9]+1;
   sides = snbuf[10]+1;
   rawsize = align_by(mem, 4096);
   rawdata = (u8*)VirtualAlloc(0, rawsize, MEM_COMMIT, PAGE_READWRITE);
   ptr = snbuf+0x10;
   u8 *dst = rawdata;

   for (c = 0; c < cyls; c++)
   {
      for (s = 0; s < sides; s++)
      {
         unsigned sz = *(u16*)(ptr+1);
         trklen[c][s] = sz;
         trkd[c][s] = dst;
         trki[c][s] = dst + sz;
         sz += sz/8 + ((sz & 7)? 1 : 0);
         memcpy(dst, ptr+3, sz);
         ptr += 3 + sz;
         dst += sz;
      }
   }
   if (snbuf[11] & 1)
       strcpy(dsc, (char*)ptr);
   return 1;
}