OSDN Git Service

[VM][Qt][UI][EMU][WIP] Use EMU_TEMPLATE:: instead of EMU:: . Some VMs are not apply...
[csp-qt/common_source_project-fm7.git] / source / src / vm / fm7 / fm8_mainio.h
1 /*
2  * FM-8 Main I/O [fm7_mainio.h]
3  *
4  * Author: K.Ohta <whatisthis.sowhat _at_ gmail.com>
5  * License: GPLv2
6  * History:
7  *   Jan 03, 2015 : Initial
8  *   Jan 25, 2018 : Split FM-8 from fm7_mainio.h .
9  */
10
11 #ifndef _VM_FM8_MAINIO_H_
12 #define _VM_FM8_MAINIO_H_
13
14 #include "./fm7_mainio.h"
15
16 namespace FM7 {
17         class BUBBLECASETTE;
18 }
19
20 namespace FM7 {
21 class FM8_MAINIO : public FM7_MAINIO {
22  protected:
23         FM7::BUBBLECASETTE *bubble_casette[2];
24         uint8_t get_port_fd00(void) override;
25         void set_port_fd02(uint8_t val) override;
26         uint8_t get_irqstat_fd03(void) override;
27         uint8_t get_extirq_fd17(void) override;
28         void set_ext_fd17(uint8_t data) override;
29         
30         void set_irq_syndet(bool flag) override;
31         void set_irq_rxrdy(bool flag) override;
32         void set_irq_txrdy(bool flag) override;
33         void set_irq_timer(bool flag) override;
34         void set_irq_printer(bool flag) override;
35         void set_irq_mfd(bool flag) override;
36         void do_irq(void) override;
37         void __FASTCALL write_fd0f(void) override;
38         uint8_t __FASTCALL read_fd0f(void) override;
39
40         void reset_sound(void) override;
41         void set_psg(uint8_t val) override;
42         uint8_t get_psg(void) override;
43         void set_psg_cmd(uint8_t cmd) override;
44         void write_opn_reg(int index, uint32_t addr, uint32_t data) override;
45         void set_opn(int index, uint8_t val) override;
46         uint8_t get_opn(int index) override;
47         void set_opn_cmd(int index, uint8_t cmd) override;
48         uint8_t get_extirq_whg(void) override;
49         uint8_t get_extirq_thg(void) override;
50 public:
51         FM8_MAINIO(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu);
52         ~FM8_MAINIO();
53         
54         void __FASTCALL write_data8(uint32_t addr, uint32_t data);
55         uint32_t __FASTCALL read_data8(uint32_t addr);
56         void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
57
58         void event_callback(int event_id, int err);
59         void reset() override;
60         void initialize();
61         void update_config();
62         bool process_state(FILEIO *state_fio, bool loading) override;
63
64         void set_context_kanjirom_class2(DEVICE *p)
65         {
66         }
67 # if defined(USE_AY_3_8910_AS_PSG)
68         void set_context_psg(AY_3_891X *p)
69         {
70                 psg = p;
71                 connect_psg = true;
72         }
73 # else
74         void set_context_psg(YM2203 *p)
75         {
76                 psg = p;
77                 connect_psg = true;
78         }
79 # endif
80         void set_context_bubble(BUBBLECASETTE *p, int drive) {
81                 if(drive > 2) return;
82                 bubble_casette[drive] = p;
83         }
84 };      
85
86 }
87 #endif