Previous 15994 Revisions Next

r9477 Sunday 31st October, 2010 at 09:05:43 UTC by Angelo Salese
[PC-88VA]: Added PIC8259 hook-up, and added VRTC irq
[src/mess/drivers]pc88va.c

src/mess/drivers/pc88va.c
r9476r9477
1616#include "cpu/nec/nec.h"
1717//#include "cpu/z80/z80.h"
1818#include "machine/i8255a.h"
19#include "machine/pic8259.h"
1920
2021static UINT16 *palram;
2122static UINT16 bank_reg;
r9476r9477
648649//   AM_RANGE(0x0158, 0x0159) Interruption Mode Modification
649650//   AM_RANGE(0x015c, 0x015f) NMI mask port (strobe port)
650651//   AM_RANGE(0x0160, 0x016f) DMA Controller
651//   AM_RANGE(0x0184, 0x018b) IRQ Controller
652   AM_RANGE(0x0184, 0x0187) AM_DEVREADWRITE8("pic8259_slave", pic8259_r, pic8259_w, 0x00ff)
653   AM_RANGE(0x0188, 0x018b) AM_DEVREADWRITE8("pic8259_master", pic8259_r, pic8259_w, 0x00ff) // ICU, also controls 8214 emulation
652654//   AM_RANGE(0x0190, 0x0191) System Port 5
653655//   AM_RANGE(0x0196, 0x0197) Keyboard sub CPU command port
654656   AM_RANGE(0x0198, 0x0199) AM_WRITE(backupram_wp_1_w) //Backup RAM write inhibit
r9476r9477
870872//   PORT_DIPSETTING(    0x03, "???" )
871873INPUT_PORTS_END
872874
873static MACHINE_RESET( pc88va )
874{
875   UINT8 *ROM00 = memory_region(machine, "rom00");
876   UINT8 *ROM10 = memory_region(machine, "rom10");
877
878   memory_set_bankptr(machine, "rom10_bank", &ROM10[0x00000]);
879   memory_set_bankptr(machine, "rom00_bank", &ROM00[0x00000]);
880
881   bank_reg = 0x4100;
882   backupram_wp = 1;
883
884   /* default palette */
885   {
886      UINT8 i;
887      for(i=0;i<32;i++)
888         palette_set_color_rgb(machine,i,pal1bit((i & 2) >> 1),pal1bit((i & 4) >> 2),pal1bit(i & 1));
889   }
890}
891
892875static const gfx_layout pc88va_chars_8x8 =
893876{
894877   8,8,
r9476r9477
1014997   DEVCB_HANDLER(r232_ctrl_portc_w)                  /* Port C write */
1015998};
1016999
1000static IRQ_CALLBACK(pc88va_irq_callback)
1001{
1002   int r = 0;
1003   r = pic8259_acknowledge( device->machine->device( "pic8259_slave" ));
1004   if (r==0)
1005   {
1006      r = pic8259_acknowledge( device->machine->device( "pic8259_master" ) );
1007   }
1008   return r;
1009}
1010
1011static WRITE_LINE_DEVICE_HANDLER( pc88va_pic_irq )
1012{
1013   cputag_set_input_line(device->machine, "maincpu", 0, state ? HOLD_LINE : CLEAR_LINE);
1014//  logerror("PIC#1: set IRQ line to %i\n",interrupt);
1015}
1016
1017static const struct pic8259_interface pc88va_pic8259_master_config =
1018{
1019   DEVCB_LINE(pc88va_pic_irq)
1020};
1021
1022static const struct pic8259_interface pc88va_pic8259_slave_config =
1023{
1024   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w)
1025};
1026
1027static MACHINE_START( pc88va )
1028{
1029   cpu_set_irq_callback(machine->device("maincpu"), pc88va_irq_callback);
1030}
1031
1032static MACHINE_RESET( pc88va )
1033{
1034   UINT8 *ROM00 = memory_region(machine, "rom00");
1035   UINT8 *ROM10 = memory_region(machine, "rom10");
1036
1037   memory_set_bankptr(machine, "rom10_bank", &ROM10[0x00000]);
1038   memory_set_bankptr(machine, "rom00_bank", &ROM00[0x00000]);
1039
1040   bank_reg = 0x4100;
1041   backupram_wp = 1;
1042
1043   /* default palette */
1044   {
1045      UINT8 i;
1046      for(i=0;i<32;i++)
1047         palette_set_color_rgb(machine,i,pal1bit((i & 2) >> 1),pal1bit((i & 4) >> 2),pal1bit(i & 1));
1048   }
1049}
1050
1051static INTERRUPT_GEN( pc88va_vrtc_irq )
1052{
1053   pic8259_ir2_w(device->machine->device("pic8259_master"), 1);
1054}
1055
10171056static MACHINE_CONFIG_START( pc88va, driver_device )
10181057
10191058   MDRV_CPU_ADD("maincpu", V30, 8000000)        /* 8 MHz */
10201059   MDRV_CPU_PROGRAM_MAP(pc88va_map)
10211060   MDRV_CPU_IO_MAP(pc88va_io_map)
1061   MDRV_CPU_VBLANK_INT("screen",pc88va_vrtc_irq)
10221062
10231063   #if 0
10241064   MDRV_CPU_ADD("subcpu", Z80, 8000000)        /* 8 MHz */
r9476r9477
10381078   MDRV_VIDEO_START( pc88va )
10391079   MDRV_VIDEO_UPDATE( pc88va )
10401080
1081   MDRV_MACHINE_START( pc88va )
10411082   MDRV_MACHINE_RESET( pc88va )
10421083
10431084   MDRV_I8255A_ADD( "d8255_2", fdd_intf )
10441085   MDRV_I8255A_ADD( "d8255_3", r232c_ctrl_intf )
10451086
1087   MDRV_PIC8259_ADD( "pic8259_master", pc88va_pic8259_master_config )
1088   MDRV_PIC8259_ADD( "pic8259_slave", pc88va_pic8259_slave_config )
10461089
10471090MACHINE_CONFIG_END
10481091

Previous 15994 Revisions Next


© 1998-2018 The MESS Team