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 / mz80k / mz80k.h
1 /*\r
2         SHARP MZ-80K Emulator 'EmuZ-80K'\r
3         SHARP MZ-1200 Emulator 'EmuZ-1200'\r
4 \r
5         Author : Takeda.Toshiya\r
6         Date   : 2010.08.18-\r
7 \r
8         SHARP MZ-80A Emulator 'EmuZ-80A'\r
9         Modify : Hideki Suga\r
10         Date   : 2014.12.10 -\r
11 \r
12         [ virtual machine ]\r
13 */\r
14 \r
15 #ifndef _MZ80K_H_\r
16 #define _MZ80K_H_\r
17 \r
18 #if defined(_MZ1200)\r
19 #define DEVICE_NAME             "SHARP MZ-1200"\r
20 #define CONFIG_NAME             "mz1200"\r
21 #elif defined(_MZ80A)\r
22 #define DEVICE_NAME             "SHARP MZ-80A"\r
23 #define CONFIG_NAME             "mz80a"\r
24 #else\r
25 #define DEVICE_NAME             "SHARP MZ-80K"\r
26 #define CONFIG_NAME             "mz80k"\r
27 #endif\r
28 \r
29 // device informations for virtual machine\r
30 #define FRAMES_PER_SEC          60\r
31 #define LINES_PER_FRAME         262\r
32 #define CPU_CLOCKS              2000000\r
33 #define SCREEN_WIDTH            320\r
34 #define SCREEN_HEIGHT           200\r
35 #define PCM1BIT_HIGH_QUALITY\r
36 //#define LOW_PASS_FILTER\r
37 \r
38 // device informations for win32\r
39 #define USE_TAPE\r
40 #define USE_TAPE_BUTTON\r
41 #define USE_SHIFT_NUMPAD_KEY\r
42 #define USE_ALT_F10_KEY\r
43 #define USE_AUTO_KEY            5\r
44 #define USE_AUTO_KEY_RELEASE    6\r
45 #define USE_AUTO_KEY_NO_CAPS\r
46 #define USE_DEBUGGER\r
47 \r
48 #include "../../common.h"\r
49 \r
50 class EMU;\r
51 class DEVICE;\r
52 class EVENT;\r
53 \r
54 #if defined(_MZ1200) || defined(_MZ80A)\r
55 class AND;\r
56 #endif\r
57 class DATAREC;\r
58 class I8253;\r
59 class I8255;\r
60 class LS393;\r
61 class PCM1BIT;\r
62 class Z80;\r
63 \r
64 class DISPLAY;\r
65 class KEYBOARD;\r
66 class MEMORY;\r
67 \r
68 class VM\r
69 {\r
70 protected:\r
71         EMU* emu;\r
72         \r
73         // devices\r
74         EVENT* event;\r
75         \r
76 #if defined(_MZ1200) || defined(_MZ80A)\r
77         AND* and;\r
78 #endif\r
79         DATAREC* drec;\r
80         I8253* ctc;\r
81         I8255* pio;\r
82         LS393* counter;\r
83         PCM1BIT* pcm;\r
84         Z80* cpu;\r
85         \r
86         DISPLAY* display;\r
87         KEYBOARD* keyboard;\r
88         MEMORY* memory;\r
89         \r
90 public:\r
91         // ----------------------------------------\r
92         // initialize\r
93         // ----------------------------------------\r
94         \r
95         VM(EMU* parent_emu);\r
96         ~VM();\r
97         \r
98         // ----------------------------------------\r
99         // for emulation class\r
100         // ----------------------------------------\r
101         \r
102         // drive virtual machine\r
103         void reset();\r
104         void run();\r
105         \r
106 #ifdef USE_DEBUGGER\r
107         // debugger\r
108         DEVICE *get_cpu(int index);\r
109 #endif\r
110         \r
111         // draw screen\r
112         void draw_screen();\r
113         \r
114         // sound generation\r
115         void initialize_sound(int rate, int samples);\r
116         uint16* create_sound(int* extra_frames);\r
117         int sound_buffer_ptr();\r
118         \r
119         // user interface\r
120         void play_tape(_TCHAR* file_path);\r
121         void rec_tape(_TCHAR* file_path);\r
122         void close_tape();\r
123         bool tape_inserted();\r
124         void push_play();\r
125         void push_stop();\r
126         bool now_skip();\r
127         \r
128         void update_config();\r
129         \r
130         // ----------------------------------------\r
131         // for each device\r
132         // ----------------------------------------\r
133         \r
134         // devices\r
135         DEVICE* get_device(int id);\r
136         DEVICE* dummy;\r
137         DEVICE* first_device;\r
138         DEVICE* last_device;\r
139 };\r
140 \r
141 #endif\r