Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
716 | lvd | 1 | #include "std.h" |
2 | |||
3 | #include "emul.h" |
||
4 | #include "vars.h" |
||
5 | #include "draw.h" |
||
6 | #include "memory.h" |
||
7 | #include "tape.h" |
||
8 | #include "debug.h" |
||
9 | #include "sound.h" |
||
10 | #include "atm.h" |
||
11 | #include "gs.h" |
||
12 | #include "emulkeys.h" |
||
13 | #include "z80/op_system.h" |
||
14 | #include "z80/op_noprefix.h" |
||
15 | #include "fontatm2.h" |
||
16 | #include "sdcard.h" |
||
17 | #include "zc.h" |
||
18 | |||
19 | #include "util.h" |
||
20 | |||
21 | namespace z80gs |
||
22 | { |
||
23 | void flush_gs_z80(); |
||
24 | } |
||
25 | |||
26 | #ifdef MOD_FASTCORE |
||
27 | namespace z80fast |
||
28 | { |
||
29 | #include "z80_main.inl" |
||
30 | } |
||
31 | #else |
||
32 | #define z80fast z80dbg |
||
33 | #endif |
||
34 | |||
35 | #ifdef MOD_DEBUGCORE |
||
36 | namespace z80dbg |
||
37 | { |
||
38 | #define Z80_DBG |
||
39 | #include "z80_main.inl" |
||
40 | #undef Z80_DBG |
||
41 | } |
||
42 | #else |
||
43 | #define z80dbg z80fast |
||
44 | #endif |
||
45 | |||
46 | void out(unsigned port, unsigned char val); |
||
47 | |||
48 | u8 __fastcall Xm(u32 addr) |
||
49 | { |
||
50 | return z80fast::xm(addr); |
||
51 | } |
||
52 | |||
53 | u8 __fastcall Rm(u32 addr) |
||
54 | { |
||
55 | return z80fast::rm(addr); |
||
56 | } |
||
57 | |||
58 | void __fastcall Wm(u32 addr, u8 val) |
||
59 | { |
||
60 | z80fast::wm(addr, val); |
||
61 | } |
||
62 | |||
63 | u8 __fastcall DbgXm(u32 addr) |
||
64 | { |
||
65 | return z80dbg::xm(addr); |
||
66 | } |
||
67 | |||
68 | u8 __fastcall DbgRm(u32 addr) |
||
69 | { |
||
70 | return z80dbg::rm(addr); |
||
71 | } |
||
72 | |||
73 | void __fastcall DbgWm(u32 addr, u8 val) |
||
74 | { |
||
75 | z80dbg::wm(addr, val); |
||
76 | } |
||
77 | |||
78 | void reset(ROM_MODE mode) |
||
79 | { |
||
80 | comp.pEFF7 &= conf.EFF7_mask; |
||
81 | comp.pEFF7 |= EFF7_GIGASCREEN; // [vv] disable turbo |
||
82 | { |
||
83 | conf.frame = frametime; |
||
84 | cpu.SetTpi(conf.frame); |
||
85 | // if ((conf.mem_model == MM_PENTAGON)&&(comp.pEFF7 & EFF7_GIGASCREEN))conf.frame = 71680; //removed 0.37 |
||
86 | apply_sound(); |
||
87 | } //Alone Coder 0.36.4 |
||
88 | comp.t_states = 0; comp.frame_counter = 0; |
||
89 | comp.p7FFD = comp.pDFFD = comp.pFDFD = comp.p1FFD = 0; |
||
90 | comp.p7EFD = 0; |
||
91 | |||
92 | comp.p00 = comp.p80FD = 0; // quorum |
||
93 | |||
94 | comp.pBF = 0; // ATM3 |
||
95 | comp.pBE = 0; // ATM3 |
||
96 | |||
97 | if (conf.mem_model == MM_ATM710 || conf.mem_model == MM_ATM3) |
||
98 | { |
||
99 | switch(mode) |
||
100 | { |
||
101 | case RM_DOS: |
||
102 | // ������ �������, ������ cpm, ��������� ���������� ������ |
||
103 | // ��������� ������������ ����������, ���������� �������� ���������� |
||
104 | set_atm_FF77(0x4000 | 0x200 | 0x100, 0x80 | 0x40 | 0x20 | 3); |
||
105 | comp.pFFF7[0] = 0x100 | 1; // trdos |
||
106 | comp.pFFF7[1] = 0x200 | 5; // ram 5 |
||
107 | comp.pFFF7[2] = 0x200 | 2; // ram 2 |
||
108 | comp.pFFF7[3] = 0x200; // ram 0 |
||
109 | |||
110 | comp.pFFF7[4] = 0x100 | 1; // trdos |
||
111 | comp.pFFF7[5] = 0x200 | 5; // ram 5 |
||
112 | comp.pFFF7[6] = 0x200 | 2; // ram 2 |
||
113 | comp.pFFF7[7] = 0x200; // ram 0 |
||
114 | break; |
||
115 | default: |
||
116 | set_atm_FF77(0,0); |
||
117 | } |
||
118 | } |
||
119 | |||
120 | if (conf.mem_model == MM_ATM450) |
||
121 | { |
||
122 | switch(mode) |
||
123 | { |
||
124 | case RM_DOS: |
||
125 | set_atm_aFE(0x80|0x60); |
||
126 | comp.aFB = 0; |
||
127 | break; |
||
128 | default: |
||
129 | set_atm_aFE(0x80); |
||
130 | comp.aFB = 0x80; |
||
131 | } |
||
132 | } |
||
133 | |||
134 | comp.flags = 0; |
||
135 | comp.active_ay = 0; |
||
136 | |||
137 | cpu.reset(); |
||
138 | reset_tape(); |
||
139 | ay[0].reset(); |
||
140 | ay[1].reset(); |
||
141 | Saa1099.reset(); |
||
142 | |||
143 | if (conf.sound.ay_scheme == AY_SCHEME_CHRV) |
||
144 | { |
||
145 | out(0xfffd,0xff); //0.36.7 |
||
146 | //printf("tfmstatuson0=%d\n",tfmstatuson0); |
||
147 | };//Alone Coder |
||
148 | |||
149 | #ifdef MOD_GS |
||
150 | if (conf.sound.gsreset) |
||
151 | reset_gs(); |
||
152 | #endif |
||
153 | |||
154 | #ifdef MOD_VID_VD |
||
155 | comp.vdbase = 0; comp.pVD = 0; |
||
156 | #endif |
||
157 | |||
158 | if (conf.mem_model == MM_ATM450 || |
||
159 | conf.mem_model == MM_ATM710 || |
||
160 | conf.mem_model == MM_ATM3 || |
||
161 | conf.mem_model == MM_PROFI) |
||
162 | load_spec_colors(); |
||
163 | |||
164 | comp.ide_hi_byte_r = 0; |
||
165 | comp.ide_hi_byte_w = 0; |
||
166 | comp.ide_hi_byte_w1 = 0; |
||
167 | hdd.reset(); |
||
168 | input.atm51.reset(); |
||
169 | Zc.Reset(); |
||
170 | |||
171 | if ((!conf.trdos_present && mode == RM_DOS) || |
||
172 | (!conf.cache && mode == RM_CACHE)) |
||
173 | mode = RM_SOS; |
||
174 | |||
175 | set_mode(mode); |
||
176 | } |