--- np2/statsave.c 2003/12/05 09:46:15 1.18 +++ np2/statsave.c 2003/12/28 08:05:18 1.23 @@ -4,8 +4,7 @@ #include "scrnmng.h" #include "soundmng.h" #include "timemng.h" -#include "i286.h" -#include "memory.h" +#include "cpucore.h" #include "pccore.h" #include "iocore.h" #include "cbuscore.h" @@ -56,6 +55,9 @@ typedef struct { enum { NP2FLAG_BIN = 0, NP2FLAG_TERM, +#if defined(CGWND_FONTPTR) + NP2FLAG_CGW, +#endif NP2FLAG_CLOCK, NP2FLAG_COM, NP2FLAG_DISK, @@ -408,8 +410,8 @@ static int flagsave_ext(NP2FFILE f, cons ret = flagsave_create(f, t); if (ret != NP2FLAG_FAILURE) { ret |= flagsave_save(f, &extmem, sizeof(extmem)); - if (extmemmng_size) { - ret |= flagsave_save(f, extmemmng_ptr, extmemmng_size); + if (CPU_EXTMEM) { + ret |= flagsave_save(f, CPU_EXTMEM, CPU_EXTMEMSIZE); } ret |= flagsave_close(f); } @@ -429,8 +431,8 @@ static int flagload_ext(NP2FFILE f, cons } if (!extmemmng_realloc(extmem.maxmem - 1)) { pagemax = (extmem.maxmem - 1) << 8; - if (extmemmng_size) { - ret |= flagload_load(f, extmemmng_ptr, extmemmng_size); + if (CPU_EXTMEM) { + ret |= flagload_load(f, CPU_EXTMEM, CPU_EXTMEMSIZE); } } else { @@ -439,7 +441,7 @@ static int flagload_ext(NP2FFILE f, cons } for (i=0; i<4; i++) { if (extmem.page[i] < pagemax) { - extmem.pageptr[i] = extmemmng_ptr + (extmem.page[i] << 12); + extmem.pageptr[i] = CPU_EXTMEM + (extmem.page[i] << 12); } else { extmem.pageptr[i] = mem + 0xc0000 + (i << 14); @@ -450,6 +452,38 @@ static int flagload_ext(NP2FFILE f, cons } +// ---- cg window + +#if defined(CGWND_FONTPTR) +static int flagsave_cgwnd(NP2FFILE f, const STENTRY *t) { + + int ret; + _CGWINDOW cgwnd; + + cgwnd = cgwindow; + cgwnd.fontlow -= (long)fontrom; + cgwnd.fonthigh -= (long)fontrom; + ret = flagsave_create(f, t); + if (ret != NP2FLAG_FAILURE) { + ret |= flagsave_save(f, &cgwindow, sizeof(cgwindow)); + ret |= flagsave_close(f); + } + return(ret); +} + +static int flagload_cgwnd(NP2FFILE f, const STENTRY *t) { + + int ret; + + ret = flagload_load(f, &cgwindow, sizeof(cgwindow)); + cgwindow.fontlow += (long)fontrom; + cgwindow.fonthigh += (long)fontrom; + (void)t; + return(ret); +} +#endif + + // ---- dma static int flagsave_dma(NP2FFILE f, const STENTRY *t) { @@ -1267,6 +1301,12 @@ const STENTRY *tblterm; ret |= flagsave_term(&f, tbl); break; +#if defined(CGWND_FONTPTR) + case NP2FLAG_CGW: + ret |= flagsave_cgwnd(&f, tbl); + break; +#endif + case NP2FLAG_COM: ret |= flagsave_com(&f, tbl); break; @@ -1349,6 +1389,9 @@ const STENTRY *tblterm; if (tbl < tblterm) { switch(tbl->type) { case NP2FLAG_BIN: +#if defined(CGWND_FONTPTR) + case NP2FLAG_CGW: +#endif case NP2FLAG_CLOCK: case NP2FLAG_MEM: ret |= flagcheck_versize(&f, tbl, &e); @@ -1434,6 +1477,12 @@ const STENTRY *tblterm; done = TRUE; break; +#if defined(CGWND_FONTPTR) + case NP2FLAG_CGW: + ret |= flagload_cgwnd(&f, tbl); + break; +#endif + case NP2FLAG_CLOCK: ret |= flagload_clock(&f, tbl); break; @@ -1487,6 +1536,7 @@ const STENTRY *tblterm; flagclose(&f); // I/Oºî¤êľ¤· + i286_memorymap((pc.model & PCMODEL_EPSON)?1:0); iocore_build(); iocore_bind(); cbuscore_bind(); @@ -1499,6 +1549,10 @@ const STENTRY *tblterm; gdcs.palchange = GDCSCRN_REDRAW; tramflag.renewal = 1; cgwindow.writable |= 0x80; +#if defined(CPUSTRUC_FONTPTR) + FONTPTR_LOW = fontrom + cgwindow.low; + FONTPTR_HIGH = fontrom + cgwindow.high; +#endif i286_vram_dispatch(vramop.operate); soundmng_play();