OSDN Git Service

[VM][STATE] Use namespace {VMNAME} to separate per VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / pasopia7 / iobus.cpp
1 /*
2         TOSHIBA PASOPIA 7 Emulator 'EmuPIA7'
3
4         Author : Takeda.Toshiya
5         Date   : 2006.09.20 -
6
7         [ 8bit i/o bus ]
8 */
9
10 #include "iobus.h"
11
12 namespace PASOPIA7 {
13
14 void IOBUS::reset()
15 {
16         mio = false;
17 }
18
19 void IOBUS::write_io8(uint32_t addr, uint32_t data)
20 {
21         if(mio) {
22                 mio = false;
23                 ram[addr & 0xffff] = data;
24         } else {
25                 d_io->write_io8(addr, data);
26         }
27 }
28
29 uint32_t IOBUS::read_io8(uint32_t addr)
30 {
31         if(mio) {
32                 mio = false;
33                 return ram[addr & 0xffff];
34         } else {
35                 return d_io->read_io8(addr);
36         }
37 }
38
39 void IOBUS::write_signal(int id, uint32_t data, uint32_t mask)
40 {
41         if(id == SIG_IOBUS_MIO) {
42                 mio = ((data & mask) != 0);
43         }
44 }
45
46 #define STATE_VERSION   1
47
48 bool IOBUS::process_state(FILEIO* state_fio, bool loading)
49 {
50         if(!state_fio->StateCheckUint32(STATE_VERSION)) {
51                 return false;
52         }
53         if(!state_fio->StateCheckInt32(this_device_id)) {
54                 return false;
55         }
56         state_fio->StateBool(mio);
57         return true;
58 }
59
60 }