Previous 199869 Revisions Next

r18157 Wednesday 26th September, 2012 at 13:24:58 UTC by Miodrag Milanović
Replace some *_DEVICE_HANDLER with _MEMBER calls (no whatsnew)
[src/mame/drivers]chihiro.c dlair.c mpu4dealem.c mpu4vid.c nss.c nyny.c proconn.c r2dtank.c sfcbox.c snesb.c taitotz.c
[src/mess/drivers]a2600.c ami1200.c apexc.c apricot.c atari400.c bbcbc.c bigbord2.c bml3.c dectalk.c digel804.c elwro800.c h19.c jr100.c m20.c mikrosha.c mirage.c ms0515.c mycom.c mz2000.c mz2500.c nanos.c osbexec.c palm.c pasogo.c pc6001.c pc8801.c pc88va.c pc9801.c pk8000.c px4.c qx10.c rvoice.c sgi_ip2.c smc777.c spc1000.c vk100.c vtech1.c

trunk/src/mame/drivers/mpu4dealem.c
r18156r18157
3131   DECLARE_MACHINE_RESET(dealem_vid);
3232   DECLARE_PALETTE_INIT(dealem);
3333   UINT32 screen_update_dealem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
34   DECLARE_WRITE_LINE_MEMBER(dealem_vsync_changed);
3435};
3536
3637
r18156r18157
132133}
133134
134135
135static WRITE_LINE_DEVICE_HANDLER( dealem_vsync_changed )
136WRITE_LINE_MEMBER(mpu4dealem_state::dealem_vsync_changed)
136137{
137   device->machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, state);
138   machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, state);
138139}
139140
140141
r18156r18157
154155   DEVCB_NULL,                     /* callback for display state changes */
155156   DEVCB_NULL,                     /* callback for cursor state changes */
156157   DEVCB_NULL,                     /* HSYNC callback */
157   DEVCB_LINE(dealem_vsync_changed),   /* VSYNC callback */
158   DEVCB_DRIVER_LINE_MEMBER(mpu4dealem_state, dealem_vsync_changed),   /* VSYNC callback */
158159   NULL                        /* update address callback */
159160};
160161
trunk/src/mame/drivers/chihiro.c
r18156r18157
416416
417417   nv2a_renderer *nvidia_nv2a;
418418   virtual void machine_start();
419   DECLARE_WRITE_LINE_MEMBER(chihiro_pic8259_1_set_int_line);
420   DECLARE_READ8_MEMBER(get_slave_ack);
421   DECLARE_WRITE_LINE_MEMBER(chihiro_pit8254_out0_changed);
422   DECLARE_WRITE_LINE_MEMBER(chihiro_pit8254_out2_changed);
419423};
420424
421425/*
r18156r18157
15521556 * PIC & PIT
15531557 */
15541558
1555static WRITE_LINE_DEVICE_HANDLER( chihiro_pic8259_1_set_int_line )
1559WRITE_LINE_MEMBER(chihiro_state::chihiro_pic8259_1_set_int_line)
15561560{
1557   device->machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
1561   machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
15581562}
15591563
1560static READ8_DEVICE_HANDLER( get_slave_ack )
1564READ8_MEMBER(chihiro_state::get_slave_ack)
15611565{
1562   chihiro_state *chst=space.machine().driver_data<chihiro_state>();
15631566   if (offset==2) { // IRQ = 2
1564      return pic8259_acknowledge(chst->chihiro_devs.pic8259_2);
1567      return pic8259_acknowledge(chihiro_devs.pic8259_2);
15651568   }
15661569   return 0x00;
15671570}
15681571
15691572static const struct pic8259_interface chihiro_pic8259_1_config =
15701573{
1571   DEVCB_LINE(chihiro_pic8259_1_set_int_line),
1574   DEVCB_DRIVER_LINE_MEMBER(chihiro_state, chihiro_pic8259_1_set_int_line),
15721575   DEVCB_LINE_VCC,
1573   DEVCB_HANDLER(get_slave_ack)
1576   DEVCB_DRIVER_MEMBER(chihiro_state,get_slave_ack)
15741577};
15751578
15761579static const struct pic8259_interface chihiro_pic8259_2_config =
r18156r18157
15921595   return r;
15931596}
15941597
1595static WRITE_LINE_DEVICE_HANDLER( chihiro_pit8254_out0_changed )
1598WRITE_LINE_MEMBER(chihiro_state::chihiro_pit8254_out0_changed)
15961599{
1597   if ( device->machine().device("pic8259_1") )
1600   if ( machine().device("pic8259_1") )
15981601   {
1599      pic8259_ir0_w(device->machine().device("pic8259_1"), state);
1602      pic8259_ir0_w(machine().device("pic8259_1"), state);
16001603   }
16011604}
16021605
1603static WRITE_LINE_DEVICE_HANDLER( chihiro_pit8254_out2_changed )
1606WRITE_LINE_MEMBER(chihiro_state::chihiro_pit8254_out2_changed)
16041607{
16051608   //chihiro_speaker_set_input( state ? 1 : 0 );
16061609}
r18156r18157
16111614      {
16121615         1125000,            /* heartbeat IRQ */
16131616         DEVCB_NULL,
1614         DEVCB_LINE(chihiro_pit8254_out0_changed)
1617         DEVCB_DRIVER_LINE_MEMBER(chihiro_state, chihiro_pit8254_out0_changed)
16151618      }, {
16161619         1125000,            /* (unused) dram refresh */
16171620         DEVCB_NULL,
r18156r18157
16191622      }, {
16201623         1125000,            /* (unused) pio port c pin 4, and speaker polling enough */
16211624         DEVCB_NULL,
1622         DEVCB_LINE(chihiro_pit8254_out2_changed)
1625         DEVCB_DRIVER_LINE_MEMBER(chihiro_state, chihiro_pit8254_out2_changed)
16231626      }
16241627   }
16251628};
trunk/src/mame/drivers/r2dtank.c
r18156r18157
7676   DECLARE_WRITE_LINE_MEMBER(display_enable_changed);
7777   DECLARE_WRITE8_MEMBER(pia_comp_w);
7878   virtual void machine_start();
79   DECLARE_WRITE8_MEMBER(ttl74123_output_changed);
7980};
8081
8182
r18156r18157
229230 *
230231 *************************************/
231232
232static WRITE8_DEVICE_HANDLER( ttl74123_output_changed )
233WRITE8_MEMBER(r2dtank_state::ttl74123_output_changed)
233234{
234   r2dtank_state *state = space.machine().driver_data<r2dtank_state>();
235   pia6821_device *pia = space.machine().device<pia6821_device>("pia_main");
235   pia6821_device *pia = machine().device<pia6821_device>("pia_main");
236236   pia->ca1_w(data);
237   state->m_ttl74123_output = data;
237   m_ttl74123_output = data;
238238}
239239
240240
r18156r18157
252252   1,               /* A pin - driven by the CRTC */
253253   1,               /* B pin - pulled high */
254254   1,               /* Clear pin - pulled high */
255   DEVCB_HANDLER(ttl74123_output_changed)
255   DEVCB_DRIVER_MEMBER(r2dtank_state,ttl74123_output_changed)
256256};
257257
258258
trunk/src/mame/drivers/taitotz.c
r18156r18157
526526   virtual void video_start();
527527   UINT32 screen_update_taitotz(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
528528   INTERRUPT_GEN_MEMBER(taitotz_vbi);
529   DECLARE_READ8_MEMBER(tlcs_ide0_r);
530   DECLARE_WRITE8_MEMBER(tlcs_ide0_w);
531   DECLARE_READ8_MEMBER(tlcs_ide1_r);
532   DECLARE_WRITE8_MEMBER(tlcs_ide1_w);
529533};
530534
531535
r18156r18157
19941998   }
19951999}
19962000
1997static READ8_DEVICE_HANDLER(tlcs_ide0_r)
2001READ8_MEMBER(taitotz_state::tlcs_ide0_r)
19982002{
2003   device_t *device = machine().device("ide");
19992004   static UINT16 ide_reg_latch;
20002005   int reg = offset >> 1;
20012006
r18156r18157
20242029   }
20252030}
20262031
2027static WRITE8_DEVICE_HANDLER(tlcs_ide0_w)
2032WRITE8_MEMBER(taitotz_state::tlcs_ide0_w)
20282033{
2034   device_t *device = machine().device("ide");
20292035   static UINT16 ide_reg_latch;
20302036   int reg = offset >> 1;
20312037
r18156r18157
20512057   }
20522058}
20532059
2054static READ8_DEVICE_HANDLER(tlcs_ide1_r)
2060READ8_MEMBER(taitotz_state::tlcs_ide1_r)
20552061{
2062   device_t *device = machine().device("ide");
20562063   //static UINT16 ide_reg_latch;
20572064   int reg = offset >> 1;
20582065
r18156r18157
20752082   }
20762083}
20772084
2078static WRITE8_DEVICE_HANDLER(tlcs_ide1_w)
2085WRITE8_MEMBER(taitotz_state::tlcs_ide1_w)
20792086{
2087   device_t *device = machine().device("ide");
20802088   static UINT16 ide_reg_latch;
20812089   int reg = offset >> 1;
20822090
r18156r18157
21782186   AM_RANGE(0x044000, 0x04400f) AM_READWRITE(tlcs_rtc_r, tlcs_rtc_w)
21792187   AM_RANGE(0x060000, 0x061fff) AM_READWRITE(tlcs_common_r, tlcs_common_w)
21802188   AM_RANGE(0x064000, 0x064fff) AM_RAM   AM_SHARE("mbox_ram")                        // MBox
2181   AM_RANGE(0x068000, 0x06800f) AM_DEVREADWRITE_LEGACY("ide", tlcs_ide0_r, tlcs_ide0_w)
2182   AM_RANGE(0x06c000, 0x06c00f) AM_DEVREADWRITE_LEGACY("ide", tlcs_ide1_r, tlcs_ide1_w)
2189   AM_RANGE(0x068000, 0x06800f) AM_READWRITE(tlcs_ide0_r, tlcs_ide0_w)
2190   AM_RANGE(0x06c000, 0x06c00f) AM_READWRITE(tlcs_ide1_r, tlcs_ide1_w)
21832191   AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0)
21842192ADDRESS_MAP_END
21852193
r18156r18157
21892197   AM_RANGE(0x404000, 0x40400f) AM_READWRITE(tlcs_rtc_r, tlcs_rtc_w)
21902198   AM_RANGE(0x900000, 0x901fff) AM_READWRITE(tlcs_common_r, tlcs_common_w)
21912199   AM_RANGE(0x910000, 0x910fff) AM_RAM   AM_SHARE("mbox_ram")                        // MBox
2192   AM_RANGE(0x908000, 0x90800f) AM_DEVREADWRITE_LEGACY("ide", tlcs_ide0_r, tlcs_ide0_w)
2193   AM_RANGE(0x918000, 0x91800f) AM_DEVREADWRITE_LEGACY("ide", tlcs_ide1_r, tlcs_ide1_w)
2200   AM_RANGE(0x908000, 0x90800f) AM_READWRITE(tlcs_ide0_r, tlcs_ide0_w)
2201   AM_RANGE(0x918000, 0x91800f) AM_READWRITE(tlcs_ide1_r, tlcs_ide1_w)
21942202   AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0)
21952203ADDRESS_MAP_END
21962204
trunk/src/mame/drivers/mpu4vid.c
r18156r18157
270270   DECLARE_VIDEO_START(mpu4_vid);
271271   UINT32 screen_update_mpu4_vid(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
272272   TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer_callback);
273   DECLARE_READ_LINE_MEMBER(m6809_acia_rx_r);
274   DECLARE_WRITE_LINE_MEMBER(m6809_acia_tx_w);
275   DECLARE_READ_LINE_MEMBER(m6809_acia_cts_r);
276   DECLARE_WRITE_LINE_MEMBER(m6809_acia_rts_w);
277   DECLARE_READ_LINE_MEMBER(m6809_acia_dcd_r);
278   DECLARE_WRITE_LINE_MEMBER(m6809_acia_irq);
279   DECLARE_READ_LINE_MEMBER(m68k_acia_rx_r);
280   DECLARE_WRITE_LINE_MEMBER(m68k_acia_tx_w);
281   DECLARE_READ_LINE_MEMBER(m68k_acia_cts_r);
282   DECLARE_WRITE_LINE_MEMBER(m68k_acia_rts_w);
283   DECLARE_READ_LINE_MEMBER(m68k_acia_dcd_r);
284   DECLARE_WRITE_LINE_MEMBER(m68k_acia_irq);
285   DECLARE_WRITE_LINE_MEMBER(cpu1_ptm_irq);
286   DECLARE_WRITE8_MEMBER(vid_o1_callback);
287   DECLARE_WRITE8_MEMBER(vid_o2_callback);
288   DECLARE_WRITE8_MEMBER(vid_o3_callback);
289   DECLARE_READ8_MEMBER(pia_ic5_porta_track_r);
273290};
274291
275292
r18156r18157
312329
313330/* Communications with 6809 board */
314331
315static READ_LINE_DEVICE_HANDLER( m6809_acia_rx_r )
332READ_LINE_MEMBER(mpu4vid_state::m6809_acia_rx_r)
316333{
317   mpu4vid_state *state = device->machine().driver_data<mpu4vid_state>();
318   return state->m_m68k_m6809_line;
334   return m_m68k_m6809_line;
319335}
320336
321static WRITE_LINE_DEVICE_HANDLER( m6809_acia_tx_w )
337WRITE_LINE_MEMBER(mpu4vid_state::m6809_acia_tx_w)
322338{
323   mpu4vid_state *drvstate = device->machine().driver_data<mpu4vid_state>();
324   drvstate->m_m6809_m68k_line = state;
339   m_m6809_m68k_line = state;
325340}
326341
327static READ_LINE_DEVICE_HANDLER( m6809_acia_cts_r )
342READ_LINE_MEMBER(mpu4vid_state::m6809_acia_cts_r)
328343{
329   mpu4vid_state *state = device->machine().driver_data<mpu4vid_state>();
330   return state->m_m6809_acia_cts;
344   return m_m6809_acia_cts;
331345}
332346
333static WRITE_LINE_DEVICE_HANDLER( m6809_acia_rts_w )
347WRITE_LINE_MEMBER(mpu4vid_state::m6809_acia_rts_w)
334348{
335   mpu4vid_state *drvstate = device->machine().driver_data<mpu4vid_state>();
336   drvstate->m_m6809_acia_rts = state;
349   m_m6809_acia_rts = state;
337350}
338351
339static READ_LINE_DEVICE_HANDLER( m6809_acia_dcd_r )
352READ_LINE_MEMBER(mpu4vid_state::m6809_acia_dcd_r)
340353{
341   mpu4vid_state *state = device->machine().driver_data<mpu4vid_state>();
342   return state->m_m6809_acia_dcd;
354   return m_m6809_acia_dcd;
343355}
344356
345static WRITE_LINE_DEVICE_HANDLER( m6809_acia_irq )
357WRITE_LINE_MEMBER(mpu4vid_state::m6809_acia_irq)
346358{
347   mpu4vid_state *drvstate = device->machine().driver_data<mpu4vid_state>();
348   drvstate->m_m68k_acia_cts = !state;
349   device->machine().device("maincpu")->execute().set_input_line(M6809_IRQ_LINE, state ? CLEAR_LINE : ASSERT_LINE);
359   m_m68k_acia_cts = !state;
360   machine().device("maincpu")->execute().set_input_line(M6809_IRQ_LINE, state ? CLEAR_LINE : ASSERT_LINE);
350361}
351362
352363static ACIA6850_INTERFACE( m6809_acia_if )
353364{
354365   0,
355366   0,
356   DEVCB_LINE(m6809_acia_rx_r),
357   DEVCB_LINE(m6809_acia_tx_w),
358   DEVCB_LINE(m6809_acia_cts_r),
359   DEVCB_LINE(m6809_acia_rts_w),
360   DEVCB_LINE(m6809_acia_dcd_r),
361   DEVCB_LINE(m6809_acia_irq)
367   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_rx_r),
368   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_tx_w),
369   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_cts_r),
370   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_rts_w),
371   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_dcd_r),
372   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m6809_acia_irq)
362373};
363374
364static READ_LINE_DEVICE_HANDLER( m68k_acia_rx_r )
375READ_LINE_MEMBER(mpu4vid_state::m68k_acia_rx_r)
365376{
366   mpu4vid_state *state = device->machine().driver_data<mpu4vid_state>();
367   return state->m_m6809_m68k_line;
377   return m_m6809_m68k_line;
368378}
369379
370static WRITE_LINE_DEVICE_HANDLER( m68k_acia_tx_w )
380WRITE_LINE_MEMBER(mpu4vid_state::m68k_acia_tx_w)
371381{
372   mpu4vid_state *drvstate = device->machine().driver_data<mpu4vid_state>();
373   drvstate->m_m68k_m6809_line = state;
382   m_m68k_m6809_line = state;
374383}
375384
376static READ_LINE_DEVICE_HANDLER( m68k_acia_cts_r )
385READ_LINE_MEMBER(mpu4vid_state::m68k_acia_cts_r)
377386{
378   mpu4vid_state *state = device->machine().driver_data<mpu4vid_state>();
379   return state->m_m68k_acia_cts;
387   return m_m68k_acia_cts;
380388}
381389
382static WRITE_LINE_DEVICE_HANDLER( m68k_acia_rts_w )
390WRITE_LINE_MEMBER(mpu4vid_state::m68k_acia_rts_w)
383391{
384   mpu4vid_state *drvstate = device->machine().driver_data<mpu4vid_state>();
385   drvstate->m_m6809_acia_dcd = state;
392   m_m6809_acia_dcd = state;
386393}
387394
388static READ_LINE_DEVICE_HANDLER( m68k_acia_dcd_r )
395READ_LINE_MEMBER(mpu4vid_state::m68k_acia_dcd_r)
389396{
390   mpu4vid_state *state = device->machine().driver_data<mpu4vid_state>();
391   return state->m_m6809_acia_rts;
397   return m_m6809_acia_rts;
392398}
393399
394static WRITE_LINE_DEVICE_HANDLER( m68k_acia_irq )
400WRITE_LINE_MEMBER(mpu4vid_state::m68k_acia_irq)
395401{
396   mpu4vid_state *drvstate = device->machine().driver_data<mpu4vid_state>();
397   drvstate->m_m6809_acia_cts = !state;
398   drvstate->m_m6850_irq_state = state;
399   update_mpu68_interrupts(device->machine());
402   m_m6809_acia_cts = !state;
403   m_m6850_irq_state = state;
404   update_mpu68_interrupts(machine());
400405}
401406
402407static ACIA6850_INTERFACE( m68k_acia_if )
403408{
404409   0,
405410   0,
406   DEVCB_LINE(m68k_acia_rx_r),
407   DEVCB_LINE(m68k_acia_tx_w),
408   DEVCB_LINE(m68k_acia_cts_r),
409   DEVCB_LINE(m68k_acia_rts_w),
410   DEVCB_LINE(m68k_acia_dcd_r),
411   DEVCB_LINE(m68k_acia_irq)
411   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_rx_r),
412   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_tx_w),
413   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_cts_r),
414   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_rts_w),
415   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_dcd_r),
416   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, m68k_acia_irq)
412417};
413418
414419
415static WRITE_LINE_DEVICE_HANDLER( cpu1_ptm_irq )
420WRITE_LINE_MEMBER(mpu4vid_state::cpu1_ptm_irq)
416421{
417   mpu4vid_state *drvstate = device->machine().driver_data<mpu4vid_state>();
418   drvstate->m_m6840_irq_state = state;
419   update_mpu68_interrupts(device->machine());
422   m_m6840_irq_state = state;
423   update_mpu68_interrupts(machine());
420424}
421425
422426
423static WRITE8_DEVICE_HANDLER( vid_o1_callback )
427WRITE8_MEMBER(mpu4vid_state::vid_o1_callback)
424428{
425   downcast<ptm6840_device *>(device)->set_c2(data); /* this output is the clock for timer2 */
429   downcast<ptm6840_device *>(machine().device("6840ptm_68k"))->set_c2(data); /* this output is the clock for timer2 */
426430
427431   if (data)
428432   {
429      acia6850_device *acia_0 = space.machine().device<acia6850_device>("acia6850_0");
430      acia6850_device *acia_1 = space.machine().device<acia6850_device>("acia6850_1");
433      acia6850_device *acia_0 = machine().device<acia6850_device>("acia6850_0");
434      acia6850_device *acia_1 = machine().device<acia6850_device>("acia6850_1");
431435      acia_0->tx_clock_in();
432436      acia_0->rx_clock_in();
433437      acia_1->tx_clock_in();
r18156r18157
436440}
437441
438442
439static WRITE8_DEVICE_HANDLER( vid_o2_callback )
443WRITE8_MEMBER(mpu4vid_state::vid_o2_callback)
440444{
441   downcast<ptm6840_device *>(device)->set_c3(data); /* this output is the clock for timer3 */
445   downcast<ptm6840_device *>(machine().device("6840ptm_68k"))->set_c3(data); /* this output is the clock for timer3 */
442446}
443447
444448
445static WRITE8_DEVICE_HANDLER( vid_o3_callback )
449WRITE8_MEMBER(mpu4vid_state::vid_o3_callback)
446450{
447   downcast<ptm6840_device *>(device)->set_c1(data); /* this output is the clock for timer1 */
451   downcast<ptm6840_device *>(machine().device("6840ptm_68k"))->set_c1(data); /* this output is the clock for timer1 */
448452}
449453
450454
r18156r18157
452456{
453457   VIDEO_MASTER_CLOCK / 10, /* 68k E clock */
454458   { 0, 0, 0 },
455   { DEVCB_HANDLER(vid_o1_callback),
456     DEVCB_HANDLER(vid_o2_callback),
457     DEVCB_HANDLER(vid_o3_callback) },
458   DEVCB_LINE(cpu1_ptm_irq)
459   { DEVCB_DRIVER_MEMBER(mpu4vid_state,vid_o1_callback),
460     DEVCB_DRIVER_MEMBER(mpu4vid_state,vid_o2_callback),
461     DEVCB_DRIVER_MEMBER(mpu4vid_state,vid_o3_callback) },
462   DEVCB_DRIVER_LINE_MEMBER(mpu4vid_state, cpu1_ptm_irq)
459463};
460464
461465
r18156r18157
719723 *
720724 *************************************/
721725
722static READ8_DEVICE_HANDLER( pia_ic5_porta_track_r )
726READ8_MEMBER(mpu4vid_state::pia_ic5_porta_track_r)
723727{
724   mpu4vid_state *state = space.machine().driver_data<mpu4vid_state>();
725728   /* The SWP trackball interface connects a standard trackball to the AUX1 port on the MPU4
726729    mainboard. As per usual, they've taken the cheap route here, reading and processing the
727730    raw quadrature signal from the encoder wheels for a 4 bit interface, rather than use any
r18156r18157
730733    We invert the X and Y data at source due to the use of Schmitt triggers in the interface, which
731734    clean up the pulses and flip the active phase.*/
732735
733   LOG(("%s: IC5 PIA Read of Port A (AUX1)\n",space.machine().describe_context()));
736   LOG(("%s: IC5 PIA Read of Port A (AUX1)\n",machine().describe_context()));
734737
735738
736   UINT8 data = state->ioport("AUX1")->read();
739   UINT8 data = ioport("AUX1")->read();
737740
738   INT8 dx = state->ioport("TRACKX")->read();
739   INT8 dy = state->ioport("TRACKY")->read();
741   INT8 dx = ioport("TRACKX")->read();
742   INT8 dy = ioport("TRACKY")->read();
740743
741   state->m_cur[0] = dy + dx;
742   state->m_cur[1] = dy - dx;
744   m_cur[0] = dy + dx;
745   m_cur[1] = dy - dx;
743746
744747   UINT8 xa, xb, ya, yb;
745748
746749   /* generate pulses for the input port (A and B are 1 unit out of phase for direction sensing)*/
747   xa = ((state->m_cur[0] + 1) & 3) <= 1;
748   xb = (state->m_cur[0] & 3) <= 1;
749   ya = ((state->m_cur[1] + 1) & 3) <= 1;
750   yb = (state->m_cur[1] & 3) <= 1;
750   xa = ((m_cur[0] + 1) & 3) <= 1;
751   xb = (m_cur[0] & 3) <= 1;
752   ya = ((m_cur[1] + 1) & 3) <= 1;
753   yb = (m_cur[1] & 3) <= 1;
751754
752755   data |= (xa << 4); // XA
753756   data |= (ya << 5); // YA
r18156r18157
759762
760763static const pia6821_interface pia_ic5t_intf =
761764{
762   DEVCB_HANDLER(pia_ic5_porta_track_r),      /* port A in */
765   DEVCB_DRIVER_MEMBER(mpu4vid_state,pia_ic5_porta_track_r),      /* port A in */
763766   DEVCB_DRIVER_MEMBER(mpu4_state, pia_ic5_portb_r),   /* port B in */
764767   DEVCB_NULL,      /* line CA1 in */
765768   DEVCB_NULL,      /* line CB1 in */
trunk/src/mame/drivers/dlair.c
r18156r18157
115115   DECLARE_PALETTE_INIT(dleuro);
116116   UINT32 screen_update_dleuro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
117117   INTERRUPT_GEN_MEMBER(vblank_callback);
118   DECLARE_WRITE_LINE_MEMBER(dleuro_interrupt);
119   DECLARE_WRITE16_MEMBER(serial_transmit);
120   DECLARE_READ16_MEMBER(serial_receive);
118121};
119122
120123
r18156r18157
150153 *
151154 *************************************/
152155
153static WRITE_LINE_DEVICE_HANDLER( dleuro_interrupt )
156WRITE_LINE_MEMBER(dlair_state::dleuro_interrupt)
154157{
155   device->machine().device("maincpu")->execute().set_input_line(0, state);
158   machine().device("maincpu")->execute().set_input_line(0, state);
156159}
157160
158161
159static WRITE16_DEVICE_HANDLER( serial_transmit )
162WRITE16_MEMBER(dlair_state::serial_transmit)
160163{
161   dlair_state *state = space.machine().driver_data<dlair_state>();
162   state->laserdisc_data_w(data);
164   laserdisc_data_w(data);
163165}
164166
165167
166static READ16_DEVICE_HANDLER( serial_receive )
168READ16_MEMBER(dlair_state::serial_receive)
167169{
168   dlair_state *state = space.machine().driver_data<dlair_state>();
169170   /* if we still have data to send, do it now */
170   if (offset == 0 && state->laserdisc_data_available_r() == ASSERT_LINE)
171      return state->laserdisc_data_r();
171   if (offset == 0 && laserdisc_data_available_r() == ASSERT_LINE)
172      return laserdisc_data_r();
172173
173174   return -1;
174175}
r18156r18157
185186
186187static const z80sio_interface sio_intf =
187188{
188   DEVCB_LINE(dleuro_interrupt),   /* interrupt handler */
189   DEVCB_DRIVER_LINE_MEMBER(dlair_state, dleuro_interrupt),   /* interrupt handler */
189190   DEVCB_NULL,               /* DTR changed handler */
190191   DEVCB_NULL,               /* RTS changed handler */
191192   DEVCB_NULL,               /* BREAK changed handler */
192   DEVCB_HANDLER(serial_transmit),   /* transmit handler */
193   DEVCB_HANDLER(serial_receive)      /* receive handler */
193   DEVCB_DRIVER_MEMBER16(dlair_state,serial_transmit),   /* transmit handler */
194   DEVCB_DRIVER_MEMBER16(dlair_state,serial_receive)      /* receive handler */
194195};
195196
196197
trunk/src/mame/drivers/snesb.c
r18156r18157
245245   AM_RANGE(0xc00000, 0xffffff) AM_READWRITE_LEGACY(snes_r_bank7, snes_w_bank7)   /* Mirror and ROM */
246246ADDRESS_MAP_END
247247
248static READ8_DEVICE_HANDLER( spc_ram_100_r )
248READ8_MEMBER(snesb_state::spc_ram_100_r)
249249{
250   device_t *device = machine().device("spc700");
250251   return spc_ram_r(device, space, offset + 0x100);
251252}
252253
253static WRITE8_DEVICE_HANDLER( spc_ram_100_w )
254WRITE8_MEMBER(snesb_state::spc_ram_100_w)
254255{
256   device_t *device = machine().device("spc700");
255257   spc_ram_w(device, space, offset + 0x100, data);
256258}
257259
258260static ADDRESS_MAP_START( spc_mem, AS_PROGRAM, 8, snesb_state )
259261   AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE_LEGACY("spc700", spc_ram_r, spc_ram_w)   /* lower 32k ram */
260262   AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE_LEGACY("spc700", spc_io_r, spc_io_w)   /* spc io */
261   AM_RANGE(0x0100, 0xffff) AM_DEVREADWRITE_LEGACY("spc700", spc_ram_100_r, spc_ram_100_w)
263   AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w)
262264ADDRESS_MAP_END
263265
264266static INPUT_PORTS_START( snes_common )
trunk/src/mame/drivers/proconn.c
r18156r18157
173173public:
174174   DECLARE_DRIVER_INIT(proconn);
175175   virtual void machine_reset();
176   DECLARE_WRITE16_MEMBER(serial_transmit);
177   DECLARE_READ16_MEMBER(serial_receive);
176178};
177179
178180static ADDRESS_MAP_START( proconn_map, AS_PROGRAM, 8, proconn_state )
r18156r18157
309311   DEVCB_NULL               // ZC/TO2 callback
310312};
311313
312static WRITE16_DEVICE_HANDLER( serial_transmit )
314WRITE16_MEMBER(proconn_state::serial_transmit)
313315{
314   proconn_state *state = space.machine().driver_data<proconn_state>();
315316
316317//Don't like the look of this, should be a clock somewhere
317318//  if (offset == 0)
318//      state->m_vfd->write_char( data );
319//      m_vfd->write_char( data );
319320
320321   // should probably be in the pios above
321322
322323   for (int i=0; i<8;i++)
323324   {
324      state->m_vfd->shift_data( (data & (1<<i))?0:1  );
325      m_vfd->shift_data( (data & (1<<i))?0:1  );
325326   }
326327}
327328
328329
329static READ16_DEVICE_HANDLER( serial_receive )
330READ16_MEMBER(proconn_state::serial_receive)
330331{
331332   return -1;
332333}
r18156r18157
338339   DEVCB_NULL,               /* DTR changed handler */
339340   DEVCB_NULL,               /* RTS changed handler */
340341   DEVCB_NULL,               /* BREAK changed handler */
341   DEVCB_HANDLER(serial_transmit),   /* transmit handler */
342   DEVCB_HANDLER(serial_receive)      /* receive handler */
342   DEVCB_DRIVER_MEMBER16(proconn_state,serial_transmit),   /* transmit handler */
343   DEVCB_DRIVER_MEMBER16(proconn_state,serial_receive)      /* receive handler */
343344};
344345
345346static const ay8910_interface ay8910_config =
trunk/src/mame/drivers/sfcbox.c
r18156r18157
150150   DECLARE_WRITE8_MEMBER( snes_map_1_w );
151151   DECLARE_MACHINE_START(sfcbox);
152152   DECLARE_MACHINE_RESET(sfcbox);
153   DECLARE_READ8_MEMBER(spc_ram_100_r);
154   DECLARE_WRITE8_MEMBER(spc_ram_100_w);
153155};
154156
155157UINT32 sfcbox_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
r18156r18157
169171   AM_RANGE(0xc00000, 0xffffff) AM_READWRITE_LEGACY(snes_r_bank7, snes_w_bank7)   /* Mirror and ROM */
170172ADDRESS_MAP_END
171173
172static READ8_DEVICE_HANDLER( spc_ram_100_r )
174READ8_MEMBER(sfcbox_state::spc_ram_100_r)
173175{
176   device_t *device = machine().device("spc700");
174177   return spc_ram_r(device, space, offset + 0x100);
175178}
176179
177static WRITE8_DEVICE_HANDLER( spc_ram_100_w )
180WRITE8_MEMBER(sfcbox_state::spc_ram_100_w)
178181{
182   device_t *device = machine().device("spc700");
179183   spc_ram_w(device, space, offset + 0x100, data);
180184}
181185
182186static ADDRESS_MAP_START( spc_mem, AS_PROGRAM, 8, sfcbox_state )
183187   AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE_LEGACY("spc700", spc_ram_r, spc_ram_w)   /* lower 32k ram */
184188   AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE_LEGACY("spc700", spc_io_r, spc_io_w)   /* spc io */
185   AM_RANGE(0x0100, 0xffff) AM_DEVREADWRITE_LEGACY("spc700", spc_ram_100_r, spc_ram_100_w)
189   AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w)
186190ADDRESS_MAP_END
187191
188192static ADDRESS_MAP_START( sfcbox_map, AS_PROGRAM, 8, sfcbox_state )
trunk/src/mame/drivers/nss.c
r18156r18157
330330   virtual void machine_start();
331331   virtual void machine_reset();
332332   INTERRUPT_GEN_MEMBER(nss_vblank_irq);
333   DECLARE_READ8_MEMBER(spc_ram_100_r);
334   DECLARE_WRITE8_MEMBER(spc_ram_100_w);
333335};
334336
335337
r18156r18157
353355   AM_RANGE(0xc00000, 0xffffff) AM_READWRITE_LEGACY(snes_r_bank7, snes_w_bank7)   /* Mirror and ROM */
354356ADDRESS_MAP_END
355357
356static READ8_DEVICE_HANDLER( spc_ram_100_r )
358READ8_MEMBER(nss_state::spc_ram_100_r)
357359{
360   device_t *device = machine().device("spc700");
358361   return spc_ram_r(device, space, offset + 0x100);
359362}
360363
361static WRITE8_DEVICE_HANDLER( spc_ram_100_w )
364WRITE8_MEMBER(nss_state::spc_ram_100_w)
362365{
366   device_t *device = machine().device("spc700");
363367   spc_ram_w(device, space, offset + 0x100, data);
364368}
365369
366370static ADDRESS_MAP_START( spc_mem, AS_PROGRAM, 8, nss_state )
367371   AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE_LEGACY("spc700", spc_ram_r, spc_ram_w)   /* lower 32k ram */
368372   AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE_LEGACY("spc700", spc_io_r, spc_io_w)   /* spc io */
369   AM_RANGE(0x0100, 0xffff) AM_DEVREADWRITE_LEGACY("spc700", spc_ram_100_r, spc_ram_100_w)
373   AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w)
370374ADDRESS_MAP_END
371375
372376/* NSS specific */
trunk/src/mame/drivers/nyny.c
r18156r18157
130130   virtual void machine_start();
131131   virtual void machine_reset();
132132   INTERRUPT_GEN_MEMBER(update_pia_1);
133   DECLARE_WRITE8_MEMBER(ic48_1_74123_output_changed);
133134};
134135
135136
r18156r18157
262263 *
263264 *************************************/
264265
265static WRITE8_DEVICE_HANDLER( ic48_1_74123_output_changed )
266WRITE8_MEMBER(nyny_state::ic48_1_74123_output_changed)
266267{
267   nyny_state *state = space.machine().driver_data<nyny_state>();
268   state->m_pia2->ca1_w(data);
268   m_pia2->ca1_w(data);
269269}
270270
271271
r18156r18157
277277   1,               /* A pin - driven by the CRTC */
278278   1,               /* B pin - pulled high */
279279   1,               /* Clear pin - pulled high */
280   DEVCB_HANDLER(ic48_1_74123_output_changed)
280   DEVCB_DRIVER_MEMBER(nyny_state,ic48_1_74123_output_changed)
281281};
282282
283283
trunk/src/mess/drivers/ami1200.c
r18156r18157
3838   int m_oldstate[2];
3939   DECLARE_WRITE32_MEMBER(aga_overlay_w);
4040   DECLARE_DRIVER_INIT(a1200);
41   DECLARE_WRITE8_MEMBER(ami1200_cia_0_porta_w);
42   DECLARE_READ8_MEMBER(ami1200_cia_0_portb_r);
43   DECLARE_WRITE8_MEMBER(ami1200_cia_0_portb_w);
44   DECLARE_READ8_MEMBER(a1200_cia_0_portA_r);
4145};
4246
4347
r18156r18157
8387 *
8488 *************************************/
8589
86static WRITE8_DEVICE_HANDLER( ami1200_cia_0_porta_w )
90WRITE8_MEMBER(ami1200_state::ami1200_cia_0_porta_w)
8791{
88   ami1200_state *state = space.machine().driver_data<ami1200_state>();
92   device_t *device = machine().device("cia_0");
8993
9094   /* bit 2 = Power Led on Amiga */
91   set_led_status(space.machine(), 0, !BIT(data, 1));
95   set_led_status(machine(), 0, !BIT(data, 1));
9296
93   handle_cd32_joystick_cia(state, data, mos6526_r(device, space, 2));
97   handle_cd32_joystick_cia(this, data, mos6526_r(device, space, 2));
9498}
9599
96100/*************************************
r18156r18157
108112 *
109113 *************************************/
110114
111static READ8_DEVICE_HANDLER( ami1200_cia_0_portb_r )
115READ8_MEMBER(ami1200_state::ami1200_cia_0_portb_r)
112116{
113117   /* parallel port */
114   logerror("%s:CIA0_portb_r\n", space.machine().describe_context());
118   logerror("%s:CIA0_portb_r\n", machine().describe_context());
115119   return 0xff;
116120}
117121
118static WRITE8_DEVICE_HANDLER( ami1200_cia_0_portb_w )
122WRITE8_MEMBER(ami1200_state::ami1200_cia_0_portb_w)
119123{
120124   /* parallel port */
121   logerror("%s:CIA0_portb_w(%02x)\n", space.machine().describe_context(), data);
125   logerror("%s:CIA0_portb_w(%02x)\n", machine().describe_context(), data);
122126}
123127
124128static ADDRESS_MAP_START( a1200_map, AS_PROGRAM, 32, ami1200_state )
r18156r18157
244248 *
245249 *************************************/
246250
247static READ8_DEVICE_HANDLER( a1200_cia_0_portA_r )
251READ8_MEMBER(ami1200_state::a1200_cia_0_portA_r)
248252{
249   UINT8 ret = space.machine().root_device().ioport("CIA0PORTA")->read() & 0xc0;   /* Gameport 1 and 0 buttons */
250   ret |= space.machine().device<amiga_fdc>("fdc")->ciaapra_r();
253   UINT8 ret = machine().root_device().ioport("CIA0PORTA")->read() & 0xc0;   /* Gameport 1 and 0 buttons */
254   ret |= machine().device<amiga_fdc>("fdc")->ciaapra_r();
251255   return ret;
252256}
253257
r18156r18157
258262   DEVCB_NULL,   /* pc_func */
259263   DEVCB_NULL,
260264   DEVCB_NULL,
261   DEVCB_DEVICE_HANDLER("cia_0", a1200_cia_0_portA_r),
262   DEVCB_DEVICE_HANDLER("cia_0", ami1200_cia_0_porta_w),      /* port A */
263   DEVCB_DEVICE_HANDLER("cia_0", ami1200_cia_0_portb_r),
264   DEVCB_DEVICE_HANDLER("cia_0", ami1200_cia_0_portb_w)      /* port B */
265   DEVCB_DRIVER_MEMBER(ami1200_state,a1200_cia_0_portA_r),
266   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_porta_w),      /* port A */
267   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_r),
268   DEVCB_DRIVER_MEMBER(ami1200_state,ami1200_cia_0_portb_w)      /* port B */
265269};
266270
267271static const mos6526_interface a1200_cia_1_intf =
trunk/src/mess/drivers/nanos.c
r18156r18157
5858   virtual void video_start();
5959   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6060   TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
61   DECLARE_WRITE_LINE_MEMBER(z80daisy_interrupt);
62   DECLARE_READ8_MEMBER(nanos_port_a_r);
63   DECLARE_READ8_MEMBER(nanos_port_b_r);
64   DECLARE_WRITE8_MEMBER(nanos_port_b_w);
6165};
6266
6367
r18156r18157
121125
122126/* Z80-SIO Interface */
123127
124static WRITE_LINE_DEVICE_HANDLER( z80daisy_interrupt )
128WRITE_LINE_MEMBER(nanos_state::z80daisy_interrupt)
125129{
126   device->machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, state);
130   machine().device("maincpu")->execute().set_input_line(INPUT_LINE_IRQ0, state);
127131}
128132
129133static const z80sio_interface sio_intf =
130134{
131   DEVCB_LINE(z80daisy_interrupt),   /* interrupt handler */
135   DEVCB_DRIVER_LINE_MEMBER(nanos_state, z80daisy_interrupt),   /* interrupt handler */
132136   DEVCB_NULL,            /* DTR changed handler */
133137   DEVCB_NULL,            /* RTS changed handler */
134138   DEVCB_NULL,            /* BREAK changed handler */
r18156r18157
307311   return 0;
308312}
309313
310static READ8_DEVICE_HANDLER (nanos_port_a_r)
314READ8_MEMBER(nanos_state::nanos_port_a_r)
311315{
312   nanos_state *state = space.machine().driver_data<nanos_state>();
313316   UINT8 retVal;
314   if (state->m_key_command==0)  {
315      return state->m_key_pressed;
317   if (m_key_command==0)  {
318      return m_key_pressed;
316319   } else {
317      retVal = state->m_last_code;
318      state->m_last_code = 0;
320      retVal = m_last_code;
321      m_last_code = 0;
319322      return retVal;
320323   }
321324}
322325
323static READ8_DEVICE_HANDLER (nanos_port_b_r)
326READ8_MEMBER(nanos_state::nanos_port_b_r)
324327{
325328   return 0xff;
326329}
327330
328331
329static WRITE8_DEVICE_HANDLER (nanos_port_b_w)
332WRITE8_MEMBER(nanos_state::nanos_port_b_w)
330333{
331   nanos_state *state = space.machine().driver_data<nanos_state>();
332   state->m_key_command = BIT(data,1);
334   m_key_command = BIT(data,1);
333335   if (BIT(data,7)) {
334      state->membank("bank1")->set_base(state->memregion("maincpu")->base());
336      membank("bank1")->set_base(memregion("maincpu")->base());
335337   } else {
336      state->membank("bank1")->set_base(space.machine().device<ram_device>(RAM_TAG)->pointer());
338      membank("bank1")->set_base(machine().device<ram_device>(RAM_TAG)->pointer());
337339   }
338340}
339341
r18156r18157
455457static Z80PIO_INTERFACE( nanos_z80pio_intf )
456458{
457459   DEVCB_NULL,   /* callback when change interrupt status */
458   DEVCB_HANDLER(nanos_port_a_r),
460   DEVCB_DRIVER_MEMBER(nanos_state,nanos_port_a_r),
459461   DEVCB_NULL,
460462   DEVCB_NULL,
461   DEVCB_HANDLER(nanos_port_b_r),
462   DEVCB_HANDLER(nanos_port_b_w),
463   DEVCB_DRIVER_MEMBER(nanos_state,nanos_port_b_r),
464   DEVCB_DRIVER_MEMBER(nanos_state,nanos_port_b_w),
463465   DEVCB_NULL
464466};
465467
trunk/src/mess/drivers/pc9801.c
r18156r18157
418418   INTERRUPT_GEN_MEMBER(pc9801_vrtc_irq);
419419   DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
420420   DECLARE_INPUT_CHANGED_MEMBER(shift_stroke);
421   DECLARE_WRITE_LINE_MEMBER(pc9801_master_set_int_line);
422   DECLARE_READ8_MEMBER(get_slave_ack);
423   DECLARE_WRITE_LINE_MEMBER(pc_dma_hrq_changed);
424   DECLARE_WRITE_LINE_MEMBER(pc_dack0_w);
425   DECLARE_WRITE_LINE_MEMBER(pc_dack1_w);
426   DECLARE_WRITE_LINE_MEMBER(pc_dack2_w);
427   DECLARE_WRITE_LINE_MEMBER(pc_dack3_w);
428   DECLARE_READ8_MEMBER(test_r);
429   DECLARE_WRITE8_MEMBER(test_w);
430   DECLARE_READ8_MEMBER(ppi_sys_porta_r);
431   DECLARE_READ8_MEMBER(ppi_sys_portb_r);
432   DECLARE_READ8_MEMBER(ppi_prn_portb_r);
433   DECLARE_WRITE8_MEMBER(ppi_sys_portc_w);
434   DECLARE_READ8_MEMBER(ppi_fdd_porta_r);
435   DECLARE_READ8_MEMBER(ppi_fdd_portb_r);
436   DECLARE_READ8_MEMBER(ppi_fdd_portc_r);
437   DECLARE_WRITE8_MEMBER(ppi_fdd_portc_w);
438   DECLARE_WRITE_LINE_MEMBER(fdc_2hd_irq);
439   DECLARE_WRITE_LINE_MEMBER(fdc_2hd_drq);
440   DECLARE_WRITE_LINE_MEMBER(fdc_2dd_irq);
441   DECLARE_WRITE_LINE_MEMBER(fdc_2dd_drq);
442   DECLARE_WRITE_LINE_MEMBER(pc9801rs_fdc_irq);
421443};
422444
423445
r18156r18157
21982220*/
21992221
22002222
2201static WRITE_LINE_DEVICE_HANDLER( pc9801_master_set_int_line )
2223WRITE_LINE_MEMBER(pc9801_state::pc9801_master_set_int_line)
22022224{
22032225   //printf("%02x\n",interrupt);
2204   device->machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
2226   machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
22052227}
22062228
2207static READ8_DEVICE_HANDLER( get_slave_ack )
2229READ8_MEMBER(pc9801_state::get_slave_ack)
22082230{
22092231   if (offset==7) { // IRQ = 7
2210      return   pic8259_acknowledge( space.machine().device( "pic8259_slave" ));
2232      return   pic8259_acknowledge( machine().device( "pic8259_slave" ));
22112233   }
22122234   return 0x00;
22132235}
22142236
22152237static const struct pic8259_interface pic8259_master_config =
22162238{
2217   DEVCB_LINE(pc9801_master_set_int_line),
2239   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_master_set_int_line),
22182240   DEVCB_LINE_VCC,
2219   DEVCB_HANDLER(get_slave_ack)
2241   DEVCB_DRIVER_MEMBER(pc9801_state,get_slave_ack)
22202242};
22212243
22222244static const struct pic8259_interface pic8259_slave_config =
r18156r18157
22762298*
22772299****************************************/
22782300
2279static WRITE_LINE_DEVICE_HANDLER( pc_dma_hrq_changed )
2301WRITE_LINE_MEMBER(pc9801_state::pc_dma_hrq_changed)
22802302{
2281   device->machine().device("maincpu")->execute().set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
2303   machine().device("maincpu")->execute().set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
22822304
22832305   /* Assert HLDA */
2284   i8237_hlda_w( device, state );
2306   i8237_hlda_w( machine().device("dma8237"), state );
22852307}
22862308
22872309
r18156r18157
23022324   space.write_byte(page_offset + offset, data);
23032325}
23042326
2305static void set_dma_channel(device_t *device, int channel, int state)
2327static void set_dma_channel(running_machine &machine, int channel, int state)
23062328{
2307   pc9801_state *drvstate = device->machine().driver_data<pc9801_state>();
2329   pc9801_state *drvstate = machine.driver_data<pc9801_state>();
23082330   if (!state) drvstate->m_dma_channel = channel;
23092331}
23102332
2311static WRITE_LINE_DEVICE_HANDLER( pc_dack0_w ) { /*printf("%02x 0\n",state);*/ set_dma_channel(device, 0, state); }
2312static WRITE_LINE_DEVICE_HANDLER( pc_dack1_w ) { /*printf("%02x 1\n",state);*/ set_dma_channel(device, 1, state); }
2313static WRITE_LINE_DEVICE_HANDLER( pc_dack2_w ) { /*printf("%02x 2\n",state);*/ set_dma_channel(device, 2, state); }
2314static WRITE_LINE_DEVICE_HANDLER( pc_dack3_w ) { /*printf("%02x 3\n",state);*/ set_dma_channel(device, 3, state); }
2333WRITE_LINE_MEMBER(pc9801_state::pc_dack0_w){ /*printf("%02x 0\n",state);*/ set_dma_channel(machine(), 0, state); }
2334WRITE_LINE_MEMBER(pc9801_state::pc_dack1_w){ /*printf("%02x 1\n",state);*/ set_dma_channel(machine(), 1, state); }
2335WRITE_LINE_MEMBER(pc9801_state::pc_dack2_w){ /*printf("%02x 2\n",state);*/ set_dma_channel(machine(), 2, state); }
2336WRITE_LINE_MEMBER(pc9801_state::pc_dack3_w){ /*printf("%02x 3\n",state);*/ set_dma_channel(machine(), 3, state); }
23152337
2316static READ8_DEVICE_HANDLER( test_r )
2338READ8_MEMBER(pc9801_state::test_r)
23172339{
23182340   printf("2dd DACK R\n");
23192341
23202342   return 0xff;
23212343}
23222344
2323static WRITE8_DEVICE_HANDLER( test_w )
2345WRITE8_MEMBER(pc9801_state::test_w)
23242346{
23252347   printf("2dd DACK W\n");
23262348}
23272349
23282350static I8237_INTERFACE( dma8237_config )
23292351{
2330   DEVCB_LINE(pc_dma_hrq_changed),
2352   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc_dma_hrq_changed),
23312353   DEVCB_NULL,
23322354   DEVCB_DRIVER_MEMBER(pc9801_state, pc_dma_read_byte),
23332355   DEVCB_DRIVER_MEMBER(pc9801_state, pc_dma_write_byte),
2334   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER(test_r) },
2335   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER(test_w) },
2336   { DEVCB_LINE(pc_dack0_w), DEVCB_LINE(pc_dack1_w), DEVCB_LINE(pc_dack2_w), DEVCB_LINE(pc_dack3_w) }
2356   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,test_r) },
2357   { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,test_w) },
2358   { DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc_dack0_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc_dack1_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc_dack2_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc_dack3_w) }
23372359};
23382360
23392361/****************************************
r18156r18157
23422364*
23432365****************************************/
23442366
2345static READ8_DEVICE_HANDLER( ppi_sys_porta_r ) { return device->machine().root_device().ioport("DSW2")->read(); }
2346static READ8_DEVICE_HANDLER( ppi_sys_portb_r ) { return device->machine().root_device().ioport("DSW1")->read() & 0xff; }
2347static READ8_DEVICE_HANDLER( ppi_prn_portb_r ) { return device->machine().root_device().ioport("DSW1")->read() >> 8; }
2367READ8_MEMBER(pc9801_state::ppi_sys_porta_r){ return machine().root_device().ioport("DSW2")->read(); }
2368READ8_MEMBER(pc9801_state::ppi_sys_portb_r){ return machine().root_device().ioport("DSW1")->read() & 0xff; }
2369READ8_MEMBER(pc9801_state::ppi_prn_portb_r){ return machine().root_device().ioport("DSW1")->read() >> 8; }
23482370
2349static WRITE8_DEVICE_HANDLER( ppi_sys_portc_w )
2371WRITE8_MEMBER(pc9801_state::ppi_sys_portc_w)
23502372{
2351   beep_set_state(space.machine().device(BEEPER_TAG),!(data & 0x08));
2373   beep_set_state(machine().device(BEEPER_TAG),!(data & 0x08));
23522374}
23532375
23542376static I8255A_INTERFACE( ppi_system_intf )
23552377{
2356   DEVCB_HANDLER(ppi_sys_porta_r),               /* Port A read */
2378   DEVCB_DRIVER_MEMBER(pc9801_state,ppi_sys_porta_r),               /* Port A read */
23572379   DEVCB_NULL,               /* Port A write */
2358   DEVCB_HANDLER(ppi_sys_portb_r),               /* Port B read */
2380   DEVCB_DRIVER_MEMBER(pc9801_state,ppi_sys_portb_r),               /* Port B read */
23592381   DEVCB_NULL,               /* Port B write */
23602382   DEVCB_NULL,               /* Port C read */
2361   DEVCB_HANDLER(ppi_sys_portc_w)               /* Port C write */
2383   DEVCB_DRIVER_MEMBER(pc9801_state,ppi_sys_portc_w)               /* Port C write */
23622384};
23632385
23642386static I8255A_INTERFACE( ppi_printer_intf )
23652387{
23662388   DEVCB_NULL,               /* Port A read */
23672389   DEVCB_NULL,               /* Port A write */
2368   DEVCB_HANDLER(ppi_prn_portb_r),               /* Port B read */
2390   DEVCB_DRIVER_MEMBER(pc9801_state,ppi_prn_portb_r),               /* Port B read */
23692391   DEVCB_NULL,               /* Port B write */
23702392   DEVCB_NULL,               /* Port C read */
23712393   DEVCB_NULL               /* Port C write */
23722394};
23732395
2374static READ8_DEVICE_HANDLER( ppi_fdd_porta_r )
2396READ8_MEMBER(pc9801_state::ppi_fdd_porta_r)
23752397{
23762398   return 0xff;
23772399}
23782400
2379static READ8_DEVICE_HANDLER( ppi_fdd_portb_r )
2401READ8_MEMBER(pc9801_state::ppi_fdd_portb_r)
23802402{
2381   return 0xff; //upd765_status_r(space.machine().device("upd765_2dd"),space, 0);
2403   return 0xff; //upd765_status_r(machine().device("upd765_2dd"),space, 0);
23822404}
23832405
2384static READ8_DEVICE_HANDLER( ppi_fdd_portc_r )
2406READ8_MEMBER(pc9801_state::ppi_fdd_portc_r)
23852407{
2386   return 0xff; //upd765_data_r(space.machine().device("upd765_2dd"),space, 0);
2408   return 0xff; //upd765_data_r(machine().device("upd765_2dd"),space, 0);
23872409}
23882410
2389static WRITE8_DEVICE_HANDLER( ppi_fdd_portc_w )
2411WRITE8_MEMBER(pc9801_state::ppi_fdd_portc_w)
23902412{
2391   //upd765_data_w(space.machine().device("upd765_2dd"),space, 0,data);
2413   //upd765_data_w(machine().device("upd765_2dd"),space, 0,data);
23922414}
23932415
23942416static I8255A_INTERFACE( ppi_fdd_intf )
23952417{
2396   DEVCB_HANDLER(ppi_fdd_porta_r),               /* Port A read */
2418   DEVCB_DRIVER_MEMBER(pc9801_state,ppi_fdd_porta_r),               /* Port A read */
23972419   DEVCB_NULL,               /* Port A write */
2398   DEVCB_HANDLER(ppi_fdd_portb_r),               /* Port B read */
2420   DEVCB_DRIVER_MEMBER(pc9801_state,ppi_fdd_portb_r),               /* Port B read */
23992421   DEVCB_NULL,               /* Port B write */
2400   DEVCB_HANDLER(ppi_fdd_portc_r),               /* Port C read */
2401   DEVCB_HANDLER(ppi_fdd_portc_w)               /* Port C write */
2422   DEVCB_DRIVER_MEMBER(pc9801_state,ppi_fdd_portc_r),               /* Port C read */
2423   DEVCB_DRIVER_MEMBER(pc9801_state,ppi_fdd_portc_w)               /* Port C write */
24022424};
24032425
24042426/****************************************
r18156r18157
24072429*
24082430****************************************/
24092431
2410static WRITE_LINE_DEVICE_HANDLER( fdc_2hd_irq )
2432WRITE_LINE_MEMBER(pc9801_state::fdc_2hd_irq)
24112433{
24122434   printf("IRQ %d\n",state);
24132435   //if(state)
2414   //  pic8259_ir3_w(device->machine().device("pic8259_slave"), state);
2436   //  pic8259_ir3_w(machine().device("pic8259_slave"), state);
24152437}
24162438
2417static WRITE_LINE_DEVICE_HANDLER( fdc_2hd_drq )
2439WRITE_LINE_MEMBER(pc9801_state::fdc_2hd_drq)
24182440{
24192441   printf("%02x DRQ\n",state);
24202442}
24212443
2422static WRITE_LINE_DEVICE_HANDLER( fdc_2dd_irq )
2444WRITE_LINE_MEMBER(pc9801_state::fdc_2dd_irq)
24232445{
2424   pc9801_state *drvstate = device->machine().driver_data<pc9801_state>();
24252446
24262447   printf("IRQ %d\n",state);
24272448
2428   if(drvstate->m_fdc_2dd_ctrl & 8)
2449   if(m_fdc_2dd_ctrl & 8)
24292450   {
2430      pic8259_ir2_w(device->machine().device("pic8259_slave"), state);
2451      pic8259_ir2_w(machine().device("pic8259_slave"), state);
24312452   }
24322453}
24332454
2434static WRITE_LINE_DEVICE_HANDLER( fdc_2dd_drq )
2455WRITE_LINE_MEMBER(pc9801_state::fdc_2dd_drq)
24352456{
24362457   printf("%02x DRQ\n",state);
24372458}
24382459
24392460static const struct upd765_interface upd765_2hd_intf =
24402461{
2441   DEVCB_LINE(fdc_2hd_irq),
2442   DEVCB_LINE(fdc_2hd_drq), //DRQ, TODO
2462   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, fdc_2hd_irq),
2463   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, fdc_2hd_drq), //DRQ, TODO
24432464   NULL,
24442465   UPD765_RDY_PIN_CONNECTED,
24452466   {FLOPPY_0, FLOPPY_1, NULL, NULL}
r18156r18157
24472468
24482469static const struct upd765_interface upd765_2dd_intf =
24492470{
2450   DEVCB_LINE(fdc_2dd_irq),
2451   DEVCB_LINE(fdc_2dd_drq), //DRQ, TODO
2471   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, fdc_2dd_irq),
2472   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, fdc_2dd_drq), //DRQ, TODO
24522473   NULL,
24532474   UPD765_RDY_PIN_CONNECTED,
24542475   {NULL, NULL, NULL, NULL}
24552476};
24562477
2457static WRITE_LINE_DEVICE_HANDLER( pc9801rs_fdc_irq )
2478WRITE_LINE_MEMBER(pc9801_state::pc9801rs_fdc_irq)
24582479{
2459   pc9801_state *drvstate = device->machine().driver_data<pc9801_state>();
24602480
24612481   /* 0xffaf8 */
24622482
2463   if(drvstate->m_fdc_ctrl & 1)
2464      pic8259_ir3_w(device->machine().device("pic8259_slave"), state);
2483   if(m_fdc_ctrl & 1)
2484      pic8259_ir3_w(machine().device("pic8259_slave"), state);
24652485   else
2466      pic8259_ir2_w(device->machine().device("pic8259_slave"), state);
2486      pic8259_ir2_w(machine().device("pic8259_slave"), state);
24672487}
24682488
24692489static const struct upd765_interface pc9801rs_upd765_intf =
24702490{
2471   DEVCB_LINE(pc9801rs_fdc_irq),
2472   DEVCB_LINE(fdc_2dd_drq), //DRQ, TODO
2491   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801rs_fdc_irq),
2492   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, fdc_2dd_drq), //DRQ, TODO
24732493   NULL,
24742494   UPD765_RDY_PIN_CONNECTED,
24752495   {FLOPPY_0, FLOPPY_1, FLOPPY_2, FLOPPY_3}
trunk/src/mess/drivers/mz2000.c
r18156r18157
7979   virtual void machine_reset();
8080   virtual void video_start();
8181   UINT32 screen_update_mz2000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
82   DECLARE_READ8_MEMBER(mz2000_wd17xx_r);
83   DECLARE_WRITE8_MEMBER(mz2000_wd17xx_w);
84   DECLARE_READ8_MEMBER(mz2000_porta_r);
85   DECLARE_READ8_MEMBER(mz2000_portb_r);
86   DECLARE_READ8_MEMBER(mz2000_portc_r);
87   DECLARE_WRITE8_MEMBER(mz2000_porta_w);
88   DECLARE_WRITE8_MEMBER(mz2000_portb_w);
89   DECLARE_WRITE8_MEMBER(mz2000_portc_w);
90   DECLARE_WRITE8_MEMBER(mz2000_pio1_porta_w);
91   DECLARE_READ8_MEMBER(mz2000_pio1_portb_r);
92   DECLARE_READ8_MEMBER(mz2000_pio1_porta_r);
8293};
8394
8495void mz2000_state::video_start()
r18156r18157
288299   m_gvram_bank = data & 3;
289300}
290301
291static READ8_DEVICE_HANDLER( mz2000_wd17xx_r )
302READ8_MEMBER(mz2000_state::mz2000_wd17xx_r)
292303{
293   mz2000_state *state = space.machine().driver_data<mz2000_state>();
304   device_t *device = machine().device("mb8877a");
294305
295   if(state->m_has_fdc)
306   if(m_has_fdc)
296307      return wd17xx_r(device, space, offset) ^ 0xff;
297308
298309   return 0xff;
299310}
300311
301static WRITE8_DEVICE_HANDLER( mz2000_wd17xx_w )
312WRITE8_MEMBER(mz2000_state::mz2000_wd17xx_w)
302313{
303   mz2000_state *state = space.machine().driver_data<mz2000_state>();
314   device_t *device = machine().device("mb8877a");
304315
305   if(state->m_has_fdc)
316   if(m_has_fdc)
306317      wd17xx_w(device, space, offset, data ^ 0xff);
307318}
308319
r18156r18157
353364static ADDRESS_MAP_START(mz2000_io, AS_IO, 8, mz2000_state )
354365   ADDRESS_MAP_UNMAP_HIGH
355366   ADDRESS_MAP_GLOBAL_MASK(0xff)
356   AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE_LEGACY("mb8877a", mz2000_wd17xx_r, mz2000_wd17xx_w)
367   AM_RANGE(0xd8, 0xdb) AM_READWRITE(mz2000_wd17xx_r, mz2000_wd17xx_w)
357368   AM_RANGE(0xdc, 0xdd) AM_WRITE(mz2000_fdc_w)
358369   AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("i8255_0", i8255_device, read, write)
359370    AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE_LEGACY("pit", pit8253_r, pit8253_w)
r18156r18157
565576   GFXDECODE_ENTRY( "chargen", 0x0800, mz2000_charlayout_16, 0, 1 )
566577GFXDECODE_END
567578
568static READ8_DEVICE_HANDLER( mz2000_porta_r )
579READ8_MEMBER(mz2000_state::mz2000_porta_r)
569580{
570581   printf("A R\n");
571582   return 0xff;
572583}
573584
574static READ8_DEVICE_HANDLER( mz2000_portb_r )
585READ8_MEMBER(mz2000_state::mz2000_portb_r)
575586{
576   mz2000_state *state = space.machine().driver_data<mz2000_state>();
577587   /*
578588    x--- ---- break key
579589    -x-- ---- read tape data
r18156r18157
584594    */
585595   UINT8 res = 0x80;
586596
587   if(state->m_cass->get_image() != NULL)
597   if(m_cass->get_image() != NULL)
588598   {
589      res |= (state->m_cass->input() > 0.0038) ? 0x40 : 0x00;
590      res |= ((state->m_cass->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_PLAY) ? 0x00 : 0x20;
591      res |= (state->m_cass->get_position() >= state->m_cass->get_length()) ? 0x08 : 0x00;
599      res |= (m_cass->input() > 0.0038) ? 0x40 : 0x00;
600      res |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_PLAY) ? 0x00 : 0x20;
601      res |= (m_cass->get_position() >= m_cass->get_length()) ? 0x08 : 0x00;
592602   }
593603   else
594604      res |= 0x20;
595605
596   res |= (space.machine().primary_screen->vblank()) ? 0x00 : 0x01;
606   res |= (machine().primary_screen->vblank()) ? 0x00 : 0x01;
597607
598608   return res;
599609}
600610
601static READ8_DEVICE_HANDLER( mz2000_portc_r )
611READ8_MEMBER(mz2000_state::mz2000_portc_r)
602612{
603613   printf("C R\n");
604614   return 0xff;
605615}
606616
607static WRITE8_DEVICE_HANDLER( mz2000_porta_w )
617WRITE8_MEMBER(mz2000_state::mz2000_porta_w)
608618{
609619   /*
610620    These are enabled thru a 0->1 transition
r18156r18157
617627    ---- --x- tape ff
618628    ---- ---x tape rewind
619629    */
620   mz2000_state *state = space.machine().driver_data<mz2000_state>();
621630
622   if((state->m_tape_ctrl & 0x80) == 0 && data & 0x80)
631   if((m_tape_ctrl & 0x80) == 0 && data & 0x80)
623632   {
624633      //printf("Tape APSS control\n");
625634   }
626635
627   if((state->m_tape_ctrl & 0x40) == 0 && data & 0x40)
636   if((m_tape_ctrl & 0x40) == 0 && data & 0x40)
628637   {
629638      //printf("Tape APLAY control\n");
630639   }
631640
632   if((state->m_tape_ctrl & 0x20) == 0 && data & 0x20)
641   if((m_tape_ctrl & 0x20) == 0 && data & 0x20)
633642   {
634643      //printf("Tape AREW control\n");
635644   }
636645
637   if((state->m_tape_ctrl & 0x10) == 0 && data & 0x10)
646   if((m_tape_ctrl & 0x10) == 0 && data & 0x10)
638647   {
639648      //printf("reverse video control\n");
640649   }
641650
642   if((state->m_tape_ctrl & 0x08) == 0 && data & 0x08) // stop
651   if((m_tape_ctrl & 0x08) == 0 && data & 0x08) // stop
643652   {
644      state->m_cass->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR);
645      state->m_cass->change_state(CASSETTE_STOPPED,CASSETTE_MASK_UISTATE);
653      m_cass->change_state(CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR);
654      m_cass->change_state(CASSETTE_STOPPED,CASSETTE_MASK_UISTATE);
646655   }
647656
648   if((state->m_tape_ctrl & 0x04) == 0 && data & 0x04) // play
657   if((m_tape_ctrl & 0x04) == 0 && data & 0x04) // play
649658   {
650      state->m_cass->change_state(CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR);
651      state->m_cass->change_state(CASSETTE_PLAY,CASSETTE_MASK_UISTATE);
659      m_cass->change_state(CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR);
660      m_cass->change_state(CASSETTE_PLAY,CASSETTE_MASK_UISTATE);
652661   }
653662
654   if((state->m_tape_ctrl & 0x02) == 0 && data & 0x02)
663   if((m_tape_ctrl & 0x02) == 0 && data & 0x02)
655664   {
656665      //printf("Tape FF control\n");
657666   }
658667
659   if((state->m_tape_ctrl & 0x01) == 0 && data & 0x01)
668   if((m_tape_ctrl & 0x01) == 0 && data & 0x01)
660669   {
661670      //printf("Tape Rewind control\n");
662671   }
663672
664   state->m_tape_ctrl = data;
673   m_tape_ctrl = data;
665674}
666675
667static WRITE8_DEVICE_HANDLER( mz2000_portb_w )
676WRITE8_MEMBER(mz2000_state::mz2000_portb_w)
668677{
669678   //printf("B W %02x\n",data);
670679
671680   // ...
672681}
673682
674static WRITE8_DEVICE_HANDLER( mz2000_portc_w )
683WRITE8_MEMBER(mz2000_state::mz2000_portc_w)
675684{
676   mz2000_state *state = space.machine().driver_data<mz2000_state>();
677685   /*
678686        x--- ---- tape data write
679687        -x-- ---- tape rec
r18156r18157
685693    */
686694   //printf("C W %02x\n",data);
687695
688   if(((state->m_old_portc & 8) == 0) && data & 8)
689      state->m_ipl_enable = 1;
696   if(((m_old_portc & 8) == 0) && data & 8)
697      m_ipl_enable = 1;
690698
691   if(((state->m_old_portc & 2) == 0) && data & 2)
699   if(((m_old_portc & 2) == 0) && data & 2)
692700   {
693      state->m_ipl_enable = 0;
701      m_ipl_enable = 0;
694702      /* correct? */
695      space.machine().device("maincpu")->execute().set_input_line(INPUT_LINE_RESET, PULSE_LINE);
703      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_RESET, PULSE_LINE);
696704   }
697705
698   beep_set_state(space.machine().device(BEEPER_TAG),data & 0x04);
706   beep_set_state(machine().device(BEEPER_TAG),data & 0x04);
699707
700   state->m_old_portc = data;
708   m_old_portc = data;
701709}
702710
703711static I8255_INTERFACE( ppi8255_intf )
704712{
705   DEVCB_HANDLER(mz2000_porta_r),                  /* Port A read */
706   DEVCB_HANDLER(mz2000_porta_w),                  /* Port A write */
707   DEVCB_HANDLER(mz2000_portb_r),                  /* Port B read */
708   DEVCB_HANDLER(mz2000_portb_w),                  /* Port B write */
709   DEVCB_HANDLER(mz2000_portc_r),                  /* Port C read */
710   DEVCB_HANDLER(mz2000_portc_w)                  /* Port C write */
713   DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_porta_r),                  /* Port A read */
714   DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_porta_w),                  /* Port A write */
715   DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_portb_r),                  /* Port B read */
716   DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_portb_w),                  /* Port B write */
717   DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_portc_r),                  /* Port C read */
718   DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_portc_w)                  /* Port C write */
711719};
712720
713static WRITE8_DEVICE_HANDLER( mz2000_pio1_porta_w )
721WRITE8_MEMBER(mz2000_state::mz2000_pio1_porta_w)
714722{
715   mz2000_state *state = space.machine().driver_data<mz2000_state>();
716   state->m_tvram_enable = ((data & 0xc0) == 0xc0);
717   state->m_gvram_enable = ((data & 0xc0) == 0x80);
718   state->m_width80 = ((data & 0x20) >> 5);
719   state->m_key_mux = data & 0x1f;
723   m_tvram_enable = ((data & 0xc0) == 0xc0);
724   m_gvram_enable = ((data & 0xc0) == 0x80);
725   m_width80 = ((data & 0x20) >> 5);
726   m_key_mux = data & 0x1f;
720727
721   state->m_porta_latch = data;
728   m_porta_latch = data;
722729}
723730
724static READ8_DEVICE_HANDLER( mz2000_pio1_portb_r )
731READ8_MEMBER(mz2000_state::mz2000_pio1_portb_r)
725732{
726   mz2000_state *state = space.machine().driver_data<mz2000_state>();
727733   static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3",
728734                                           "KEY4", "KEY5", "KEY6", "KEY7",
729735                                           "KEY8", "KEY9", "KEYA", "KEYB",
730736                                           "KEYC", "KEYD", "UNUSED", "UNUSED" };
731737
732   if(((state->m_key_mux & 0x10) == 0x00) || ((state->m_key_mux & 0x0f) == 0x0f)) //status read
738   if(((m_key_mux & 0x10) == 0x00) || ((m_key_mux & 0x0f) == 0x0f)) //status read
733739   {
734740      int res,i;
735741
736742      res = 0xff;
737743      for(i=0;i<0xe;i++)
738         res &= space.machine().root_device().ioport(keynames[i])->read();
744         res &= machine().root_device().ioport(keynames[i])->read();
739745
740746      return res;
741747   }
742748
743   return space.machine().root_device().ioport(keynames[state->m_key_mux & 0xf])->read();
749   return machine().root_device().ioport(keynames[m_key_mux & 0xf])->read();
744750}
745751
746static READ8_DEVICE_HANDLER( mz2000_pio1_porta_r )
752READ8_MEMBER(mz2000_state::mz2000_pio1_porta_r)
747753{
748   mz2000_state *state = space.machine().driver_data<mz2000_state>();
749754
750   return state->m_porta_latch;
755   return m_porta_latch;
751756}
752757
753758static Z80PIO_INTERFACE( mz2000_pio1_intf )
754759{
755760   DEVCB_NULL,
756   DEVCB_HANDLER( mz2000_pio1_porta_r ),
757   DEVCB_HANDLER( mz2000_pio1_porta_w ),
761   DEVCB_DRIVER_MEMBER(mz2000_state, mz2000_pio1_porta_r ),
762   DEVCB_DRIVER_MEMBER(mz2000_state, mz2000_pio1_porta_w ),
758763   DEVCB_NULL,
759   DEVCB_HANDLER( mz2000_pio1_portb_r ),
764   DEVCB_DRIVER_MEMBER(mz2000_state, mz2000_pio1_portb_r ),
760765   DEVCB_NULL,
761766   DEVCB_NULL
762767};
trunk/src/mess/drivers/sgi_ip2.c
r18156r18157
103103   virtual void machine_start();
104104   virtual void machine_reset();
105105   INTERRUPT_GEN_MEMBER(sgi_ip2_vbl);
106   DECLARE_WRITE8_MEMBER(sgi_kbd_put);
106107};
107108
108109
r18156r18157
357358   COMBINE_DATA(&m_stklmt);
358359}
359360
360static WRITE8_DEVICE_HANDLER( sgi_kbd_put )
361WRITE8_MEMBER(sgi_ip2_state::sgi_kbd_put)
361362{
362   duart68681_rx_data(space.machine().device("duart68681a"), 1, data);
363   duart68681_rx_data(machine().device("duart68681a"), 1, data);
363364}
364365
365366static GENERIC_TERMINAL_INTERFACE( sgi_terminal_intf )
366367{
367   DEVCB_HANDLER(sgi_kbd_put)
368   DEVCB_DRIVER_MEMBER(sgi_ip2_state,sgi_kbd_put)
368369};
369370
370371
trunk/src/mess/drivers/jr100.c
r18156r18157
4444   virtual void video_start();
4545   UINT32 screen_update_jr100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4646   TIMER_DEVICE_CALLBACK_MEMBER(sound_tick);
47   DECLARE_READ8_MEMBER(jr100_via_read_b);
48   DECLARE_WRITE8_MEMBER(jr100_via_write_a);
49   DECLARE_WRITE8_MEMBER(jr100_via_write_b);
50   DECLARE_WRITE_LINE_MEMBER(jr100_via_write_cb2);
4751};
4852
4953
r18156r18157
228232};
229233
230234
231static READ8_DEVICE_HANDLER(jr100_via_read_b)
235READ8_MEMBER(jr100_state::jr100_via_read_b)
232236{
233   jr100_state *state = space.machine().driver_data<jr100_state>();
234237   UINT8 val = 0x1f;
235   if (keynames[state->m_keyboard_line]) {
236      val = state->ioport(keynames[state->m_keyboard_line])->read();
238   if (keynames[m_keyboard_line]) {
239      val = ioport(keynames[m_keyboard_line])->read();
237240   }
238241   return val;
239242}
240243
241static WRITE8_DEVICE_HANDLER(jr100_via_write_a )
244WRITE8_MEMBER(jr100_state::jr100_via_write_a)
242245{
243   jr100_state *state = space.machine().driver_data<jr100_state>();
244   state->m_keyboard_line = data & 0x0f;
246   m_keyboard_line = data & 0x0f;
245247}
246248
247static WRITE8_DEVICE_HANDLER(jr100_via_write_b )
249WRITE8_MEMBER(jr100_state::jr100_via_write_b)
248250{
249   jr100_state *state = space.machine().driver_data<jr100_state>();
250   state->m_use_pcg = (data & 0x20) ? TRUE : FALSE;
251   state->m_speaker = data>>7;
251   m_use_pcg = (data & 0x20) ? TRUE : FALSE;
252   m_speaker = data>>7;
252253}
253254
254static WRITE_LINE_DEVICE_HANDLER(jr100_via_write_cb2)
255WRITE_LINE_MEMBER(jr100_state::jr100_via_write_cb2)
255256{
256   device->machine().device<cassette_image_device>(CASSETTE_TAG)->output(state ? -1.0 : +1.0);
257   machine().device<cassette_image_device>(CASSETTE_TAG)->output(state ? -1.0 : +1.0);
257258}
258259static const via6522_interface jr100_via_intf =
259260{
260261   DEVCB_NULL,                                 /* in_a_func */
261   DEVCB_HANDLER(jr100_via_read_b),               /* in_b_func */
262   DEVCB_DRIVER_MEMBER(jr100_state,jr100_via_read_b),               /* in_b_func */
262263   DEVCB_NULL,                                /* in_ca1_func */
263264   DEVCB_NULL,                                /* in_cb1_func */
264265   DEVCB_NULL,                                /* in_ca2_func */
265266   DEVCB_NULL,                                /* in_cb2_func */
266   DEVCB_HANDLER(jr100_via_write_a),               /* out_a_func */
267   DEVCB_HANDLER(jr100_via_write_b),               /* out_b_func */
267   DEVCB_DRIVER_MEMBER(jr100_state,jr100_via_write_a),               /* out_a_func */
268   DEVCB_DRIVER_MEMBER(jr100_state,jr100_via_write_b),               /* out_b_func */
268269   DEVCB_NULL,                                /* out_ca1_func */
269270   DEVCB_NULL,                                 /* out_cb1_func */
270271   DEVCB_NULL,                                /* out_ca2_func */
271   DEVCB_LINE(jr100_via_write_cb2),                /* out_cb2_func */
272   DEVCB_DRIVER_LINE_MEMBER(jr100_state, jr100_via_write_cb2),                /* out_cb2_func */
272273   DEVCB_NULL                                /* irq_func */
273274};
274275static const cassette_interface jr100_cassette_interface =
trunk/src/mess/drivers/pc6001.c
r18156r18157
238238   TIMER_CALLBACK_MEMBER(audio_callback);
239239   TIMER_DEVICE_CALLBACK_MEMBER(cassette_callback);
240240   TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
241   DECLARE_READ8_MEMBER(pc6001_8255_porta_r);
242   DECLARE_WRITE8_MEMBER(pc6001_8255_porta_w);
243   DECLARE_READ8_MEMBER(pc6001_8255_portb_r);
244   DECLARE_WRITE8_MEMBER(pc6001_8255_portb_w);
245   DECLARE_WRITE8_MEMBER(pc6001_8255_portc_w);
246   DECLARE_READ8_MEMBER(pc6001_8255_portc_r);
241247};
242248
243249
r18156r18157
18751881   return state->m_irq_vector;
18761882}
18771883
1878static READ8_DEVICE_HANDLER (pc6001_8255_porta_r )
1884READ8_MEMBER(pc6001_state::pc6001_8255_porta_r)
18791885{
18801886   return 0;
18811887}
18821888
1883static WRITE8_DEVICE_HANDLER (pc6001_8255_porta_w )
1889WRITE8_MEMBER(pc6001_state::pc6001_8255_porta_w)
18841890{
18851891//  if(data != 0x06)
18861892//      printf("pc6001_8255_porta_w %02x\n",data);
18871893}
18881894
1889static READ8_DEVICE_HANDLER (pc6001_8255_portb_r )
1895READ8_MEMBER(pc6001_state::pc6001_8255_portb_r)
18901896{
18911897   return 0;
18921898}
18931899
1894static WRITE8_DEVICE_HANDLER (pc6001_8255_portb_w )
1900WRITE8_MEMBER(pc6001_state::pc6001_8255_portb_w)
18951901{
18961902   //printf("pc6001_8255_portb_w %02x\n",data);
18971903}
18981904
1899static WRITE8_DEVICE_HANDLER (pc6001_8255_portc_w )
1905WRITE8_MEMBER(pc6001_state::pc6001_8255_portc_w)
19001906{
19011907   //printf("pc6001_8255_portc_w %02x\n",data);
19021908}
19031909
1904static READ8_DEVICE_HANDLER (pc6001_8255_portc_r )
1910READ8_MEMBER(pc6001_state::pc6001_8255_portc_r)
19051911{
19061912   return 0x88;
19071913}
r18156r18157
19101916
19111917static I8255_INTERFACE( pc6001_ppi8255_interface )
19121918{
1913   DEVCB_HANDLER(pc6001_8255_porta_r),
1914   DEVCB_HANDLER(pc6001_8255_porta_w),
1915   DEVCB_HANDLER(pc6001_8255_portb_r),
1916   DEVCB_HANDLER(pc6001_8255_portb_w),
1917   DEVCB_HANDLER(pc6001_8255_portc_r),
1918   DEVCB_HANDLER(pc6001_8255_portc_w)
1919   DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_porta_r),
1920   DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_porta_w),
1921   DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_portb_r),
1922   DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_portb_w),
1923   DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_portc_r),
1924   DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_portc_w)
19191925};
19201926
19211927static const i8251_interface pc6001_usart_interface=
trunk/src/mess/drivers/pc88va.c
r18156r18157
105105   INTERRUPT_GEN_MEMBER(pc88va_vrtc_irq);
106106   TIMER_CALLBACK_MEMBER(pc8801fd_upd765_tc_to_zero);
107107   TIMER_CALLBACK_MEMBER(t3_mouse_callback);
108   DECLARE_READ8_MEMBER(cpu_8255_c_r);
109   DECLARE_WRITE8_MEMBER(cpu_8255_c_w);
110   DECLARE_READ8_MEMBER(fdc_8255_c_r);
111   DECLARE_WRITE8_MEMBER(fdc_8255_c_w);
112   DECLARE_READ8_MEMBER(r232_ctrl_porta_r);
113   DECLARE_READ8_MEMBER(r232_ctrl_portb_r);
114   DECLARE_READ8_MEMBER(r232_ctrl_portc_r);
115   DECLARE_WRITE8_MEMBER(r232_ctrl_porta_w);
116   DECLARE_WRITE8_MEMBER(r232_ctrl_portb_w);
117   DECLARE_WRITE8_MEMBER(r232_ctrl_portc_w);
118   DECLARE_WRITE_LINE_MEMBER(pc88va_pic_irq);
119   DECLARE_READ8_MEMBER(get_slave_ack);
120   DECLARE_WRITE_LINE_MEMBER(pc88va_pit_out0_changed);
121   DECLARE_WRITE_LINE_MEMBER(pc88va_upd765_interrupt);
108122};
109123
110124
r18156r18157
13961410   GFXDECODE_ENTRY( "kanji",   0x00000, pc88va_chars_16x16,  0, 1 )
13971411GFXDECODE_END
13981412
1399static READ8_DEVICE_HANDLER( cpu_8255_c_r )
1413READ8_MEMBER(pc88va_state::cpu_8255_c_r)
14001414{
1401   pc88va_state *state = space.machine().driver_data<pc88va_state>();
14021415
1403   return state->m_i8255_1_pc >> 4;
1416   return m_i8255_1_pc >> 4;
14041417}
14051418
1406static WRITE8_DEVICE_HANDLER( cpu_8255_c_w )
1419WRITE8_MEMBER(pc88va_state::cpu_8255_c_w)
14071420{
1408   pc88va_state *state = space.machine().driver_data<pc88va_state>();
14091421
1410   state->m_i8255_0_pc = data;
1422   m_i8255_0_pc = data;
14111423}
14121424
14131425static I8255A_INTERFACE( master_fdd_intf )
r18156r18157
14161428   DEVCB_NULL,                     // Port A write
14171429   DEVCB_DEVICE_MEMBER("d8255_2s", i8255_device, pa_r), // Port B read
14181430   DEVCB_NULL,                     // Port B write
1419   DEVCB_HANDLER(cpu_8255_c_r),      // Port C read
1420   DEVCB_HANDLER(cpu_8255_c_w)         // Port C write
1431   DEVCB_DRIVER_MEMBER(pc88va_state,cpu_8255_c_r),      // Port C read
1432   DEVCB_DRIVER_MEMBER(pc88va_state,cpu_8255_c_w)         // Port C write
14211433};
14221434
1423static READ8_DEVICE_HANDLER( fdc_8255_c_r )
1435READ8_MEMBER(pc88va_state::fdc_8255_c_r)
14241436{
1425   pc88va_state *state = space.machine().driver_data<pc88va_state>();
14261437
1427   return state->m_i8255_0_pc >> 4;
1438   return m_i8255_0_pc >> 4;
14281439}
14291440
1430static WRITE8_DEVICE_HANDLER( fdc_8255_c_w )
1441WRITE8_MEMBER(pc88va_state::fdc_8255_c_w)
14311442{
1432   pc88va_state *state = space.machine().driver_data<pc88va_state>();
14331443
1434   state->m_i8255_1_pc = data;
1444   m_i8255_1_pc = data;
14351445}
14361446
14371447static I8255A_INTERFACE( slave_fdd_intf )
r18156r18157
14401450   DEVCB_NULL,                     // Port A write
14411451   DEVCB_DEVICE_MEMBER("d8255_2", i8255_device, pa_r), // Port B read
14421452   DEVCB_NULL,                     // Port B write
1443   DEVCB_HANDLER(fdc_8255_c_r),      // Port C read
1444   DEVCB_HANDLER(fdc_8255_c_w)         // Port C write
1453   DEVCB_DRIVER_MEMBER(pc88va_state,fdc_8255_c_r),      // Port C read
1454   DEVCB_DRIVER_MEMBER(pc88va_state,fdc_8255_c_w)         // Port C write
14451455};
14461456
1447static READ8_DEVICE_HANDLER( r232_ctrl_porta_r )
1457READ8_MEMBER(pc88va_state::r232_ctrl_porta_r)
14481458{
14491459   UINT8 sw5, sw4, sw3, sw2,speed_sw;
14501460
1451   speed_sw = (space.machine().root_device().ioport("SPEED_SW")->read() & 1) ? 0x20 : 0x00;
1452   sw5 = (space.machine().root_device().ioport("DSW")->read() & 0x10);
1453   sw4 = (space.machine().root_device().ioport("DSW")->read() & 0x08);
1454   sw3 = (space.machine().root_device().ioport("DSW")->read() & 0x04);
1455   sw2 = (space.machine().root_device().ioport("DSW")->read() & 0x02);
1461   speed_sw = (machine().root_device().ioport("SPEED_SW")->read() & 1) ? 0x20 : 0x00;
1462   sw5 = (machine().root_device().ioport("DSW")->read() & 0x10);
1463   sw4 = (machine().root_device().ioport("DSW")->read() & 0x08);
1464   sw3 = (machine().root_device().ioport("DSW")->read() & 0x04);
1465   sw2 = (machine().root_device().ioport("DSW")->read() & 0x02);
14561466
14571467   return 0xc1 | sw5 | sw4 | sw3 | sw2 | speed_sw;
14581468}
14591469
1460static READ8_DEVICE_HANDLER( r232_ctrl_portb_r )
1470READ8_MEMBER(pc88va_state::r232_ctrl_portb_r)
14611471{
14621472   UINT8 xsw1;
14631473
1464   xsw1 = (space.machine().root_device().ioport("DSW")->read() & 1) ? 0 : 8;
1474   xsw1 = (machine().root_device().ioport("DSW")->read() & 1) ? 0 : 8;
14651475
14661476   return 0xf7 | xsw1;
14671477}
14681478
1469static READ8_DEVICE_HANDLER( r232_ctrl_portc_r )
1479READ8_MEMBER(pc88va_state::r232_ctrl_portc_r)
14701480{
14711481   return 0xff;
14721482}
14731483
1474static WRITE8_DEVICE_HANDLER( r232_ctrl_porta_w )
1484WRITE8_MEMBER(pc88va_state::r232_ctrl_porta_w)
14751485{
14761486   // ...
14771487}
14781488
1479static WRITE8_DEVICE_HANDLER( r232_ctrl_portb_w )
1489WRITE8_MEMBER(pc88va_state::r232_ctrl_portb_w)
14801490{
14811491   // ...
14821492}
14831493
1484static WRITE8_DEVICE_HANDLER( r232_ctrl_portc_w )
1494WRITE8_MEMBER(pc88va_state::r232_ctrl_portc_w)
14851495{
14861496   // ...
14871497}
14881498
14891499static I8255_INTERFACE( r232c_ctrl_intf )
14901500{
1491   DEVCB_HANDLER(r232_ctrl_porta_r),                  /* Port A read */
1492   DEVCB_HANDLER(r232_ctrl_porta_w),                  /* Port A write */
1493   DEVCB_HANDLER(r232_ctrl_portb_r),                  /* Port B read */
1494   DEVCB_HANDLER(r232_ctrl_portb_w),                  /* Port B write */
1495   DEVCB_HANDLER(r232_ctrl_portc_r),                  /* Port C read */
1496   DEVCB_HANDLER(r232_ctrl_portc_w)                  /* Port C write */
1501   DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_porta_r),                  /* Port A read */
1502   DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_porta_w),                  /* Port A write */
1503   DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_portb_r),                  /* Port B read */
1504   DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_portb_w),                  /* Port B write */
1505   DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_portc_r),                  /* Port C read */
1506   DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_portc_w)                  /* Port C write */
14971507};
14981508
14991509static IRQ_CALLBACK(pc88va_irq_callback)
r18156r18157
15011511   return pic8259_acknowledge( device->machine().device( "pic8259_master" ) );
15021512}
15031513
1504static WRITE_LINE_DEVICE_HANDLER( pc88va_pic_irq )
1514WRITE_LINE_MEMBER(pc88va_state::pc88va_pic_irq)
15051515{
1506   device->machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
1516   machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
15071517//  logerror("PIC#1: set IRQ line to %i\n",interrupt);
15081518}
15091519
1510static READ8_DEVICE_HANDLER( get_slave_ack )
1520READ8_MEMBER(pc88va_state::get_slave_ack)
15111521{
15121522   if (offset==7) { // IRQ = 7
1513      return pic8259_acknowledge(space.machine().device( "pic8259_slave"));
1523      return pic8259_acknowledge(machine().device( "pic8259_slave"));
15141524   }
15151525   return 0x00;
15161526}
15171527
15181528static const struct pic8259_interface pc88va_pic8259_master_config =
15191529{
1520   DEVCB_LINE(pc88va_pic_irq),
1530   DEVCB_DRIVER_LINE_MEMBER(pc88va_state, pc88va_pic_irq),
15211531   DEVCB_LINE_VCC,
1522   DEVCB_HANDLER(get_slave_ack)
1532   DEVCB_DRIVER_MEMBER(pc88va_state,get_slave_ack)
15231533};
15241534
15251535static const struct pic8259_interface pc88va_pic8259_slave_config =
r18156r18157
15921602};
15931603
15941604
1595static WRITE_LINE_DEVICE_HANDLER( pc88va_pit_out0_changed )
1605WRITE_LINE_MEMBER(pc88va_state::pc88va_pit_out0_changed)
15961606{
1597   pic8259_ir0_w(device->machine().device("pic8259_master"), 1);
1607   pic8259_ir0_w(machine().device("pic8259_master"), 1);
15981608}
15991609
16001610static const struct pit8253_config pc88va_pit8253_config =
r18156r18157
16041614         /* general purpose timer 1 */
16051615         8000000,
16061616         DEVCB_NULL,
1607         DEVCB_LINE(pc88va_pit_out0_changed)
1617         DEVCB_DRIVER_LINE_MEMBER(pc88va_state, pc88va_pit_out0_changed)
16081618      },
16091619      {
16101620         /* BEEP frequency setting */
r18156r18157
16221632};
16231633
16241634
1625static WRITE_LINE_DEVICE_HANDLER(pc88va_upd765_interrupt)
1635WRITE_LINE_MEMBER(pc88va_state::pc88va_upd765_interrupt)
16261636{
1627   pc88va_state *drvstate = device->machine().driver_data<pc88va_state>();
1628   if(drvstate->m_fdc_mode)
1629      pic8259_ir3_w(device->machine().device( "pic8259_slave"), state);
1637   if(m_fdc_mode)
1638      pic8259_ir3_w(machine().device( "pic8259_slave"), state);
16301639   else
1631      device->machine().device("fdccpu")->execute().set_input_line(0, HOLD_LINE);
1640      machine().device("fdccpu")->execute().set_input_line(0, HOLD_LINE);
16321641};
16331642
16341643static const struct upd765_interface pc88va_upd765_interface =
16351644{
1636   DEVCB_LINE(pc88va_upd765_interrupt),
1645   DEVCB_DRIVER_LINE_MEMBER(pc88va_state, pc88va_upd765_interrupt),
16371646   DEVCB_NULL, //DRQ, TODO
16381647   NULL,
16391648   UPD765_RDY_PIN_CONNECTED,
trunk/src/mess/drivers/mikrosha.c
r18156r18157
2424public:
2525   mikrosha_state(const machine_config &mconfig, device_type type, const char *tag)
2626      : radio86_state(mconfig, type, tag) { }
27   DECLARE_WRITE_LINE_MEMBER(mikrosha_pit_out2);
2728};
2829
2930
r18156r18157
150151};
151152
152153
153static WRITE_LINE_DEVICE_HANDLER(mikrosha_pit_out2)
154WRITE_LINE_MEMBER(mikrosha_state::mikrosha_pit_out2)
154155{
155156
156157}
r18156r18157
171172      {
172173         2000000,
173174         DEVCB_NULL,
174         DEVCB_LINE(mikrosha_pit_out2)
175         DEVCB_DRIVER_LINE_MEMBER(mikrosha_state, mikrosha_pit_out2)
175176      }
176177   }
177178};
trunk/src/mess/drivers/smc777.c
r18156r18157
8989   UINT32 screen_update_smc777(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
9090   INTERRUPT_GEN_MEMBER(smc777_vblank_irq);
9191   TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
92   DECLARE_WRITE_LINE_MEMBER(smc777_fdc_intrq_w);
93   DECLARE_WRITE_LINE_MEMBER(smc777_fdc_drq_w);
9294};
9395
9496
r18156r18157
414416   }
415417}
416418
417static WRITE_LINE_DEVICE_HANDLER( smc777_fdc_intrq_w )
419WRITE_LINE_MEMBER(smc777_state::smc777_fdc_intrq_w)
418420{
419   smc777_state *drvstate = device->machine().driver_data<smc777_state>();
420   drvstate->m_fdc_irq_flag = state;
421   m_fdc_irq_flag = state;
421422}
422423
423static WRITE_LINE_DEVICE_HANDLER( smc777_fdc_drq_w )
424WRITE_LINE_MEMBER(smc777_state::smc777_fdc_drq_w)
424425{
425   smc777_state *drvstate = device->machine().driver_data<smc777_state>();
426   drvstate->m_fdc_drq_flag = state;
426   m_fdc_drq_flag = state;
427427}
428428
429429READ8_MEMBER(smc777_state::key_r)
r18156r18157
10201020static const wd17xx_interface smc777_mb8876_interface =
10211021{
10221022   DEVCB_NULL,
1023   DEVCB_LINE(smc777_fdc_intrq_w),
1024   DEVCB_LINE(smc777_fdc_drq_w),
1023   DEVCB_DRIVER_LINE_MEMBER(smc777_state, smc777_fdc_intrq_w),
1024   DEVCB_DRIVER_LINE_MEMBER(smc777_state, smc777_fdc_drq_w),
10251025   {FLOPPY_0, FLOPPY_1, NULL, NULL}
10261026};
10271027
trunk/src/mess/drivers/bigbord2.c
r18156r18157
146146   required_device<device_t> m_beeper;
147147   DECLARE_DRIVER_INIT(bigbord2);
148148   TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick);
149   DECLARE_WRITE_LINE_MEMBER(bigbord2_interrupt);
149150};
150151
151152/* Status port
r18156r18157
388389
389390/* Z80 SIO */
390391
391static WRITE_LINE_DEVICE_HANDLER( bigbord2_interrupt )
392WRITE_LINE_MEMBER(bigbord2_state::bigbord2_interrupt)
392393{
393   device->machine().device(Z80_TAG)->execute().set_input_line(0, state);
394   machine().device(Z80_TAG)->execute().set_input_line(0, state);
394395}
395396
396397const z80sio_interface sio_intf =
397398{
398   DEVCB_LINE(bigbord2_interrupt),   /* interrupt handler */
399   DEVCB_DRIVER_LINE_MEMBER(bigbord2_state, bigbord2_interrupt),   /* interrupt handler */
399400   DEVCB_NULL,         /* DTR changed handler */
400401   DEVCB_NULL,         /* RTS changed handler */
401402   DEVCB_NULL,         /* BREAK changed handler */
trunk/src/mess/drivers/apricot.c
r18156r18157
6565   DECLARE_DRIVER_INIT(apricot);
6666   virtual void palette_init();
6767   UINT32 screen_update_apricot(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
68   DECLARE_WRITE_LINE_MEMBER(apricot_sio_irq_w);
6869};
6970
7071
r18156r18157
121122   }
122123};
123124
124static WRITE_LINE_DEVICE_HANDLER( apricot_sio_irq_w )
125WRITE_LINE_MEMBER(apricot_state::apricot_sio_irq_w)
125126{
126   apricot_state *astate = device->machine().driver_data<apricot_state>();
127   pic8259_ir5_w(astate->m_pic, state);
127   pic8259_ir5_w(m_pic, state);
128128}
129129
130130static const z80sio_interface apricot_z80sio_intf =
131131{
132   DEVCB_LINE(apricot_sio_irq_w),
132   DEVCB_DRIVER_LINE_MEMBER(apricot_state, apricot_sio_irq_w),
133133   DEVCB_NULL,
134134   DEVCB_NULL,
135135   DEVCB_NULL,
trunk/src/mess/drivers/palm.c
r18156r18157
4545   virtual void machine_reset();
4646   DECLARE_INPUT_CHANGED_MEMBER(pen_check);
4747   DECLARE_INPUT_CHANGED_MEMBER(button_check);
48   DECLARE_WRITE8_MEMBER(palm_port_f_out);
49   DECLARE_READ8_MEMBER(palm_port_c_in);
50   DECLARE_READ8_MEMBER(palm_port_f_in);
51   DECLARE_WRITE16_MEMBER(palm_spim_out);
52   DECLARE_READ16_MEMBER(palm_spim_in);
53   DECLARE_WRITE8_MEMBER(palm_dac_transition);
4854};
4955
5056static offs_t palm_dasm_override(device_t &device, char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, int options);
r18156r18157
7177   mc68328_set_port_d_lines(m_lsi, button_state, (int)(FPTR)param);
7278}
7379
74static WRITE8_DEVICE_HANDLER( palm_port_f_out )
80WRITE8_MEMBER(palm_state::palm_port_f_out)
7581{
76   palm_state *state = space.machine().driver_data<palm_state>();
77   state->m_port_f_latch = data;
82   m_port_f_latch = data;
7883}
7984
80static READ8_DEVICE_HANDLER( palm_port_c_in )
85READ8_MEMBER(palm_state::palm_port_c_in)
8186{
8287   return 0x10;
8388}
8489
85static READ8_DEVICE_HANDLER( palm_port_f_in )
90READ8_MEMBER(palm_state::palm_port_f_in)
8691{
87   palm_state *state = space.machine().driver_data<palm_state>();
88   return state->m_port_f_latch;
92   return m_port_f_latch;
8993}
9094
91static WRITE16_DEVICE_HANDLER( palm_spim_out )
95WRITE16_MEMBER(palm_state::palm_spim_out)
9296{
93   palm_state *state = space.machine().driver_data<palm_state>();
94   state->m_spim_data = data;
97   m_spim_data = data;
9598}
9699
97static READ16_DEVICE_HANDLER( palm_spim_in )
100READ16_MEMBER(palm_state::palm_spim_in)
98101{
99   palm_state *state = space.machine().driver_data<palm_state>();
100   return state->m_spim_data;
102   return m_spim_data;
101103}
102104
103105static void palm_spim_exchange( device_t *device )
r18156r18157
157159    AUDIO HARDWARE
158160***************************************************************************/
159161
160static WRITE8_DEVICE_HANDLER( palm_dac_transition )
162WRITE8_MEMBER(palm_state::palm_dac_transition)
161163{
162   palm_state *state = space.machine().driver_data<palm_state>();
163   state->m_dac->write_unsigned8(0x7f * data );
164   m_dac->write_unsigned8(0x7f * data );
164165}
165166
166167
r18156r18157
176177   DEVCB_NULL,                   // Port C Output
177178   DEVCB_NULL,                   // Port D Output
178179   DEVCB_NULL,                   // Port E Output
179   DEVCB_HANDLER(palm_port_f_out),// Port F Output
180   DEVCB_DRIVER_MEMBER(palm_state,palm_port_f_out),// Port F Output
180181   DEVCB_NULL,                   // Port G Output
181182   DEVCB_NULL,                   // Port J Output
182183   DEVCB_NULL,                   // Port K Output
r18156r18157
184185
185186   DEVCB_NULL,                   // Port A Input
186187   DEVCB_NULL,                   // Port B Input
187   DEVCB_HANDLER(palm_port_c_in),// Port C Input
188   DEVCB_DRIVER_MEMBER(palm_state,palm_port_c_in),// Port C Input
188189   DEVCB_NULL,                   // Port D Input
189190   DEVCB_NULL,                   // Port E Input
190   DEVCB_HANDLER(palm_port_f_in),// Port F Input
191   DEVCB_DRIVER_MEMBER(palm_state,palm_port_f_in),// Port F Input
191192   DEVCB_NULL,                   // Port G Input
192193   DEVCB_NULL,                   // Port J Input
193194   DEVCB_NULL,                   // Port K Input
194195   DEVCB_NULL,                   // Port M Input
195196
196   DEVCB_HANDLER(palm_dac_transition),
197   DEVCB_DRIVER_MEMBER(palm_state,palm_dac_transition),
197198
198   DEVCB_HANDLER(palm_spim_out),
199   DEVCB_HANDLER(palm_spim_in),
199   DEVCB_DRIVER_MEMBER16(palm_state,palm_spim_out),
200   DEVCB_DRIVER_MEMBER16(palm_state,palm_spim_in),
200201   palm_spim_exchange
201202};
202203
trunk/src/mess/drivers/apexc.c
r18156r18157
3333   virtual void palette_init();
3434   UINT32 screen_update_apexc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3535   INTERRUPT_GEN_MEMBER(apexc_interrupt);
36   DECLARE_READ8_MEMBER(tape_read);
37   DECLARE_WRITE8_MEMBER(tape_write);
3638};
3739
3840
r18156r18157
264266    Open a tape image
265267*/
266268
267static READ8_DEVICE_HANDLER(tape_read)
269READ8_MEMBER(apexc_state::tape_read)
268270{
271   device_t *device = machine().device("tape_reader");
269272   UINT8 reply;
270273   device_image_interface *image = dynamic_cast<device_image_interface *>(device);
271274
r18156r18157
275278      return 0;   /* unit not ready - I don't know what we should do */
276279}
277280
278static WRITE8_DEVICE_HANDLER(tape_write)
281WRITE8_MEMBER(apexc_state::tape_write)
279282{
283   device_t *device = machine().device("tape_puncher");
280284   UINT8 data5 = (data & 0x1f);
281285   device_image_interface *image = dynamic_cast<device_image_interface *>(device);
282286
283287   if (image->exists())
284288      image->fwrite(& data5, 1);
285289
286   apexc_teletyper_putchar(space.machine(), data & 0x1f);   /* display on screen */
290   apexc_teletyper_putchar(machine(), data & 0x1f);   /* display on screen */
287291}
288292
289293/*
r18156r18157
855859ADDRESS_MAP_END
856860
857861static ADDRESS_MAP_START(apexc_io_map, AS_IO, 8, apexc_state )
858   AM_RANGE(0x00, 0x00) AM_DEVREAD_LEGACY("tape_reader",tape_read)
859   AM_RANGE(0x00, 0x00) AM_DEVWRITE_LEGACY("tape_puncher",tape_write)
862   AM_RANGE(0x00, 0x00) AM_READ(tape_read)
863   AM_RANGE(0x00, 0x00) AM_WRITE(tape_write)
860864ADDRESS_MAP_END
861865
862866
trunk/src/mess/drivers/mirage.c
r18156r18157
9696   DECLARE_DRIVER_INIT(mirage);
9797   virtual void video_start();
9898   UINT32 screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
99   DECLARE_WRITE8_MEMBER(mirage_via_write_porta);
100   DECLARE_WRITE8_MEMBER(mirage_via_write_portb);
101   DECLARE_READ8_MEMBER(mirage_via_read_porta);
102   DECLARE_READ8_MEMBER(mirage_via_read_portb);
103   DECLARE_READ8_MEMBER(mirage_via_read_ca1);
104   DECLARE_READ8_MEMBER(mirage_via_read_cb1);
105   DECLARE_READ8_MEMBER(mirage_via_read_ca2);
106   DECLARE_READ8_MEMBER(mirage_via_read_cb2);
99107};
100108
101109const floppy_format_type mirage_state::floppy_formats[] = {
r18156r18157
149157ADDRESS_MAP_END
150158
151159// port A: front panel
152static WRITE8_DEVICE_HANDLER( mirage_via_write_porta )
160WRITE8_MEMBER(mirage_state::mirage_via_write_porta)
153161{
154162//  printf("PORT A: %02x\n", data);
155163}
r18156r18157
162170//  bit 1: OUT upper/lower bank (64k halves)
163171//  bit 0: OUT bank 0/bank 1 (32k halves)
164172
165static WRITE8_DEVICE_HANDLER( mirage_via_write_portb )
173WRITE8_MEMBER(mirage_state::mirage_via_write_portb)
166174{
167175   int bank = 0;
168    mirage_state *state = space.machine().driver_data<mirage_state>();
169176
170177   // handle sound RAM bank switching
171178   bank = (data & 2) ? (64*1024) : 0;
172179   bank += (data & 1) ? (32*1024) : 0;
173   if (bank != state->last_sndram_bank)
180   if (bank != last_sndram_bank)
174181   {
175      state->last_sndram_bank = bank;
176      state->membank("sndbank")->set_base(state->memregion("es5503")->base() + bank);
182      last_sndram_bank = bank;
183      membank("sndbank")->set_base(memregion("es5503")->base() + bank);
177184   }
178185}
179186
180187// port A: front panel
181static READ8_DEVICE_HANDLER( mirage_via_read_porta )
188READ8_MEMBER(mirage_state::mirage_via_read_porta)
182189{
183190   return 0;
184191}
r18156r18157
186193// port B:
187194//  bit 6: IN FDC disk loaded
188195//  bit 5: IN 5503 sync (?)
189static READ8_DEVICE_HANDLER( mirage_via_read_portb )
196READ8_MEMBER(mirage_state::mirage_via_read_portb)
190197{
191198   return 0x60;
192199}
193200
194201// external sync pulse
195static READ8_DEVICE_HANDLER( mirage_via_read_ca1 )
202READ8_MEMBER(mirage_state::mirage_via_read_ca1)
196203{
197204   return 0;
198205}
199206
200207// keyscan
201static READ8_DEVICE_HANDLER( mirage_via_read_cb1 )
208READ8_MEMBER(mirage_state::mirage_via_read_cb1)
202209{
203210   return 0;
204211}
205212
206213// keyscan
207static READ8_DEVICE_HANDLER( mirage_via_read_ca2 )
214READ8_MEMBER(mirage_state::mirage_via_read_ca2)
208215{
209216   return 0;
210217}
211218
212219
213220// keyscan
214static READ8_DEVICE_HANDLER( mirage_via_read_cb2 )
221READ8_MEMBER(mirage_state::mirage_via_read_cb2)
215222{
216223   return 0;
217224}
218225
219226const via6522_interface mirage_via =
220227{
221   DEVCB_HANDLER(mirage_via_read_porta),
222   DEVCB_HANDLER(mirage_via_read_portb),
223   DEVCB_HANDLER(mirage_via_read_ca1),
224   DEVCB_HANDLER(mirage_via_read_cb1),
225   DEVCB_HANDLER(mirage_via_read_ca2),
226   DEVCB_HANDLER(mirage_via_read_cb2),
227   DEVCB_HANDLER(mirage_via_write_porta),
228   DEVCB_HANDLER(mirage_via_write_portb),
228   DEVCB_DRIVER_MEMBER(mirage_state,mirage_via_read_porta),
229   DEVCB_DRIVER_MEMBER(mirage_state,mirage_via_read_portb),
230   DEVCB_DRIVER_MEMBER(mirage_state,mirage_via_read_ca1),
231   DEVCB_DRIVER_MEMBER(mirage_state,mirage_via_read_cb1),
232   DEVCB_DRIVER_MEMBER(mirage_state,mirage_via_read_ca2),
233   DEVCB_DRIVER_MEMBER(mirage_state,mirage_via_read_cb2),
234   DEVCB_DRIVER_MEMBER(mirage_state,mirage_via_write_porta),
235   DEVCB_DRIVER_MEMBER(mirage_state,mirage_via_write_portb),
229236   DEVCB_NULL,
230237   DEVCB_NULL,
231238   DEVCB_NULL,
trunk/src/mess/drivers/digel804.c
r18156r18157
132132   UINT8 m_chipinsert_state;
133133   UINT8 m_keyen_state;
134134   UINT8 m_op41;
135   DECLARE_WRITE8_MEMBER(digel804_serial_put);
135136};
136137
137138
r18156r18157
558559/******************************************************************************
559560 Machine Drivers
560561******************************************************************************/
561static WRITE8_DEVICE_HANDLER( digel804_serial_put )
562WRITE8_MEMBER(digel804_state::digel804_serial_put)
562563{
563   digel804_state *state = space.machine().driver_data<digel804_state>();
564   state->m_acia->receive_character(data);
564   m_acia->receive_character(data);
565565}
566566
567567static GENERIC_TERMINAL_INTERFACE( digel804_terminal_intf )
568568{
569   DEVCB_HANDLER(digel804_serial_put)
569   DEVCB_DRIVER_MEMBER(digel804_state,digel804_serial_put)
570570};
571571
572572WRITE_LINE_MEMBER( digel804_state::da_w )
trunk/src/mess/drivers/mz2500.c
r18156r18157
165165   virtual void palette_init();
166166   UINT32 screen_update_mz2500(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
167167   INTERRUPT_GEN_MEMBER(mz2500_vbl);
168   DECLARE_READ8_MEMBER(mz2500_wd17xx_r);
169   DECLARE_WRITE8_MEMBER(mz2500_wd17xx_w);
170   DECLARE_READ8_MEMBER(mz2500_porta_r);
171   DECLARE_READ8_MEMBER(mz2500_portb_r);
172   DECLARE_READ8_MEMBER(mz2500_portc_r);
173   DECLARE_WRITE8_MEMBER(mz2500_porta_w);
174   DECLARE_WRITE8_MEMBER(mz2500_portb_w);
175   DECLARE_WRITE8_MEMBER(mz2500_portc_w);
176   DECLARE_WRITE8_MEMBER(mz2500_pio1_porta_w);
177   DECLARE_READ8_MEMBER(mz2500_pio1_porta_r);
178   DECLARE_READ8_MEMBER(mz2500_pio1_portb_r);
179   DECLARE_READ8_MEMBER(opn_porta_r);
180   DECLARE_WRITE8_MEMBER(opn_porta_w);
181   DECLARE_WRITE_LINE_MEMBER(pit8253_clk0_irq);
182   DECLARE_WRITE_LINE_MEMBER(mz2500_rtc_alarm_irq);
168183};
169184
170185
r18156r18157
12511266   palette_set_color_rgb(machine(), pal_entry+0x10, pal4bit(m_pal[pal_entry].r), pal4bit(m_pal[pal_entry].g), pal4bit(m_pal[pal_entry].b));
12521267}
12531268
1254static READ8_DEVICE_HANDLER( mz2500_wd17xx_r )
1269READ8_MEMBER(mz2500_state::mz2500_wd17xx_r)
12551270{
1256   mz2500_state *state = space.machine().driver_data<mz2500_state>();
1257   return wd17xx_r(device, space, offset) ^ state->m_fdc_reverse;
1271   device_t *device = machine().device("mb8877a");
1272   return wd17xx_r(device, space, offset) ^ m_fdc_reverse;
12581273}
12591274
1260static WRITE8_DEVICE_HANDLER( mz2500_wd17xx_w )
1275WRITE8_MEMBER(mz2500_state::mz2500_wd17xx_w)
12611276{
1262   mz2500_state *state = space.machine().driver_data<mz2500_state>();
1263   wd17xx_w(device, space, offset, data ^ state->m_fdc_reverse);
1277   device_t *device = machine().device("mb8877a");
1278   wd17xx_w(device, space, offset, data ^ m_fdc_reverse);
12641279}
12651280
12661281READ8_MEMBER(mz2500_state::mz2500_bplane_latch_r)
r18156r18157
15221537   AM_RANGE(0xcc, 0xcc) AM_READWRITE(rp5c15_8_r, rp5c15_8_w)
15231538   AM_RANGE(0xce, 0xce) AM_WRITE(mz2500_dictionary_bank_w)
15241539   AM_RANGE(0xcf, 0xcf) AM_WRITE(mz2500_kanji_bank_w)
1525   AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE_LEGACY("mb8877a", mz2500_wd17xx_r, mz2500_wd17xx_w)
1540   AM_RANGE(0xd8, 0xdb) AM_READWRITE(mz2500_wd17xx_r, mz2500_wd17xx_w)
15261541   AM_RANGE(0xdc, 0xdd) AM_WRITE(mz2500_fdc_w)
15271542   AM_RANGE(0xde, 0xde) AM_WRITENOP
15281543   AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("i8255_0", i8255_device, read, write)
r18156r18157
18301845   m_cg_clear_flag = 0;
18311846}
18321847
1833static READ8_DEVICE_HANDLER( mz2500_porta_r )
1848READ8_MEMBER(mz2500_state::mz2500_porta_r)
18341849{
18351850   logerror("PPI PORTA R\n");
18361851
18371852   return 0xff;
18381853}
18391854
1840static READ8_DEVICE_HANDLER( mz2500_portb_r )
1855READ8_MEMBER(mz2500_state::mz2500_portb_r)
18411856{
18421857   UINT8 vblank_bit;
18431858
1844   vblank_bit = space.machine().primary_screen->vblank() ? 0 : 1; //Guess: NOBO wants this bit to be high/low
1859   vblank_bit = machine().primary_screen->vblank() ? 0 : 1; //Guess: NOBO wants this bit to be high/low
18451860
18461861   return 0xfe | vblank_bit;
18471862}
18481863
1849static READ8_DEVICE_HANDLER( mz2500_portc_r )
1864READ8_MEMBER(mz2500_state::mz2500_portc_r)
18501865{
18511866   logerror("PPI PORTC R\n");
18521867
18531868   return 0xff;
18541869}
18551870
1856static WRITE8_DEVICE_HANDLER( mz2500_porta_w )
1871WRITE8_MEMBER(mz2500_state::mz2500_porta_w)
18571872{
18581873   logerror("PPI PORTA W %02x\n",data);
18591874}
18601875
1861static WRITE8_DEVICE_HANDLER( mz2500_portb_w )
1876WRITE8_MEMBER(mz2500_state::mz2500_portb_w)
18621877{
18631878   logerror("PPI PORTB W %02x\n",data);
18641879}
18651880
1866static WRITE8_DEVICE_HANDLER( mz2500_portc_w )
1881WRITE8_MEMBER(mz2500_state::mz2500_portc_w)
18671882{
1868   mz2500_state *state = space.machine().driver_data<mz2500_state>();
18691883   /*
18701884    ---- x--- 0->1 transition = IPL reset
18711885    ---- -x-- beeper state
r18156r18157
18731887    */
18741888
18751889   /* work RAM reset */
1876   if((state->m_old_portc & 0x02) == 0x00 && (data & 0x02))
1890   if((m_old_portc & 0x02) == 0x00 && (data & 0x02))
18771891   {
1878      mz2500_reset(state, WRAM_RESET);
1892      mz2500_reset(this, WRAM_RESET);
18791893      /* correct? */
1880      space.machine().device("maincpu")->execute().set_input_line(INPUT_LINE_RESET, PULSE_LINE);
1894      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_RESET, PULSE_LINE);
18811895   }
18821896
18831897   /* bit 2 is speaker */
18841898
18851899   /* IPL reset */
1886   if((state->m_old_portc & 0x08) == 0x00 && (data & 0x08))
1887      mz2500_reset(state, IPL_RESET);
1900   if((m_old_portc & 0x08) == 0x00 && (data & 0x08))
1901      mz2500_reset(this, IPL_RESET);
18881902
1889   state->m_old_portc = data;
1903   m_old_portc = data;
18901904
1891   beep_set_state(space.machine().device(BEEPER_TAG),data & 0x04);
1905   beep_set_state(machine().device(BEEPER_TAG),data & 0x04);
18921906
18931907   if(data & ~0x0e)
18941908      logerror("PPI PORTC W %02x\n",data & ~0x0e);
r18156r18157
18961910
18971911static I8255_INTERFACE( ppi8255_intf )
18981912{
1899   DEVCB_DEVICE_HANDLER("i8255_0", mz2500_porta_r),                  /* Port A read */
1900   DEVCB_DEVICE_HANDLER("i8255_0", mz2500_porta_w),                  /* Port A write */
1901   DEVCB_DEVICE_HANDLER("i8255_0", mz2500_portb_r),                  /* Port B read */
1902   DEVCB_DEVICE_HANDLER("i8255_0", mz2500_portb_w),                  /* Port B write */
1903   DEVCB_DEVICE_HANDLER("i8255_0", mz2500_portc_r),                  /* Port C read */
1904   DEVCB_DEVICE_HANDLER("i8255_0", mz2500_portc_w)                  /* Port C write */
1913   DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_porta_r),                  /* Port A read */
1914   DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_porta_w),                  /* Port A write */
1915   DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_portb_r),                  /* Port B read */
1916   DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_portb_w),                  /* Port B write */
1917   DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_portc_r),                  /* Port C read */
1918   DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_portc_w)                  /* Port C write */
19051919};
19061920
1907static WRITE8_DEVICE_HANDLER( mz2500_pio1_porta_w )
1921WRITE8_MEMBER(mz2500_state::mz2500_pio1_porta_w)
19081922{
1909   mz2500_state *state = space.machine().driver_data<mz2500_state>();
19101923//  printf("%02x\n",data);
19111924
1912   if(state->m_prev_col_val != ((data & 0x20) >> 5))
1925   if(m_prev_col_val != ((data & 0x20) >> 5))
19131926   {
1914      state->m_text_col_size = ((data & 0x20) >> 5);
1915      state->m_prev_col_val = state->m_text_col_size;
1916      mz2500_reconfigure_screen(space.machine());
1927      m_text_col_size = ((data & 0x20) >> 5);
1928      m_prev_col_val = m_text_col_size;
1929      mz2500_reconfigure_screen(machine());
19171930   }
1918   state->m_key_mux = data & 0x1f;
1931   m_key_mux = data & 0x1f;
19191932}
19201933
19211934
1922static READ8_DEVICE_HANDLER( mz2500_pio1_porta_r )
1935READ8_MEMBER(mz2500_state::mz2500_pio1_porta_r)
19231936{
1924   mz2500_state *state = space.machine().driver_data<mz2500_state>();
19251937   static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3",
19261938                                           "KEY4", "KEY5", "KEY6", "KEY7",
19271939                                           "KEY8", "KEY9", "KEYA", "KEYB",
19281940                                           "KEYC", "KEYD", "UNUSED", "UNUSED" };
19291941
1930   if(((state->m_key_mux & 0x10) == 0x00) || ((state->m_key_mux & 0x0f) == 0x0f)) //status read
1942   if(((m_key_mux & 0x10) == 0x00) || ((m_key_mux & 0x0f) == 0x0f)) //status read
19311943   {
19321944      int res,i;
19331945
19341946      res = 0xff;
19351947      for(i=0;i<0xe;i++)
1936         res &= space.machine().root_device().ioport(keynames[i])->read();
1948         res &= machine().root_device().ioport(keynames[i])->read();
19371949
1938      state->m_pio_latchb = res;
1950      m_pio_latchb = res;
19391951
19401952      return res;
19411953   }
19421954
1943   state->m_pio_latchb = space.machine().root_device().ioport(keynames[state->m_key_mux & 0xf])->read();
1955   m_pio_latchb = machine().root_device().ioport(keynames[m_key_mux & 0xf])->read();
19441956
1945   return space.machine().root_device().ioport(keynames[state->m_key_mux & 0xf])->read();
1957   return machine().root_device().ioport(keynames[m_key_mux & 0xf])->read();
19461958}
19471959
19481960#if 0
1949static READ8_DEVICE_HANDLER( mz2500_pio1_portb_r )
1961READ8_MEMBER(mz2500_state::mz2500_pio1_portb_r)
19501962{
1951   mz2500_state *state = space.machine().driver_data<mz2500_state>();
1952   return state->m_pio_latchb;
1963   return m_pio_latchb;
19531964}
19541965#endif
19551966
19561967static Z80PIO_INTERFACE( mz2500_pio1_intf )
19571968{
19581969   DEVCB_NULL,
1959   DEVCB_DEVICE_HANDLER( "z80pio_1", mz2500_pio1_porta_r ),
1960   DEVCB_DEVICE_HANDLER( "z80pio_1", mz2500_pio1_porta_w ),
1970   DEVCB_DRIVER_MEMBER( mz2500_state,mz2500_pio1_porta_r ),
1971   DEVCB_DRIVER_MEMBER( mz2500_state,mz2500_pio1_porta_w ),
19611972   DEVCB_NULL,
1962   DEVCB_DEVICE_HANDLER( "z80pio_1", mz2500_pio1_porta_r ),
1973   DEVCB_DRIVER_MEMBER( mz2500_state,mz2500_pio1_porta_r ),
19631974   DEVCB_NULL,
19641975   DEVCB_NULL
19651976};
19661977
19671978
1968static READ8_DEVICE_HANDLER( opn_porta_r )
1979READ8_MEMBER(mz2500_state::opn_porta_r)
19691980{
1970   mz2500_state *state = space.machine().driver_data<mz2500_state>();
1971   return state->m_ym_porta;
1981   return m_ym_porta;
19721982}
19731983
1974static WRITE8_DEVICE_HANDLER( opn_porta_w )
1984WRITE8_MEMBER(mz2500_state::opn_porta_w)
19751985{
1976   mz2500_state *state = space.machine().driver_data<mz2500_state>();
19771986   /*
19781987    ---- x--- mouse select
19791988    ---- -x-- palette bit (16/4096 colors)
19801989    ---- --x- floppy reverse bit (controls wd17xx bits in command registers)
19811990    */
19821991
1983   state->m_fdc_reverse = (data & 2) ? 0x00 : 0xff;
1984   state->m_pal_select = (data & 4) ? 1 : 0;
1992   m_fdc_reverse = (data & 2) ? 0x00 : 0xff;
1993   m_pal_select = (data & 4) ? 1 : 0;
19851994
1986   state->m_ym_porta = data;
1995   m_ym_porta = data;
19871996}
19881997
19891998static const ym2203_interface ym2203_interface_1 =
r18156r18157
19912000   {
19922001      AY8910_LEGACY_OUTPUT,
19932002      AY8910_DEFAULT_LOADS,
1994      DEVCB_DEVICE_HANDLER("ym", opn_porta_r),   // read A
2003      DEVCB_DRIVER_MEMBER(mz2500_state,opn_porta_r),   // read A
19952004      DEVCB_INPUT_PORT("DSW1"),   // read B
1996      DEVCB_DEVICE_HANDLER("ym", opn_porta_w),   // write A
2005      DEVCB_DRIVER_MEMBER(mz2500_state,opn_porta_w),   // write A
19972006      DEVCB_NULL               // write B
19982007   },
19992008   DEVCB_NULL
r18156r18157
20402049
20412050/* PIT8253 Interface */
20422051
2043static WRITE_LINE_DEVICE_HANDLER( pit8253_clk0_irq )
2052WRITE_LINE_MEMBER(mz2500_state::pit8253_clk0_irq)
20442053{
2045   mz2500_state *drvstate = device->machine().driver_data<mz2500_state>();
2046   if(drvstate->m_irq_mask[1]/* && state & 1*/)
2047      device->machine().device("maincpu")->execute().set_input_line_and_vector(0, HOLD_LINE,drvstate->m_irq_vector[1]);
2054   if(m_irq_mask[1]/* && state & 1*/)
2055      machine().device("maincpu")->execute().set_input_line_and_vector(0, HOLD_LINE,m_irq_vector[1]);
20482056}
20492057
20502058static const struct pit8253_config mz2500_pit8253_intf =
r18156r18157
20532061      {
20542062         31250,
20552063         DEVCB_NULL,
2056         DEVCB_DEVICE_LINE("pit", pit8253_clk0_irq)
2064         DEVCB_DRIVER_LINE_MEMBER(mz2500_state,pit8253_clk0_irq)
20572065      },
20582066      {
20592067         0,
r18156r18157
20682076   }
20692077};
20702078
2071static WRITE_LINE_DEVICE_HANDLER( mz2500_rtc_alarm_irq )
2079WRITE_LINE_MEMBER(mz2500_state::mz2500_rtc_alarm_irq)
20722080{
2073   //mz2500_state *drvstate = device->machine().driver_data<mz2500_state>();
20742081   /* TODO: doesn't work yet */
2075//  if(drvstate->m_irq_mask[3] && state & 1)
2076//      device.device("maincpu")->execute().set_input_line_and_vector(0, HOLD_LINE,drvstate->m_irq_vector[3]);
2082//  if(m_irq_mask[3] && state & 1)
2083//      device.device("maincpu")->execute().set_input_line_and_vector(0, HOLD_LINE,drvm_irq_vector[3]);
20772084}
20782085
20792086static RP5C15_INTERFACE( rtc_intf )
20802087{
2081   DEVCB_DEVICE_LINE(RP5C15_TAG, mz2500_rtc_alarm_irq),
2088   DEVCB_DRIVER_LINE_MEMBER(mz2500_state,mz2500_rtc_alarm_irq),
20822089   DEVCB_NULL
20832090};
20842091
trunk/src/mess/drivers/vtech1.c
r18156r18157
199199   DECLARE_WRITE8_MEMBER(vtech1_video_bank_w);
200200   DECLARE_DRIVER_INIT(vtech1h);
201201   DECLARE_DRIVER_INIT(vtech1);
202   DECLARE_READ8_MEMBER(vtech1_printer_r);
203   DECLARE_WRITE8_MEMBER(vtech1_strobe_w);
204   DECLARE_READ8_MEMBER(vtech1_mc6847_videoram_r);
202205};
203206
204207
r18156r18157
480483    PRINTER
481484***************************************************************************/
482485
483static READ8_DEVICE_HANDLER( vtech1_printer_r )
486READ8_MEMBER(vtech1_state::vtech1_printer_r)
484487{
485   centronics_device *centronics = space.machine().device<centronics_device>("centronics");
488   centronics_device *centronics = machine().device<centronics_device>("centronics");
486489   return 0xfe | centronics->busy_r();
487490}
488491
489492/* TODO: figure out how this really works */
490static WRITE8_DEVICE_HANDLER( vtech1_strobe_w )
493WRITE8_MEMBER(vtech1_state::vtech1_strobe_w)
491494{
492   centronics_device *centronics = space.machine().device<centronics_device>("centronics");
495   centronics_device *centronics = machine().device<centronics_device>("centronics");
493496   centronics->strobe_w(TRUE);
494497   centronics->strobe_w(FALSE);
495498}
r18156r18157
611614    VIDEO EMULATION
612615***************************************************************************/
613616
614static READ8_DEVICE_HANDLER( vtech1_mc6847_videoram_r )
617READ8_MEMBER(vtech1_state::vtech1_mc6847_videoram_r)
615618{
616   vtech1_state *vtech1 = space.machine().driver_data<vtech1_state>();
617619   if (offset == ~0) return 0xff;
618   vtech1->m_mc6847->inv_w(BIT(vtech1->m_videoram[offset], 6));
619   vtech1->m_mc6847->as_w(BIT(vtech1->m_videoram[offset], 7));
620   m_mc6847->inv_w(BIT(m_videoram[offset], 6));
621   m_mc6847->as_w(BIT(m_videoram[offset], 7));
620622
621   return vtech1->m_videoram[offset];
623   return m_videoram[offset];
622624}
623625
624626
r18156r18157
733735
734736static ADDRESS_MAP_START( vtech1_io, AS_IO, 8, vtech1_state )
735737   ADDRESS_MAP_GLOBAL_MASK(0xff)
736   AM_RANGE(0x00, 0x00) AM_DEVREAD_LEGACY("centronics", vtech1_printer_r)
737   AM_RANGE(0x0d, 0x0d) AM_DEVWRITE_LEGACY("centronics", vtech1_strobe_w)
738   AM_RANGE(0x00, 0x00) AM_READ(vtech1_printer_r)
739   AM_RANGE(0x0d, 0x0d) AM_WRITE(vtech1_strobe_w)
738740   AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("centronics", centronics_device, write)
739741   AM_RANGE(0x10, 0x1f) AM_READWRITE(vtech1_fdc_r, vtech1_fdc_w)
740742   AM_RANGE(0x20, 0x2f) AM_READ(vtech1_joystick_r)
r18156r18157
912914static const mc6847_interface vtech1_mc6847_bw_intf =
913915{
914916   "screen",
915   DEVCB_HANDLER(vtech1_mc6847_videoram_r),
917   DEVCB_DRIVER_MEMBER(vtech1_state,vtech1_mc6847_videoram_r),
916918   DEVCB_NULL,                           /* horz sync */
917919   DEVCB_CPU_INPUT_LINE("maincpu", 0),         /* field sync */
918920
r18156r18157
932934static const mc6847_interface vtech1_mc6847_intf =
933935{
934936   "screen",
935   DEVCB_HANDLER(vtech1_mc6847_videoram_r),
937   DEVCB_DRIVER_MEMBER(vtech1_state,vtech1_mc6847_videoram_r),
936938   DEVCB_NULL,                           /* horz sync */
937939   DEVCB_CPU_INPUT_LINE("maincpu", 0),         /* field sync */
938940
r18156r18157
952954static const mc6847_interface vtech1_shrg_mc6847_intf =
953955{
954956   "screen",
955   DEVCB_HANDLER(vtech1_mc6847_videoram_r),
957   DEVCB_DRIVER_MEMBER(vtech1_state,vtech1_mc6847_videoram_r),
956958   DEVCB_NULL,                           /* horz sync */
957959   DEVCB_CPU_INPUT_LINE("maincpu", 0),         /* field sync */
958960
trunk/src/mess/drivers/vk100.c
r18156r18157
193193   virtual void machine_reset();
194194   virtual void video_start();
195195   TIMER_CALLBACK_MEMBER(execute_vg);
196   DECLARE_WRITE_LINE_MEMBER(crtc_vsync);
197   DECLARE_WRITE_LINE_MEMBER(i8251_rxrdy_int);
198   DECLARE_WRITE_LINE_MEMBER(i8251_txrdy_int);
199   DECLARE_WRITE_LINE_MEMBER(i8251_rts);
196200};
197201
198202// vram access functions:
r18156r18157
873877   m_TXDivisor = 6336;
874878}
875879
876static WRITE_LINE_DEVICE_HANDLER(crtc_vsync)
880WRITE_LINE_MEMBER(vk100_state::crtc_vsync)
877881{
878   vk100_state *m_state = device->machine().driver_data<vk100_state>();
879   m_state->m_maincpu->set_input_line(I8085_RST75_LINE, state? ASSERT_LINE : CLEAR_LINE);
880   m_state->m_vsync = state;
882   m_maincpu->set_input_line(I8085_RST75_LINE, state? ASSERT_LINE : CLEAR_LINE);
883   m_vsync = state;
881884}
882885
883static WRITE_LINE_DEVICE_HANDLER(i8251_rxrdy_int)
886WRITE_LINE_MEMBER(vk100_state::i8251_rxrdy_int)
884887{
885   vk100_state *m_state = device->machine().driver_data<vk100_state>();
886   m_state->m_maincpu->set_input_line(I8085_RST65_LINE, state?ASSERT_LINE:CLEAR_LINE);
888   m_maincpu->set_input_line(I8085_RST65_LINE, state?ASSERT_LINE:CLEAR_LINE);
887889}
888890
889static WRITE_LINE_DEVICE_HANDLER(i8251_txrdy_int)
891WRITE_LINE_MEMBER(vk100_state::i8251_txrdy_int)
890892{
891   vk100_state *m_state = device->machine().driver_data<vk100_state>();
892   m_state->m_maincpu->set_input_line(I8085_RST55_LINE, state?ASSERT_LINE:CLEAR_LINE);
893   m_maincpu->set_input_line(I8085_RST55_LINE, state?ASSERT_LINE:CLEAR_LINE);
893894}
894895
895static WRITE_LINE_DEVICE_HANDLER(i8251_rts)
896WRITE_LINE_MEMBER(vk100_state::i8251_rts)
896897{
897   vk100_state *m_state = device->machine().driver_data<vk100_state>();
898898   logerror("callback: RTS state changed to %d\n", state);
899899   // TODO: only change this during loopback mode!
900   m_state->m_ACTS = state;
900   m_ACTS = state;
901901}
902902
903903DRIVER_INIT_MEMBER(vk100_state,vk100)
r18156r18157
957957   DEVCB_NULL,
958958   DEVCB_NULL,
959959   DEVCB_NULL,
960   DEVCB_LINE(crtc_vsync),
960   DEVCB_DRIVER_LINE_MEMBER(vk100_state, crtc_vsync),
961961   NULL
962962};
963963
r18156r18157
969969   //TODO: DEVCB_DRIVER_LINE_MEMBER(vk100_state, i8251_tx), // out_txd_cb
970970   DEVCB_NULL, // in_dsr_cb
971971   DEVCB_NULL, // out_dtr_cb
972   DEVCB_LINE(i8251_rts), // out_rts_cb
973   DEVCB_LINE(i8251_rxrdy_int), // out_rxrdy_cb
974   DEVCB_LINE(i8251_txrdy_int), // out_txrdy_cb
972   DEVCB_DRIVER_LINE_MEMBER(vk100_state, i8251_rts), // out_rts_cb
973   DEVCB_DRIVER_LINE_MEMBER(vk100_state, i8251_rxrdy_int), // out_rxrdy_cb
974   DEVCB_DRIVER_LINE_MEMBER(vk100_state, i8251_txrdy_int), // out_txrdy_cb
975975   DEVCB_NULL, // out_txempty_cb
976976   DEVCB_NULL // out_syndet_cb
977977};
trunk/src/mess/drivers/px4.c
r18156r18157
172172   TIMER_CALLBACK_MEMBER(receive_data);
173173   TIMER_DEVICE_CALLBACK_MEMBER(frc_tick);
174174   TIMER_DEVICE_CALLBACK_MEMBER(upd7508_1sec_callback);
175   void px4_sio_txd(device_t *device,int state);
176   int px4_sio_rxd(device_t *device);
177   int px4_sio_pin(device_t *device);
178   void px4_sio_pout(device_t *device,int state);
179   void px4_rs232c_txd(device_t *device,int state);
180   int px4_rs232c_rxd(device_t *device);
181   void px4_rs232c_rts(device_t *device,int state);
182   int px4_rs232c_cts(device_t *device);
183   int px4_rs232c_dsr(device_t *device);
184   void px4_rs232c_dtr(device_t *device,int state);
185   int px4_rs232c_dcd(device_t *device);
175186};
176187
177188
r18156r18157
181192
182193/* The floppy is connected to this port */
183194
184static WRITE_LINE_DEVICE_HANDLER( px4_sio_txd )
195void px4_state::px4_sio_txd(device_t *device,int state)
185196{
186197   if (VERBOSE)
187198      logerror("px4_sio_txd: %d\n", state);
r18156r18157
190201      tf20_txs_w(device, state);
191202}
192203
193static READ_LINE_DEVICE_HANDLER( px4_sio_rxd )
204int px4_state::px4_sio_rxd(device_t *device)
194205{
195206   if (VERBOSE)
196207      logerror("px4_sio_rxd\n");
r18156r18157
201212      return ASSERT_LINE;
202213}
203214
204static READ_LINE_DEVICE_HANDLER( px4_sio_pin )
215int px4_state::px4_sio_pin(device_t *device)
205216{
206217   if (VERBOSE)
207218      logerror("px4_sio_pin\n");
r18156r18157
212223      return ASSERT_LINE;
213224}
214225
215static WRITE_LINE_DEVICE_HANDLER( px4_sio_pout )
226void px4_state::px4_sio_pout(device_t *device,int state)
216227{
217228   if (VERBOSE)
218229      logerror("px4_sio_pout: %d\n", state);
r18156r18157
228239
229240/* Currently nothing is connected to this port */
230241
231static WRITE_LINE_DEVICE_HANDLER( px4_rs232c_txd )
242void px4_state::px4_rs232c_txd(device_t *device,int state)
232243{
233244   if (VERBOSE)
234245      logerror("px4_rs232c_txd: %d\n", state);
235246}
236247
237248#ifdef UNUSED_FUNCTION
238static READ_LINE_DEVICE_HANDLER( px4_rs232c_rxd )
249int px4_state::px4_rs232c_rxd(device_t *device)
239250{
240251   if (VERBOSE)
241252      logerror("px4_rs232c_rxd\n");
r18156r18157
243254}
244255#endif
245256
246static WRITE_LINE_DEVICE_HANDLER( px4_rs232c_rts )
257void px4_state::px4_rs232c_rts(device_t *device,int state)
247258{
248259   if (VERBOSE)
249260      logerror("px4_rs232c_rts: %d\n", state);
250261}
251262
252static READ_LINE_DEVICE_HANDLER( px4_rs232c_cts )
263int px4_state::px4_rs232c_cts(device_t *device)
253264{
254265   if (VERBOSE)
255266      logerror("px4_rs232c_cts\n");
r18156r18157
257268   return ASSERT_LINE;
258269}
259270
260static READ_LINE_DEVICE_HANDLER( px4_rs232c_dsr )
271int px4_state::px4_rs232c_dsr(device_t *device)
261272{
262273   if (VERBOSE)
263274      logerror("px4_rs232c_dsr\n");
r18156r18157
265276   return ASSERT_LINE;
266277}
267278
268static WRITE_LINE_DEVICE_HANDLER( px4_rs232c_dtr )
279void px4_state::px4_rs232c_dtr(device_t *device,int state)
269280{
270281   if (VERBOSE)
271282      logerror("px4_rs232c_dtr: %d\n", state);
272283}
273284
274static READ_LINE_DEVICE_HANDLER( px4_rs232c_dcd )
285int px4_state::px4_rs232c_dcd(device_t *device)
275286{
276287   if (VERBOSE)
277288      logerror("px4_rs232c_dcd\n");
trunk/src/mess/drivers/qx10.c
r18156r18157
140140
141141   virtual void palette_init();
142142   DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
143   DECLARE_WRITE_LINE_MEMBER(dma_hrq_changed);
143144};
144145
145146static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels )
r18156r18157
349350/*
350351    DMA8237
351352*/
352WRITE_LINE_DEVICE_HANDLER( dma_hrq_changed )
353WRITE_LINE_MEMBER(qx10_state::dma_hrq_changed)
353354{
355   device_t *device = machine().device("8237dma_1");
354356   /* Assert HLDA */
355357   i8237_hlda_w(device, state);
356358}
r18156r18157
383385
384386static I8237_INTERFACE( qx10_dma8237_1_interface )
385387{
386   DEVCB_DEVICE_LINE("8237dma_1", dma_hrq_changed),
388   DEVCB_DRIVER_LINE_MEMBER(qx10_state,dma_hrq_changed),
387389   DEVCB_DRIVER_LINE_MEMBER(qx10_state, tc_w),
388390   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_read_byte),
389391   DEVCB_MEMORY_HANDLER("maincpu", PROGRAM, memory_write_byte),
trunk/src/mess/drivers/dectalk.c
r18156r18157
195195   DECLARE_DRIVER_INIT(dectalk);
196196   virtual void machine_reset();
197197   TIMER_CALLBACK_MEMBER(outfifo_read_cb);
198   DECLARE_WRITE8_MEMBER(dectalk_kbd_put);
198199};
199200
200201
r18156r18157
718719   machine().scheduler().timer_set(attotime::from_hz(10000), timer_expired_delegate(FUNC(dectalk_state::outfifo_read_cb),this));
719720}
720721
721static WRITE8_DEVICE_HANDLER( dectalk_kbd_put )
722WRITE8_MEMBER(dectalk_state::dectalk_kbd_put)
722723{
723   duart68681_rx_data(space.machine().device("duart68681"), 1, data);
724   duart68681_rx_data(machine().device("duart68681"), 1, data);
724725}
725726
726727static GENERIC_TERMINAL_INTERFACE( dectalk_terminal_intf )
727728{
728   DEVCB_HANDLER(dectalk_kbd_put)
729   DEVCB_DRIVER_MEMBER(dectalk_state,dectalk_kbd_put)
729730};
730731
731732static MACHINE_CONFIG_START( dectalk, dectalk_state )
trunk/src/mess/drivers/osbexec.c
r18156r18157
111111   virtual void machine_reset();
112112   virtual void palette_init();
113113   TIMER_CALLBACK_MEMBER(osbexec_video_callback);
114   DECLARE_READ8_MEMBER(osbexec_pia0_a_r);
115   DECLARE_WRITE8_MEMBER(osbexec_pia0_a_w);
116   DECLARE_READ8_MEMBER(osbexec_pia0_b_r);
117   DECLARE_WRITE8_MEMBER(osbexec_pia0_b_w);
118   DECLARE_WRITE_LINE_MEMBER(osbexec_pia0_ca2_w);
119   DECLARE_WRITE_LINE_MEMBER(osbexec_pia0_cb2_w);
120   DECLARE_WRITE_LINE_MEMBER(osbexec_pia0_irq);
121   DECLARE_WRITE_LINE_MEMBER(osbexec_pia1_irq);
114122};
115123
116124
r18156r18157
348356  CB2 - 60/50 (?)
349357*/
350358
351static READ8_DEVICE_HANDLER( osbexec_pia0_a_r )
359READ8_MEMBER(osbexec_state::osbexec_pia0_a_r)
352360{
353   osbexec_state *state = space.machine().driver_data<osbexec_state>();
354361
355   return state->m_pia0_porta;
362   return m_pia0_porta;
356363}
357364
358365
359static WRITE8_DEVICE_HANDLER( osbexec_pia0_a_w )
366WRITE8_MEMBER(osbexec_state::osbexec_pia0_a_w)
360367{
361   osbexec_state *state = space.machine().driver_data<osbexec_state>();
362368
363369   logerror("osbexec_pia0_a_w: %02x\n", data );
364370
365   state->m_pia0_porta = data;
371   m_pia0_porta = data;
366372
367   state->set_banks(space.machine());
373   set_banks(machine());
368374}
369375
370376
371static READ8_DEVICE_HANDLER( osbexec_pia0_b_r )
377READ8_MEMBER(osbexec_state::osbexec_pia0_b_r)
372378{
373   osbexec_state *state = space.machine().driver_data<osbexec_state>();
374379
375   return state->m_pia0_portb;
380   return m_pia0_portb;
376381}
377382
378383
379static WRITE8_DEVICE_HANDLER( osbexec_pia0_b_w )
384WRITE8_MEMBER(osbexec_state::osbexec_pia0_b_w)
380385{
381   osbexec_state *state = space.machine().driver_data<osbexec_state>();
382386
383   state->m_pia0_portb = data;
387   m_pia0_portb = data;
384388
385   speaker_level_w( state->m_speaker, ( data & 0x08 ) ? 0 : 1 );
389   speaker_level_w( m_speaker, ( data & 0x08 ) ? 0 : 1 );
386390
387391   switch ( data & 0x06 )
388392   {
389393   case 0x02:
390      wd17xx_set_drive( state->m_mb8877, 1 );
394      wd17xx_set_drive( m_mb8877, 1 );
391395      break;
392396   case 0x04:
393      wd17xx_set_drive( state->m_mb8877, 0 );
397      wd17xx_set_drive( m_mb8877, 0 );
394398      break;
395399   }
396400
397   wd17xx_dden_w( state->m_mb8877, ( data & 0x01 ) ? 1 : 0 );
401   wd17xx_dden_w( m_mb8877, ( data & 0x01 ) ? 1 : 0 );
398402}
399403
400404
401static WRITE_LINE_DEVICE_HANDLER( osbexec_pia0_ca2_w )
405WRITE_LINE_MEMBER(osbexec_state::osbexec_pia0_ca2_w)
402406{
403407   logerror("osbexec_pia0_ca2_w: state = %d\n", state);
404408}
405409
406410
407static WRITE_LINE_DEVICE_HANDLER( osbexec_pia0_cb2_w )
411WRITE_LINE_MEMBER(osbexec_state::osbexec_pia0_cb2_w)
408412{
409   osbexec_state *st = device->machine().driver_data<osbexec_state>();
410413
411   st->m_pia0_cb2 = state;
414   m_pia0_cb2 = state;
412415}
413416
414417
415static WRITE_LINE_DEVICE_HANDLER( osbexec_pia0_irq )
418WRITE_LINE_MEMBER(osbexec_state::osbexec_pia0_irq)
416419{
417   osbexec_state *st = device->machine().driver_data<osbexec_state>();
418420
419   st->m_pia0_irq_state = state;
420   st->update_irq_state(device->machine());
421   m_pia0_irq_state = state;
422   update_irq_state(machine());
421423}
422424
423425
424426static const pia6821_interface osbexec_pia0_config =
425427{
426   DEVCB_HANDLER( osbexec_pia0_a_r ),   /* in_a_func */         /* port A - banking */
427   DEVCB_HANDLER( osbexec_pia0_b_r),   /* in_b_func */         /* modem / speaker */
428   DEVCB_DRIVER_MEMBER(osbexec_state, osbexec_pia0_a_r ),   /* in_a_func */         /* port A - banking */
429   DEVCB_DRIVER_MEMBER(osbexec_state, osbexec_pia0_b_r),   /* in_b_func */         /* modem / speaker */
428430   DEVCB_NULL,                     /* in_ca1_func */      /* DMA IRQ */
429431   DEVCB_NULL,                     /* in_cb1_func */      /* Vblank (rtc irq) */
430432   DEVCB_NULL,                     /* in_ca2_func */
431433   DEVCB_NULL,                     /* in_cb2_func */
432   DEVCB_HANDLER( osbexec_pia0_a_w ),   /* out_a_func */      /* port A - banking */
433   DEVCB_HANDLER( osbexec_pia0_b_w ),   /* out_b_func */      /* modem / speaker */
434   DEVCB_LINE( osbexec_pia0_ca2_w ),   /* out_ca2_func */      /* Keyboard strobe */
435   DEVCB_LINE( osbexec_pia0_cb2_w ),   /* out_cb2_func */      /* 60/50 */
436   DEVCB_LINE( osbexec_pia0_irq ),      /* irq_a_func */      /* IRQ */
437   DEVCB_LINE( osbexec_pia0_irq )      /* irq_b_func */      /* IRQ */
434   DEVCB_DRIVER_MEMBER(osbexec_state, osbexec_pia0_a_w ),   /* out_a_func */      /* port A - banking */
435   DEVCB_DRIVER_MEMBER(osbexec_state, osbexec_pia0_b_w ),   /* out_b_func */      /* modem / speaker */
436   DEVCB_DRIVER_LINE_MEMBER(osbexec_state, osbexec_pia0_ca2_w ),   /* out_ca2_func */      /* Keyboard strobe */
437   DEVCB_DRIVER_LINE_MEMBER(osbexec_state, osbexec_pia0_cb2_w ),   /* out_cb2_func */      /* 60/50 */
438   DEVCB_DRIVER_LINE_MEMBER(osbexec_state, osbexec_pia0_irq ),      /* irq_a_func */      /* IRQ */
439   DEVCB_DRIVER_LINE_MEMBER(osbexec_state, osbexec_pia0_irq )      /* irq_b_func */      /* IRQ */
438440};
439441
440442
441static WRITE_LINE_DEVICE_HANDLER( osbexec_pia1_irq )
443WRITE_LINE_MEMBER(osbexec_state::osbexec_pia1_irq)
442444{
443   osbexec_state *st = device->machine().driver_data<osbexec_state>();
444445
445   st->m_pia1_irq_state = state;
446   st->update_irq_state(device->machine());
446   m_pia1_irq_state = state;
447   update_irq_state(machine());
447448}
448449
449450
r18156r18157
459460   DEVCB_NULL,                     /* out_b_func */
460461   DEVCB_NULL,                     /* out_ca2_func */
461462   DEVCB_NULL,                     /* out_cb2_func */
462   DEVCB_LINE( osbexec_pia1_irq ),      /* irq_a_func */
463   DEVCB_LINE( osbexec_pia1_irq )      /* irq_b_func */
463   DEVCB_DRIVER_LINE_MEMBER(osbexec_state, osbexec_pia1_irq ),      /* irq_a_func */
464   DEVCB_DRIVER_LINE_MEMBER(osbexec_state, osbexec_pia1_irq )      /* irq_b_func */
464465};
465466
466467
trunk/src/mess/drivers/bml3.c
r18156r18157
116116   INTERRUPT_GEN_MEMBER(bml3_irq);
117117   INTERRUPT_GEN_MEMBER(bml3_timer_firq);
118118   TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
119   DECLARE_READ8_MEMBER(bml3_ym2203_r);
120   DECLARE_WRITE8_MEMBER(bml3_ym2203_w);
119121};
120122
121123#define mc6845_h_char_total    (m_crtc_vreg[0])
r18156r18157
329331   m_psg_latch = data;
330332}
331333
332static READ8_DEVICE_HANDLER( bml3_ym2203_r )
334READ8_MEMBER(bml3_state::bml3_ym2203_r)
333335{
334   bml3_state *state = space.machine().driver_data<bml3_state>();
335   UINT8 dev_offs = ((state->m_psg_latch & 3) != 3);
336   device_t *device = machine().device("ym2203");
337   UINT8 dev_offs = ((m_psg_latch & 3) != 3);
336338
337339   return ym2203_r(device,space, dev_offs);
338340}
339341
340static WRITE8_DEVICE_HANDLER( bml3_ym2203_w )
342WRITE8_MEMBER(bml3_state::bml3_ym2203_w)
341343{
342   bml3_state *state = space.machine().driver_data<bml3_state>();
343   UINT8 dev_offs = ((state->m_psg_latch & 3) != 3);
344   device_t *device = machine().device("ym2203");
345   UINT8 dev_offs = ((m_psg_latch & 3) != 3);
344346
345347   ym2203_w(device,space, dev_offs,data);
346348}
r18156r18157
404406   AM_RANGE(0x0000, 0x03ff) AM_RAM
405407   AM_RANGE(0x0400, 0x43ff) AM_READWRITE(bml3_vram_r,bml3_vram_w)
406408   AM_RANGE(0x4400, 0x9fff) AM_RAM
407   AM_RANGE(0xff00, 0xff00) AM_DEVREADWRITE_LEGACY("ym2203",bml3_ym2203_r,bml3_ym2203_w)
409   AM_RANGE(0xff00, 0xff00) AM_READWRITE(bml3_ym2203_r,bml3_ym2203_w)
408410   AM_RANGE(0xff02, 0xff02) AM_READWRITE(bml3_psg_latch_r,bml3_psg_latch_w) // PSG address/data select
409411   AM_RANGE(0xff18, 0xff1f) AM_DEVREADWRITE_LEGACY("mc6843",mc6843_r,mc6843_w)
410412   AM_RANGE(0xff20, 0xff20) AM_READWRITE(bml3_fdd_r,bml3_fdd_w) // FDD drive select
trunk/src/mess/drivers/spc1000.c
r18156r18157
3939   DECLARE_READ8_MEMBER(spc1000_video_ram_r);
4040   DECLARE_READ8_MEMBER(spc1000_keyboard_r);
4141   virtual void machine_reset();
42   DECLARE_WRITE8_MEMBER(spc1000_gmode_w);
43   DECLARE_READ8_MEMBER(spc1000_gmode_r);
44   DECLARE_READ8_MEMBER(spc1000_mc6847_videoram_r);
4245};
4346
4447
r18156r18157
98101   return ioport(keynames[offset])->read();
99102}
100103
101static WRITE8_DEVICE_HANDLER(spc1000_gmode_w)
104WRITE8_MEMBER(spc1000_state::spc1000_gmode_w)
102105{
103   spc1000_state *state = space.machine().driver_data<spc1000_state>();
104   state->m_GMODE = data;
106   m_GMODE = data;
105107
106   // state->m_GMODE layout: CSS|NA|PS2|PS1|~A/G|GM0|GM1|NA
108   // m_GMODE layout: CSS|NA|PS2|PS1|~A/G|GM0|GM1|NA
107109   //  [PS2,PS1] is used to set screen 0/1 pages
108   state->m_vdg->gm1_w(BIT(data, 1));
109   state->m_vdg->gm0_w(BIT(data, 2));
110   state->m_vdg->ag_w(BIT(data, 3));
111   state->m_vdg->css_w(BIT(data, 7));
110   m_vdg->gm1_w(BIT(data, 1));
111   m_vdg->gm0_w(BIT(data, 2));
112   m_vdg->ag_w(BIT(data, 3));
113   m_vdg->css_w(BIT(data, 7));
112114}
113115
114static READ8_DEVICE_HANDLER(spc1000_gmode_r)
116READ8_MEMBER(spc1000_state::spc1000_gmode_r)
115117{
116   spc1000_state *state = space.machine().driver_data<spc1000_state>();
117   return state->m_GMODE;
118   return m_GMODE;
118119}
119120
120121static ADDRESS_MAP_START( spc1000_io , AS_IO, 8, spc1000_state )
121122   ADDRESS_MAP_UNMAP_HIGH
122123   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(spc1000_video_ram_r, spc1000_video_ram_w)
123   AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE_LEGACY("mc6847", spc1000_gmode_r, spc1000_gmode_w)
124   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(spc1000_gmode_r, spc1000_gmode_w)
124125   AM_RANGE(0x8000, 0x8009) AM_READ(spc1000_keyboard_r)
125126   AM_RANGE(0xA000, 0xA000) AM_READWRITE(spc1000_iplk_r, spc1000_iplk_w)
126127   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE_LEGACY("ay8910", ay8910_address_w)
r18156r18157
242243   m_IPLK = 1;
243244}
244245
245static READ8_DEVICE_HANDLER( spc1000_mc6847_videoram_r )
246READ8_MEMBER(spc1000_state::spc1000_mc6847_videoram_r)
246247{
247   spc1000_state *state = space.machine().driver_data<spc1000_state>();
248248   if (offset == ~0) return 0xff;
249249
250   // state->m_GMODE layout: CSS|NA|PS2|PS1|~A/G|GM0|GM1|NA
250   // m_GMODE layout: CSS|NA|PS2|PS1|~A/G|GM0|GM1|NA
251251   //  [PS2,PS1] is used to set screen 0/1 pages
252   if ( !BIT(state->m_GMODE, 3) ) {   // text mode (~A/G set to A)
253      unsigned int page = (BIT(state->m_GMODE, 5) << 1) | BIT(state->m_GMODE, 4);
254      state->m_vdg->inv_w(BIT(state->m_video_ram[offset+page*0x200+0x800], 0));
255      state->m_vdg->css_w(BIT(state->m_video_ram[offset+page*0x200+0x800], 1));
256      state->m_vdg->as_w(BIT(state->m_video_ram[offset+page*0x200+0x800], 2));
257      state->m_vdg->intext_w(BIT(state->m_video_ram[offset+page*0x200+0x800], 3));
258      return state->m_video_ram[offset+page*0x200];
252   if ( !BIT(m_GMODE, 3) ) {   // text mode (~A/G set to A)
253      unsigned int page = (BIT(m_GMODE, 5) << 1) | BIT(m_GMODE, 4);
254      m_vdg->inv_w(BIT(m_video_ram[offset+page*0x200+0x800], 0));
255      m_vdg->css_w(BIT(m_video_ram[offset+page*0x200+0x800], 1));
256      m_vdg->as_w(BIT(m_video_ram[offset+page*0x200+0x800], 2));
257      m_vdg->intext_w(BIT(m_video_ram[offset+page*0x200+0x800], 3));
258      return m_video_ram[offset+page*0x200];
259259   } else {   // graphics mode: uses full 6KB of VRAM
260      return state->m_video_ram[offset];
260      return m_video_ram[offset];
261261   }
262262}
263263
r18156r18157
280280static const mc6847_interface spc1000_mc6847_intf =
281281{
282282   "screen",
283   DEVCB_HANDLER(spc1000_mc6847_videoram_r),   // data fetch
283   DEVCB_DRIVER_MEMBER(spc1000_state,spc1000_mc6847_videoram_r),   // data fetch
284284   DEVCB_NULL,
285285   DEVCB_NULL,
286286
trunk/src/mess/drivers/bbcbc.c
r18156r18157
2828   required_device<cpu_device> m_maincpu;
2929   virtual void machine_start();
3030   virtual void machine_reset();
31   DECLARE_WRITE_LINE_MEMBER(tms_interrupt);
3132};
3233
3334
r18156r18157
9899   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Play, No") PORT_CODE(KEYCODE_B) PORT_IMPULSE(1)
99100INPUT_PORTS_END
100101
101static WRITE_LINE_DEVICE_HANDLER(tms_interrupt)
102WRITE_LINE_MEMBER(bbcbc_state::tms_interrupt)
102103{
103   device->machine().device("maincpu")->execute().set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
104   machine().device("maincpu")->execute().set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
104105}
105106
106107static TMS9928A_INTERFACE(tms9129_interface)
107108{
108109   "screen",
109110   0x4000,
110   DEVCB_LINE(tms_interrupt)
111   DEVCB_DRIVER_LINE_MEMBER(bbcbc_state, tms_interrupt)
111112};
112113
113114/* TODO */
trunk/src/mess/drivers/h19.c
r18156r18157
6767   virtual void machine_reset();
6868   virtual void video_start();
6969   TIMER_CALLBACK_MEMBER(h19_beepoff);
70   DECLARE_WRITE_LINE_MEMBER(h19_ace_irq);
7071};
7172
7273
r18156r18157
334335   }
335336}
336337
337static WRITE_LINE_DEVICE_HANDLER(h19_ace_irq)
338WRITE_LINE_MEMBER(h19_state::h19_ace_irq)
338339{
339   device->machine().device("maincpu")->execute().set_input_line(0, (state ? HOLD_LINE : CLEAR_LINE));
340   machine().device("maincpu")->execute().set_input_line(0, (state ? HOLD_LINE : CLEAR_LINE));
340341}
341342
342343static const ins8250_interface h19_ace_interface =
r18156r18157
344345   DEVCB_NULL,
345346   DEVCB_NULL,
346347   DEVCB_NULL,
347   DEVCB_LINE(h19_ace_irq), // interrupt
348   DEVCB_DRIVER_LINE_MEMBER(h19_state, h19_ace_irq), // interrupt
348349   DEVCB_NULL,
349350   DEVCB_NULL
350351};
trunk/src/mess/drivers/pk8000.c
r18156r18157
3131   virtual void video_start();
3232   UINT32 screen_update_pk8000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3333   INTERRUPT_GEN_MEMBER(pk8000_interrupt);
34   DECLARE_WRITE8_MEMBER(pk8000_80_porta_w);
35   DECLARE_READ8_MEMBER(pk8000_80_portb_r);
36   DECLARE_WRITE8_MEMBER(pk8000_80_portc_w);
37   DECLARE_READ8_MEMBER(pk8000_84_porta_r);
38   DECLARE_WRITE8_MEMBER(pk8000_84_porta_w);
39   DECLARE_WRITE8_MEMBER(pk8000_84_portc_w);
3440};
3541
3642
r18156r18157
100106            break;
101107   }
102108}
103static WRITE8_DEVICE_HANDLER(pk8000_80_porta_w)
109WRITE8_MEMBER(pk8000_state::pk8000_80_porta_w)
104110{
105   pk8000_set_bank(space.machine(),data);
111   pk8000_set_bank(machine(),data);
106112}
107113
108static READ8_DEVICE_HANDLER(pk8000_80_portb_r)
114READ8_MEMBER(pk8000_state::pk8000_80_portb_r)
109115{
110   pk8000_state *state = space.machine().driver_data<pk8000_state>();
111116   static const char *const keynames[] = { "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", "LINE8", "LINE9" };
112   if(state->m_keyboard_line>9) {
117   if(m_keyboard_line>9) {
113118      return 0xff;
114119   }
115   return space.machine().root_device().ioport(keynames[state->m_keyboard_line])->read();
120   return machine().root_device().ioport(keynames[m_keyboard_line])->read();
116121}
117122
118static WRITE8_DEVICE_HANDLER(pk8000_80_portc_w)
123WRITE8_MEMBER(pk8000_state::pk8000_80_portc_w)
119124{
120   pk8000_state *state = space.machine().driver_data<pk8000_state>();
121   state->m_keyboard_line = data & 0x0f;
125   m_keyboard_line = data & 0x0f;
122126
123   speaker_level_w(space.machine().device(SPEAKER_TAG), BIT(data,7));
127   speaker_level_w(machine().device(SPEAKER_TAG), BIT(data,7));
124128
125   cassette_device_image(space.machine())->change_state(
129   cassette_device_image(machine())->change_state(
126130                  (BIT(data,4)) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED,
127131                  CASSETTE_MASK_MOTOR);
128   cassette_device_image(space.machine())->output((BIT(data,6)) ? +1.0 : 0.0);
132   cassette_device_image(machine())->output((BIT(data,6)) ? +1.0 : 0.0);
129133}
130134
131135static I8255_INTERFACE( pk8000_ppi8255_interface_1 )
132136{
133137   DEVCB_NULL,
134   DEVCB_HANDLER(pk8000_80_porta_w),
135   DEVCB_HANDLER(pk8000_80_portb_r),
138   DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_porta_w),
139   DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_portb_r),
136140   DEVCB_NULL,
137141   DEVCB_NULL,
138   DEVCB_HANDLER(pk8000_80_portc_w)
142   DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_portc_w)
139143};
140144
141static READ8_DEVICE_HANDLER(pk8000_84_porta_r)
145READ8_MEMBER(pk8000_state::pk8000_84_porta_r)
142146{
143147   return pk8000_video_mode;
144148}
145149
146static WRITE8_DEVICE_HANDLER(pk8000_84_porta_w)
150WRITE8_MEMBER(pk8000_state::pk8000_84_porta_w)
147151{
148152   pk8000_video_mode = data;
149153}
150154
151static WRITE8_DEVICE_HANDLER(pk8000_84_portc_w)
155WRITE8_MEMBER(pk8000_state::pk8000_84_portc_w)
152156{
153157   pk8000_video_enable = BIT(data,4);
154158}
155159static I8255_INTERFACE( pk8000_ppi8255_interface_2 )
156160{
157   DEVCB_HANDLER(pk8000_84_porta_r),
158   DEVCB_HANDLER(pk8000_84_porta_w),
161   DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_84_porta_r),
162   DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_84_porta_w),
159163   DEVCB_NULL,
160164   DEVCB_NULL,
161165   DEVCB_NULL,
162   DEVCB_HANDLER(pk8000_84_portc_w)
166   DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_84_portc_w)
163167};
164168
165169READ8_MEMBER(pk8000_state::pk8000_joy_1_r)
trunk/src/mess/drivers/mycom.c
r18156r18157
111111   virtual void video_start();
112112   DECLARE_DRIVER_INIT(mycom);
113113   TIMER_DEVICE_CALLBACK_MEMBER(mycom_kbd);
114   DECLARE_WRITE8_MEMBER(mycom_rtc_w);
114115};
115116
116117
r18156r18157
419420      m_audio->write(space, 0, m_sn_we);
420421}
421422
422static WRITE8_DEVICE_HANDLER( mycom_rtc_w )
423WRITE8_MEMBER(mycom_state::mycom_rtc_w)
423424{
424   mycom_state *state = space.machine().driver_data<mycom_state>();
425425
426   state->m_rtc->address_w(data & 0x0f);
426   m_rtc->address_w(data & 0x0f);
427427
428   state->m_rtc->hold_w(BIT(data, 4));
429   state->m_rtc->read_w(BIT(data, 5));
430   state->m_rtc->write_w(BIT(data, 6));
431   state->m_rtc->cs_w(BIT(data, 7));
428   m_rtc->hold_w(BIT(data, 4));
429   m_rtc->read_w(BIT(data, 5));
430   m_rtc->write_w(BIT(data, 6));
431   m_rtc->cs_w(BIT(data, 7));
432432}
433433
434434static I8255_INTERFACE( ppi8255_intf_0 )
r18156r18157
458458   DEVCB_DEVICE_MEMBER(MSM5832RS_TAG, msm5832_device, data_r),         /* Port B read */
459459   DEVCB_DEVICE_MEMBER(MSM5832RS_TAG, msm5832_device, data_w),         /* Port B write */
460460   DEVCB_NULL,         /* Port C read */
461   DEVCB_HANDLER(mycom_rtc_w)         /* Port C write */
461   DEVCB_DRIVER_MEMBER(mycom_state,mycom_rtc_w)         /* Port C write */
462462};
463463
464464static const UINT8 mycom_keyval[] = { 0,
trunk/src/mess/drivers/rvoice.c
r18156r18157
8181   DECLARE_WRITE8_MEMBER(main_hd63701_internal_registers_w);
8282   DECLARE_DRIVER_INIT(rvoicepc);
8383   virtual void machine_reset();
84   DECLARE_WRITE8_MEMBER(null_kbd_put);
8485};
8586
8687
r18156r18157
347348/******************************************************************************
348349 Machine Drivers
349350******************************************************************************/
350static WRITE8_DEVICE_HANDLER( null_kbd_put )
351WRITE8_MEMBER(rvoice_state::null_kbd_put)
351352{
352353}
353354
354355static GENERIC_TERMINAL_INTERFACE( dectalk_terminal_intf )
355356{
356   DEVCB_HANDLER(null_kbd_put)
357   DEVCB_DRIVER_MEMBER(rvoice_state,null_kbd_put)
357358};
358359
359360static MACHINE_CONFIG_START( rvoicepc, rvoice_state )
trunk/src/mess/drivers/pasogo.c
r18156r18157
7272   UINT32 screen_update_pasogo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7373   INTERRUPT_GEN_MEMBER(pasogo_interrupt);
7474   TIMER_DEVICE_CALLBACK_MEMBER(vg230_timer);
75   DECLARE_WRITE_LINE_MEMBER(pasogo_pic8259_set_int_line);
7576};
7677
7778
r18156r18157
487488};
488489
489490
490static WRITE_LINE_DEVICE_HANDLER( pasogo_pic8259_set_int_line )
491WRITE_LINE_MEMBER(pasogo_state::pasogo_pic8259_set_int_line)
491492{
492   device->machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
493   machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
493494}
494495
495496static const pic8259_interface pasogo_pic8259_config =
496497{
497   DEVCB_LINE(pasogo_pic8259_set_int_line),
498   DEVCB_DRIVER_LINE_MEMBER(pasogo_state, pasogo_pic8259_set_int_line),
498499   DEVCB_LINE_VCC,
499500   DEVCB_NULL
500501};
trunk/src/mess/drivers/elwro800.c
r18156r18157
5151   DECLARE_WRITE8_MEMBER(elwro800jr_io_w);
5252   DECLARE_MACHINE_RESET(elwro800);   
5353   INTERRUPT_GEN_MEMBER(elwro800jr_interrupt);
54   DECLARE_READ8_MEMBER(i8255_port_c_r);
55   DECLARE_WRITE8_MEMBER(i8255_port_c_w);
5456};
5557
5658
r18156r18157
174176 *
175177 *************************************/
176178
177static READ8_DEVICE_HANDLER(i8255_port_c_r)
179READ8_MEMBER(elwro800_state::i8255_port_c_r)
178180{
179   centronics_device *centronics = space.machine().device<centronics_device>("centronics");
181   centronics_device *centronics = machine().device<centronics_device>("centronics");
180182   return (centronics->ack_r() << 2);
181183}
182184
183static WRITE8_DEVICE_HANDLER(i8255_port_c_w)
185WRITE8_MEMBER(elwro800_state::i8255_port_c_w)
184186{
185   centronics_device *centronics = space.machine().device<centronics_device>("centronics");
187   centronics_device *centronics = machine().device<centronics_device>("centronics");
186188   centronics->strobe_w((data >> 7) & 0x01);
187189}
188190
r18156r18157
192194   DEVCB_NULL,
193195   DEVCB_DEVICE_MEMBER("centronics", centronics_device, read),
194196   DEVCB_DEVICE_MEMBER("centronics", centronics_device, write),
195   DEVCB_HANDLER(i8255_port_c_r),
196   DEVCB_HANDLER(i8255_port_c_w)
197   DEVCB_DRIVER_MEMBER(elwro800_state,i8255_port_c_r),
198   DEVCB_DRIVER_MEMBER(elwro800_state,i8255_port_c_w)
197199};
198200
199201static const centronics_interface elwro800jr_centronics_interface =
trunk/src/mess/drivers/pc8801.c
r18156r18157
454454   INTERRUPT_GEN_MEMBER(pc8801_vrtc_irq);
455455   TIMER_CALLBACK_MEMBER(pc8801fd_upd765_tc_to_zero);
456456   TIMER_DEVICE_CALLBACK_MEMBER(pc8801_rtc_irq);
457   DECLARE_READ8_MEMBER(cpu_8255_c_r);
458   DECLARE_WRITE8_MEMBER(cpu_8255_c_w);
459   DECLARE_READ8_MEMBER(fdc_8255_c_r);
460   DECLARE_WRITE8_MEMBER(fdc_8255_c_w);
461   DECLARE_WRITE_LINE_MEMBER(pic_int_w);
462   DECLARE_WRITE_LINE_MEMBER(pic_enlg_w);
463   DECLARE_READ8_MEMBER(opn_porta_r);
464   DECLARE_READ8_MEMBER(opn_portb_r);
457465};
458466
459467
r18156r18157
18201828   AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_master", i8255_device, read, write)
18211829ADDRESS_MAP_END
18221830
1823static READ8_DEVICE_HANDLER( cpu_8255_c_r )
1831READ8_MEMBER(pc8801_state::cpu_8255_c_r)
18241832{
1825   pc8801_state *state = space.machine().driver_data<pc8801_state>();
1826//  space.machine().scheduler().synchronize(); // force resync
1833//  machine().scheduler().synchronize(); // force resync
18271834
1828   return state->m_i8255_1_pc >> 4;
1835   return m_i8255_1_pc >> 4;
18291836}
18301837
1831static WRITE8_DEVICE_HANDLER( cpu_8255_c_w )
1838WRITE8_MEMBER(pc8801_state::cpu_8255_c_w)
18321839{
1833   pc8801_state *state = space.machine().driver_data<pc8801_state>();
1834//  space.machine().scheduler().synchronize(); // force resync
1840//  machine().scheduler().synchronize(); // force resync
18351841
1836   state->m_i8255_0_pc = data;
1842   m_i8255_0_pc = data;
18371843}
18381844
18391845
r18156r18157
18431849   DEVCB_NULL,                     // Port A write
18441850   DEVCB_DEVICE_MEMBER("d8255_slave", i8255_device, pa_r), // Port B read
18451851   DEVCB_NULL,                     // Port B write
1846   DEVCB_HANDLER(cpu_8255_c_r),      // Port C read
1847   DEVCB_HANDLER(cpu_8255_c_w)         // Port C write
1852   DEVCB_DRIVER_MEMBER(pc8801_state,cpu_8255_c_r),      // Port C read
1853   DEVCB_DRIVER_MEMBER(pc8801_state,cpu_8255_c_w)         // Port C write
18481854};
18491855
1850static READ8_DEVICE_HANDLER( fdc_8255_c_r )
1856READ8_MEMBER(pc8801_state::fdc_8255_c_r)
18511857{
1852   pc8801_state *state = space.machine().driver_data<pc8801_state>();
1853//  space.machine().scheduler().synchronize(); // force resync
1858//  machine().scheduler().synchronize(); // force resync
18541859
1855   return state->m_i8255_0_pc >> 4;
1860   return m_i8255_0_pc >> 4;
18561861}
18571862
1858static WRITE8_DEVICE_HANDLER( fdc_8255_c_w )
1863WRITE8_MEMBER(pc8801_state::fdc_8255_c_w)
18591864{
1860   pc8801_state *state = space.machine().driver_data<pc8801_state>();
1861//  space.machine().scheduler().synchronize(); // force resync
1865//  machine().scheduler().synchronize(); // force resync
18621866
1863   state->m_i8255_1_pc = data;
1867   m_i8255_1_pc = data;
18641868}
18651869
18661870static I8255A_INTERFACE( slave_fdd_intf )
r18156r18157
18691873   DEVCB_NULL,                     // Port A write
18701874   DEVCB_DEVICE_MEMBER("d8255_master", i8255_device, pa_r),   // Port B read
18711875   DEVCB_NULL,                     // Port B write
1872   DEVCB_HANDLER(fdc_8255_c_r),      // Port C read
1873   DEVCB_HANDLER(fdc_8255_c_w)         // Port C write
1876   DEVCB_DRIVER_MEMBER(pc8801_state,fdc_8255_c_r),      // Port C read
1877   DEVCB_DRIVER_MEMBER(pc8801_state,fdc_8255_c_w)         // Port C write
18741878};
18751879
18761880
r18156r18157
23012305   }
23022306}
23032307
2304static WRITE_LINE_DEVICE_HANDLER( pic_int_w )
2308WRITE_LINE_MEMBER(pc8801_state::pic_int_w)
23052309{
2310   device_t *device = machine().device("maincpu");
23062311//  if (state == ASSERT_LINE)
23072312//  {
23082313//  }
23092314}
23102315
2311static WRITE_LINE_DEVICE_HANDLER( pic_enlg_w )
2316WRITE_LINE_MEMBER(pc8801_state::pic_enlg_w)
23122317{
2318   device_t *device = machine().device("maincpu");
23132319   //if (state == CLEAR_LINE)
23142320   //{
23152321   //}
r18156r18157
23172323
23182324static I8214_INTERFACE( pic_intf )
23192325{
2320   DEVCB_DEVICE_LINE("maincpu", pic_int_w),
2321   DEVCB_DEVICE_LINE("maincpu", pic_enlg_w)
2326   DEVCB_DRIVER_LINE_MEMBER(pc8801_state,pic_int_w),
2327   DEVCB_DRIVER_LINE_MEMBER(pc8801_state,pic_enlg_w)
23222328};
23232329
23242330static IRQ_CALLBACK( pc8801_irq_callback )
r18156r18157
25682574
25692575/* YM2203 Interface */
25702576
2571static READ8_DEVICE_HANDLER( opn_porta_r )
2577READ8_MEMBER(pc8801_state::opn_porta_r)
25722578{
2573   pc8801_state *state = space.machine().driver_data<pc8801_state>();
25742579
2575   if(space.machine().root_device().ioport("BOARD_CONFIG")->read() & 2)
2580   if(machine().root_device().ioport("BOARD_CONFIG")->read() & 2)
25762581   {
25772582      UINT8 shift,res;
25782583
2579      shift = (state->m_mouse.phase & 1) ? 0 : 4;
2580      res = (state->m_mouse.phase & 2) ? state->m_mouse.y : state->m_mouse.x;
2584      shift = (m_mouse.phase & 1) ? 0 : 4;
2585      res = (m_mouse.phase & 2) ? m_mouse.y : m_mouse.x;
25812586
2582//      printf("%d\n",state->m_mouse.phase);
2587//      printf("%d\n",m_mouse.phase);
25832588
25842589      return ((res >> shift) & 0x0f) | 0xf0;
25852590   }
25862591
2587   return space.machine().root_device().ioport("OPN_PA")->read();
2592   return machine().root_device().ioport("OPN_PA")->read();
25882593}
2589static READ8_DEVICE_HANDLER( opn_portb_r ) { return device->machine().root_device().ioport("OPN_PB")->read(); }
2594READ8_MEMBER(pc8801_state::opn_portb_r){ return machine().root_device().ioport("OPN_PB")->read(); }
25902595
25912596static const ym2203_interface pc88_ym2203_intf =
25922597{
25932598   {
25942599      AY8910_LEGACY_OUTPUT,
25952600      AY8910_DEFAULT_LOADS,
2596      DEVCB_HANDLER(opn_porta_r),
2597      DEVCB_HANDLER(opn_portb_r),
2601      DEVCB_DRIVER_MEMBER(pc8801_state,opn_porta_r),
2602      DEVCB_DRIVER_MEMBER(pc8801_state,opn_portb_r),
25982603      DEVCB_NULL,
25992604      DEVCB_NULL
26002605   },
r18156r18157
26062611   {
26072612      AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT,
26082613      AY8910_DEFAULT_LOADS,
2609      DEVCB_HANDLER(opn_porta_r),
2610      DEVCB_HANDLER(opn_portb_r),
2614      DEVCB_DRIVER_MEMBER(pc8801_state,opn_porta_r),
2615      DEVCB_DRIVER_MEMBER(pc8801_state,opn_portb_r),
26112616      DEVCB_NULL,
26122617      DEVCB_NULL
26132618   },
trunk/src/mess/drivers/a2600.c
r18156r18157
115115   DECLARE_MACHINE_START(a2600);
116116   DECLARE_MACHINE_START(a2600p);
117117   TIMER_CALLBACK_MEMBER(modeDPC_timer_callback);
118   DECLARE_WRITE8_MEMBER(switch_A_w);
119   DECLARE_READ8_MEMBER(switch_A_r);
120   DECLARE_WRITE8_MEMBER(switch_B_w);
121   DECLARE_WRITE_LINE_MEMBER(irq_callback);
122   DECLARE_READ8_MEMBER(riot_input_port_8_r);
118123};
119124
120125
r18156r18157
11751180   AM_RANGE(0x1000, 0x1FFF)                   AM_ROMBANK("bank1")
11761181ADDRESS_MAP_END
11771182
1178static WRITE8_DEVICE_HANDLER(switch_A_w)
1183WRITE8_MEMBER(a2600_state::switch_A_w)
11791184{
1180   a2600_state *state = space.machine().driver_data<a2600_state>();
1181   running_machine &machine = space.machine();
1182
11831185   /* Left controller port */
1184   if ( machine.root_device().ioport("CONTROLLERS")->read() / CATEGORY_SELECT == 0x03 )
1186   if ( machine().root_device().ioport("CONTROLLERS")->read() / CATEGORY_SELECT == 0x03 )
11851187   {
1186      state->m_keypad_left_column = data / 16;
1188      m_keypad_left_column = data / 16;
11871189   }
11881190
11891191   /* Right controller port */
1190   switch( machine.root_device().ioport("CONTROLLERS")->read() % CATEGORY_SELECT )
1192   switch( machine().root_device().ioport("CONTROLLERS")->read() % CATEGORY_SELECT )
11911193   {
11921194   case 0x03:   /* Keypad */
1193      state->m_keypad_right_column = data & 0x0F;
1195      m_keypad_right_column = data & 0x0F;
11941196      break;
11951197   case 0x0a:   /* KidVid voice module */
1196      machine.device<cassette_image_device>(CASSETTE_TAG)->change_state(( data & 0x02 ) ? (cassette_state)CASSETTE_MOTOR_DISABLED : (cassette_state)(CASSETTE_MOTOR_ENABLED | CASSETTE_PLAY), (cassette_state)CASSETTE_MOTOR_DISABLED );
1198      machine().device<cassette_image_device>(CASSETTE_TAG)->change_state(( data & 0x02 ) ? (cassette_state)CASSETTE_MOTOR_DISABLED : (cassette_state)(CASSETTE_MOTOR_ENABLED | CASSETTE_PLAY), (cassette_state)CASSETTE_MOTOR_DISABLED );
11971199      break;
11981200   }
11991201}
12001202
1201static READ8_DEVICE_HANDLER( switch_A_r )
1203READ8_MEMBER(a2600_state::switch_A_r)
12021204{
12031205   static const UINT8 driving_lookup[4] = { 0x00, 0x02, 0x03, 0x01 };
1204   running_machine &machine = space.machine();
12051206   UINT8 val = 0;
12061207
12071208   /* Left controller port PINs 1-4 ( 4321 ) */
1208   switch( machine.root_device().ioport("CONTROLLERS")->read() / CATEGORY_SELECT )
1209   switch( machine().root_device().ioport("CONTROLLERS")->read() / CATEGORY_SELECT )
12091210   {
12101211   case 0x00:  /* Joystick */
12111212   case 0x05:   /* Joystick w/Boostergrip */
1212      val |= machine.root_device().ioport("SWA_JOY")->read() & 0xF0;
1213      val |= machine().root_device().ioport("SWA_JOY")->read() & 0xF0;
12131214      break;
12141215   case 0x01:  /* Paddle */
1215      val |= machine.root_device().ioport("SWA_PAD")->read() & 0xF0;
1216      val |= machine().root_device().ioport("SWA_PAD")->read() & 0xF0;
12161217      break;
12171218   case 0x02:   /* Driving */
12181219      val |= 0xC0;
1219      val |= ( driving_lookup[ ( machine.root_device().ioport("WHEEL_L")->read() & 0x18 ) >> 3 ] << 4 );
1220      val |= ( driving_lookup[ ( machine().root_device().ioport("WHEEL_L")->read() & 0x18 ) >> 3 ] << 4 );
12201221      break;
12211222   case 0x06:   /* Trakball CX-22 */
12221223   case 0x07:   /* Trakball CX-80 / ST mouse */
r18156r18157
12271228   }
12281229
12291230   /* Right controller port PINs 1-4 ( 4321 ) */
1230   switch( machine.root_device().ioport("CONTROLLERS")->read() % CATEGORY_SELECT )
1231   switch( machine().root_device().ioport("CONTROLLERS")->read() % CATEGORY_SELECT )
12311232   {
12321233   case 0x00:   /* Joystick */
12331234   case 0x05:   /* Joystick w/Boostergrip */
1234      val |= machine.root_device().ioport("SWA_JOY")->read() & 0x0F;
1235      val |= machine().root_device().ioport("SWA_JOY")->read() & 0x0F;
12351236      break;
12361237   case 0x01:   /* Paddle */
1237      val |= machine.root_device().ioport("SWA_PAD")->read() & 0x0F;
1238      val |= machine().root_device().ioport("SWA_PAD")->read() & 0x0F;
12381239      break;
12391240   case 0x02:   /* Driving */
12401241      val |= 0x0C;
1241      val |= ( driving_lookup[ ( machine.root_device().ioport("WHEEL_R")->read() & 0x18 ) >> 3 ] );
1242      val |= ( driving_lookup[ ( machine().root_device().ioport("WHEEL_R")->read() & 0x18 ) >> 3 ] );
12421243      break;
12431244   case 0x06:   /* Trakball CX-22 */
12441245   case 0x07:   /* Trakball CX-80 / ST mouse */
r18156r18157
12511252   return val;
12521253}
12531254
1254static WRITE8_DEVICE_HANDLER(switch_B_w )
1255WRITE8_MEMBER(a2600_state::switch_B_w)
12551256{
12561257}
12571258
1258static WRITE_LINE_DEVICE_HANDLER( irq_callback )
1259WRITE_LINE_MEMBER(a2600_state::irq_callback)
12591260{
12601261}
12611262
1262static READ8_DEVICE_HANDLER( riot_input_port_8_r )
1263READ8_MEMBER(a2600_state::riot_input_port_8_r)
12631264{
1264   return space.machine().root_device().ioport("SWB")->read();
1265   return machine().root_device().ioport("SWB")->read();
12651266}
12661267
12671268static const riot6532_interface r6532_interface =
12681269{
1269   DEVCB_HANDLER(switch_A_r),
1270   DEVCB_HANDLER(riot_input_port_8_r),
1271   DEVCB_HANDLER(switch_A_w),
1272   DEVCB_HANDLER(switch_B_w),
1273   DEVCB_LINE(irq_callback)
1270   DEVCB_DRIVER_MEMBER(a2600_state,switch_A_r),
1271   DEVCB_DRIVER_MEMBER(a2600_state,riot_input_port_8_r),
1272   DEVCB_DRIVER_MEMBER(a2600_state,switch_A_w),
1273   DEVCB_DRIVER_MEMBER(a2600_state,switch_B_w),
1274   DEVCB_DRIVER_LINE_MEMBER(a2600_state, irq_callback)
12741275};
12751276
12761277
trunk/src/mess/drivers/ms0515.c
r18156r18157
3434   int m_blink;
3535   virtual void palette_init();
3636   UINT32 screen_update_ms0515(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
37   DECLARE_WRITE8_MEMBER(ms0515_portc_w);
3738};
3839
3940static ADDRESS_MAP_START(ms0515_mem, AS_PROGRAM, 16, ms0515_state)
r18156r18157
234235   palette_set_color(machine(), 15, MAKE_RGB(255, 255, 255));
235236}
236237
237static WRITE8_DEVICE_HANDLER(ms0515_portc_w)
238WRITE8_MEMBER(ms0515_state::ms0515_portc_w)
238239{
239   ms0515_state *state = space.machine().driver_data<ms0515_state>();
240   state->m_sysreg = data;
240   m_sysreg = data;
241241}
242242I8255A_INTERFACE( ms0515_ppi8255_interface_1 )
243243{
r18156r18157
246246   DEVCB_NULL,
247247   DEVCB_NULL,
248248   DEVCB_NULL,
249   DEVCB_HANDLER(ms0515_portc_w)
249   DEVCB_DRIVER_MEMBER(ms0515_state,ms0515_portc_w)
250250};
251251
252252static MACHINE_CONFIG_START( ms0515, ms0515_state )
trunk/src/mess/drivers/m20.c
r18156r18157
9595   DECLARE_DRIVER_INIT(m20);
9696   virtual void video_start();
9797   UINT32 screen_update_m20(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
98   DECLARE_WRITE_LINE_MEMBER(kbd_rxrdy_int);
99   DECLARE_READ_LINE_MEMBER(wd177x_dden_r);
100   DECLARE_WRITE_LINE_MEMBER(wd177x_intrq_w);
98101};
99102
100103
r18156r18157
410413    DEVCB_NULL      // port C write
411414};
412415
413static WRITE_LINE_DEVICE_HANDLER(kbd_rxrdy_int)
416WRITE_LINE_MEMBER(m20_state::kbd_rxrdy_int)
414417{
415   pic8259_ir4_w(device->machine().device("i8259"), state);
418   pic8259_ir4_w(machine().device("i8259"), state);
416419}
417420
418421#if 0
419static READ_LINE_DEVICE_HANDLER( wd177x_dden_r )
422READ_LINE_MEMBER(m20_state::wd177x_dden_r)
420423{
421   m20_state *state = device->machine().driver_data<m20_state>();
422   printf ("wd177x_dden_r called, returning %d\n", !state->m_port21_sd);
423   return !state->m_port21_sd;
424   printf ("wd177x_dden_r called, returning %d\n", !m_port21_sd);
425   return !m_port21_sd;
424426}
425427#endif
426428
427static WRITE_LINE_DEVICE_HANDLER( wd177x_intrq_w )
429WRITE_LINE_MEMBER(m20_state::wd177x_intrq_w)
428430{
429   pic8259_ir0_w(device->machine().device("i8259"), state);
431   pic8259_ir0_w(machine().device("i8259"), state);
430432}
431433
432434static const i8251_interface kbd_i8251_intf =
r18156r18157
436438   DEVCB_NULL,         // dsr
437439   DEVCB_NULL,         // dtr
438440   DEVCB_NULL,         // rts
439   DEVCB_LINE(kbd_rxrdy_int),  // rx ready
441   DEVCB_DRIVER_LINE_MEMBER(m20_state, kbd_rxrdy_int),  // rx ready
440442   DEVCB_NULL,         // tx ready
441443   DEVCB_NULL,         // tx empty
442444   DEVCB_NULL          // syndet
r18156r18157
457459
458460const wd17xx_interface m20_wd17xx_interface =
459461{
460   DEVCB_NULL, //DEVCB_LINE(wd177x_dden_r),
461   DEVCB_LINE(wd177x_intrq_w),
462   DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(m20_state, wd177x_dden_r),
463   DEVCB_DRIVER_LINE_MEMBER(m20_state, wd177x_intrq_w),
462464   DEVCB_NULL,
463465   {FLOPPY_0, FLOPPY_1, NULL, NULL}
464466};
trunk/src/mess/drivers/atari400.c
r18156r18157
239239   DECLARE_DRIVER_INIT(a800xl);
240240   DECLARE_DRIVER_INIT(a600xl);
241241   virtual void palette_init();
242   DECLARE_WRITE8_MEMBER(a1200xl_pia_pb_w);
243   DECLARE_WRITE8_MEMBER(a800xl_pia_pb_w);
244   DECLARE_WRITE8_MEMBER(xegs_pia_pb_w);
242245};
243246
244247/**************************************************************
r18156r18157
905908 *
906909 **************************************************************/
907910
908static WRITE8_DEVICE_HANDLER(a1200xl_pia_pb_w) { a1200xl_mmu(device->machine(), data); }
909static WRITE8_DEVICE_HANDLER(a800xl_pia_pb_w)
911WRITE8_MEMBER(a400_state::a1200xl_pia_pb_w){ device_t *device = machine().device("pia");  a1200xl_mmu(device->machine(), data); }
912WRITE8_MEMBER(a400_state::a800xl_pia_pb_w)
910913{
914   device_t *device = machine().device("pia");
911915   if (downcast<pia6821_device *>(device)->port_b_z_mask() != 0xff)
912      a800xl_mmu(space.machine(), data);
916      a800xl_mmu(machine(), data);
913917}
914918
915static WRITE8_DEVICE_HANDLER(xegs_pia_pb_w)
919WRITE8_MEMBER(a400_state::xegs_pia_pb_w)
916920{
921   device_t *device = machine().device("pia");
917922   if (downcast<pia6821_device *>(device)->port_b_z_mask() != 0xff)
918      xegs_mmu(space.machine(), data);
923      xegs_mmu(machine(), data);
919924}
920925
921926static const pokey_interface atari_pokey_interface =
r18156r18157
977982   DEVCB_NULL,      /* line CA2 in */
978983   DEVCB_NULL,      /* line CB2 in */
979984   DEVCB_NULL,      /* port A out */
980   DEVCB_DEVICE_HANDLER("pia", a1200xl_pia_pb_w),      /* port B out */
985   DEVCB_DRIVER_MEMBER(a400_state, a1200xl_pia_pb_w),      /* port B out */
981986   DEVCB_NULL,      /* line CA2 out */
982987   DEVCB_DEVICE_LINE("fdc",atarifdc_pia_cb2_w),      /* port CB2 out */
983988   DEVCB_NULL,      /* IRQA */
r18156r18157
993998   DEVCB_NULL,      /* line CA2 in */
994999   DEVCB_NULL,      /* line CB2 in */
9951000   DEVCB_NULL,      /* port A out */
996   DEVCB_DEVICE_HANDLER("pia", a800xl_pia_pb_w),      /* port B out */
1001   DEVCB_DRIVER_MEMBER(a400_state,a800xl_pia_pb_w),      /* port B out */
9971002   DEVCB_NULL,      /* line CA2 out */
9981003   DEVCB_DEVICE_LINE("fdc",atarifdc_pia_cb2_w),      /* port CB2 out */
9991004   DEVCB_NULL,      /* IRQA */
r18156r18157
10091014   DEVCB_NULL,      /* line CA2 in */
10101015   DEVCB_NULL,      /* line CB2 in */
10111016   DEVCB_NULL,      /* port A out */
1012   DEVCB_DEVICE_HANDLER("pia", xegs_pia_pb_w),      /* port B out */
1017   DEVCB_DRIVER_MEMBER(a400_state,xegs_pia_pb_w),      /* port B out */
10131018   DEVCB_NULL,      /* line CA2 out */
10141019   DEVCB_DEVICE_LINE("fdc",atarifdc_pia_cb2_w),      /* port CB2 out */
10151020   DEVCB_NULL,      /* IRQA */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team