OSDN Git Service

Merge branch 'master' of github.com:Artanejp/common_source_project-fm7
[csp-qt/common_source_project-fm7.git] / source / src / vm / mb8861.h
1 #ifndef _MB8861_H_ 
2 #define _MB8861_H_
3
4 #include "mc6800.h"
5 #include "device.h"
6
7 class DEBUGGER;
8 class FIFO;
9 //#endif
10 class MB8861 : public MC6800
11 {
12 private:
13 #define XX 5 // invalid opcode unknown cc
14         const uint8_t cycles[256] = {
15                 XX, 2,XX,XX,XX,XX, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2,
16                 2, 2,XX,XX,XX,XX, 2, 2,XX, 2,XX, 2,XX,XX,XX,XX,
17                 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
18                 4, 4, 4, 4, 4, 4, 4, 4,XX, 5,XX,10,XX,XX, 9,12,
19                 2,XX,XX, 2, 2,XX, 2, 2, 2, 2, 2,XX, 2, 2,XX, 2,
20                 2,XX,XX, 2, 2,XX, 2, 2, 2, 2, 2,XX, 2, 2,XX, 2,
21                 7,XX,XX, 7, 7,XX, 7, 7, 7, 7, 7,XX, 7, 7, 4, 7,
22                 6, 8, 8, 6, 6, 8, 6, 6, 6, 6, 6, 7, 6, 6, 3, 6,
23                 2, 2, 2,XX, 2, 2, 2, 3, 2, 2, 2, 2, 3, 8, 3, 4,
24                 3, 3, 3,XX, 3, 3, 3, 4, 3, 3, 3, 3, 4, 6, 4, 5,
25                 5, 5, 5,XX, 5, 5, 5, 6, 5, 5, 5, 5, 6, 8, 6, 7,
26                 4, 4, 4,XX, 4, 4, 4, 5, 4, 4, 4, 4, 5, 9, 5, 6,
27                 2, 2, 2,XX, 2, 2, 2, 3, 2, 2, 2, 2,XX,XX, 3, 4,
28                 3, 3, 3,XX, 3, 3, 3, 4, 3, 3, 3, 3,XX,XX, 4, 5,
29                 5, 5, 5,XX, 5, 5, 5, 6, 5, 5, 5, 5, 4,XX, 6, 7,
30                 4, 4, 4,XX, 4, 4, 4, 5, 4, 4, 4, 4, 7,XX, 5, 6
31         };
32 #undef XX // invalid opcode unknown cc
33 protected:
34         void insn(uint8_t code) override;
35
36         void nim_ix();
37         void oim_ix_mb8861();
38         void xim_ix();
39         void tmm_ix();
40         void adx_im();
41         void adx_ex();
42
43 public:
44         MB8861(VM* parent_vm, EMU* parent_emu) : MC6800(parent_vm, parent_emu)
45         {
46                 set_device_name(_T("MB8861 MPU"));
47         }
48         ~MB8861() {}
49         int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len) override;
50
51
52 };
53
54 #endif