OSDN Git Service

[DOC] For release 2017-01-24.
[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         int icount;
31         bool busreq;
32         
33 public:
34         HUC6280(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {
35                 set_device_name(_T("HuC6280 CPU"));
36         }
37         ~HUC6280() {}
38         
39         // common functions
40         void initialize();
41         void release();
42         void reset();
43         int run(int clock);
44         void write_signal(int id, uint32_t data, uint32_t mask);
45         uint32_t get_pc();
46         uint32_t get_next_pc();
47 #ifdef USE_DEBUGGER
48         void *get_debugger()
49         {
50                 return d_debugger;
51         }
52         uint32_t get_debug_prog_addr_mask()
53         {
54                 return 0xffff;
55         }
56         uint32_t get_debug_data_addr_mask()
57         {
58                 return 0x1fffff;
59         }
60         void write_debug_data8(uint32_t addr, uint32_t data);
61         uint32_t read_debug_data8(uint32_t addr);
62         void write_debug_io8(uint32_t addr, uint32_t data);
63         uint32_t read_debug_io8(uint32_t addr);
64         bool write_debug_reg(const _TCHAR *reg, uint32_t data);
65         void get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
66         int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
67 #endif
68         void save_state(FILEIO* state_fio);
69         bool load_state(FILEIO* state_fio);
70         
71         // unique function
72         void set_context_mem(DEVICE* device)
73         {
74                 d_mem = device;
75         }
76         void set_context_io(DEVICE* device)
77         {
78                 d_io = device;
79         }
80 #ifdef USE_DEBUGGER
81         void set_context_debugger(DEBUGGER* device)
82         {
83                 d_debugger = device;
84         }
85 #endif
86         uint8_t irq_status_r(uint16_t offset);
87         void irq_status_w(uint16_t offset, uint8_t data);
88         uint8_t timer_r(uint16_t offset);
89         void timer_w(uint16_t offset, uint8_t data);
90 };
91
92 #endif
93