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 / mycomz80a / mycomz80a.h
1 /*\r
2         Japan Electronics College MYCOMZ-80A Emulator 'eMYCOMZ-80A'\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2009.05.13-\r
6 \r
7         [ virtual machine ]\r
8 */\r
9 \r
10 #ifndef _MYCOMZ80A_H_\r
11 #define _MYCOMZ80A_H_\r
12 \r
13 #define DEVICE_NAME             "Japan Electronics College MYCOMZ-80A"\r
14 #define CONFIG_NAME             "mycomz80a"\r
15 \r
16 // device informations for virtual machine\r
17 #define FRAMES_PER_SEC          60.58\r
18 #define LINES_PER_FRAME         260\r
19 #define CHARS_PER_LINE          64\r
20 #define HD46505_HORIZ_FREQ      15750\r
21 #define CPU_CLOCKS              2500000\r
22 #define SCREEN_WIDTH            640\r
23 #define SCREEN_HEIGHT           400\r
24 #define SUPPORT_VARIABLE_TIMING\r
25 #define HAS_MSM5832\r
26 \r
27 // device informations for win32\r
28 #define USE_TAPE\r
29 #define NOTIFY_KEY_DOWN\r
30 #define USE_SHIFT_NUMPAD_KEY\r
31 #define USE_ALT_F10_KEY\r
32 #define USE_AUTO_KEY            5\r
33 #define USE_AUTO_KEY_RELEASE    6\r
34 #define USE_AUTO_KEY_CAPS\r
35 #define USE_CRT_FILTER\r
36 #define USE_SCANLINE\r
37 #define USE_DEBUGGER\r
38 \r
39 #include "../../common.h"\r
40 \r
41 class EMU;\r
42 class DEVICE;\r
43 class EVENT;\r
44 \r
45 class DATAREC;\r
46 class HD46505;\r
47 class I8255;\r
48 class IO;\r
49 class MSM58321;\r
50 class SN76489AN;\r
51 class Z80;\r
52 \r
53 class DISPLAY;\r
54 class KEYBOARD;\r
55 class MEMORY;\r
56 \r
57 class VM\r
58 {\r
59 protected:\r
60         EMU* emu;\r
61         \r
62         // devices\r
63         EVENT* event;\r
64         \r
65         DATAREC* drec;\r
66         HD46505* crtc;\r
67         I8255* pio1;\r
68         I8255* pio2;\r
69         I8255* pio3;\r
70         IO* io;\r
71         MSM58321* rtc;\r
72         SN76489AN* psg;\r
73         Z80* cpu;\r
74         \r
75         DISPLAY* display;\r
76         KEYBOARD* keyboard;\r
77         MEMORY* memory;\r
78         \r
79 public:\r
80         // ----------------------------------------\r
81         // initialize\r
82         // ----------------------------------------\r
83         \r
84         VM(EMU* parent_emu);\r
85         ~VM();\r
86         \r
87         // ----------------------------------------\r
88         // for emulation class\r
89         // ----------------------------------------\r
90         \r
91         // drive virtual machine\r
92         void reset();\r
93         void run();\r
94         double frame_rate();\r
95         \r
96 #ifdef USE_DEBUGGER\r
97         // debugger\r
98         DEVICE *get_cpu(int index);\r
99 #endif\r
100         \r
101         // draw screen\r
102         void draw_screen();\r
103         \r
104         // sound generation\r
105         void initialize_sound(int rate, int samples);\r
106         uint16* create_sound(int* extra_frames);\r
107         int sound_buffer_ptr();\r
108         \r
109         // notify key\r
110         void key_down(int code, bool repeat);\r
111         void key_up(int code);\r
112         \r
113         // user interface\r
114         void play_tape(_TCHAR* file_path);\r
115         void rec_tape(_TCHAR* file_path);\r
116         void close_tape();\r
117         bool tape_inserted();\r
118         bool now_skip();\r
119         \r
120         void update_config();\r
121         \r
122         // ----------------------------------------\r
123         // for each device\r
124         // ----------------------------------------\r
125         \r
126         // devices\r
127         DEVICE* get_device(int id);\r
128         DEVICE* dummy;\r
129         DEVICE* first_device;\r
130         DEVICE* last_device;\r
131 };\r
132 \r
133 #endif\r