Previous 15994 Revisions Next

r8978 Tuesday 31st August, 2010 at 14:57:21 UTC by Angelo Salese
[MZ-2500]: Added RTC support
[src/mess/drivers]mz2500.c

src/mess/drivers/mz2500.c
r8977r8978
5555#include "machine/wd17xx.h"
5656#include "machine/pit8253.h"
5757#include "sound/2203intf.h"
58#include "machine/rp5c15.h"
5859
5960//#include "devices/cassette.h"
6061#include "devices/flopdrv.h"
r8977r8978
885886   irq_mask[2] = (data & 0x02); //printer
886887   irq_mask[3] = (data & 0x01); //RP5c15
887888
888//   printf("%02x\n",data);
889   printf("%02x\n",data);
889890}
890891
891892static WRITE8_HANDLER( mz2500_irq_data_w )
r8977r8978
12141215   (offset & 1) ? (kanji_index = (data << 8) | (kanji_index & 0xff)) : (kanji_index = (data & 0xff) | (kanji_index & 0xff00));
12151216}
12161217
1218static READ8_DEVICE_HANDLER( rp5c15_8_r )
1219{
1220   UINT8 rtc_index;
12171221
1222   rtc_index = (cpu_get_reg(device->machine->device("maincpu"), Z80_B));
1223
1224   return rp5c15_r(device,rtc_index,0xff);
1225}
1226
1227static WRITE8_DEVICE_HANDLER( rp5c15_8_w )
1228{
1229   UINT8 rtc_index;
1230
1231   rtc_index = (cpu_get_reg(device->machine->device("maincpu"), Z80_B));
1232
1233   rp5c15_w(device,rtc_index,data,0xff);
1234}
1235
12181236static ADDRESS_MAP_START(mz2500_io, ADDRESS_SPACE_IO, 8)
12191237   ADDRESS_MAP_GLOBAL_MASK(0xff)
12201238//  AM_RANGE(0x60, 0x63) AM_WRITE(w3100a_w)
r8977r8978
12421260   AM_RANGE(0xc7, 0xc7) AM_WRITE(mz2500_irq_data_w)
12431261   AM_RANGE(0xc8, 0xc9) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
12441262//  AM_RANGE(0xca, 0xca) AM_READWRITE(voice_r,voice_w)
1245//  AM_RANGE(0xcc, 0xcc) AM_READWRITE(calendar_r,calendar_w)
1246   AM_RANGE(0xcc, 0xcd) AM_NOP
1263   AM_RANGE(0xcc, 0xcc) AM_DEVREADWRITE("rp5c15", rp5c15_8_r, rp5c15_8_w)
12471264   AM_RANGE(0xce, 0xce) AM_WRITE(mz2500_dictionary_bank_w)
12481265   AM_RANGE(0xcf, 0xcf) AM_WRITE(mz2500_kanji_bank_w)
12491266   AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE("mb8877a", mz2500_wd17xx_r, mz2500_wd17xx_w)
r8977r8978
15341551
15351552static READ8_DEVICE_HANDLER( mz2500_porta_r )
15361553{
1554   logerror("PPI PORTA R\n");
1555
15371556   return 0xff;
15381557}
15391558
r8977r8978
15481567
15491568static READ8_DEVICE_HANDLER( mz2500_portc_r )
15501569{
1570   logerror("PPI PORTC R\n");
1571
15511572   return 0xff;
15521573}
15531574
15541575static WRITE8_DEVICE_HANDLER( mz2500_porta_w )
15551576{
1577   logerror("PPI PORTA W %02x\n",data);
15561578}
15571579
15581580static WRITE8_DEVICE_HANDLER( mz2500_portb_w )
15591581{
1582   logerror("PPI PORTB W %02x\n",data);
15601583}
15611584
15621585static WRITE8_DEVICE_HANDLER( mz2500_portc_w )
r8977r8978
15791602
15801603   reset_lines = data;
15811604
1582   //printf("%02x\n",data);
1605   if(data & ~0x0a)
1606      logerror("PPI PORTC W %02x\n",data & ~0x0a);
15831607}
15841608
15851609static I8255A_INTERFACE( ppi8255_intf )
r8977r8978
16651689   ym_porta = data;
16661690}
16671691
1668static WRITE8_DEVICE_HANDLER( opn_portb_w )
1669{
1670   logerror("B %02x\n",data);
1671}
1672
16731692static const ym2203_interface ym2203_interface_1 =
16741693{
16751694   {
r8977r8978
16781697      DEVCB_HANDLER(opn_porta_r),   // read A
16791698      DEVCB_INPUT_PORT("DSW1"),   // read B
16801699      DEVCB_HANDLER(opn_porta_w),   // write A
1681      DEVCB_HANDLER(opn_portb_w)   // write B
1700      DEVCB_NULL               // write B
16821701   },
16831702   NULL
16841703};
r8977r8978
17011720
17021721static WRITE_LINE_DEVICE_HANDLER( pit8253_clk1_irq )
17031722{
1704   if(irq_mask[1])
1723   if(irq_mask[1]/* && state & 1*/)
17051724      cputag_set_input_line_and_vector(device->machine, "maincpu", 0, HOLD_LINE,irq_vector[1]);
17061725}
17071726
r8977r8978
17261745   }
17271746};
17281747
1748static void mz2500_rtc_alarm_irq(int state)
1749{
1750   /* TODO: doesn't work yet */
1751//   if(irq_mask[3] && state & 1)
1752//      cputag_set_input_line_and_vector(device, "maincpu", 0, HOLD_LINE,irq_vector[3]);
1753}
1754
1755static const struct rp5c15_interface rtc_intf =
1756{
1757   mz2500_rtc_alarm_irq
1758};
1759
17291760static MACHINE_DRIVER_START( mz2500 )
17301761    /* basic machine hardware */
17311762    MDRV_CPU_ADD("maincpu", Z80, 6000000)
r8977r8978
17371768
17381769   MDRV_I8255A_ADD( "i8255_0", ppi8255_intf )
17391770   MDRV_Z80PIO_ADD( "z80pio_1", 6000000, mz2500_pio1_intf )
1771   MDRV_RP5C15_ADD( "rp5c15" , rtc_intf)
17401772
17411773   MDRV_MB8877_ADD("mb8877a",mz2500_mb8877a_interface)
17421774   MDRV_FLOPPY_4_DRIVES_ADD(mz2500_floppy_config)
17431775
1744
17451776   /* video hardware */
17461777   MDRV_SCREEN_ADD("screen", RASTER)
17471778   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team