Previous 15994 Revisions Next

r7664 Monday 29th March, 2010 at 13:34:21 UTC by Angelo Salese
[MZ2500]: Implemented IPLPRO support
[src/mess/drivers]mz2500.c

src/mess/drivers/mz2500.c
r7663r7664
2929#include "cpu/z80/z80.h"
3030#include "machine/z80pio.h"
3131#include "machine/wd17xx.h"
32#include "sound/2203intf.h"
33
3234//#include "devices/cassette.h"
3335#include "devices/flopdrv.h"
3436#include "formats/flopimg.h"
r7663r7664
272274      irq_vector[3] = data; //RP5c15
273275}
274276
277#if 0
275278static READ8_HANDLER( mz2500_fdc_r )
276279{
277280   running_device* dev = devtag_get_device(space->machine,"fdc");
r7663r7664
291294
292295   return 0xff;
293296}
297#endif
294298
295299static WRITE8_HANDLER( mz2500_fdc_w )
296300{
297   running_device* dev = devtag_get_device(space->machine,"fdc");
301   running_device* dev = devtag_get_device(space->machine,"mb8877a");
298302
299   switch(offset+0xd8)
303   switch(offset+0xdc)
300304   {
305      #if 0
301306      case 0xd8:
302307         wd17xx_command_w(dev,offset,data);
303308         break;
r7663r7664
310315      case 0xdb:
311316         wd17xx_data_w(dev,offset,data);
312317         break;
318      #endif
313319      case 0xdc:
314320         wd17xx_set_drive(dev,data & 3);
315         floppy_mon_w(floppy_get_device(space->machine, data & 3), data & 0x80);
316         floppy_drive_set_ready_state(floppy_get_device(space->machine, data & 3), data & 0x80,0);
321         floppy_mon_w(floppy_get_device(space->machine, data & 3), (data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
322         floppy_drive_set_ready_state(floppy_get_device(space->machine, data & 3), 1,1);
317323         break;
318324      case 0xdd:
319325         wd17xx_set_side(dev,(data & 1));
r7663r7664
371377}
372378#endif
373379
380static UINT32 rom_index;
381
382static READ8_HANDLER( mz2500_rom_r )
383{
384   UINT8 *rom = memory_region(space->machine, "rom");
385   UINT8 res;
386
387   res = rom[rom_index];
388   rom_index++;
389
390   return res;
391}
392
393static WRITE8_HANDLER( mz2500_rom_w )
394{
395//   printf("%02x\n",data);
396   rom_index = (data << 8) | (rom_index & 0xff00ff);
397   //printf("%02x\n",data);
398}
399
374400static ADDRESS_MAP_START(mz2500_io, ADDRESS_SPACE_IO, 8)
375401   ADDRESS_MAP_GLOBAL_MASK(0xff)
376402//   AM_RANGE(0x60, 0x63) AM_WRITE(w3100a_w)
377403//   AM_RANGE(0x63, 0x63) AM_READ(w3100a_r)
378404//   AM_RANGE(0xa0, 0xa3) AM_READWRITE(sio_r,sio_w)
379405//   AM_RANGE(0xa4, 0xa5) AM_READWRITE(sasi_r, sasi_w)
380//   AM_RANGE(0xa8, 0xa8) AM_WRITE(rom_w)
381//   AM_RANGE(0xa9, 0xa9) AM_READ(rom_r)
406   AM_RANGE(0xa8, 0xa8) AM_WRITE(mz2500_rom_w)
407   AM_RANGE(0xa9, 0xa9) AM_READ(mz2500_rom_r)
382408//   AM_RANGE(0xac, 0xad) AM_WRITE(emm_w)
383409//   AM_RANGE(0xad, 0xad) AM_READ(emm_r)
384410//   AM_RANGE(0xae, 0xae) AM_WRITE(crtc_w)
r7663r7664
389415//   AM_RANGE(0xbc, 0xbd) AM_READWRITE(crtc_r,crtc_w)
390416   AM_RANGE(0xc6, 0xc6) AM_WRITE(mz2500_irq_sel_w)
391417   AM_RANGE(0xc7, 0xc7) AM_WRITE(mz2500_irq_data_w)
392//   AM_RANGE(0xc8, 0xc9) AM_READWRITE(opn_r,opn_w)
393//   AM_RANGE(0xc8, 0xc9) AM_READ(kludge_r)
418   AM_RANGE(0xc8, 0xc9) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
394419//   AM_RANGE(0xca, 0xca) AM_READWRITE(voice_r,voice_w)
395420//   AM_RANGE(0xcc, 0xcc) AM_READWRITE(calendar_r,calendar_w)
396421//   AM_RANGE(0xce, 0xce) AM_WRITE(mz2500_dictionary_bank_w)
397422   AM_RANGE(0xcf, 0xcf) AM_WRITE(mz2500_kanji_bank_w)
398   AM_RANGE(0xd8, 0xdd) AM_READWRITE(mz2500_fdc_r,mz2500_fdc_w)
423   AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE("mb8877a", wd17xx_r, wd17xx_w)
424   AM_RANGE(0xdc, 0xdd) AM_WRITE(mz2500_fdc_w)
399425   AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("z80pio_0", z80pio_c_r, z80pio_c_w)
400426   AM_RANGE(0xe2, 0xe3) AM_DEVREADWRITE("z80pio_0", z80pio_d_r, z80pio_d_w)
401427//   AM_RANGE(0xe4, 0xe7) AM_READWRITE(pit_r,pit_w)
r7663r7664
409435
410436/* Input ports */
411437static INPUT_PORTS_START( mz2500 )
438   PORT_START("DSW0")
439   PORT_DIPNAME( 0x01, 0x00, "DSW0" )
440   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
441   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
442   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
443   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
444   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
445   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
446   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
447   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
448   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
449   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
450   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
451   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
452   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
453   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
454   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
455   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
456   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
457   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
458   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
459   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
460   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
461   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
462   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
463
464   PORT_START("DSW1")
465   PORT_DIPNAME( 0x01, 0x00, "DSW1" )
466   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
467   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
468   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
469   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
470   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
471   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
472   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
473   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
474   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
475   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
476   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
477   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
478   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
479   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
480   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
481   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
482   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
483   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
484   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
485   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
486   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
487   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
488   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
412489INPUT_PORTS_END
413490
414491
r7663r7664
561638   DEVCB_NULL
562639};
563640
641static const ym2203_interface ym2203_interface_1 =
642{
643   {
644      AY8910_LEGACY_OUTPUT,
645      AY8910_DEFAULT_LOADS,
646      DEVCB_INPUT_PORT("DSW0"),   // read A
647      DEVCB_INPUT_PORT("DSW1"),   // read B
648      DEVCB_NULL,               // write A
649      DEVCB_NULL               // write B
650   },
651   NULL
652};
564653
565654static MACHINE_DRIVER_START( mz2500 )
566655    /* basic machine hardware */
r7663r7664
574663   MDRV_Z80PIO_ADD( "z80pio_0", 6000000/4, mz2500_pio0_intf ) // unknown clock / divider
575664   MDRV_Z80PIO_ADD( "z80pio_1", 6000000/4, mz2500_pio1_intf )
576665
577   MDRV_MB8877_ADD("fdc",mz2500_mb8877a_interface)
666   MDRV_MB8877_ADD("mb8877a",mz2500_mb8877a_interface)
578667   MDRV_FLOPPY_4_DRIVES_ADD(mz2500_floppy_config)
579668
580669
r7663r7664
589678
590679    MDRV_VIDEO_START(mz2500)
591680    MDRV_VIDEO_UPDATE(mz2500)
681
682   MDRV_SPEAKER_STANDARD_MONO("mono")
683
684   MDRV_SOUND_ADD("ym", YM2203, 6000000/4) //unknown clock / divider
685   MDRV_SOUND_CONFIG(ym2203_interface_1)
686   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
592687MACHINE_DRIVER_END
593688
594689
r7663r7664
611706   ROM_LOAD( "dict.rom", 0x00000, 0x40000, CRC(aa957c2b) SHA1(19a5ba85055f048a84ed4e8d471aaff70fcf0374) )
612707
613708   ROM_REGION( 0x2000, "pcg", ROMREGION_ERASEFF )
709
710   ROM_REGION( 0x8000, "rom", ROMREGION_ERASEFF )
711   ROM_LOAD( "file.rom", 0x00000, 0x8000, CRC(a7bf39ce) SHA1(3f4a237fc4f34bac6fe2bbda4ce4d16d42400081) ) //optional?
614712ROM_END
615713
616714/* Driver */

Previous 15994 Revisions Next


© 1998-2018 The MESS Team