Previous 15994 Revisions Next

r4571 Monday 27th April, 2009 at 00:49:04 UTC by Fabio Priuli
This patch also removes a few references to non-existent 3rd CPU. The driver doesn't do much, so it's difficult to test for regressions.
[src/mess/machine]compis.c

src/mess/machine/compis.c
r4570r4571
190190#ifdef UNUSED_FUNCTION
191191void compis_irq_set(UINT8 irq)
192192{
193   cpu_set_input_line_vector(machine->cpu[0], 0, irq);
194   cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE);
193   cputag_set_input_line_vector(machine, "maincpu", 0, irq);
194   cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
195195}
196196#endif
197197
r4570r4571
634634   /* generate the appropriate interrupt */
635635   i186.intr.poll_status = 0x8000 | new_vector;
636636   if (!i186.intr.pending)
637      cpu_set_input_line(machine->cpu[2], 0, ASSERT_LINE);
637      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
638638   i186.intr.pending = 1;
639639   cpuexec_trigger(machine, CPU_RESUME_TRIGGER);
640640   if (LOG_OPTIMIZATION) logerror("  - trigger due to interrupt pending\n");
r4570r4571
661661         case 0x0d:   i186.intr.in_service &= ~0x20;   break;
662662         case 0x0e:   i186.intr.in_service &= ~0x40;   break;
663663         case 0x0f:   i186.intr.in_service &= ~0x80;   break;
664         default:   logerror("%05X:ERROR - 80186 EOI with unknown vector %02X\n", cpu_get_pc(machine->cpu[0]), data & 0x1f);
664         default:   logerror("%05X:ERROR - 80186 EOI with unknown vector %02X\n", cpu_get_pc(cputag_get_cpu(machine, "maincpu")), data & 0x1f);
665665      }
666666      if (LOG_INTERRUPTS) logerror("(%f) **** Got EOI for vector %02X\n", attotime_to_double(timer_get_time(machine)), data & 0x1f);
667667   }
r4570r4571
833833      diff = new_control ^ t->control;
834834      if (diff & 0x001c)
835835        logerror("%05X:ERROR! -unsupported timer mode %04X\n",
836            cpu_get_pc(machine->cpu[0]),
837            new_control);
836            cpu_get_pc(cputag_get_cpu(machine, "maincpu")), new_control);
838837
839838      /* if we have real changes, update things */
840839      if (diff != 0)
r4570r4571
935934   diff = new_control ^ d->control;
936935   if (diff & 0x6811)
937936     logerror("%05X:ERROR! - unsupported DMA mode %04X\n",
938         cpu_get_pc(machine->cpu[0]),
939         new_control);
937         cpu_get_pc(cputag_get_cpu(machine, "maincpu")), new_control);
940938
941939   /* if we're going live, set a timer */
942940   if ((diff & 0x0002) && (new_control & 0x0002))
r4570r4571
997995      case 0x12:
998996         if (LOG_PORTS) logerror("%05X:read 80186 interrupt poll\n", cpu_get_pc(space->cpu));
999997         if (i186.intr.poll_status & 0x8000)
1000            int_callback(space->machine->cpu[0],0);
998            int_callback(cputag_get_cpu(space->machine, "maincpu"), 0);
1001999         return i186.intr.poll_status;
10021000
10031001      case 0x13:
r4570r4571
13881386         temp = (data16 & 0x0fff) << 8;
13891387         if (data16 & 0x1000)
13901388         {
1391            memory_install_read16_handler(cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_PROGRAM), temp, temp + 0xff, 0, 0, i186_internal_port_r);
1392            memory_install_write16_handler(cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_PROGRAM), temp, temp + 0xff, 0, 0, i186_internal_port_w);
1389            memory_install_read16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), temp, temp + 0xff, 0, 0, i186_internal_port_r);
1390            memory_install_write16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), temp, temp + 0xff, 0, 0, i186_internal_port_w);
13931391         }
13941392         else
13951393         {
13961394            temp &= 0xffff;
1397            memory_install_read16_handler(cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_IO), temp, temp + 0xff, 0, 0, i186_internal_port_r);
1398            memory_install_write16_handler(cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_IO), temp, temp + 0xff, 0, 0, i186_internal_port_w);
1395            memory_install_read16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_IO), temp, temp + 0xff, 0, 0, i186_internal_port_r);
1396            memory_install_write16_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_IO), temp, temp + 0xff, 0, 0, i186_internal_port_w);
13991397         }
14001398/*         popmessage("Sound CPU reset");*/
14011399         break;
r4570r4571
14341432 *
14351433 *************************************************************/
14361434
1437static PIC8259_SET_INT_LINE( compis_pic8259_master_set_int_line ) {
1438   cpu_set_input_line(device->machine->cpu[0], 0, interrupt ? HOLD_LINE : CLEAR_LINE);
1435static PIC8259_SET_INT_LINE( compis_pic8259_master_set_int_line )
1436{
1437   cputag_set_input_line(device->machine, "maincpu", 0, interrupt ? HOLD_LINE : CLEAR_LINE);
14391438}
14401439
14411440
1442static PIC8259_SET_INT_LINE( compis_pic8259_slave_set_int_line ) {
1443   if ( compis_devices.pic8259_master ) {
1444      pic8259_set_irq_line( compis_devices.pic8259_master, 2, interrupt);
1441static PIC8259_SET_INT_LINE( compis_pic8259_slave_set_int_line )
1442{
1443   if ( compis_devices.pic8259_master )
1444   {
1445      pic8259_set_irq_line(compis_devices.pic8259_master, 2, interrupt);
14451446   }
14461447}
14471448
r4570r4571
14711472DRIVER_INIT( compis )
14721473{
14731474   compis_init( &i82720_interface );
1474   cpu_set_irq_callback(machine->cpu[0], compis_irq_callback);
1475   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), compis_irq_callback);
14751476   memset (&compis, 0, sizeof (compis) );
14761477}
14771478
r4570r4571
14911492   compis_keyb_init();
14921493
14931494   /* OSP PIC 8259 */
1494   cpu_set_irq_callback(machine->cpu[0], compis_irq_callback);
1495   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), compis_irq_callback);
14951496
14961497   compis_devices.pic8259_master = devtag_get_device(machine, "pic8259_master");
14971498   compis_devices.pic8259_slave = devtag_get_device(machine, "pic8259_slave");

Previous 15994 Revisions Next


© 1998-2018 The MESS Team