diff --git a/src/mess/drivers/mac.c b/src/mess/drivers/mac.c index 69f03689c84..dd0df204d3a 100644 --- a/src/mess/drivers/mac.c +++ b/src/mess/drivers/mac.c @@ -918,18 +918,6 @@ static const floppy_interface mac_floppy_interface = NULL }; -static const cuda_interface mac_cuda_interface = -{ - DEVCB_DRIVER_LINE_MEMBER(mac_state, cuda_reset_w), - DEVCB_DRIVER_LINE_MEMBER(mac_state, adb_linechange_w) -}; - -static const cuda_interface mac_egret_interface = -{ - DEVCB_DRIVER_LINE_MEMBER(mac_state, cuda_reset_w), - DEVCB_DRIVER_LINE_MEMBER(mac_state, adb_linechange_w) -}; - static MACHINE_CONFIG_START( mac512ke, mac_state ) /* basic machine hardware */ @@ -971,7 +959,7 @@ static MACHINE_CONFIG_START( mac512ke, mac_state ) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) - MCFG_DEVICE_ADD(MACKBD_TAG, MACKBD, 0) + MCFG_MACKBD_ADD() #ifdef MAC_USE_EMULATED_KBD MCFG_MACKBD_DATAOUT_HANDLER(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MCFG_MACKBD_CLKOUT_HANDLER(WRITELINE(mac_state, mac_kbd_clk_in)) @@ -1020,7 +1008,7 @@ static MACHINE_CONFIG_DERIVED( macse, macplus ) MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_bbadb)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) @@ -1029,7 +1017,7 @@ static MACHINE_CONFIG_DERIVED( macse, macplus ) MCFG_RAM_DEFAULT_SIZE("4M") MCFG_RAM_EXTRA_OPTIONS("2M,2560K,4M") - MCFG_DEVICE_REMOVE(MACKBD_TAG) + MCFG_MACKBD_REMOVE() MCFG_MACPDS_BUS_ADD("sepds", "maincpu", macpds_intf) MCFG_MACPDS_SLOT_ADD("sepds", "pds", mac_sepds_cards, NULL) @@ -1044,7 +1032,7 @@ static MACHINE_CONFIG_DERIVED( macclasc, macplus ) MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_bbadb)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) @@ -1053,11 +1041,10 @@ static MACHINE_CONFIG_DERIVED( macclasc, macplus ) MCFG_RAM_DEFAULT_SIZE("4M") MCFG_RAM_EXTRA_OPTIONS("2M,2560K,4M") - MCFG_DEVICE_REMOVE(MACKBD_TAG) + MCFG_MACKBD_REMOVE() MACHINE_CONFIG_END static MACHINE_CONFIG_START( macprtb, mac_state ) - /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, C15M) MCFG_CPU_PROGRAM_MAP(macprtb_map) @@ -1095,10 +1082,10 @@ static MACHINE_CONFIG_START( macprtb, mac_state ) MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(mac_state::set_scc_interrupt), static_cast(owner))) MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360) - MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) - MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a_pmu)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b_pmu)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a_pmu)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_pmu)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) @@ -1150,7 +1137,7 @@ static MACHINE_CONFIG_START( macii, mac_state ) MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_bbadb)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) @@ -1248,6 +1235,9 @@ static MACHINE_CONFIG_DERIVED( maclc, macii ) MCFG_RAM_DEFAULT_SIZE("2M") MCFG_RAM_EXTRA_OPTIONS("4M,6M,8M,10M") + MCFG_DEVICE_MODIFY("via6522_0") + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_egadb)) + MCFG_NUBUS_SLOT_REMOVE("nb9") MCFG_NUBUS_SLOT_REMOVE("nba") MCFG_NUBUS_SLOT_REMOVE("nbb") @@ -1263,7 +1253,11 @@ static MACHINE_CONFIG_DERIVED( maclc, macii ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_EGRET_ADD(EGRET_341S0850, mac_egret_interface) + MCFG_EGRET_ADD(EGRET_341S0850) + MCFG_EGRET_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_EGRET_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_EGRET_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MCFG_QUANTUM_PERFECT_CPU("maincpu") MACHINE_CONFIG_END @@ -1281,7 +1275,14 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( maccclas, maclc2 ) MCFG_EGRET_REMOVE() - MCFG_CUDA_ADD(CUDA_341S0788, mac_cuda_interface) // should be 0417, but that version won't sync up properly with the '030 right now + MCFG_CUDA_ADD(CUDA_341S0788) // should be 0417, but that version won't sync up properly with the '030 right now + MCFG_CUDA_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_CUDA_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_CUDA_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_CUDA_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) + + MCFG_DEVICE_MODIFY("via6522_0") + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_cdadb)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( maclc3, maclc ) @@ -1304,13 +1305,24 @@ static MACHINE_CONFIG_DERIVED( maclc3, maclc ) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - MCFG_EGRET_REPLACE(EGRET_341S0851, mac_egret_interface) + MCFG_EGRET_REPLACE(EGRET_341S0851) + MCFG_EGRET_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_EGRET_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_EGRET_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( maclc520, maclc3 ) MCFG_EGRET_REMOVE() - MCFG_CUDA_ADD(CUDA_341S0060, mac_cuda_interface) + MCFG_CUDA_ADD(CUDA_341S0060) + MCFG_CUDA_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_CUDA_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_CUDA_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_CUDA_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) + + MCFG_DEVICE_MODIFY("via6522_0") + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_cdadb)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( maciivx, maclc ) @@ -1334,7 +1346,11 @@ static MACHINE_CONFIG_DERIVED( maciivx, maclc ) MCFG_RAM_DEFAULT_SIZE("4M") MCFG_RAM_EXTRA_OPTIONS("8M,12M,16M,20M,24M,28M,32M,36M,40M,44M,48M,52M,56M,60M,64M") - MCFG_EGRET_REPLACE(EGRET_341S0851, mac_egret_interface) + MCFG_EGRET_REPLACE(EGRET_341S0851) + MCFG_EGRET_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_EGRET_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_EGRET_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( maciivi, maclc ) @@ -1358,7 +1374,11 @@ static MACHINE_CONFIG_DERIVED( maciivi, maclc ) MCFG_RAM_DEFAULT_SIZE("4M") MCFG_RAM_EXTRA_OPTIONS("8M,12M,16M,20M,24M,28M,32M,36M,40M,44M,48M,52M,56M,60M,64M") - MCFG_EGRET_REPLACE(EGRET_341S0851, mac_egret_interface) + MCFG_EGRET_REPLACE(EGRET_341S0851) + MCFG_EGRET_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_EGRET_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_EGRET_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( maciix, macii ) @@ -1421,7 +1441,7 @@ static MACHINE_CONFIG_START( macse30, mac_state ) MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_bbadb)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) @@ -1479,17 +1499,17 @@ static MACHINE_CONFIG_START( macpb140, mac_state ) MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360) MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) - MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b_via2pmu)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_via2pmu)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360) - MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a)) - MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b)) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b)) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a_pmu)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b_pmu)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a_pmu)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b_pmu)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via2_irq)) /* internal ram */ @@ -1559,17 +1579,17 @@ static MACHINE_CONFIG_START( macpb160, mac_state ) MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360) MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) - MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b_via2pmu)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_via2pmu)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360) - MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a)) - MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b)) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b)) + MCFG_VIA6522_READPA_HANDLER(READ8(mac_state, mac_via2_in_a_pmu)) + MCFG_VIA6522_READPB_HANDLER(READ8(mac_state, mac_via2_in_b_pmu)) + MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via2_out_a_pmu)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via2_out_b_pmu)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via2_irq)) /* internal ram */ @@ -1634,7 +1654,11 @@ static MACHINE_CONFIG_DERIVED( macclas2, maclc ) MCFG_RAM_DEFAULT_SIZE("10M") MCFG_RAM_EXTRA_OPTIONS("2M,4M,6M,8M,10M") - MCFG_EGRET_REPLACE(EGRET_341S0851, mac_egret_interface) + MCFG_EGRET_REPLACE(EGRET_341S0851) + MCFG_EGRET_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_EGRET_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_EGRET_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( maciici, macii ) @@ -1697,7 +1721,14 @@ static MACHINE_CONFIG_DERIVED( maciisi, macii ) MCFG_RAM_DEFAULT_SIZE("2M") MCFG_RAM_EXTRA_OPTIONS("4M,8M,16M,32M,48M,64M,128M") - MCFG_EGRET_ADD(EGRET_344S0100, mac_egret_interface) + MCFG_DEVICE_MODIFY("via6522_0") + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_egadb)) + + MCFG_EGRET_ADD(EGRET_344S0100) + MCFG_EGRET_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_EGRET_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_EGRET_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MCFG_QUANTUM_PERFECT_CPU("maincpu") MACHINE_CONFIG_END @@ -1742,7 +1773,7 @@ static MACHINE_CONFIG_START( pwrmac, mac_state ) MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_cdadb)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) @@ -1758,7 +1789,11 @@ static MACHINE_CONFIG_START( pwrmac, mac_state ) MCFG_RAM_DEFAULT_SIZE("8M") MCFG_RAM_EXTRA_OPTIONS("16M,32M,64M,128M") - MCFG_CUDA_ADD(CUDA_341S0060, mac_cuda_interface) + MCFG_CUDA_ADD(CUDA_341S0060) + MCFG_CUDA_RESET_CALLBACK(WRITELINE(mac_state, cuda_reset_w)) + MCFG_CUDA_LINECHANGE_CALLBACK(WRITELINE(mac_state, adb_linechange_w)) + MCFG_CUDA_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_CUDA_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MACHINE_CONFIG_END static MACHINE_CONFIG_START( macqd700, mac_state ) @@ -1799,7 +1834,7 @@ static MACHINE_CONFIG_START( macqd700, mac_state ) MCFG_VIA6522_READPA_HANDLER(READ8(mac_state,mac_via_in_a)) MCFG_VIA6522_READPB_HANDLER(READ8(mac_state,mac_via_in_b)) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mac_state,mac_via_out_a)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mac_state,mac_via_out_b_bbadb)) MCFG_VIA6522_CB2_HANDLER(WRITELINE(mac_state,mac_adb_via_out_cb2)) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(mac_state,mac_via_irq)) diff --git a/src/mess/drivers/macpci.c b/src/mess/drivers/macpci.c index fba6aa29dd7..94f5edd49dd 100644 --- a/src/mess/drivers/macpci.c +++ b/src/mess/drivers/macpci.c @@ -92,12 +92,6 @@ struct cdrom_interface pippin_cdrom = NULL }; -static const cuda_interface mac_cuda_interface = -{ - DEVCB_DRIVER_LINE_MEMBER(macpci_state, cuda_reset_w), - DEVCB_DRIVER_LINE_MEMBER(macpci_state, cuda_adb_linechange_w) -}; - static MACHINE_CONFIG_START( pippin, macpci_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC603, 66000000) @@ -135,7 +129,11 @@ static MACHINE_CONFIG_START( pippin, macpci_state ) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(macpci_state,mac_via_irq)) // MCFG_SCC8530_ADD("scc", C7M, line_cb_t(FUNC(macpci_state::set_scc_interrupt), static_cast(owner))) - MCFG_CUDA_ADD(CUDA_341S0060, mac_cuda_interface) + MCFG_CUDA_ADD(CUDA_341S0060) + MCFG_CUDA_RESET_CALLBACK(WRITELINE(macpci_state, cuda_reset_w)) + MCFG_CUDA_LINECHANGE_CALLBACK(WRITELINE(macpci_state, cuda_adb_linechange_w)) + MCFG_CUDA_VIA_CLOCK_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb1)) + MCFG_CUDA_VIA_DATA_CALLBACK(DEVWRITELINE("via6522_0", via6522_device, write_cb2)) MCFG_QUANTUM_PERFECT_CPU("maincpu") MACHINE_CONFIG_END diff --git a/src/mess/includes/mac.h b/src/mess/includes/mac.h index e9614f699fc..7ad8d1359a6 100644 --- a/src/mess/includes/mac.h +++ b/src/mess/includes/mac.h @@ -27,7 +27,6 @@ #define MAC_SCREEN_NAME "screen" #define MAC_539X_1_TAG "scsi:539x_1" #define MAC_539X_2_TAG "scsi:539x_2" -#define MACKBD_TAG "mackbd" // uncomment to run i8021 keyboard in orignal Mac/512(e)/Plus //#define MAC_USE_EMULATED_KBD (1) @@ -39,8 +38,6 @@ #define ADB_IS_EGRET_NONCLASS (mac->m_model >= MODEL_MAC_LC && mac->m_model <= MODEL_MAC_CLASSIC_II) || ((mac->m_model >= MODEL_MAC_IISI) && (mac->m_model <= MODEL_MAC_IIVI)) #define ADB_IS_CUDA ((m_model >= MODEL_MAC_COLOR_CLASSIC && m_model <= MODEL_MAC_LC_580) || ((m_model >= MODEL_MAC_QUADRA_660AV) && (m_model <= MODEL_MAC_QUADRA_630)) || (m_model >= MODEL_MAC_POWERMAC_6100)) #define ADB_IS_CUDA_NONCLASS ((mac->m_model >= MODEL_MAC_COLOR_CLASSIC && mac->m_model <= MODEL_MAC_LC_580) || ((mac->m_model >= MODEL_MAC_QUADRA_660AV) && (mac->m_model <= MODEL_MAC_QUADRA_630)) || (mac->m_model >= MODEL_MAC_POWERMAC_6100)) -#define ADB_IS_PM_VIA1 (m_model >= MODEL_MAC_PORTABLE && m_model <= MODEL_MAC_PB100) -#define ADB_IS_PM_VIA2 (m_model >= MODEL_MAC_PB140 && m_model <= MODEL_MAC_PBDUO_270c) #define ADB_IS_PM_VIA1_CLASS (m_model >= MODEL_MAC_PORTABLE && m_model <= MODEL_MAC_PB100) #define ADB_IS_PM_VIA2_CLASS (m_model >= MODEL_MAC_PB140 && m_model <= MODEL_MAC_PBDUO_270c) #define ADB_IS_PM_CLASS ((m_model >= MODEL_MAC_PORTABLE && m_model <= MODEL_MAC_PB100) || (m_model >= MODEL_MAC_PB140 && m_model <= MODEL_MAC_PBDUO_270c)) @@ -203,7 +200,7 @@ public: m_539x_1(*this, MAC_539X_1_TAG), m_539x_2(*this, MAC_539X_2_TAG), m_ncr5380(*this, "scsi:ncr5380"), - m_mackbd(*this, MACKBD_TAG), + m_mackbd(*this, MACKBD_DEFAULT_TAG), m_rtc(*this,"rtc"), m_mouse0(*this, "MOUSE0"), m_mouse1(*this, "MOUSE1"), @@ -519,10 +516,23 @@ public: DECLARE_READ8_MEMBER(mac_via_in_b); DECLARE_WRITE8_MEMBER(mac_via_out_a); DECLARE_WRITE8_MEMBER(mac_via_out_b); + DECLARE_READ8_MEMBER(mac_via_in_a_pmu); + DECLARE_READ8_MEMBER(mac_via_in_b_pmu); + DECLARE_WRITE8_MEMBER(mac_via_out_a_pmu); + DECLARE_WRITE8_MEMBER(mac_via_out_b_pmu); + DECLARE_WRITE8_MEMBER(mac_via_out_b_bbadb); + DECLARE_WRITE8_MEMBER(mac_via_out_b_egadb); + DECLARE_WRITE8_MEMBER(mac_via_out_b_cdadb); + DECLARE_READ8_MEMBER(mac_via_in_b_via2pmu); + DECLARE_WRITE8_MEMBER(mac_via_out_b_via2pmu); DECLARE_READ8_MEMBER(mac_via2_in_a); DECLARE_READ8_MEMBER(mac_via2_in_b); DECLARE_WRITE8_MEMBER(mac_via2_out_a); DECLARE_WRITE8_MEMBER(mac_via2_out_b); + DECLARE_READ8_MEMBER(mac_via2_in_a_pmu); + DECLARE_READ8_MEMBER(mac_via2_in_b_pmu); + DECLARE_WRITE8_MEMBER(mac_via2_out_a_pmu); + DECLARE_WRITE8_MEMBER(mac_via2_out_b_pmu); DECLARE_WRITE_LINE_MEMBER(mac_kbd_clk_in); void mac_state_load(); DECLARE_WRITE_LINE_MEMBER(mac_via_irq); diff --git a/src/mess/machine/mac.c b/src/mess/machine/mac.c index 7e15236c912..c3690f9c0aa 100644 --- a/src/mess/machine/mac.c +++ b/src/mess/machine/mac.c @@ -1185,13 +1185,6 @@ READ8_MEMBER(mac_state::mac_via_in_a) switch (m_model) { - case MODEL_MAC_PORTABLE: - case MODEL_MAC_PB100: - #if LOG_ADB -// printf("Read PM data %x\n", m_pm_data_recv); - #endif - return m_pm_data_recv; - case MODEL_MAC_CLASSIC: case MODEL_MAC_II: case MODEL_MAC_II_FDHD: @@ -1244,57 +1237,55 @@ READ8_MEMBER(mac_state::mac_via_in_a) return 0x80; } +READ8_MEMBER(mac_state::mac_via_in_a_pmu) +{ +// printf("VIA1 IN_A (PC %x)\n", m_maincpu->safe_pc()); + + #if LOG_ADB +// printf("Read PM data %x\n", m_pm_data_recv); + #endif + return m_pm_data_recv; +} + READ8_MEMBER(mac_state::mac_via_in_b) { int val = 0; - // portable/PB100 is pretty different - if (m_model >= MODEL_MAC_PORTABLE && m_model <= MODEL_MAC_PB100) + /* video beam in display (! VBLANK && ! HBLANK basically) */ + if (machine().primary_screen) { -// printf("Read VIA B: PM_ACK %x\n", m_pm_ack); - val = 0x80 | 0x04 | m_pm_ack; // SCC wait/request (bit 2 must be set at 900c1a or startup tests always fail) + if (machine().primary_screen->vpos() >= MAC_V_VIS) + val |= 0x40; + } + + if (ADB_IS_BITBANG_CLASS) + { + val |= m_adb_state<<4; + + if (!m_adb_irq_pending) + { + val |= 0x08; + } + + val |= m_rtc->data_r(); + } + else if (ADB_IS_EGRET) + { + val |= m_egret->get_xcvr_session()<<3; + } + else if (ADB_IS_CUDA) + { + val |= m_cuda->get_treq()<<3; } else { - /* video beam in display (! VBLANK && ! HBLANK basically) */ - if (machine().primary_screen) - { - if (machine().primary_screen->vpos() >= MAC_V_VIS) - val |= 0x40; - } + if (m_mouse_bit_y) /* Mouse Y2 */ + val |= 0x20; + if (m_mouse_bit_x) /* Mouse X2 */ + val |= 0x10; + if ((m_mouse0->read() & 0x01) == 0) + val |= 0x08; - if (ADB_IS_BITBANG_CLASS) - { - val |= m_adb_state<<4; - - if (!m_adb_irq_pending) - { - val |= 0x08; - } - - val |= m_rtc->data_r(); - } - else if (ADB_IS_EGRET) - { - val |= m_egret->get_xcvr_session()<<3; - } - else if (ADB_IS_CUDA) - { - val |= m_cuda->get_treq()<<3; - } - else - { - if (m_mouse_bit_y) /* Mouse Y2 */ - val |= 0x20; - if (m_mouse_bit_x) /* Mouse X2 */ - val |= 0x10; - if ((m_mouse0->read() & 0x01) == 0) - val |= 0x08; - - if (!ADB_IS_PM_CLASS) - { - val |= m_rtc->data_r(); - } - } + val |= m_rtc->data_r(); } // printf("VIA1 IN_B = %02x (PC %x)\n", val, m_maincpu->safe_pc()); @@ -1302,21 +1293,39 @@ READ8_MEMBER(mac_state::mac_via_in_b) return val; } +READ8_MEMBER(mac_state::mac_via_in_b_via2pmu) +{ + int val = 0; + // TODO: is this valid for VIA2 PMU machines? + /* video beam in display (! VBLANK && ! HBLANK basically) */ + if (machine().primary_screen) + { + if (machine().primary_screen->vpos() >= MAC_V_VIS) + val |= 0x40; + } + +// printf("VIA1 IN_B = %02x (PC %x)\n", val, m_maincpu->safe_pc()); + + return val; +} + +READ8_MEMBER(mac_state::mac_via_in_b_pmu) +{ + int val = 0; +// printf("Read VIA B: PM_ACK %x\n", m_pm_ack); + val = 0x80 | 0x04 | m_pm_ack; // SCC wait/request (bit 2 must be set at 900c1a or startup tests always fail) + +// printf("VIA1 IN_B = %02x (PC %x)\n", val, m_maincpu->safe_pc()); + + return val; +} + WRITE8_MEMBER(mac_state::mac_via_out_a) { mac_sound_device *sound = machine().device("custom"); device_t *fdc = machine().device("fdc"); // printf("VIA1 OUT A: %02x (PC %x)\n", data, m_maincpu->safe_pc()); - if (ADB_IS_PM_VIA1) - { - #if LOG_ADB -// printf("%02x to PM\n", data); - #endif - m_pm_data_send = data; - return; - } - set_scc_waitrequest((data & 0x80) >> 7); m_screen_buffer = (data & 0x40) >> 6; sony_set_sel_line(fdc,(data & 0x20) >> 5); @@ -1344,80 +1353,36 @@ WRITE8_MEMBER(mac_state::mac_via_out_a) } } +WRITE8_MEMBER(mac_state::mac_via_out_a_pmu) +{ +// printf("VIA1 OUT A: %02x (PC %x)\n", data, m_maincpu->safe_pc()); + + #if LOG_ADB +// printf("%02x to PM\n", data); + #endif + m_pm_data_send = data; + return; +} + WRITE8_MEMBER(mac_state::mac_via_out_b) { mac_sound_device *sound = machine().device("custom"); // printf("VIA1 OUT B: %02x (PC %x)\n", data, m_maincpu->safe_pc()); - if (ADB_IS_PM_VIA1) - { - device_t *fdc = machine().device("fdc"); - - sony_set_sel_line(fdc,(data & 0x20) >> 5); - m_drive_select = ((data & 0x10) >> 4); - - if ((data & 1) && !(m_pm_req & 1)) - { - #if LOG_ADB - printf("PM: 68k dropping /REQ\n"); - #endif - - if (m_pm_state == 0) // do this in receive state only - { - m_pm_data_recv = 0xff; - m_pm_ack |= 2; - - // check if length byte matches - if ((m_pm_dptr >= 2) && (m_pm_cmd[1] == (m_pm_dptr-2))) - { - pmu_exec(); - #if LOG_ADB - printf("PMU exec: command %02x length %d\n", m_pm_cmd[0], m_pm_cmd[1]); - #endif - } - } - } - else if (!(data & 1) && (m_pm_req & 1)) - { - if (m_pm_state == 0) - { - #if LOG_ADB - printf("PM: 68k asserting /REQ, clocking in byte [%d] = %02x\n", m_pm_dptr, m_pm_data_send); - #endif - m_pm_ack &= ~2; // clear, we're waiting for more bytes - m_pm_cmd[m_pm_dptr++] = m_pm_data_send; - } - else // receiving, so this is different - { - m_pm_data_recv = m_pm_out[m_pm_sptr++]; - m_pm_slen--; - m_pm_ack |= 2; // raise ACK to indicate available byte - #if LOG_ADB - printf("PM: 68k asserted /REQ, sending byte %02x\n", m_pm_data_recv); - #endif - - // another byte to send? - if (m_pm_slen) - { - m_pmu_send_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); - } - else - { - m_pm_state = 0; // back to receive state - m_pmu_send_timer->adjust(attotime::never); - } - } - } - - m_pm_req = data & 1; - return; - } - if (AUDIO_IS_CLASSIC) { sound->enable_sound((data & 0x80) == 0); } + m_rtc->ce_w((data & 0x04)>>2); + m_rtc->data_w(data & 0x01); + m_rtc->clk_w((data >> 1) & 0x01); +} + +WRITE8_MEMBER(mac_state::mac_via_out_b_bbadb) +{ +// printf("VIA1 OUT B: %02x (PC %x)\n", data, m_maincpu->safe_pc()); + // SE and Classic have SCSI enable/disable here if ((m_model == MODEL_MAC_SE) || (m_model == MODEL_MAC_CLASSIC)) { @@ -1437,36 +1402,103 @@ WRITE8_MEMBER(mac_state::mac_via_out_b) } } - if (ADB_IS_BITBANG_CLASS) - { - mac_adb_newaction((data & 0x30) >> 4); + mac_adb_newaction((data & 0x30) >> 4); - m_rtc->ce_w((data & 0x04)>>2); - m_rtc->data_w(data & 0x01); - m_rtc->clk_w((data >> 1) & 0x01); - } - else if (ADB_IS_EGRET) + m_rtc->ce_w((data & 0x04)>>2); + m_rtc->data_w(data & 0x01); + m_rtc->clk_w((data >> 1) & 0x01); +} + +WRITE8_MEMBER(mac_state::mac_via_out_b_egadb) +{ +// printf("VIA1 OUT B: %02x (PC %x)\n", data, m_maincpu->safe_pc()); + + #if LOG_ADB + printf("68K: New Egret state: SS %d VF %d (PC %x)\n", (data>>5)&1, (data>>4)&1, space.device().safe_pc()); + #endif + m_egret->set_via_full((data&0x10) ? 1 : 0); + m_egret->set_sys_session((data&0x20) ? 1 : 0); +} + +WRITE8_MEMBER(mac_state::mac_via_out_b_cdadb) +{ +// printf("VIA1 OUT B: %02x (PC %x)\n", data, m_maincpu->safe_pc()); + + #if LOG_ADB + printf("68K: New Cuda state: TIP %d BYTEACK %d (PC %x)\n", (data>>5)&1, (data>>4)&1, space.device().safe_pc()); + #endif + m_cuda->set_byteack((data&0x10) ? 1 : 0); + m_cuda->set_tip((data&0x20) ? 1 : 0); +} + +WRITE8_MEMBER(mac_state::mac_via_out_b_via2pmu) +{ +// printf("VIA1 OUT B: %02x (PC %x)\n", data, m_maincpu->safe_pc()); +} + +WRITE8_MEMBER(mac_state::mac_via_out_b_pmu) +{ +// printf("VIA1 OUT B: %02x (PC %x)\n", data, m_maincpu->safe_pc()); + + device_t *fdc = machine().device("fdc"); + + sony_set_sel_line(fdc,(data & 0x20) >> 5); + m_drive_select = ((data & 0x10) >> 4); + + if ((data & 1) && !(m_pm_req & 1)) { #if LOG_ADB - printf("68K: New Egret state: SS %d VF %d (PC %x)\n", (data>>5)&1, (data>>4)&1, space.device().safe_pc()); + printf("PM: 68k dropping /REQ\n"); #endif - m_egret->set_via_full((data&0x10) ? 1 : 0); - m_egret->set_sys_session((data&0x20) ? 1 : 0); + + if (m_pm_state == 0) // do this in receive state only + { + m_pm_data_recv = 0xff; + m_pm_ack |= 2; + + // check if length byte matches + if ((m_pm_dptr >= 2) && (m_pm_cmd[1] == (m_pm_dptr-2))) + { + pmu_exec(); + #if LOG_ADB + printf("PMU exec: command %02x length %d\n", m_pm_cmd[0], m_pm_cmd[1]); + #endif + } + } } - else if (ADB_IS_CUDA) + else if (!(data & 1) && (m_pm_req & 1)) { - #if LOG_ADB - printf("68K: New Cuda state: TIP %d BYTEACK %d (PC %x)\n", (data>>5)&1, (data>>4)&1, space.device().safe_pc()); - #endif - m_cuda->set_byteack((data&0x10) ? 1 : 0); - m_cuda->set_tip((data&0x20) ? 1 : 0); - } - else if (!ADB_IS_PM_CLASS) - { - m_rtc->ce_w((data & 0x04)>>2); - m_rtc->data_w(data & 0x01); - m_rtc->clk_w((data >> 1) & 0x01); + if (m_pm_state == 0) + { + #if LOG_ADB + printf("PM: 68k asserting /REQ, clocking in byte [%d] = %02x\n", m_pm_dptr, m_pm_data_send); + #endif + m_pm_ack &= ~2; // clear, we're waiting for more bytes + m_pm_cmd[m_pm_dptr++] = m_pm_data_send; + } + else // receiving, so this is different + { + m_pm_data_recv = m_pm_out[m_pm_sptr++]; + m_pm_slen--; + m_pm_ack |= 2; // raise ACK to indicate available byte + #if LOG_ADB + printf("PM: 68k asserted /REQ, sending byte %02x\n", m_pm_data_recv); + #endif + + // another byte to send? + if (m_pm_slen) + { + m_pmu_send_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); + } + else + { + m_pm_state = 0; // back to receive state + m_pmu_send_timer->adjust(attotime::never); + } + } } + + m_pm_req = data & 1; } WRITE_LINE_MEMBER(mac_state::mac_via_irq) @@ -1508,7 +1540,7 @@ WRITE16_MEMBER ( mac_state::mac_via_w ) } /* ************************************************************************* - * VIA 2 (on Mac IIs and PowerMacs) + * VIA 2 (on Mac IIs, PowerBooks > 100, and PowerMacs) * *************************************************************************/ WRITE_LINE_MEMBER(mac_state::mac_via2_irq) @@ -1549,11 +1581,8 @@ WRITE16_MEMBER ( mac_state::mac_via2_w ) READ8_MEMBER(mac_state::mac_via2_in_a) { UINT8 result; - if (ADB_IS_PM_VIA2) - { - result = m_pm_data_recv; - } - else if ((m_model == MODEL_MAC_QUADRA_700) || (m_model == MODEL_MAC_QUADRA_900) || (m_model == MODEL_MAC_QUADRA_950)) + + if ((m_model == MODEL_MAC_QUADRA_700) || (m_model == MODEL_MAC_QUADRA_900) || (m_model == MODEL_MAC_QUADRA_950)) { result = 0x80 | m_nubus_irq_state; } @@ -1565,22 +1594,15 @@ READ8_MEMBER(mac_state::mac_via2_in_a) return result; } +READ8_MEMBER(mac_state::mac_via2_in_a_pmu) +{ + return m_pm_data_recv; +} + READ8_MEMBER(mac_state::mac_via2_in_b) { // logerror("VIA2 IN B (PC %x)\n", m_maincpu->safe_pc()); - if (ADB_IS_PM_VIA2) - { - if (m_pm_ack == 2) - { - return 0xcf; - } - else - { - return 0xcd; - } - } - if ((m_model == MODEL_MAC_LC) || (m_model == MODEL_MAC_LC_II) || (m_model == MODEL_MAC_CLASSIC_II)) { return 0x4f; @@ -1594,83 +1616,37 @@ READ8_MEMBER(mac_state::mac_via2_in_b) return 0xcf; // indicate no NuBus transaction error } +READ8_MEMBER(mac_state::mac_via2_in_b_pmu) +{ +// logerror("VIA2 IN B (PC %x)\n", m_maincpu->safe_pc()); + + if (m_pm_ack == 2) + { + return 0xcf; + } + else + { + return 0xcd; + } +} + WRITE8_MEMBER(mac_state::mac_via2_out_a) { // logerror("VIA2 OUT A: %02x (PC %x)\n", data, m_maincpu->safe_pc()); - if (ADB_IS_PM_VIA2) - { - m_pm_data_send = data; - return; - } +} + +WRITE8_MEMBER(mac_state::mac_via2_out_a_pmu) +{ +// logerror("VIA2 OUT A: %02x (PC %x)\n", data, m_maincpu->safe_pc()); + m_pm_data_send = data; } WRITE8_MEMBER(mac_state::mac_via2_out_b) { // logerror("VIA2 OUT B: %02x (PC %x)\n", data, m_maincpu->safe_pc()); - if (ADB_IS_PM_VIA2) - { - if ((data & 4) && !(m_pm_req & 4)) - { - #if LOG_ADB - printf("PM: 68k dropping /REQ\n"); - #endif - - if (m_pm_state == 0) // do this in receive state only - { - m_pm_data_recv = 0xff; - m_pm_ack |= 2; - - // check if length byte matches - if ((m_pm_dptr >= 2) && (m_pm_cmd[1] == (m_pm_dptr-2))) - { - pmu_exec(); - #if LOG_ADB - printf("PMU exec: command %02x length %d\n", m_pm_cmd[0], m_pm_cmd[1]); - #endif - } - } - } - else if (!(data & 4) && (m_pm_req & 4)) - { - if (m_pm_state == 0) - { - #if LOG_ADB - printf("PM: 68k asserting /REQ, clocking in byte [%d] = %02x\n", m_pm_dptr, m_pm_data_send); - #endif - m_pm_ack &= ~2; // clear, we're waiting for more bytes - m_pm_cmd[m_pm_dptr++] = m_pm_data_send; - } - else // receiving, so this is different - { - m_pm_data_recv = m_pm_out[m_pm_sptr++]; - m_pm_slen--; - m_pm_ack |= 2; // raise ACK to indicate available byte - #if LOG_ADB - printf("PM: 68k asserted /REQ, sending byte %02x\n", m_pm_data_recv); - #endif - - // another byte to send? - if (m_pm_slen) - { - m_pmu_send_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); - } - else - { - m_pm_state = 0; // back to receive state - m_pmu_send_timer->adjust(attotime::never); - } - } - } - - m_pm_req = data & 4; - return; - } - else - { - // chain 60.15 Hz to VIA1 - m_via1->write_ca1(data>>7); - } + // chain 60.15 Hz to VIA1 + m_via1->write_ca1(data>>7); if (m_model == MODEL_MAC_II) { @@ -1679,6 +1655,66 @@ WRITE8_MEMBER(mac_state::mac_via2_out_b) } } +WRITE8_MEMBER(mac_state::mac_via2_out_b_pmu) +{ +// logerror("VIA2 OUT B PMU: %02x (PC %x)\n", data, m_maincpu->pc()); + + if ((data & 4) && !(m_pm_req & 4)) + { + #if LOG_ADB + printf("PM: 68k dropping /REQ\n"); + #endif + + if (m_pm_state == 0) // do this in receive state only + { + m_pm_data_recv = 0xff; + m_pm_ack |= 2; + + // check if length byte matches + if ((m_pm_dptr >= 2) && (m_pm_cmd[1] == (m_pm_dptr-2))) + { + pmu_exec(); + #if LOG_ADB + printf("PMU exec: command %02x length %d\n", m_pm_cmd[0], m_pm_cmd[1]); + #endif + } + } + } + else if (!(data & 4) && (m_pm_req & 4)) + { + if (m_pm_state == 0) + { + #if LOG_ADB + printf("PM: 68k asserting /REQ, clocking in byte [%d] = %02x\n", m_pm_dptr, m_pm_data_send); + #endif + m_pm_ack &= ~2; // clear, we're waiting for more bytes + m_pm_cmd[m_pm_dptr++] = m_pm_data_send; + } + else // receiving, so this is different + { + m_pm_data_recv = m_pm_out[m_pm_sptr++]; + m_pm_slen--; + m_pm_ack |= 2; // raise ACK to indicate available byte + #if LOG_ADB + printf("PM: 68k asserted /REQ, sending byte %02x\n", m_pm_data_recv); + #endif + + // another byte to send? + if (m_pm_slen) + { + m_pmu_send_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); + } + else + { + m_pm_state = 0; // back to receive state + m_pmu_send_timer->adjust(attotime::never); + } + } + } + + m_pm_req = data & 4; +} + // This signal is generated internally on RBV, V8, Sonora, VASP, Eagle, etc. TIMER_CALLBACK_MEMBER(mac_state::mac_6015_tick) { @@ -1704,7 +1740,6 @@ void mac_state::machine_start() this->m_adb_timer->adjust(attotime::never); m_pmu_int_status = 0; } - } if (machine().primary_screen) diff --git a/src/mess/machine/mackbd.h b/src/mess/machine/mackbd.h index 31d28deec32..01a7effa9cc 100644 --- a/src/mess/machine/mackbd.h +++ b/src/mess/machine/mackbd.h @@ -11,6 +11,17 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** +#define MACKBD_DEFAULT_TAG "mackbd" + +#define MCFG_MACKBD_ADD() \ + MCFG_DEVICE_ADD(MACKBD_DEFAULT_TAG, MACKBD, 0) + +#define MCFG_MACKBD_REPLACE() \ + MCFG_DEVICE_REPLACE(MACKBD_DEFAULT_TAG, MACKBD, 0) + +#define MCFG_MACKBD_REMOVE() \ + MCFG_DEVICE_REMOVE(MACKBD_DEFAULT_TAG) + #define MCFG_MACKBD_CLKOUT_HANDLER(_devcb) \ devcb = &mackbd_device::set_clkout_handler(*device, DEVCB2_##_devcb);