mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
(MESS) mac: cleanup (nw)
This commit is contained in:
parent
e03c983836
commit
2870d782ad
@ -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<mac_state *>(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))
|
||||
|
||||
|
@ -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<macpci_state *>(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
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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<mac_sound_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<mac_sound_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)
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user