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 / fp200 / fp200.h
1 /*\r
2         CASIO FP-200 Emulator 'eFP-200'\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2013.03.21-\r
6 \r
7         [ virtual machine ]\r
8 */\r
9 \r
10 #ifndef _FP200_H_\r
11 #define _FP200_H_\r
12 \r
13 #define DEVICE_NAME             "CASIO FP-200"\r
14 #define CONFIG_NAME             "fp200"\r
15 \r
16 // device informations for virtual machine\r
17 #define FRAMES_PER_SEC          64\r
18 #define LINES_PER_FRAME         64\r
19 #define CPU_CLOCKS              3077000\r
20 #define SCREEN_WIDTH            160\r
21 #define SCREEN_HEIGHT           64\r
22 #define HAS_I8085\r
23 #define MEMORY_ADDR_MAX         0x10000\r
24 #define MEMORY_BANK_SIZE        0x2000\r
25 \r
26 // device informations for win32\r
27 #define WINDOW_WIDTH            (SCREEN_WIDTH * 2)\r
28 #define WINDOW_HEIGHT           (SCREEN_HEIGHT * 2)\r
29 \r
30 #define USE_BOOT_MODE           2\r
31 #define USE_TAPE\r
32 #define TAPE_BINARY_ONLY\r
33 #define NOTIFY_KEY_DOWN\r
34 #define USE_ALT_F10_KEY\r
35 #define USE_AUTO_KEY            5\r
36 #define USE_AUTO_KEY_RELEASE    6\r
37 #define USE_AUTO_KEY_CAPS\r
38 #define USE_DEBUGGER\r
39 \r
40 #include "../../common.h"\r
41 \r
42 class EMU;\r
43 class DEVICE;\r
44 class EVENT;\r
45 \r
46 class I8080;\r
47 class MEMORY;\r
48 class RP5C01;\r
49 \r
50 class IO;\r
51 \r
52 class VM\r
53 {\r
54 protected:\r
55         EMU* emu;\r
56         \r
57         // devices\r
58         EVENT* event;\r
59         \r
60         I8080* cpu;\r
61         MEMORY* memory;\r
62         RP5C01* rtc;\r
63         \r
64         IO* io;\r
65         \r
66         // memory\r
67         uint8 rom[0x8000];\r
68         uint8 ram[0x8000];\r
69         \r
70 public:\r
71         // ----------------------------------------\r
72         // initialize\r
73         // ----------------------------------------\r
74         \r
75         VM(EMU* parent_emu);\r
76         ~VM();\r
77         \r
78         // ----------------------------------------\r
79         // for emulation class\r
80         // ----------------------------------------\r
81         \r
82         // drive virtual machine\r
83         void reset();\r
84         void run();\r
85         \r
86 #ifdef USE_DEBUGGER\r
87         // debugger\r
88         DEVICE *get_cpu(int index);\r
89 #endif\r
90         \r
91         // draw screen\r
92         void draw_screen();\r
93         \r
94         // sound generation\r
95         void initialize_sound(int rate, int samples);\r
96         uint16* create_sound(int* extra_frames);\r
97         int sound_buffer_ptr();\r
98         \r
99         // notify key\r
100         void key_down(int code, bool repeat);\r
101         void key_up(int code);\r
102         \r
103         // user interface\r
104         void play_tape(_TCHAR* file_path);\r
105         void rec_tape(_TCHAR* file_path);\r
106         void close_tape();\r
107         bool tape_inserted();\r
108         bool now_skip();\r
109         \r
110         void update_config();\r
111         \r
112         // ----------------------------------------\r
113         // for each device\r
114         // ----------------------------------------\r
115         \r
116         // devices\r
117         DEVICE* get_device(int id);\r
118         DEVICE* dummy;\r
119         DEVICE* first_device;\r
120         DEVICE* last_device;\r
121 };\r
122 \r
123 #endif\r