OSDN Git Service

3e5d4321b6caeb32e70ae72801a11e5130d7a312
[csp-qt/common_source_project-fm7.git] / source / src / vm / hc80 / hc80.h
1 /*\r
2         EPSON HC-80 Emulator 'eHC-80'\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2008.03.14 -\r
6 \r
7         [ virtual machine ]\r
8 */\r
9 \r
10 #ifndef _HC80_H_\r
11 #define _HC80_H_\r
12 \r
13 #define DEVICE_NAME             "EPSON HC-80"\r
14 #define CONFIG_NAME             "hc80"\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              2457600\r
20 #define SCREEN_WIDTH            480\r
21 #define SCREEN_HEIGHT           64\r
22 #define MAX_DRIVE               4\r
23 \r
24 // device informations for win32\r
25 #define USE_SPECIAL_RESET\r
26 #define USE_DEVICE_TYPE         3\r
27 #define USE_FD1\r
28 #define USE_FD2\r
29 #define USE_FD3\r
30 #define USE_FD4\r
31 #define NOTIFY_KEY_DOWN\r
32 #define USE_ALT_F10_KEY\r
33 #define USE_AUTO_KEY            6\r
34 #define USE_AUTO_KEY_RELEASE    10\r
35 #define USE_ACCESS_LAMP\r
36 #define USE_DEBUGGER\r
37 \r
38 #include "../../common.h"\r
39 \r
40 class EMU;\r
41 class DEVICE;\r
42 class EVENT;\r
43 \r
44 class BEEP;\r
45 class I8251;\r
46 class TF20;\r
47 class Z80;\r
48 \r
49 class IO;\r
50 class MEMORY;\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         BEEP* beep;\r
61         I8251* sio;\r
62         TF20* tf20;\r
63         Z80* cpu;\r
64         \r
65         IO* io;\r
66         MEMORY* memory;\r
67         \r
68 public:\r
69         // ----------------------------------------\r
70         // initialize\r
71         // ----------------------------------------\r
72         \r
73         VM(EMU* parent_emu);\r
74         ~VM();\r
75         \r
76         // ----------------------------------------\r
77         // for emulation class\r
78         // ----------------------------------------\r
79         \r
80         // drive virtual machine\r
81         void reset();\r
82         void special_reset();\r
83         void run();\r
84         \r
85 #ifdef USE_DEBUGGER\r
86         // debugger\r
87         DEVICE *get_cpu(int index);\r
88 #endif\r
89         \r
90         // draw screen\r
91         void draw_screen();\r
92         int access_lamp();\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 open_disk(int drv, _TCHAR* file_path, int offset);\r
105         void close_disk(int drv);\r
106         bool disk_inserted(int drv);\r
107         bool now_skip();\r
108         \r
109         void update_config();\r
110         \r
111         // ----------------------------------------\r
112         // for each device\r
113         // ----------------------------------------\r
114         \r
115         // devices\r
116         DEVICE* get_device(int id);\r
117         DEVICE* dummy;\r
118         DEVICE* first_device;\r
119         DEVICE* last_device;\r
120 };\r
121 \r
122 #endif\r