OSDN Git Service

[VM][General] Merge upstream 2015-08-25.
[csp-qt/common_source_project-fm7.git] / source / src / vm / huc6280.h
1 /*
2         Skelton for retropc emulator
3
4         Origin : MESS 0.147
5         Author : Takeda.Toshiya
6         Date   : 2012.10.23-
7
8         [ HuC6280 ]
9 */
10
11 #ifndef _HUC6280_H_ 
12 #define _HUC6280_H_
13
14 #include "vm.h"
15 #include "../emu.h"
16 #include "device.h"
17
18 #ifdef USE_DEBUGGER
19 class DEBUGGER;
20 #endif
21
22 class HUC6280 : public DEVICE
23 {
24 private:
25         DEVICE *d_mem, *d_io;
26 #ifdef USE_DEBUGGER
27         DEBUGGER *d_debugger;
28 #endif
29         void *opaque;
30         
31 public:
32         HUC6280(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
33         ~HUC6280() {}
34         
35         // common functions
36         void initialize();
37         void release();
38         void reset();
39         int run(int icount);
40         void write_signal(int id, uint32 data, uint32 mask);
41         uint32 get_pc();
42         uint32 get_next_pc();
43 #ifdef USE_DEBUGGER
44         void *get_debugger()
45         {
46                 return d_debugger;
47         }
48         uint32 debug_prog_addr_mask()
49         {
50                 return 0xffff;
51         }
52         uint32 debug_data_addr_mask()
53         {
54                 return 0xffff;
55         }
56         void debug_write_data8(uint32 addr, uint32 data);
57         uint32 debug_read_data8(uint32 addr);
58         void debug_write_io8(uint32 addr, uint32 data);
59         uint32 debug_read_io8(uint32 addr);
60         bool debug_write_reg(const _TCHAR *reg, uint32 data);
61         void debug_regs_info(_TCHAR *buffer, size_t buffer_len);
62         int debug_dasm(uint32 pc, _TCHAR *buffer, size_t buffer_len);
63 #endif
64         void save_state(FILEIO* state_fio);
65         bool load_state(FILEIO* state_fio);
66         
67         // unique function
68         void set_context_mem(DEVICE* device)
69         {
70                 d_mem = device;
71         }
72         void set_context_io(DEVICE* device)
73         {
74                 d_io = device;
75         }
76 #ifdef USE_DEBUGGER
77         void set_context_debugger(DEBUGGER* device)
78         {
79                 d_debugger = device;
80         }
81 #endif
82         uint8 irq_status_r(uint16 offset);
83         void irq_status_w(uint16 offset, uint8 data);
84         uint8 timer_r(uint16 offset);
85         void timer_w(uint16 offset, uint8 data);
86 };
87
88 #endif
89