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); }
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 }
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(); }