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 / pc100 / pc100.h
1 /*\r
2         NEC PC-100 Emulator 'ePC-100'\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2008.07.12 -\r
6 \r
7         [ virtual machine ]\r
8 */\r
9 \r
10 #ifndef _PC100_H_\r
11 #define _PC100_H_\r
12 \r
13 #define DEVICE_NAME             "NEC PC-100"\r
14 #define CONFIG_NAME             "pc100"\r
15 \r
16 // device informations for virtual machine\r
17 #define FRAMES_PER_SEC          55.4\r
18 #define LINES_PER_FRAME         544\r
19 #define CPU_CLOCKS              6988800\r
20 #define SCREEN_WIDTH            720\r
21 #define SCREEN_HEIGHT           512\r
22 //720\r
23 #define MAX_DRIVE               4\r
24 #define HAS_I86\r
25 #define I8259_MAX_CHIPS         1\r
26 #define MSM58321_START_DAY      -9\r
27 #define MSM58321_START_YEAR     1980\r
28 #define UPD765A_NO_ST0_AT_FOR_SEEK\r
29 #define MEMORY_ADDR_MAX         0x100000\r
30 #define MEMORY_BANK_SIZE        0x8000\r
31 #define IO_ADDR_MAX             0x10000\r
32 \r
33 // device informations for win32\r
34 #define USE_FD1\r
35 #define USE_FD2\r
36 #define NOTIFY_KEY_DOWN\r
37 #define USE_SHIFT_NUMPAD_KEY\r
38 #define USE_ALT_F10_KEY\r
39 #define USE_AUTO_KEY            5\r
40 #define USE_AUTO_KEY_RELEASE    6\r
41 #define USE_MONITOR_TYPE        2\r
42 #define USE_SCREEN_ROTATE\r
43 #define USE_CRT_FILTER\r
44 #define USE_ACCESS_LAMP\r
45 #define USE_DEBUGGER\r
46 \r
47 #include "../../common.h"\r
48 \r
49 class EMU;\r
50 class DEVICE;\r
51 class EVENT;\r
52 \r
53 class AND;\r
54 class BEEP;\r
55 class I8251;\r
56 class I8255;\r
57 class I8259;\r
58 class I286;\r
59 class IO;\r
60 class MEMORY;\r
61 class MSM58321;\r
62 class PCM1BIT;\r
63 class UPD765A;\r
64 \r
65 class CRTC;\r
66 class IOCTRL;\r
67 class KANJI;\r
68 \r
69 class VM\r
70 {\r
71 protected:\r
72         EMU* emu;\r
73         \r
74         // devices\r
75         EVENT* event;\r
76         \r
77         AND* and;\r
78         BEEP* beep;\r
79         I8251* sio;\r
80         I8255* pio0;\r
81         I8255* pio1;\r
82         I8259* pic;     // includes 2chips\r
83         I286* cpu;\r
84         IO* io;\r
85         MEMORY* memory;\r
86         MSM58321* rtc;\r
87         PCM1BIT* pcm;\r
88         UPD765A* fdc;\r
89         \r
90         CRTC* crtc;\r
91         IOCTRL* ioctrl;\r
92         KANJI* kanji;\r
93         \r
94         // memory\r
95         uint8 ram[0xc0000];     // Main RAM 768KB\r
96         uint8 ipl[0x8000];      // IPL 32KB\r
97         \r
98 public:\r
99         // ----------------------------------------\r
100         // initialize\r
101         // ----------------------------------------\r
102         \r
103         VM(EMU* parent_emu);\r
104         ~VM();\r
105         \r
106         // ----------------------------------------\r
107         // for emulation class\r
108         // ----------------------------------------\r
109         \r
110         // drive virtual machine\r
111         void reset();\r
112         void run();\r
113         \r
114 #ifdef USE_DEBUGGER\r
115         // debugger\r
116         DEVICE *get_cpu(int index);\r
117 #endif\r
118         \r
119         // draw screen\r
120         void draw_screen();\r
121         int access_lamp();\r
122         \r
123         // sound generation\r
124         void initialize_sound(int rate, int samples);\r
125         uint16* create_sound(int* extra_frames);\r
126         int sound_buffer_ptr();\r
127         \r
128         // notify key\r
129         void key_down(int code, bool repeat);\r
130         void key_up(int code);\r
131         \r
132         // user interface\r
133         void open_disk(int drv, _TCHAR* file_path, int offset);\r
134         void close_disk(int drv);\r
135         bool disk_inserted(int drv);\r
136         bool now_skip();\r
137         \r
138         void update_config();\r
139         \r
140         // ----------------------------------------\r
141         // for each device\r
142         // ----------------------------------------\r
143         \r
144         // devices\r
145         DEVICE* get_device(int id);\r
146         DEVICE* dummy;\r
147         DEVICE* first_device;\r
148         DEVICE* last_device;\r
149 };\r
150 \r
151 #endif\r