--- np2/statsave.c 2003/12/19 23:16:06 1.21 +++ np2/statsave.c 2004/01/05 09:31:24 1.25 @@ -55,11 +55,15 @@ typedef struct { enum { NP2FLAG_BIN = 0, NP2FLAG_TERM, +#if defined(CGWND_FONTPTR) + NP2FLAG_CGW, +#endif NP2FLAG_CLOCK, NP2FLAG_COM, NP2FLAG_DISK, NP2FLAG_DMA, NP2FLAG_EGC, + NP2FLAG_EPSON, NP2FLAG_EVT, NP2FLAG_EXT, NP2FLAG_FM, @@ -449,6 +453,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) { @@ -459,9 +495,9 @@ static int flagsave_dma(NP2FFILE f, cons dmabak = dmac; for (i=0; i<4; i++) { - if ((PROC2NUM(dmabak.dmach[i].outproc, dmaproc)) || - (PROC2NUM(dmabak.dmach[i].inproc, dmaproc)) || - (PROC2NUM(dmabak.dmach[i].extproc, dmaproc))) { + if ((PROC2NUM(dmabak.dmach[i].proc.outproc, dmaproc)) || + (PROC2NUM(dmabak.dmach[i].proc.inproc, dmaproc)) || + (PROC2NUM(dmabak.dmach[i].proc.extproc, dmaproc))) { return(NP2FLAG_FAILURE); } } @@ -481,16 +517,16 @@ static int flagload_dma(NP2FFILE f, cons ret = flagload_load(f, &dmac, sizeof(dmac)); for (i=0; i<4; i++) { - if (NUM2PROC(dmac.dmach[i].outproc, dmaproc)) { - dmac.dmach[i].outproc = dma_dummyout; + if (NUM2PROC(dmac.dmach[i].proc.outproc, dmaproc)) { + dmac.dmach[i].proc.outproc = dma_dummyout; ret |= NP2FLAG_WARNING; } - if (NUM2PROC(dmac.dmach[i].inproc, dmaproc)) { - dmac.dmach[i].inproc = dma_dummyin; + if (NUM2PROC(dmac.dmach[i].proc.inproc, dmaproc)) { + dmac.dmach[i].proc.inproc = dma_dummyin; ret |= NP2FLAG_WARNING; } - if (NUM2PROC(dmac.dmach[i].extproc, dmaproc)) { - dmac.dmach[i].extproc = dma_dummyproc; + if (NUM2PROC(dmac.dmach[i].proc.extproc, dmaproc)) { + dmac.dmach[i].proc.extproc = dma_dummyproc; ret |= NP2FLAG_WARNING; } } @@ -530,6 +566,37 @@ static int flagload_egc(NP2FFILE f, cons } +// ---- epson + +static int flagsave_epson(NP2FFILE f, const STENTRY *t) { + + int ret; + + if (!(pc.model & PCMODEL_EPSON)) { + return(NP2FLAG_SUCCESS); + } + ret = flagsave_create(f, t); + if (ret != NP2FLAG_FAILURE) { + ret |= flagsave_save(f, &epsonio, sizeof(epsonio)); + ret |= flagsave_save(f, mem + 0x1c0000, 0x8000); + ret |= flagsave_save(f, mem + 0x1e8000, 0x18000); + ret |= flagsave_close(f); + } + return(ret); +} + +static int flagload_epson(NP2FFILE f, const STENTRY *t) { + + int ret; + + ret = flagload_load(f, &epsonio, sizeof(epsonio)); + ret |= flagload_load(f, mem + 0x1c0000, 0x8000); + ret |= flagload_load(f, mem + 0x1e8000, 0x18000); + (void)t; + return(ret); +} + + // ---- event typedef struct { @@ -1266,6 +1333,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; @@ -1282,6 +1355,10 @@ const STENTRY *tblterm; ret |= flagsave_egc(&f, tbl); break; + case NP2FLAG_EPSON: + ret |= flagsave_epson(&f, tbl); + break; + case NP2FLAG_EVT: ret |= flagsave_evt(&f, tbl); break; @@ -1348,6 +1425,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); @@ -1360,6 +1440,7 @@ const STENTRY *tblterm; case NP2FLAG_COM: case NP2FLAG_DMA: case NP2FLAG_EGC: + case NP2FLAG_EPSON: case NP2FLAG_EVT: case NP2FLAG_EXT: case NP2FLAG_GIJ: @@ -1433,6 +1514,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; @@ -1453,6 +1540,10 @@ const STENTRY *tblterm; ret |= flagload_egc(&f, tbl); break; + case NP2FLAG_EPSON: + ret |= flagload_epson(&f, tbl); + break; + case NP2FLAG_EVT: ret |= flagload_evt(&f, tbl); break; @@ -1486,6 +1577,7 @@ const STENTRY *tblterm; flagclose(&f); // I/Oºî¤êľ¤· + i286_memorymap((pc.model & PCMODEL_EPSON)?1:0); iocore_build(); iocore_bind(); cbuscore_bind();