Previous 199869 Revisions Next

r34029 Tuesday 23rd December, 2014 at 11:48:59 UTC by Robbbert
(MESS) excalibur : added 2nd drive, cleanup (nw)
[src/mess/drivers]excali64.c

trunk/src/mess/drivers/excali64.c
r242540r242541
2020ToDo:
2121- Colours are approximate.
2222- Disk controller, works with old wd17xx but crashes on new wd.
23- Hardware supports 8 and 5.25 inch floppies, but we only support 5.25 as this
23- Hardware supports 20cm and 13cm floppies, but we only support 13cm as this
2424  is the only software that exists.
2525- The schematic shows the audio counter connected to 2MHz, but this produces
2626  sounds that are too high. Connected to 1MHz for now.
r242540r242541
270270{
271271   m_motor = BIT(data, 0);
272272#if NEWFDC
273   m_floppy1->get_device()->mon_w(!m_motor);
273274   m_floppy0->get_device()->mon_w(!m_motor);
274275#else
275   //const char *floppy_tags[4] = { FLOPPY_0, FLOPPY_1, FLOPPY_2, FLOPPY_3 };
276276   legacy_floppy_image_device *flop = subdevice<legacy_floppy_image_device>(FLOPPY_0);
277277   flop->floppy_mon_w(!m_motor); // motor on
278   //flop->floppy_drive_set_ready_state(1, 0); // this is commented out in flopdrv.c, so does nothing
278   flop = subdevice<legacy_floppy_image_device>(FLOPPY_1);
279   flop->floppy_mon_w(!m_motor); // motor on
279280#endif
280281}
281282
r242540r242541
288289{
289290#if NEWFDC
290291   floppy_image_device *floppy = NULL;
291   if (BIT(data, 0)) floppy = m_floppy0->get_device();
292   //if (BIT(data, 1)) floppy = m_floppy1->get_device();
293   m_fdc->set_floppy(floppy);
292   if (BIT(data, 0))
293      floppy = m_floppy0->get_device();
294
295   if (BIT(data, 1))
296      floppy = m_floppy1->get_device();
297
294298   if (floppy)
299   {
300      m_fdc->set_floppy(floppy);
295301      floppy->ss_w(BIT(data, 4));
302   }
296303#else
297   //UINT8 i;
298   //for (i = 0; i < 4; i++)
299   //{
300   //   if BIT(data, i)
301   //   {
302   //      m_fdc->set_drive(i);
303   //      break;
304   //   }
305   //}
306   if BIT(data, 0) m_fdc->set_drive(0);
307   //if BIT(data, 1) m_fdc->set_drive(1);
308   //if BIT(data, 2) m_fdc->set_drive(2);
309   //if BIT(data, 3) m_fdc->set_drive(3);
304   if BIT(data, 0)
305      m_fdc->set_drive(0);
306
307   if BIT(data, 1)
308      m_fdc->set_drive(1);
309
310310   m_fdc->set_side(BIT(data, 4));
311#endif
311312
312   m_fdc->dden_w(1);//!BIT(data, 6)); // we want double density
313#endif
314   m_u12->b_w(space,offset, BIT(data, 5));
313   m_u12->b_w(space,offset, BIT(data, 5)); // motor pulse
315314}
316315
316/*
317d0 = precomp (selectable by jumper)
318d1 = size select (we only support 13cm)
319d2 = density select (0 = double)
320*/
317321WRITE8_MEMBER( excali64_state::portec_w )
318322{
323#if NEWFDC
324   m_fdc->dden_w(BIT(data, 2));
325#else
326   m_fdc->dden_w(!BIT(data, 2));
327#endif
319328}
320329
321330WRITE_LINE_MEMBER( excali64_state::busreq_w )
322331{
323332// since our Z80 has no support for BUSACK, we assume it is granted immediately
324333   m_maincpu->set_input_line(Z80_INPUT_LINE_BUSRQ, state);
325   //m_maincpu->set_input_line(INPUT_LINE_HALT, state); // do we need this?
326334   m_dma->bai_w(state); // tell dma that bus has been granted
327335}
328336
r242540r242541
521529   membank("bankr4")->configure_entry(2, &m_p_hiresram[0x0000]);
522530   membank("bankw4")->configure_entry(2, &m_p_hiresram[0x0000]);
523531
524   // Set up foreground palettes
532   // Set up foreground colours
525533   UINT8 r,g,b,i,code;
526534   for (i = 0; i < 32; i++)
527535   {
r242540r242541
611619   MCFG_I8255_IN_PORTC_CB(READ8(excali64_state, ppic_r))
612620   MCFG_I8255_OUT_PORTC_CB(WRITE8(excali64_state, ppic_w))
613621
614   //MCFG_DEVICE_ADD("acia_clock", CLOCK, 153600)
615   //MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(excali64_state, write_acia_clock))
616
617622   /* sound hardware */
618623   MCFG_SPEAKER_STANDARD_MONO("mono")
619624   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
r242540r242541
645650   MCFG_WD_FDC_FORCE_READY
646651   MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w))
647652   MCFG_FLOPPY_DRIVE_ADD("fdc:0", excali64_floppies, "525dd", floppy_image_device::default_floppy_formats)// excali64_state::floppy_formats)
648   //MCFG_FLOPPY_DRIVE_ADD("fdc:1", excali64_floppies, "525dd", floppy_image_device::default_floppy_formats)
653   MCFG_FLOPPY_DRIVE_ADD("fdc:1", excali64_floppies, "525dd", floppy_image_device::default_floppy_formats)
649654#else
650655   MCFG_DEVICE_ADD("fdc", WD2793, 0)
651   MCFG_WD17XX_DEFAULT_DRIVE1_TAGS
656   MCFG_WD17XX_DEFAULT_DRIVE2_TAGS
652657   MCFG_WD17XX_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w))
653   MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, excali64_floppy_interface)
654   //MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(excali64_floppy_interface)
658   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(excali64_floppy_interface)
655659#endif
656660   MCFG_DEVICE_ADD("dma", Z80DMA, XTAL_16MHz/4)
657661   MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(excali64_state, busreq_w))
r242540r242541
661665   MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(excali64_state, io_write_byte))
662666
663667   MCFG_DEVICE_ADD("u12", TTL74123, 0)
664   MCFG_TTL74123_CONNECTION_TYPE(TTL74123_GROUNDED)    /* the hook up type (no idea what this means */
668   MCFG_TTL74123_CONNECTION_TYPE(TTL74123_GROUNDED)    /* Hook up type (no idea what this means) */
665669   MCFG_TTL74123_RESISTOR_VALUE(RES_K(100))               /* resistor connected between RCext & 5v */
666670   MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(100))               /* capacitor connected between Cext and RCext */
667671   MCFG_TTL74123_A_PIN_VALUE(0)                  /* A pin - grounded */


Previous 199869 Revisions Next


© 1997-2024 The MAME Team