2 NEC PC-9801VX Emulator 'ePC-9801VX'
3 NEC PC-9801RA Emulator 'ePC-9801RA'
4 NEC PC-98XA Emulator 'ePC-98XA'
5 NEC PC-98XL Emulator 'ePC-98XL'
6 NEC PC-98RL Emulator 'ePC-98RL'
8 Author : Takeda.Toshiya
19 static const int bank_lo_id[] = {
20 SIG_I8237_BANK1, SIG_I8237_BANK2, SIG_I8237_BANK3, SIG_I8237_BANK0,
22 static const int bank_hi_id[] = {
23 SIG_I8237_BANK0, SIG_I8237_BANK1, SIG_I8237_BANK2, SIG_I8237_BANK3,
25 static const int mask_id[] = {
26 SIG_I8237_MASK0, SIG_I8237_MASK1, SIG_I8237_MASK2, SIG_I8237_MASK3,
29 void DMAREG::write_io8(uint32_t addr, uint32_t data)
36 #if defined(SUPPORT_32BIT_ADDRESS)
37 d_dma->write_signal(bank_lo_id[((addr - 0x0021) >> 1) & 3], data & 0xff, 0x00ff);
38 #elif defined(_PC98XA)
39 d_dma->write_signal(bank_lo_id[((addr - 0x0021) >> 1) & 3], data & 0x7f, 0x00ff);
40 #elif defined(SUPPORT_24BIT_ADDRESS)
41 d_dma->write_signal(bank_lo_id[((addr - 0x0021) >> 1) & 3], data & 0xff, 0x00ff);
43 d_dma->write_signal(bank_lo_id[((addr - 0x0021) >> 1) & 3], data & 0x0f, 0x00ff);
46 #if defined(SUPPORT_24BIT_ADDRESS) || defined(SUPPORT_32BIT_ADDRESS)
50 d_dma->write_signal(mask_id[data & 3], 0x0000, 0xffff); // 64KB
53 d_dma->write_signal(mask_id[data & 3], 0x000f, 0xffff); // 1MB
56 d_dma->write_signal(mask_id[data & 3], 0x00ff, 0xffff); // 16MB
61 #if defined(SUPPORT_32BIT_ADDRESS)
66 d_dma->write_signal(bank_hi_id[((addr - 0xe05) >> 1) & 3], (data & 0xff) << 8, 0xff00);
72 uint32_t DMAREG::read_io8(uint32_t addr)
79 return d_dma->read_signal(bank_lo_id[((addr - 0x0021) >> 1) & 3]);
85 #define STATE_VERSION 1
87 bool DMAREG::process_state(FILEIO* state_fio, bool loading)
89 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
92 if(!state_fio->StateCheckInt32(this_device_id)) {