OSDN Git Service

7a6e203e84e79c25b92b30e5414055b9a04d130d
[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 void IOBUS::reset()
13 {
14         mio = false;
15 }
16
17 void IOBUS::write_io8(uint32_t addr, uint32_t data)
18 {
19         if(mio) {
20                 mio = false;
21                 ram[addr & 0xffff] = data;
22         } else {
23                 d_io->write_io8(addr, data);
24         }
25 }
26
27 uint32_t IOBUS::read_io8(uint32_t addr)
28 {
29         if(mio) {
30                 mio = false;
31                 return ram[addr & 0xffff];
32         } else {
33                 return d_io->read_io8(addr);
34         }
35 }
36
37 void IOBUS::write_signal(int id, uint32_t data, uint32_t mask)
38 {
39         if(id == SIG_IOBUS_MIO) {
40                 mio = ((data & mask) != 0);
41         }
42 }
43
44 #define STATE_VERSION   1
45
46 bool IOBUS::process_state(FILEIO* state_fio, bool loading)
47 {
48         if(!state_fio->StateCheckUint32(STATE_VERSION)) {
49                 return false;
50         }
51         if(!state_fio->StateCheckInt32(this_device_id)) {
52                 return false;
53         }
54         state_fio->StateBool(mio);
55         return true;
56 }