int readSNA128()
{
conf.mem_model = MM_PENTAGON; conf.ramsize = 128;
hdrSNA128 *hdr = (hdrSNA128*)snbuf;
reset(hdr->trdos? RM_DOS : RM_SOS);
cpu.alt.af = hdr->altaf; cpu.alt.bc = hdr->altbc;
cpu.alt.de = hdr->altde; cpu.alt.hl = hdr->althl;
cpu.af = hdr->af; cpu.bc = hdr->bc; cpu.de = hdr->de; cpu.hl = hdr->hl;
cpu.ix = hdr->ix; cpu.iy = hdr->iy; cpu.sp = hdr->sp; cpu.pc = hdr->pc;
cpu.i = hdr->i; cpu.r_low = hdr->r; cpu.r_hi = hdr->r & 0x80; cpu.im = hdr->im;
cpu.iff1 = hdr->iff1?1:0; comp.p7FFD = hdr->p7FFD;
comp.pFE = hdr->pFE; comp.border_attr = comp.pFE & 7;
memcpy(memory+PAGE*5, hdr->page5, PAGE);
memcpy(memory+PAGE*2, hdr->page2, PAGE);
memcpy(memory+PAGE*(hdr->p7FFD & 7), hdr->active_page, PAGE);
unsigned char *newpage = snbuf+0xC01F;
unsigned char mapped = 0x24 | (1 << (hdr->p7FFD & 7));
for (unsigned char i = 0; i < 8; i++)
if (!(mapped & (1 << i))) {
memcpy(memory + PAGE*i, newpage, PAGE); newpage += PAGE;
}
set_banks(); return 1;
}