Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
716 | lvd | 1 | #pragma once |
2 | #include "emul_2203.h" |
||
3 | #include "sndrender/sndchip.h" |
||
4 | #include "sndrender/saa1099.h" |
||
5 | |||
6 | #define ROMLED_TIME 16 |
||
7 | |||
8 | #pragma pack(8) |
||
9 | struct PALETTE_OPTIONS |
||
10 | { // custom palettes |
||
11 | char name[33]; |
||
12 | unsigned ZZ,ZN,NN,NB,BB,ZB; |
||
13 | unsigned r11,r12,r13,r21,r22,r23,r31,r32,r33; |
||
14 | }; |
||
15 | #pragma pack() |
||
16 | |||
17 | enum |
||
18 | { |
||
19 | VK_LMB = 0x101, |
||
20 | VK_RMB, |
||
21 | VK_MMB, |
||
22 | VK_MWU, |
||
23 | VK_MWD, |
||
24 | VK_JLEFT, |
||
25 | VK_JRIGHT, |
||
26 | VK_JUP, |
||
27 | VK_JDOWN, |
||
28 | VK_JFIRE, |
||
29 | VK_JB0 = VK_JFIRE, |
||
30 | VK_JB1, |
||
31 | VK_JB2, |
||
32 | VK_JB3, |
||
33 | VK_JB4, |
||
34 | VK_JB5, |
||
35 | VK_JB6, |
||
36 | VK_JB7, |
||
37 | VK_JB8, |
||
38 | VK_JB9, |
||
39 | VK_JB10, |
||
40 | VK_JB11, |
||
41 | VK_JB12, |
||
42 | VK_JB13, |
||
43 | VK_JB14, |
||
44 | VK_JB15, |
||
45 | VK_JB16, |
||
46 | VK_JB17, |
||
47 | VK_JB18, |
||
48 | VK_JB19, |
||
49 | VK_JB20, |
||
50 | VK_JB21, |
||
51 | VK_JB22, |
||
52 | VK_JB23, |
||
53 | VK_JB24, |
||
54 | VK_JB25, |
||
55 | VK_JB26, |
||
56 | VK_JB27, |
||
57 | VK_JB28, |
||
58 | VK_JB29, |
||
59 | VK_JB30, |
||
60 | VK_JB31, |
||
61 | DIK_MENU, |
||
62 | DIK_CONTROL, |
||
63 | DIK_SHIFT, |
||
64 | VK_MAX |
||
65 | }; |
||
66 | |||
67 | enum |
||
68 | { |
||
69 | MEMBITS_R = 0x01, MEMBITS_W = 0x02, MEMBITS_X = 0x04, |
||
70 | MEMBITS_BPR = 0x10, MEMBITS_BPW = 0x20, MEMBITS_BPX = 0x40 |
||
71 | }; |
||
72 | |||
73 | struct GDIBMP |
||
74 | { |
||
75 | BITMAPINFO header; |
||
76 | RGBQUAD waste[0x100]; |
||
77 | }; |
||
78 | |||
79 | class TMainZ80 : public Z80 |
||
80 | { |
||
81 | public: |
||
82 | TMainZ80(u32 Idx, |
||
83 | TBankNames BankNames, TStep Step, TDelta Delta, |
||
84 | TSetLastT SetLastT, u8 *membits, const TMemIf *FastMemIf, const TMemIf *DbgMemIf) : |
||
85 | Z80(Idx, BankNames, Step, Delta, SetLastT, membits, FastMemIf, DbgMemIf) { } |
||
86 | /* |
||
87 | virtual unsigned char rm(unsigned addr) override; |
||
88 | virtual unsigned char dbgrm(unsigned addr) override; |
||
89 | virtual void wm(unsigned addr, unsigned char val) override; |
||
90 | virtual void dbgwm(unsigned addr, unsigned char val) override; |
||
91 | */ |
||
92 | virtual u8 *DirectMem(unsigned addr) const override; // get direct memory pointer in debuger |
||
93 | |||
94 | virtual unsigned char m1_cycle() override; |
||
95 | virtual unsigned char in(unsigned port) override; |
||
96 | virtual void out(unsigned port, unsigned char val) override; |
||
97 | virtual u8 IntVec() override; |
||
98 | virtual void CheckNextFrame() override; |
||
99 | virtual void retn() override; |
||
100 | }; |
||
101 | |||
102 | extern PALETTE_OPTIONS pals[32]; |
||
103 | |||
104 | extern CONFIG conf; |
||
105 | extern COMPUTER comp; |
||
106 | extern unsigned char memory[]; |
||
107 | |||
108 | extern unsigned char cmos[0x100]; |
||
109 | extern unsigned char nvram[0x800]; |
||
110 | |||
111 | extern char ininame[0x200]; |
||
112 | extern char helpname[0x200]; |
||
113 | |||
114 | extern unsigned num_ula; |
||
115 | extern char *ulapreset[64]; |
||
116 | extern char *setptr; |
||
117 | |||
118 | extern char *aystereo[64]; |
||
119 | extern char *ayvols[64]; |
||
120 | extern unsigned num_ayvols; |
||
121 | extern unsigned num_aystereo; |
||
122 | |||
123 | extern DWORD WinVerMajor; |
||
124 | extern DWORD WinVerMinor; |
||
125 | |||
126 | extern HWND wnd; |
||
127 | extern HWND dlg; |
||
128 | extern HINSTANCE hIn; |
||
129 | extern unsigned nowait; |
||
130 | |||
131 | extern action ac_main[]; |
||
132 | extern action ac_main_xt[]; |
||
133 | extern action ac_mon[]; |
||
134 | extern action ac_regs[]; |
||
135 | extern action ac_trace[]; |
||
136 | extern action ac_mem[]; |
||
137 | extern RENDER renders[]; |
||
138 | extern VOID_FUNC prebuffers[]; |
||
139 | |||
140 | extern const TMemModel mem_model[N_MM_MODELS]; |
||
141 | |||
142 | extern zxkeymap zxk_maps[]; |
||
143 | extern const size_t zxk_maps_count; |
||
144 | |||
145 | extern virtkeyt pckeys[]; |
||
146 | extern const size_t pckeys_count; |
||
147 | |||
148 | extern keyports inports[VK_MAX]; |
||
149 | |||
150 | extern unsigned trd_toload; // drive to load |
||
151 | extern unsigned DefaultDrive; // Дисковод по умолчанию в который грузятся образы дисков при старте |
||
152 | |||
153 | extern unsigned char *base_sos_rom; |
||
154 | extern unsigned char *base_dos_rom; |
||
155 | extern unsigned char *base_128_rom; |
||
156 | extern unsigned char *base_sys_rom; |
||
157 | |||
158 | extern ISA_MODEM modem; |
||
159 | extern K_INPUT input; |
||
160 | |||
161 | extern unsigned brk_port_in; |
||
162 | extern unsigned brk_port_out; |
||
163 | extern unsigned char brk_port_val; |
||
164 | |||
165 | extern uintptr_t watch_script[4][64]; |
||
166 | extern unsigned char watch_enabled[4]; |
||
167 | extern unsigned char used_banks[MAX_PAGES]; |
||
168 | extern unsigned char trace_rom; |
||
169 | extern unsigned char trace_ram; |
||
170 | |||
171 | extern TMainZ80 cpu; |
||
172 | extern unsigned char dbgbreak; |
||
173 | extern unsigned char snbuf[4*1048576]; // large temporary buffer (for reading snapshots) |
||
174 | extern unsigned char gdibuf[2*1048576]; |
||
175 | |||
176 | extern SNDCHIP ay[2]; |
||
177 | |||
178 | extern unsigned char *bankr[4]; |
||
179 | extern unsigned char *bankw[4]; |
||
180 | |||
181 | #ifdef MOD_GSBASS |
||
182 | extern GSHLE gs; |
||
183 | #endif |
||
184 | |||
185 | extern GDIBMP gdibmp; |
||
186 | extern unsigned char needclr; // clear screenbuffer before rendering |
||
187 | extern DWORD mousepos; // left-clicked point in monitor |
||
188 | extern PALETTEENTRY syspalette[0x100]; |
||
189 | extern unsigned char exitflag; // avoid call exit() twice |
||
190 | |||
191 | #define PLAYBUFSIZE 16384 |
||
192 | extern unsigned sndplaybuf[PLAYBUFSIZE]; |
||
193 | extern unsigned spbsize; |
||
194 | extern unsigned char savesndtype; // 0-none,1-wave,2-vtx |
||
195 | extern FILE *savesnd; |
||
196 | |||
197 | extern HBITMAP hbm; // bitmap for repaint background |
||
198 | extern DWORD bm_dx; |
||
199 | extern DWORD bm_dy; |
||
200 | |||
201 | extern char droppedFile[512]; |
||
202 | |||
203 | extern char statusline[128]; |
||
204 | extern unsigned statcnt; |
||
205 | |||
206 | extern bool normal_exit; |
||
207 | |||
208 | extern const char * const ay_schemes[]; |
||
209 | |||
210 | #ifdef MOD_GSZ80 |
||
211 | extern class TGsZ80 gscpu; |
||
212 | |||
213 | namespace z80gs |
||
214 | { |
||
215 | extern SNDRENDER sound; |
||
216 | extern u8 membits[]; |
||
217 | } |
||
218 | #endif |
||
219 | |||
220 | extern ATA_PORT hdd; // not in `comp' - not cleared in reset() |
||
221 | extern char arcbuffer[0x2000]; // extensions and command lines for archivers |
||
222 | extern char skiparc[0x400]; // ignore this files in archive |
||
223 | extern char trd_loaded[4]; // used to get first free drive with no account of autoloaded images |
||
224 | extern unsigned char kbdpc[VK_MAX]; // add cells for mouse & joystick |
||
225 | |||
226 | extern char pressedit; //Alone Coder |
||
227 | extern int fmsoundon0; //Alone Coder |
||
228 | extern int tfmstatuson0; //Alone Coder |
||
229 | |||
230 | // for leds |
||
231 | extern unsigned char trdos_load; |
||
232 | extern unsigned char trdos_save; |
||
233 | extern unsigned char trdos_format; |
||
234 | extern unsigned char trdos_seek; |
||
235 | extern unsigned char membits[0x10000]; |
||
236 | |||
237 | extern unsigned char *vtxbuf; |
||
238 | extern unsigned vtxbufsize; |
||
239 | extern unsigned vtxbuffilled; |
||
240 | |||
241 | extern unsigned snapsize; |
||
242 | |||
243 | extern unsigned char kbdpcEX[6]; //Dexus |