Exemple #1
0
void MON_LABELS::import_xas()
{
   if (!xaspage) return;
   unsigned base = (xaspage == 0x46)? 0x0E*PAGE : (unsigned)xaspage*PAGE;

   clear_ram(); unsigned count = 0;
   int i; //Alone Coder 0.36.7
   for (int k = 0; k < 2; k++) {
      u8 *ptr = RAM_BASE_M + base + (k? 0x3FFD : 0x1FFD);
      for (;;) {
         if (ptr[2] < 5 || (ptr[2] & 0x80)) break;
         char lbl[16]; for (/*int*/ i = 0; i < 7; i++) lbl[i] = ptr[i-7];
         for (i = 7; i && lbl[i-1]==' '; i--); lbl[i] = 0;
         unsigned val = *(u16*)ptr;
         u8 *bs;
         switch (val & 0xC000) {
            case 0x4000: bs = page_ram(5); break;
            case 0x8000: bs = page_ram(2); break;
            case 0xC000: bs = page_ram(0); break;
            default: bs = 0;
         }
         if (bs) add(bs+(val & 0x3FFF), lbl), count++;
         ptr -= 9; if (ptr < RAM_BASE_M+base+9) break;
      }
   }
   sort();
   char ln[64]; sprintf(ln, "imported %d labels", count);
   MessageBox(GetForegroundWindow(), ln, xas_errstr, MB_OK | MB_ICONINFORMATION);
}
Exemple #2
0
static void init_cmx_variables()
{
	MAX_TASKS = C_MAX_TASKS;	
	ROM_TASKS = C_ROM_TASKS;	
	MAX_RESOURCES = C_MAX_RESOURCES;
	MAX_CYCLIC_TIMERS = C_MAX_CYCLIC_TIMERS;
	MAX_MAILBOXES = C_MAX_MAILBOXES;
	MAX_SEMAPHORES = C_MAX_SEMAPHORES;
	RTC_SCALE = C_RTC_SCALE;
	clear_ram(cmx_tcb,sizeof cmx_tcb);

#if C_MAX_CYCLIC_TIMERS > 0
	clear_ram(tcproc,sizeof tcproc);
#endif

#if C_MAX_RESOURCES > 0
	clear_ram(res_que,sizeof res_que);
#endif

#if C_MAX_MAILBOXES > 0
	clear_ram(mail_box,sizeof mail_box);
#endif

#if C_MAX_MESSAGES > 0
	clear_ram(message_box,sizeof message_box);
#endif

#if C_MAX_SEMAPHORES > 0
	clear_ram(sem_array,sizeof sem_array);
#endif

}
Exemple #3
0
void MON_LABELS::import_alasm(unsigned offset, char *caption)
{
   clear_ram();
   u8 *base = RAM_BASE_M + offset;
   for (;;) { // #FE00/FF00/FFFC - end of labels?
      u8 sz = *base; if (!sz) break;
      if (!(sz & 0xC0)) {
         char lbl[64]; unsigned ptr = 0;
         for (unsigned k = sz; k > 5;) k--, lbl[ptr++] = base[k]; lbl[ptr] = 0;
         unsigned val = *(u16*)(base+1);
         u8 *bs;
         switch (val & 0xC000) {
            case 0x4000: bs = page_ram(5); break;
            case 0x8000: bs = page_ram(2); break;
            case 0xC000: bs = page_ram(0); break;
            default: bs = 0;
         }
         if (bs) add(bs+(val & 0x3FFF), lbl);
      }
      base += (sz & 0x3F);
   }
   sort();
}