Previous 199869 Revisions Next

r19284 Monday 3rd December, 2012 at 20:03:52 UTC by Angelo Salese
It DRQs! (nw)
[src/mess/drivers]pasopia7.c pc9801.c

trunk/src/mess/drivers/pc9801.c
r19283r19284
475475   DECLARE_WRITE_LINE_MEMBER(pc9801_dack1_w);
476476   DECLARE_WRITE_LINE_MEMBER(pc9801_dack2_w);
477477   DECLARE_WRITE_LINE_MEMBER(pc9801_dack3_w);
478   DECLARE_READ8_MEMBER(fdc_r);
479   DECLARE_WRITE8_MEMBER(fdc_w);
478   DECLARE_READ8_MEMBER(fdc_2hd_r);
479   DECLARE_WRITE8_MEMBER(fdc_2hd_w);
480   DECLARE_READ8_MEMBER(fdc_2dd_r);
481   DECLARE_WRITE8_MEMBER(fdc_2dd_w);
480482   DECLARE_READ8_MEMBER(ppi_sys_porta_r);
481483   DECLARE_READ8_MEMBER(ppi_sys_portb_r);
482484   DECLARE_READ8_MEMBER(ppi_prn_portb_r);
r19283r19284
11871189            m_fdc_2hd_ctrl = data;
11881190            pc9801_fdc_2hd_update_ready(NULL, 0);
11891191
1190            //machine().device<floppy_connector>("upd765_2hd:0")->get_device()->mon_w(!(data & 0x40));
1191            //machine().device<floppy_connector>("upd765_2hd:1")->get_device()->mon_w(!(data & 0x40));
1192            machine().device<floppy_connector>("upd765_2hd:0")->get_device()->mon_w(data & 0x40 ? ASSERT_LINE : CLEAR_LINE);
1193            machine().device<floppy_connector>("upd765_2hd:1")->get_device()->mon_w(data & 0x40 ? ASSERT_LINE : CLEAR_LINE);
11921194            break;
11931195      }
11941196   }
r19283r19284
12391241               machine().device<upd765a_device>("upd765_2dd")->reset();
12401242
12411243            m_fdc_2dd_ctrl = data;
1242            //floppy_mon_w(floppy_get_device(machine(), 0), (data & 8) ? CLEAR_LINE : ASSERT_LINE);
1243            //floppy_mon_w(floppy_get_device(machine(), 1), (data & 8) ? CLEAR_LINE : ASSERT_LINE);
1244            //floppy_drive_set_ready_state(floppy_get_device(machine(), 0), (data & 8), 0);
1245            //floppy_drive_set_ready_state(floppy_get_device(machine(), 1), (data & 8), 0);
1244            machine().device<floppy_connector>("upd765_2dd:0")->get_device()->mon_w(data & 0x08 ? ASSERT_LINE : CLEAR_LINE);
1245            machine().device<floppy_connector>("upd765_2dd:1")->get_device()->mon_w(data & 0x08 ? ASSERT_LINE : CLEAR_LINE);
12461246            break;
12471247      }
12481248   }
r19283r19284
15161516
15171517            pc9801_fdc_2hd_update_ready(NULL, 0);
15181518
1519            machine().device<floppy_connector>("upd765_2hd:0")->get_device()->mon_w(!(data & 0x08));
1520            machine().device<floppy_connector>("upd765_2hd:1")->get_device()->mon_w(!(data & 0x08));
1519            machine().device<floppy_connector>("upd765_2hd:0")->get_device()->mon_w(data & 0x08 ? ASSERT_LINE : CLEAR_LINE);
1520            machine().device<floppy_connector>("upd765_2hd:1")->get_device()->mon_w(data & 0x08 ? ASSERT_LINE : CLEAR_LINE);
15211521            return;
15221522      }
15231523   }
r19283r19284
24962496{
24972497   /* floppy terminal count */
24982498   m_fdc_2hd->tc_w(state);
2499   // TODO: 2dd?
24992500
25002501//   printf("TC %02x\n",state);
25012502}
r19283r19284
25052506   address_space &program = m_maincpu->space(AS_PROGRAM);
25062507   offs_t addr = (m_dma_offset[m_dack] << 16) | offset;
25072508
2508//   printf("%08x\n",addr);
2509   printf("%08x\n",addr);
25092510
25102511   return program.read_byte(addr);
25112512}
r19283r19284
25162517   address_space &program = m_maincpu->space(AS_PROGRAM);
25172518   offs_t addr = (m_dma_offset[m_dack] << 16) | offset;
25182519
2519//  printf("%08x %02x\n",addr,data);
2520   printf("%08x %02x\n",addr,data);
25202521
25212522   program.write_byte(addr, data);
25222523}
r19283r19284
25322533WRITE_LINE_MEMBER(pc9801_state::pc9801_dack2_w){ /*printf("%02x 2\n",state);*/ set_dma_channel(machine(), 2, state); }
25332534WRITE_LINE_MEMBER(pc9801_state::pc9801_dack3_w){ /*printf("%02x 3\n",state);*/ set_dma_channel(machine(), 3, state); }
25342535
2535READ8_MEMBER(pc9801_state::fdc_r)
2536READ8_MEMBER(pc9801_state::fdc_2hd_r)
25362537{
25372538   return m_fdc_2hd->dma_r();
25382539}
25392540
2540WRITE8_MEMBER(pc9801_state::fdc_w)
2541WRITE8_MEMBER(pc9801_state::fdc_2hd_w)
25412542{
25422543   m_fdc_2hd->dma_w(data);
25432544}
25442545
2545/* TODO: check channels for this */
2546READ8_MEMBER(pc9801_state::fdc_2dd_r)
2547{
2548   return m_fdc_2dd->dma_r();
2549}
2550
2551WRITE8_MEMBER(pc9801_state::fdc_2dd_w)
2552{
2553   m_fdc_2dd->dma_w(data);
2554}
2555
2556
2557/* TODO: check channels 0 - 1 */
25462558static I8237_INTERFACE( dmac_intf )
25472559{
25482560   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dma_hrq_changed),
25492561   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_tc_w),
25502562   DEVCB_DRIVER_MEMBER(pc9801_state, pc9801_dma_read_byte),
25512563   DEVCB_DRIVER_MEMBER(pc9801_state, pc9801_dma_write_byte),
2552   { DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,fdc_r), DEVCB_DRIVER_MEMBER(pc9801_state,fdc_r), DEVCB_DRIVER_MEMBER(pc9801_state,fdc_r) },
2553   { DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,fdc_w), DEVCB_DRIVER_MEMBER(pc9801_state,fdc_w), DEVCB_DRIVER_MEMBER(pc9801_state,fdc_w) },
2564   { DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,fdc_2hd_r), DEVCB_DRIVER_MEMBER(pc9801_state,fdc_2dd_r) },
2565   { DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,fdc_2hd_w), DEVCB_DRIVER_MEMBER(pc9801_state,fdc_2dd_w) },
25542566   { DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dack0_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dack1_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dack2_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dack3_w) }
25552567};
25562568
r19283r19284
25662578   DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_tc_w),
25672579   DEVCB_DRIVER_MEMBER(pc9801_state, pc9801_dma_read_byte),
25682580   DEVCB_DRIVER_MEMBER(pc9801_state, pc9801_dma_write_byte),
2569   { DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,fdc_r), DEVCB_NULL },
2570   { DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,fdc_w), DEVCB_NULL },
2581   { DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,fdc_2hd_r), DEVCB_NULL },
2582   { DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(pc9801_state,fdc_2hd_w), DEVCB_NULL },
25712583   { DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dack0_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dack1_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dack2_w), DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_dack3_w) }
25722584};
25732585
r19283r19284
26482660
26492661void pc9801_state::fdc_2hd_irq(bool state)
26502662{
2651   printf("IRQ 2HD %d\n",state);
2663//   printf("IRQ 2HD %d\n",state);
26522664   pic8259_ir3_w(machine().device("pic8259_slave"), state);
26532665}
26542666
26552667void pc9801_state::fdc_2hd_drq(bool state)
26562668{
26572669   printf("%02x DRQ\n",state);
2670   m_dmac->dreq2_w(state);
26582671}
26592672
26602673void pc9801_state::fdc_2dd_irq(bool state)
r19283r19284
26702683void pc9801_state::fdc_2dd_drq(bool state)
26712684{
26722685   printf("%02x DRQ\n",state);
2686   m_dmac->dreq3_w(state);
26732687}
26742688
26752689void pc9801_state::pc9801rs_fdc_irq(bool state)
26762690{
26772691   /* 0xffaf8 */
26782692
2679   //cprintf("%02x %d\n",m_fdc_ctrl,state);
2693   //printf("%02x %d\n",m_fdc_ctrl,state);
26802694
26812695   if(m_fdc_ctrl & 1)
26822696      pic8259_ir3_w(machine().device("pic8259_slave"), state);
r19283r19284
27752789      fdc->setup_intrq_cb(upd765a_device::line_cb(FUNC(pc9801_state::fdc_2dd_irq), this));
27762790      fdc->setup_drq_cb(upd765a_device::line_cb(FUNC(pc9801_state::fdc_2dd_drq), this));
27772791   }
2792   m_fdc_2hd->set_rate(500000);
2793   m_fdc_2dd->set_rate(250000);
27782794}
27792795
27802796MACHINE_START_MEMBER(pc9801_state,pc9801rs)
trunk/src/mess/drivers/pasopia7.c
r19283r19284
571571      case 6:
572572         if(data & 0x80)
573573            m_fdc->reset();
574         m_floppy->mon_w(!(data & 0x40));
574         m_floppy->mon_w(data & 0x40 ? CLEAR_LINE : ASSERT_LINE);
575575         break;
576576   }
577577}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team