|
|
| version 1.108, 2007/11/11 12:46:06 | version 1.111, 2011/02/23 10:11:44 |
|---|---|
| Line 1 | Line 1 |
| /** | |
| * @file pccore.c | |
| * @brief emluration core | |
| * | |
| * @author $Author$ | |
| * @date $Date$ | |
| */ | |
| #include "compiler.h" | #include "compiler.h" |
| #include "strres.h" | #include "strres.h" |
| #include "dosio.h" | #include "dosio.h" |
| Line 189 static void pccore_set(const NP2CFG *pCo | Line 197 static void pccore_set(const NP2CFG *pCo |
| // -------------------------------------------------------------------------- | // -------------------------------------------------------------------------- |
| #if !defined(DISABLE_SOUND) | #if !defined(DISABLE_SOUND) |
| static void sound_init() | static void sound_init(void) |
| { | { |
| UINT rate; | UINT rate; |
| Line 247 void pccore_init(void) { | Line 255 void pccore_init(void) { |
| fddfile_initialize(); | fddfile_initialize(); |
| #if !defined(DISABLE_SOUND) | #if !defined(DISABLE_SOUND) |
| sound_init(&np2cfg); | sound_init(); |
| #endif | #endif |
| rs232c_construct(); | rs232c_construct(); |
| Line 294 void pccore_cfgupdate(void) { | Line 302 void pccore_cfgupdate(void) { |
| int i; | int i; |
| renewal = FALSE; | renewal = FALSE; |
| for (i=0; i<8; i++) { | for (i=0; i<8; i++) |
| if (np2cfg.memsw[i] != mem[MEMX_MSW + i*4]) { | { |
| if (np2cfg.memsw[i] != mem[MEMX_MSW + i*4]) | |
| { | |
| np2cfg.memsw[i] = mem[MEMX_MSW + i*4]; | np2cfg.memsw[i] = mem[MEMX_MSW + i*4]; |
| renewal = TRUE; | renewal = TRUE; |
| } | } |
| } | } |
| for (i=0; i<3; i++) | |
| { | |
| if (np2cfg.dipsw[i] != pccore.dipsw[i]) | |
| { | |
| np2cfg.dipsw[i] = pccore.dipsw[i]; | |
| renewal = TRUE; | |
| } | |
| } | |
| if (renewal) { | if (renewal) { |
| sysmng_update(SYS_UPDATECFG); | sysmng_update(SYS_UPDATECFG); |
| } | } |
| } | } |
| /** | |
| * Reset the virtual machine | |
| */ | |
| void pccore_reset(void) { | void pccore_reset(void) { |
| int i; | int i; |
| BOOL epson; | |
| soundmng_stop(); | soundmng_stop(); |
| #if !defined(DISABLE_SOUND) | #if !defined(DISABLE_SOUND) |
| if (soundrenewal) { | if (soundrenewal) { |
| soundrenewal = 0; | soundrenewal = 0; |
| sound_term(); | sound_term(); |
| sound_init(&np2cfg); | sound_init(); |
| } | } |
| #endif | #endif |
| ZeroMemory(mem, 0x110000); | ZeroMemory(mem, 0x110000); |
| Line 335 void pccore_reset(void) { | Line 357 void pccore_reset(void) { |
| CPU_SETEXTSIZE((UINT32)pccore.extmem); | CPU_SETEXTSIZE((UINT32)pccore.extmem); |
| CPU_TYPE = 0; | CPU_TYPE = 0; |
| if (np2cfg.dipsw[2] & 0x80) { | if (pccore.dipsw[2] & 0x80) { |
| CPU_TYPE = CPUTYPE_V30; | CPU_TYPE = CPUTYPE_V30; |
| } | } |
| if (pccore.model & PCMODEL_EPSON) { // RAM ctrl | |
| epson = (pccore.model & PCMODEL_EPSON) ? TRUE : FALSE; | |
| if (epson) { | |
| /* enable RAM (D0000-DFFFF) */ | |
| CPU_RAM_D000 = 0xffff; | CPU_RAM_D000 = 0xffff; |
| } | } |
| font_setchargraph(epson); | |
| // HDDセット | // HDDセット |
| diskdrv_hddbind(); | diskdrv_hddbind(); |
| Line 371 void pccore_reset(void) { | Line 397 void pccore_reset(void) { |
| cbuscore_reset(&np2cfg); | cbuscore_reset(&np2cfg); |
| fmboard_reset(&np2cfg, pccore.sound); | fmboard_reset(&np2cfg, pccore.sound); |
| MEMM_ARCH((pccore.model & PCMODEL_EPSON)?1:0); | MEMM_ARCH((epson) ? 1 : 0); |
| iocore_build(); | iocore_build(); |
| iocore_bind(); | iocore_bind(); |
| cbuscore_bind(); | cbuscore_bind(); |