OSDN Git Service

[VM][M23] Update M23 to upstream.
[csp-qt/common_source_project-fm7.git] / source / src / vm / m23 / beep.cpp
1 /*
2         SORD M23 Emulator 'Emu23'
3         SORD M68 Emulator 'Emu68'
4
5         Author : Takeda.Toshiya
6         Date   : 2022.05.21-
7
8         [ beep ]
9 */
10
11 #include "./beep.h"
12
13 namespace M23 {
14 void BEEP::initialize()
15 {
16         PCM1BIT::initialize();
17         reg = 0;
18 }
19
20 void BEEP::write_io8(uint32_t addr, uint32_t data)
21 {
22         switch(addr & 0xff) {
23         case 0xd3:
24                 reg ^= 1;
25                 PCM1BIT::write_signal(SIG_PCM1BIT_SIGNAL, reg, 1);
26                 break;
27         }
28 }
29
30 uint32_t BEEP::read_io8(uint32_t addr)
31 {
32         switch(addr & 0xff) {
33         case 0xd3:
34                 reg ^= 1;
35                 PCM1BIT::write_signal(SIG_PCM1BIT_SIGNAL, reg, 1);
36                 return reg;
37         }
38         return 0xff;
39 }
40
41 #define STATE_VERSION   1
42
43 bool BEEP::process_state(FILEIO* state_fio, bool loading)
44 {
45         if(!state_fio->StateCheckUint32(STATE_VERSION)) {
46                 return false;
47         }
48         if(!state_fio->StateCheckInt32(this_device_id)) {
49                 return false;
50         }
51         if(!PCM1BIT::process_state(state_fio, loading)) {
52                 return false;
53         }
54         state_fio->StateValue(reg);
55         return true;
56 }
57 }