trunk/src/mess/includes/microtan.h
r26856 | r26857 | |
32 | 32 | : driver_device(mconfig, type, tag), |
33 | 33 | m_videoram(*this, "videoram"), |
34 | 34 | m_maincpu(*this, "maincpu"), |
35 | | m_cassette(*this, "cassette") { } |
| 35 | m_cassette(*this, "cassette"), |
| 36 | m_via6522_0(*this, "via6522_0"), |
| 37 | m_via6522_1(*this, "via6522_1") |
| 38 | { } |
36 | 39 | |
37 | 40 | required_shared_ptr<UINT8> m_videoram; |
38 | 41 | UINT8 m_chunky_graphics; |
r26856 | r26857 | |
65 | 68 | TIMER_CALLBACK_MEMBER(microtan_pulse_nmi); |
66 | 69 | DECLARE_READ8_MEMBER(via_0_in_a); |
67 | 70 | DECLARE_READ8_MEMBER(via_0_in_b); |
68 | | DECLARE_READ_LINE_MEMBER(via_0_in_ca1); |
69 | | DECLARE_READ_LINE_MEMBER(via_0_in_cb1); |
70 | | DECLARE_READ_LINE_MEMBER(via_0_in_ca2); |
71 | | DECLARE_READ_LINE_MEMBER(via_0_in_cb2); |
72 | 71 | DECLARE_WRITE8_MEMBER(via_0_out_a); |
73 | 72 | DECLARE_WRITE8_MEMBER(via_0_out_b); |
74 | 73 | DECLARE_WRITE_LINE_MEMBER(via_0_out_ca2); |
75 | 74 | DECLARE_WRITE_LINE_MEMBER(via_0_out_cb2); |
76 | 75 | DECLARE_READ8_MEMBER(via_1_in_a); |
77 | 76 | DECLARE_READ8_MEMBER(via_1_in_b); |
78 | | DECLARE_READ_LINE_MEMBER(via_1_in_ca1); |
79 | | DECLARE_READ_LINE_MEMBER(via_1_in_cb1); |
80 | | DECLARE_READ_LINE_MEMBER(via_1_in_ca2); |
81 | | DECLARE_READ_LINE_MEMBER(via_1_in_cb2); |
82 | 77 | DECLARE_WRITE8_MEMBER(via_1_out_a); |
83 | 78 | DECLARE_WRITE8_MEMBER(via_1_out_b); |
84 | 79 | DECLARE_WRITE_LINE_MEMBER(via_1_out_ca2); |
r26856 | r26857 | |
87 | 82 | DECLARE_WRITE_LINE_MEMBER(via_1_irq); |
88 | 83 | required_device<cpu_device> m_maincpu; |
89 | 84 | required_device<cassette_image_device> m_cassette; |
| 85 | required_device<via6522_device> m_via6522_0; |
| 86 | required_device<via6522_device> m_via6522_1; |
90 | 87 | UINT8 read_dsw(); |
91 | 88 | void microtan_set_irq_line(); |
92 | 89 | void store_key(int key); |
trunk/src/mess/drivers/microtan.c
r26856 | r26857 | |
261 | 261 | MCFG_DEVICE_ADD("via6522_0", VIA6522, 0) |
262 | 262 | MCFG_VIA6522_READPA_HANDLER(READ8(microtan_state, via_0_in_a)) |
263 | 263 | MCFG_VIA6522_READPB_HANDLER(READ8(microtan_state, via_0_in_b)) |
264 | | MCFG_VIA6522_READCA1_HANDLER(READLINE(microtan_state, via_0_in_ca1)) |
265 | | MCFG_VIA6522_READCB1_HANDLER(READLINE(microtan_state, via_0_in_cb1)) |
266 | | MCFG_VIA6522_READCA2_HANDLER(READLINE(microtan_state, via_0_in_ca2)) |
267 | | MCFG_VIA6522_READCB2_HANDLER(READLINE(microtan_state, via_0_in_cb2)) |
268 | 264 | MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(microtan_state, via_0_out_a)) |
269 | 265 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(microtan_state, via_0_out_b)) |
270 | 266 | MCFG_VIA6522_CA2_HANDLER(WRITELINE(microtan_state, via_0_out_ca2)) |
r26856 | r26857 | |
274 | 270 | MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) |
275 | 271 | MCFG_VIA6522_READPA_HANDLER(READ8(microtan_state, via_1_in_a)) |
276 | 272 | MCFG_VIA6522_READPB_HANDLER(READ8(microtan_state, via_1_in_b)) |
277 | | MCFG_VIA6522_READCA1_HANDLER(READLINE(microtan_state, via_1_in_ca1)) |
278 | | MCFG_VIA6522_READCB1_HANDLER(READLINE(microtan_state, via_1_in_cb1)) |
279 | | MCFG_VIA6522_READCA2_HANDLER(READLINE(microtan_state, via_1_in_ca2)) |
280 | | MCFG_VIA6522_READCB2_HANDLER(READLINE(microtan_state, via_1_in_cb2)) |
281 | 273 | MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(microtan_state, via_1_out_a)) |
282 | 274 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(microtan_state, via_1_out_b)) |
283 | 275 | MCFG_VIA6522_CA2_HANDLER(WRITELINE(microtan_state, via_1_out_ca2)) |
trunk/src/mess/machine/microtan.c
r26856 | r26857 | |
169 | 169 | return data; |
170 | 170 | } |
171 | 171 | |
172 | | READ_LINE_MEMBER(microtan_state::via_0_in_ca1) |
173 | | { |
174 | | int data = 1; |
175 | | LOG(("microtan_via_0_in_ca1 %d\n", data)); |
176 | | return data; |
177 | | } |
178 | | |
179 | | READ_LINE_MEMBER(microtan_state::via_0_in_cb1) |
180 | | { |
181 | | int data = 1; |
182 | | LOG(("microtan_via_0_in_cb1 %d\n", data)); |
183 | | return data; |
184 | | } |
185 | | |
186 | | READ_LINE_MEMBER(microtan_state::via_0_in_ca2) |
187 | | { |
188 | | int data = 1; |
189 | | LOG(("microtan_via_0_in_ca2 %d\n", data)); |
190 | | return data; |
191 | | } |
192 | | |
193 | | READ_LINE_MEMBER(microtan_state::via_0_in_cb2) |
194 | | { |
195 | | int data = 1; |
196 | | LOG(("microtan_via_0_in_cb2 %d\n", data)); |
197 | | return data; |
198 | | } |
199 | | |
200 | 172 | WRITE8_MEMBER(microtan_state::via_0_out_a) |
201 | 173 | { |
202 | 174 | LOG(("microtan_via_0_out_a %02X\n", data)); |
r26856 | r26857 | |
243 | 215 | return data; |
244 | 216 | } |
245 | 217 | |
246 | | READ_LINE_MEMBER(microtan_state::via_1_in_ca1) |
247 | | { |
248 | | int data = 1; |
249 | | LOG(("microtan_via_1_in_ca1 %d\n", data)); |
250 | | return data; |
251 | | } |
252 | | |
253 | | READ_LINE_MEMBER(microtan_state::via_1_in_cb1) |
254 | | { |
255 | | int data = 1; |
256 | | LOG(("microtan_via_1_in_cb1 %d\n", data)); |
257 | | return data; |
258 | | } |
259 | | |
260 | | READ_LINE_MEMBER(microtan_state::via_1_in_ca2) |
261 | | { |
262 | | int data = 1; |
263 | | LOG(("microtan_via_1_in_ca2 %d\n", data)); |
264 | | return data; |
265 | | } |
266 | | |
267 | | READ_LINE_MEMBER(microtan_state::via_1_in_cb2) |
268 | | { |
269 | | int data = 1; |
270 | | LOG(("microtan_via_1_in_cb2 %d\n", data)); |
271 | | return data; |
272 | | } |
273 | | |
274 | 218 | WRITE8_MEMBER(microtan_state::via_1_out_a) |
275 | 219 | { |
276 | 220 | LOG(("microtan_via_1_out_a %02X\n", data)); |
r26856 | r26857 | |
317 | 261 | TIMER_CALLBACK_MEMBER(microtan_state::microtan_read_cassette) |
318 | 262 | { |
319 | 263 | double level = m_cassette->input(); |
320 | | via6522_device *via_0 = machine().device<via6522_device>("via6522_0"); |
321 | 264 | |
322 | 265 | LOG(("microtan_read_cassette: %g\n", level)); |
323 | 266 | if (level < -0.07) |
324 | | via_0->write_cb2(0); |
| 267 | m_via6522_0->write_cb2(0); |
325 | 268 | else if (level > +0.07) |
326 | | via_0->write_cb2(1); |
| 269 | m_via6522_0->write_cb2(1); |
327 | 270 | } |
328 | 271 | |
329 | 272 | READ8_MEMBER(microtan_state::microtan_sound_r) |
r26856 | r26857 | |
547 | 490 | } |
548 | 491 | |
549 | 492 | m_timer = timer_alloc(TIMER_READ_CASSETTE); |
| 493 | |
| 494 | m_via6522_0->write_ca1(1); |
| 495 | m_via6522_0->write_cb1(1); |
| 496 | m_via6522_0->write_ca2(1); |
| 497 | m_via6522_0->write_cb2(1); |
| 498 | |
| 499 | m_via6522_1->write_ca1(1); |
| 500 | m_via6522_1->write_cb1(1); |
| 501 | m_via6522_1->write_ca2(1); |
| 502 | m_via6522_1->write_cb2(1); |
550 | 503 | } |
551 | 504 | |
552 | 505 | void microtan_state::machine_reset() |
r26856 | r26857 | |
761 | 714 | { |
762 | 715 | UINT8 *RAM = memregion("maincpu")->base(); |
763 | 716 | address_space &space = m_maincpu->space(AS_PROGRAM); |
764 | | via6522_device *via_0 = machine().device<via6522_device>("via6522_0"); |
765 | | via6522_device *via_1 = machine().device<via6522_device>("via6522_1"); |
766 | 717 | ay8910_device *ay8910 = machine().device<ay8910_device>("ay8910.1"); |
767 | 718 | |
768 | 719 | /* check for .DMP file format */ |
r26856 | r26857 | |
819 | 770 | |
820 | 771 | /* first set of VIA6522 registers */ |
821 | 772 | for (i = 0; i < 16; i++ ) |
822 | | via_0->write(space, i, snapshot_buff[base++]); |
| 773 | m_via6522_0->write(space, i, snapshot_buff[base++]); |
823 | 774 | |
824 | 775 | /* second set of VIA6522 registers */ |
825 | 776 | for (i = 0; i < 16; i++ ) |
826 | | via_1->write(space, i, snapshot_buff[base++]); |
| 777 | m_via6522_1->write(space, i, snapshot_buff[base++]); |
827 | 778 | |
828 | 779 | /* microtan IO bff0-bfff */ |
829 | 780 | for (i = 0; i < 16; i++ ) |