Previous 199869 Revisions Next

r33854 Saturday 13th December, 2014 at 08:38:55 UTC by Barry Rodewald
(MESS) ngen: connected FDC to 80186 DMA channel 1, corrected floppy setup.  Floppy disks now start to boot up.
[src/mess/drivers]ngen.c

trunk/src/mess/drivers/ngen.c
r242365r242366
119119   DECLARE_WRITE8_MEMBER( dma_3_dack_w ){  }
120120   DECLARE_WRITE_LINE_MEMBER(fdc_irq_w);
121121   DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
122   DECLARE_WRITE8_MEMBER(fdc_control_w);
122123
123124protected:
124125   virtual void machine_reset();
r242365r242366
379380}
380381
381382// returns X-bus module ID (what is the low byte for?)
383// For now, we'll hard code a floppy disk module (or try to)
382384READ16_MEMBER(ngen_state::port00_r)
383385{
384386   if(m_port00 > 0)
385387      m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE);
386388   if(m_port00 == 0)
387      return 0x4000;  // module ID of 0x40 = dual floppy disk module (need hardware manual to find other module IDs)
389      return 0x0040;  // module ID of 0x40 = dual floppy disk module (need hardware manual to find other module IDs)
388390   else
389391      return 0x0080;  // invalid device?
390392}
r242365r242366
396398
397399WRITE_LINE_MEMBER(ngen_state::fdc_drq_w)
398400{
399   // TODO
401   m_dmac->dreq3_w(state);
400402}
401403
404WRITE8_MEMBER(ngen_state::fdc_control_w)
405{
406   m_fdc->set_floppy(m_fd0->get_device());
407   m_fd0->get_device()->mon_w((~data) & 0x80);
408   m_fdc->dden_w(~data & 0x04);
409}
410
402411WRITE_LINE_MEMBER( ngen_state::dma_hrq_changed )
403412{
404413   m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
r242365r242366
474483
475484void ngen_state::machine_reset()
476485{
486   m_port00 = 0;
477487   m_control = 0;
478488   m_viduart->write_dsr(0);
479489   m_viduart->write_cts(0);
490   m_fd0->get_device()->set_rpm(300);
480491}
481492
482493static ADDRESS_MAP_START( ngen_mem, AS_PROGRAM, 16, ngen_state )
r242365r242366
490501static ADDRESS_MAP_START( ngen_io, AS_IO, 16, ngen_state )
491502   AM_RANGE(0x0000, 0x0001) AM_READWRITE(port00_r,port00_w)
492503   AM_RANGE(0x0100, 0x0107) AM_DEVREADWRITE8("fdc",wd2797_t,read,write,0x00ff)  // a guess for now
493   // port 0x0108 is used also, maybe for motor control/side select?
504   AM_RANGE(0x0108, 0x0109) AM_WRITE8(fdc_control_w,0x00ff)
494505ADDRESS_MAP_END
495506
496507static ADDRESS_MAP_START( ngen386_mem, AS_PROGRAM, 32, ngen_state )
r242365r242366
517528SLOT_INTERFACE_END
518529
519530static SLOT_INTERFACE_START( ngen_floppies )
520   SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
531   SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
521532SLOT_INTERFACE_END
522533
523534static MACHINE_CONFIG_START( ngen, ngen_state )
r242365r242366
577588   MCFG_RS232_DCD_HANDLER(DEVWRITELINE("iouart", upd7201_device, dcdb_w))
578589   MCFG_RS232_RI_HANDLER(DEVWRITELINE("iouart", upd7201_device, rib_w))
579590
580   // TODO: SCN2652 MPCC, used for RS-422 cluster communications?
591   // TODO: SCN2652 MPCC (not implemented), used for RS-422 cluster communications?
581592
582593   // video board
583594   MCFG_SCREEN_ADD("screen", RASTER)
r242365r242366
603614   MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(ngen_state,timer_clk_out))
604615
605616   // floppy disk / hard disk module (WD2797 FDC, WD1010 HDC, plus an 8253 timer for each)
606   MCFG_WD2797x_ADD("fdc", XTAL_20MHz / 10)
617   MCFG_WD2797x_ADD("fdc", XTAL_20MHz / 20)
607618   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(ngen_state,fdc_irq_w))
608   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(ngen_state,fdc_drq_w))
619   MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("maincpu",i80186_cpu_device,drq1_w))
620   MCFG_WD_FDC_FORCE_READY
609621   MCFG_DEVICE_ADD("fdc_timer", PIT8253, 0)
610622   // TODO: WD1010 HDC (not implemented)
611623   MCFG_DEVICE_ADD("hdc_timer", PIT8253, 0)
612   MCFG_FLOPPY_DRIVE_ADD("fdc:0", ngen_floppies, "525hd", floppy_image_device::default_floppy_formats)
624   MCFG_FLOPPY_DRIVE_ADD("fdc:0", ngen_floppies, "525qd", floppy_image_device::default_floppy_formats)
613625
614626MACHINE_CONFIG_END
615627


Previous 199869 Revisions Next


© 1997-2024 The MAME Team