OSDN Git Service

[INITIAL] Import 20141226 version of http://homepage3.nifty.com/takeda-toshiya/common...
[csp-qt/common_source_project-fm7.git] / source / src / vm / x07 / x07.h
1 /*\r
2         CANON X-07 Emulator 'eX-07'\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2007.12.26 -\r
6 \r
7         [ virtual machine ]\r
8 */\r
9 \r
10 #ifndef _X07_H_\r
11 #define _X07_H_\r
12 \r
13 #define DEVICE_NAME             "CANON X-07"\r
14 #define CONFIG_NAME             "x07"\r
15 \r
16 // device informations for virtual machine\r
17 #define FRAMES_PER_SEC          60\r
18 #define LINES_PER_FRAME         262\r
19 #define CPU_CLOCKS              3840000\r
20 #define CPU_START_ADDR          0xc3c3\r
21 #define SCREEN_WIDTH            120\r
22 #define SCREEN_HEIGHT           32\r
23 #define TV_SCREEN_WIDTH         256\r
24 #define TV_SCREEN_HEIGHT        192\r
25 #define HAS_NSC800\r
26 #define MEMORY_ADDR_MAX         0x10000\r
27 #define MEMORY_BANK_SIZE        0x800\r
28 \r
29 // device informations for win32\r
30 #define WINDOW_WIDTH            (SCREEN_WIDTH * 2)\r
31 #define WINDOW_HEIGHT           (SCREEN_HEIGHT * 2)\r
32 #define TV_WINDOW_WIDTH         TV_SCREEN_WIDTH\r
33 #define TV_WINDOW_HEIGHT        TV_SCREEN_HEIGHT\r
34 \r
35 #define USE_TAPE\r
36 #define TAPE_BINARY_ONLY\r
37 #define NOTIFY_KEY_DOWN\r
38 #define USE_ALT_F10_KEY\r
39 #define USE_AUTO_KEY            6\r
40 #define USE_AUTO_KEY_RELEASE    10\r
41 #define USE_AUTO_KEY_CAPS\r
42 #define USE_DEBUGGER\r
43 \r
44 #include "../../common.h"\r
45 \r
46 class EMU;\r
47 class DEVICE;\r
48 class EVENT;\r
49 \r
50 class BEEP;\r
51 class MEMORY;\r
52 class Z80;\r
53 \r
54 class IO;\r
55 \r
56 class VM\r
57 {\r
58 protected:\r
59         EMU* emu;\r
60         \r
61         // devices\r
62         EVENT* event;\r
63         \r
64         BEEP* beep;\r
65         MEMORY* memory;\r
66         Z80* cpu;\r
67         \r
68         IO* io;\r
69         \r
70         // memory\r
71 //      uint8 c3[0x2000];\r
72         uint8 ram[0x6000];\r
73         uint8 app[0x2000];\r
74         uint8 vram[0x1800];\r
75         uint8 tv[0x1000];\r
76         uint8 bas[0x5000];\r
77         \r
78 public:\r
79         // ----------------------------------------\r
80         // initialize\r
81         // ----------------------------------------\r
82         \r
83         VM(EMU* parent_emu);\r
84         ~VM();\r
85         \r
86         // ----------------------------------------\r
87         // for emulation class\r
88         // ----------------------------------------\r
89         \r
90         // drive virtual machine\r
91         void reset();\r
92         void run();\r
93         \r
94 #ifdef USE_DEBUGGER\r
95         // debugger\r
96         DEVICE *get_cpu(int index);\r
97 #endif\r
98         \r
99         // draw screen\r
100         void draw_screen();\r
101         \r
102         // sound generation\r
103         void initialize_sound(int rate, int samples);\r
104         uint16* create_sound(int* extra_frames);\r
105         int sound_buffer_ptr();\r
106         \r
107         // notify key\r
108         void key_down(int code, bool repeat);\r
109         void key_up(int code);\r
110         \r
111         // user interface\r
112         void play_tape(_TCHAR* file_path);\r
113         void rec_tape(_TCHAR* file_path);\r
114         void close_tape();\r
115         bool tape_inserted();\r
116         bool now_skip();\r
117         \r
118         void update_config();\r
119         \r
120         // ----------------------------------------\r
121         // for each device\r
122         // ----------------------------------------\r
123         \r
124         // devices\r
125         DEVICE* get_device(int id);\r
126         DEVICE* dummy;\r
127         DEVICE* first_device;\r
128         DEVICE* last_device;\r
129 };\r
130 \r
131 #endif\r