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 / mz2500 / mz80b.h
1 /*\r
2         SHARP MZ-80B Emulator 'EmuZ-80B'\r
3         SHARP MZ-2200 Emulator 'EmuZ-2200'\r
4 \r
5         Author : Takeda.Toshiya\r
6         Date   : 2013.03.14-\r
7 \r
8         [ virtual machine ]\r
9 */\r
10 \r
11 #ifndef _MZ80B_H_\r
12 #define _MZ80B_H_\r
13 \r
14 #if defined(_MZ80B)\r
15 #define DEVICE_NAME             "SHARP MZ-80B"\r
16 #define CONFIG_NAME             "mz80b"\r
17 #elif defined(_MZ2000)\r
18 #define DEVICE_NAME             "SHARP MZ-2000"\r
19 #define CONFIG_NAME             "mz2000"\r
20 #else\r
21 #define DEVICE_NAME             "SHARP MZ-2200"\r
22 #define CONFIG_NAME             "mz2200"\r
23 #endif\r
24 \r
25 #ifndef _MZ80B\r
26 #define SUPPORT_QUICK_DISK\r
27 #define SUPPORT_16BIT_BOARD\r
28 #endif\r
29 \r
30 // device informations for virtual machine\r
31 #define FRAMES_PER_SEC          60\r
32 #define LINES_PER_FRAME         262\r
33 #define CPU_CLOCKS              4000000\r
34 #define SCREEN_WIDTH            640\r
35 #define SCREEN_HEIGHT           400\r
36 #define MAX_DRIVE               4\r
37 #define HAS_MB8876\r
38 #define PCM1BIT_HIGH_QUALITY\r
39 #ifdef SUPPORT_QUICK_DISK\r
40 // 1byte=32clock/3.25MHz*8=79usec\r
41 #define Z80SIO_DELAY_SEND       100\r
42 #define Z80SIO_DELAY_RECV       100\r
43 #endif\r
44 #ifdef SUPPORT_16BIT_BOARD\r
45 #define HAS_I88\r
46 #define I8259_MAX_CHIPS         1\r
47 #endif\r
48 \r
49 // memory wait\r
50 #define Z80_MEMORY_WAIT\r
51 #define Z80_IO_WAIT\r
52 \r
53 // device informations for win32\r
54 #define USE_SPECIAL_RESET\r
55 #define USE_FD1\r
56 #define USE_FD2\r
57 #define USE_FD3\r
58 #define USE_FD4\r
59 #ifdef SUPPORT_QUICK_DISK\r
60 #define USE_QD1\r
61 #endif\r
62 #define USE_TAPE\r
63 #define USE_TAPE_BUTTON\r
64 #define USE_SHIFT_NUMPAD_KEY\r
65 #define USE_ALT_F10_KEY\r
66 #define USE_AUTO_KEY            5\r
67 #define USE_AUTO_KEY_RELEASE    6\r
68 #define USE_AUTO_KEY_CAPS\r
69 #ifndef _MZ80B\r
70 #define USE_MONITOR_TYPE        2\r
71 #define USE_CRT_FILTER\r
72 #endif\r
73 #define USE_SCANLINE\r
74 #define USE_ACCESS_LAMP\r
75 #define USE_DEBUGGER\r
76 #define USE_STATE\r
77 \r
78 #include "../../common.h"\r
79 \r
80 class EMU;\r
81 class DEVICE;\r
82 class EVENT;\r
83 \r
84 class DATAREC;\r
85 class I8253;\r
86 class I8255;\r
87 class IO;\r
88 class MB8877;\r
89 class PCM1BIT;\r
90 class Z80;\r
91 class Z80PIO;\r
92 \r
93 class CMT;\r
94 class FLOPPY;\r
95 class KEYBOARD;\r
96 class MEMORY;\r
97 class MZ1R12;\r
98 class MZ1R13;\r
99 class TIMER;\r
100 \r
101 #ifdef SUPPORT_QUICK_DISK\r
102 class Z80SIO;\r
103 class QUICKDISK;\r
104 #endif\r
105 \r
106 #ifdef SUPPORT_16BIT_BOARD\r
107 class I286;\r
108 class I8259;\r
109 class MZ1M01;\r
110 #endif\r
111 \r
112 class FILEIO;\r
113 \r
114 class VM\r
115 {\r
116 protected:\r
117         EMU* emu;\r
118         \r
119         // devices\r
120         EVENT* event;\r
121         \r
122         DATAREC* drec;\r
123         I8253* pit;\r
124         I8255* pio_i;\r
125         IO* io;\r
126         MB8877* fdc;\r
127         PCM1BIT* pcm;\r
128         Z80* cpu;\r
129         Z80PIO* pio;\r
130         \r
131         CMT* cmt;\r
132         FLOPPY* floppy;\r
133         KEYBOARD* keyboard;\r
134         MEMORY* memory;\r
135         MZ1R12* mz1r12;\r
136         MZ1R13* mz1r13;\r
137         TIMER* timer;\r
138         \r
139 #ifdef SUPPORT_QUICK_DISK\r
140         Z80SIO* sio;\r
141         QUICKDISK* qd;\r
142 #endif\r
143         \r
144 #ifdef SUPPORT_16BIT_BOARD\r
145         Z80PIO* pio_to16;\r
146         I286* cpu_16;\r
147         I8259* pic_16;\r
148         MZ1M01* mz1m01;\r
149 #endif\r
150         \r
151 public:\r
152         // ----------------------------------------\r
153         // initialize\r
154         // ----------------------------------------\r
155         \r
156         VM(EMU* parent_emu);\r
157         ~VM();\r
158         \r
159         // ----------------------------------------\r
160         // for emulation class\r
161         // ----------------------------------------\r
162         \r
163         // drive virtual machine\r
164         void reset();\r
165         void special_reset();\r
166         void run();\r
167         \r
168 #ifdef USE_DEBUGGER\r
169         // debugger\r
170         DEVICE *get_cpu(int index);\r
171 #endif\r
172         \r
173         // draw screen\r
174         void draw_screen();\r
175         int access_lamp();\r
176         \r
177         // sound generation\r
178         void initialize_sound(int rate, int samples);\r
179         uint16* create_sound(int* extra_frames);\r
180         int sound_buffer_ptr();\r
181         \r
182         // user interface\r
183         void open_disk(int drv, _TCHAR* file_path, int offset);\r
184         void close_disk(int drv);\r
185         bool disk_inserted(int drv);\r
186 #ifdef SUPPORT_QUICK_DISK\r
187         void open_quickdisk(int drv, _TCHAR* file_path);\r
188         void close_quickdisk(int drv);\r
189         bool quickdisk_inserted(int drv);\r
190 #endif\r
191         void play_tape(_TCHAR* file_path);\r
192         void rec_tape(_TCHAR* file_path);\r
193         void close_tape();\r
194         bool tape_inserted();\r
195         void push_play();\r
196         void push_stop();\r
197         bool now_skip();\r
198         \r
199         void update_config();\r
200         void save_state(FILEIO* state_fio);\r
201         bool load_state(FILEIO* state_fio);\r
202         \r
203         // ----------------------------------------\r
204         // for each device\r
205         // ----------------------------------------\r
206         \r
207         // devices\r
208         DEVICE* get_device(int id);\r
209         DEVICE* dummy;\r
210         DEVICE* first_device;\r
211         DEVICE* last_device;\r
212 };\r
213 \r
214 #endif\r