// license:BSD-3-Clause
// copyright-holders:Nathan Woods, Raphael Nabet, R. Belmont
/****************************************************************************
drivers/mac.c
Macintosh family emulation
Nate Woods, Raphael Nabet, R. Belmont
0x000000 - 0x3fffff RAM/ROM (switches based on overlay)
0x400000 - 0x4fffff ROM
0x580000 - 0x5fffff 5380 NCR/Symbios SCSI peripherals chip (Mac Plus only)
0x600000 - 0x6fffff RAM
0x800000 - 0x9fffff Zilog 8530 SCC (Serial Control Chip) Read
0xa00000 - 0xbfffff Zilog 8530 SCC (Serial Control Chip) Write
0xc00000 - 0xdfffff IWM (Integrated Woz Machine; floppy)
0xe80000 - 0xefffff Rockwell 6522 VIA
0xf00000 - 0xffffef ??? (the ROM appears to be accessing here)
0xfffff0 - 0xffffff Auto Vector
Interrupts:
M68K:
Level 1 from VIA
Level 2 from SCC
Level 4 : Interrupt switch (not implemented)
VIA:
CA1 from VBLANK
CA2 from 1 Hz clock (RTC)
CB1 from Keyboard Clock
CB2 from Keyboard Data
SR from Keyboard Data Ready
SCC:
PB_EXT from mouse Y circuitry
PA_EXT from mouse X circuitry
NOTES:
- pmac6100: with recent PPC fixes now gets into the 68000 emulator and executes part of the 680x0 startup code.
'g 6802c73c' to get to the interesting part (wait past the boot chime). PPC register r24 is the 68000 PC.
when the PC hits GetCPUID, the move.l (a2), d0 at PC = 0x10000 will cause an MMU fault (jump to 0xFFF00300). why?
a2 = 0x5ffffffc (the CPU ID register). MMU is unable to resolve this; defect in the MMU emulation probable.
****************************************************************************/
#include "emu.h"
#include "includes/mac.h"
#include "cpu/m68000/m68000.h"
#include "cpu/powerpc/ppc.h"
#include "cpu/m6805/m6805.h"
#include "machine/applefdc.h"
#include "machine/swim.h"
#include "machine/sonydriv.h"
#include "formats/ap_dsk35.h"
#include "bus/scsi/scsi.h"
#include "bus/scsi/scsihd.h"
#include "bus/scsi/scsicd.h"
#include "sound/volt_reg.h"
// NuBus and 030/040 PDS cards
#include "bus/nubus/nubus_48gc.h"
#include "bus/nubus/nubus_cb264.h"
#include "bus/nubus/nubus_vikbw.h"
#include "bus/nubus/nubus_specpdq.h"
#include "bus/nubus/nubus_m2hires.h"
#include "bus/nubus/nubus_spec8.h"
#include "bus/nubus/nubus_radiustpd.h"
#include "bus/nubus/nubus_wsportrait.h"
#include "bus/nubus/nubus_asntmc3b.h"
#include "bus/nubus/nubus_image.h"
#include "bus/nubus/nubus_m2video.h"
#include "bus/nubus/bootbug.h"
#include "bus/nubus/quadralink.h"
#include "bus/nubus/pds30_cb264.h"
#include "bus/nubus/pds30_procolor816.h"
#include "bus/nubus/pds30_sigmalview.h"
#include "bus/nubus/pds30_30hr.h"
#include "bus/nubus/pds30_mc30.h"
// 68000 PDS cards
#include "bus/macpds/pds_tpdfpd.h"
#include "machine/macadb.h"
#include "softlist.h"
#include "speaker.h"
#include "mac.lh"
#define C7M (7833600)
#define C15M (C7M*2)
#define C32M (C15M*2)
// do this here - screen_update is called each scanline when stepping in the
// debugger, which means you can't escape the VIA2 IRQ handler
//
// RBV/MDU bits in IER/IFR:
//
// CA1: any slot interrupt = 0x02
// CA2: SCSI interrupt = 0x01
// CB1: ASC interrupt = 0x10
WRITE_LINE_MEMBER(mac_state::mac_rbv_vbl)
{
if (!state)
return;
m_rbv_regs[2] &= ~0x40; // set vblank signal
m_rbv_vbltime = 10;
// printf("RBV: raising VBL!\n");
if (m_rbv_regs[0x12] & 0x40)
{
rbv_recalc_irqs();
}
}
READ32_MEMBER( mac_state::rbv_ramdac_r )
{
return 0;
}
WRITE32_MEMBER( mac_state::rbv_ramdac_w )
{
if (!offset)
{
m_rbv_clutoffs = data>>24;
m_rbv_count = 0;
}
else
{
m_rbv_colors[m_rbv_count++] = data>>24;
if (m_rbv_count == 3)
{
// for portrait display, force monochrome by using the blue channel
if (m_model != MODEL_MAC_CLASSIC_II)
{
// Color Classic has no MONTYPE so the default gets us 512x384, which is right
if (m_montype.read_safe(2) == 1)
{
m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
}
else
{
m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
}
}
}
}
}
WRITE32_MEMBER( mac_state::ariel_ramdac_w ) // this is for the "Ariel" style RAMDAC
{
if (mem_mask == 0xff000000)
{
m_rbv_clutoffs = data>>24;
m_rbv_count = 0;
}
else if (mem_mask == 0x00ff0000)
{
m_rbv_colors[m_rbv_count++] = data>>16;
if (m_rbv_count == 3)
{
// for portrait display, force monochrome by using the blue channel
if (m_model != MODEL_MAC_CLASSIC_II)
{
// Color Classic has no MONTYPE so the default gets us 512x384, which is right
if (m_montype.read_safe(2) == 1)
{
m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
}
else
{
m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]));
m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[0], m_rbv_colors[1], m_rbv_colors[2]);
m_rbv_clutoffs++;
m_rbv_count = 0;
}
}
}
}
else if (mem_mask == 0x0000ff00)
{
// config reg
// printf("Ariel: %02x to config\n", (data>>8)&0xff);
}
else // color key reg
{
}
}
READ8_MEMBER( mac_state::mac_sonora_vctl_r )
{
if (offset == 2)
{
// printf("Sonora: read monitor ID at PC=%x\n", m_maincpu->pc());
return (m_montype.read_safe(6)<<4);
}
return m_sonora_vctl[offset];
}
WRITE8_MEMBER( mac_state::mac_sonora_vctl_w )
{
// printf("Sonora: %02x to vctl %x\n", data, offset);
m_sonora_vctl[offset] = data;
}
void mac_state::rbv_recalc_irqs()
{
// check slot interrupts and bubble them down to IFR
uint8_t slot_irqs = (~m_rbv_regs[2]) & 0x78;
slot_irqs &= (m_rbv_regs[0x12] & 0x78);
if (slot_irqs)
{
m_rbv_regs[3] |= 2; // any slot
}
else // no slot irqs, clear the pending bit
{
m_rbv_regs[3] &= ~2; // any slot
}
uint8_t ifr = (m_rbv_regs[3] & m_rbv_ier) & 0x1b; //m_rbv_regs[0x13]);
// printf("ifr = %02x (reg3 %02x reg13 %02x)\n", ifr, m_rbv_regs[3], m_rbv_regs[0x13]);
if (ifr != 0)
{
m_rbv_regs[3] = ifr | 0x80;
m_rbv_ifr = ifr | 0x80;
// printf("VIA2 raise\n");
set_via2_interrupt(1);
}
else
{
// printf("VIA2 lower\n");
set_via2_interrupt(0);
}
}
READ8_MEMBER ( mac_state::mac_rbv_r )
{
int data = 0;
if (offset < 0x100)
{
data = m_rbv_regs[offset];
if (offset == 0x10)
{
data &= ~0x38;
data |= (m_montype.read_safe(2)<<3);
// printf("%s rbv_r montype: %02x\n", machine().describe_context().c_str(), data);
}
// bit 7 of these registers always reads as 0 on RBV
if ((offset == 0x12) || (offset == 0x13))
{
data &= ~0x80;
}
}
else
{
offset >>= 9;
switch (offset)
{
case 13: // IFR
// printf("Read IER = %02x (PC=%x) 2=%02x\n", m_rbv_ier, m_maincpu->pc(), m_rbv_regs[2]);
data = m_rbv_ifr;
break;
case 14: // IER
// printf("Read IFR = %02x (PC=%x) 2=%02x\n", m_rbv_ifr, m_maincpu->pc(), m_rbv_regs[2]);
data = m_rbv_ier;
break;
default:
logerror("rbv_r: Unknown extended RBV VIA register %d access\n", offset);
break;
}
}
// printf("rbv_r: %x = %02x (PC=%x)\n", offset, data, m_maincpu->pc());
return data;
}
WRITE8_MEMBER ( mac_state::mac_rbv_w )
{
if (offset < 0x100)
{
// if (offset == 0x10)
// printf("rbv_w: %02x to offset %x (PC=%x)\n", data, offset, m_maincpu->pc());
switch (offset)
{
case 0x00:
if (m_model == MODEL_MAC_LC)
{
m68000_base_device *m68k = downcast<m68000_base_device *>(m_maincpu.target());
m68k->set_hmmu_enable((data & 0x8) ? M68K_HMMU_DISABLE : M68K_HMMU_ENABLE_LC);
}
break;
case 0x01:
if (((data & 0xc0) != (m_rbv_regs[1] & 0xc0)) && (m_rbv_type == RBV_TYPE_V8))
{
m_rbv_regs[1] = data;
this->v8_resize();
}
break;
case 0x02:
data &= 0x40;
m_rbv_regs[offset] &= ~data;
rbv_recalc_irqs();
break;
case 0x03: // write here to ack
if (data & 0x80) // 1 bits write 1s
{
m_rbv_regs[offset] |= data & 0x7f;
m_rbv_ifr |= data & 0x7f;
}
else // 1 bits write 0s
{
m_rbv_regs[offset] &= ~(data & 0x7f);
m_rbv_ifr &= ~(data & 0x7f);
}
rbv_recalc_irqs();
break;
case 0x10:
if (data != 0)
{
m_rbv_immed10wr = 1;
}
m_rbv_regs[offset] = data;
break;
case 0x12:
if (data & 0x80) // 1 bits write 1s
{
m_rbv_regs[offset] |= data & 0x7f;
}
else // 1 bits write 0s
{
m_rbv_regs[offset] &= ~(data & 0x7f);
}
rbv_recalc_irqs();
break;
case 0x13:
if (data & 0x80) // 1 bits write 1s
{
m_rbv_regs[offset] |= data & 0x7f;
if (data == 0xff) m_rbv_regs[offset] = 0x1f; // I don't know why this is special, but the IIci ROM's POST demands it
}
else // 1 bits write 0s
{
m_rbv_regs[offset] &= ~(data & 0x7f);
}
break;
default:
m_rbv_regs[offset] = data;
break;
}
}
else
{
offset >>= 9;
switch (offset)
{
case 13: // IFR
// printf("%02x to IFR (PC=%x)\n", data, m_maincpu->pc());
if (data & 0x80)
{
data = 0x7f;
}
rbv_recalc_irqs();
break;
case 14: // IER
// printf("%02x to IER (PC=%x)\n", data, m_maincpu->pc());
if (data & 0x80) // 1 bits write 1s
{
m_rbv_ier |= data & 0x7f;
}
else // 1 bits write 0s
{
m_rbv_ier &= ~(data & 0x7f);
}
rbv_recalc_irqs();
break;
default:
logerror("rbv_w: Unknown extended RBV VIA register %d access\n", offset);
break;
}
}
}
// Portable/PB100 video
VIDEO_START_MEMBER(mac_state,macprtb)
{
}
READ16_MEMBER(mac_state::mac_config_r)
{
return 0xffff; // returns nonzero if no PDS RAM expansion, 0 if present
}
// IIfx
READ32_MEMBER(mac_state::biu_r)
{
// printf("biu_r @ %x, mask %08x\n", offset, mem_mask);
return 0;
}
WRITE32_MEMBER(mac_state::biu_w)
{
// printf("biu_w %x @ %x, mask %08x\n", data, offset, mem_mask);
}
READ8_MEMBER(mac_state::oss_r)
{
// printf("oss_r @ %x\n", offset);
// if (offset <= 0xe) // for interrupt mask registers, we're intended to return something different than is written in the low 3 bits (?)
// {
// return m_oss_regs[offset]<<4;
// }
return m_oss_regs[offset];
}
WRITE8_MEMBER(mac_state::oss_w)
{
// printf("oss_w %x @ %x\n", data, offset);
m_oss_regs[offset] = data;
}
READ32_MEMBER(mac_state::buserror_r)
{
m_maincpu->set_input_line(M68K_LINE_BUSERROR, ASSERT_LINE);
m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE);
return 0;
}
READ8_MEMBER(mac_state::scciop_r)
{
// printf("scciop_r @ %x (PC=%x)\n", offset, m_maincpu->pc());
return 0;
}
WRITE8_MEMBER(mac_state::scciop_w)
{
// printf("scciop_w %x @ %x (PC=%x)\n", data, offset, m_maincpu->pc());
}
READ8_MEMBER(mac_state::swimiop_r)
{
// printf("swimiop_r @ %x (PC=%x)\n", offset, m_maincpu->pc());
return 0;
}
WRITE8_MEMBER(mac_state::swimiop_w)
{
// printf("swimiop_w %x @ %x (PC=%x)\n", data, offset, m_maincpu->pc());
}
READ8_MEMBER(mac_state::pmac_diag_r)
{
switch (offset)
{
case 0: // return 0 here to get the 'car crash' sound after the boot bong, 1 otherwise
return 1;
}
return 0;
}
READ8_MEMBER(mac_state::amic_dma_r)
{
return 0;
}
WRITE8_MEMBER(mac_state::amic_dma_w)
{
// printf("amic_dma_w: %02x at %x (PC=%x)\n", data, offset+0x1000, m_maincpu->pc());
}
// HMC has one register: a 35-bit shift register which is accessed one bit at a time (see pmac6100 code at 4030383c which makes this obvious)
READ8_MEMBER(mac_state::hmc_r)
{
uint8_t rv = (uint8_t)(m_hmc_shiftout&1);
m_hmc_shiftout>>= 1;
return rv;
}
WRITE8_MEMBER(mac_state::hmc_w)
{
// writes to xxx8 reset the bit shift position
if ((offset&0x8) == 8)
{
m_hmc_shiftout = m_hmc_reg;
}
else
{
uint64_t temp = (data & 1) ? 0x400000000U : 0x0U;
m_hmc_reg >>= 1;
m_hmc_reg |= temp;
}
}
READ8_MEMBER(mac_state::mac_gsc_r)
{
if (offset == 1)
{
return 5;
}
return 0;
}
WRITE8_MEMBER(mac_state::mac_gsc_w)
{
}
READ8_MEMBER(mac_state::mac_5396_r)
{
if (offset < 0x100)
{
return m_539x_1->read(space, offset>>4);
}
else // pseudo-DMA: read from the FIFO
{
return m_539x_1->read(space, 2);
}
// never executed
//return 0;
}
WRITE8_MEMBER(mac_state::mac_5396_w)
{
if (offset < 0x100)
{
m_539x_1->write(space, offset>>4, data);
}
else // pseudo-DMA: write to the FIFO
{
m_539x_1->write(space, 2, data);
}
}
#define MAC_MAIN_SND_BUF_OFFSET 0x0300
#define MAC_ALT_SND_BUF_OFFSET 0x5F00
TIMER_DEVICE_CALLBACK_MEMBER(mac_state::mac_scanline)
{
int scanline = param;
uint16_t *mac_snd_buf_ptr;
if (m_main_buffer)
{
mac_snd_buf_ptr = (uint16_t *)(m_ram->pointer() + m_ram->size() - MAC_MAIN_SND_BUF_OFFSET);
}
else
{
mac_snd_buf_ptr = (uint16_t *)(m_ram->pointer() + m_ram->size() - MAC_ALT_SND_BUF_OFFSET);
}
m_dac->write(mac_snd_buf_ptr[scanline] >> 8);
}
/***************************************************************************
ADDRESS MAPS
***************************************************************************/
void mac_state::mac512ke_map(address_map &map)
{
map(0x800000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r));
map(0xa00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w));
map(0xc00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w));
}
void mac_state::macplus_map(address_map &map)
{
map(0x580000, 0x5fffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w));
map(0x800000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r));
map(0xa00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w));
map(0xc00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w));
}
void mac_state::macse_map(address_map &map)
{
map(0x580000, 0x5fffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w));
map(0x900000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r));
map(0xb00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w));
map(0xd00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w));
}
void mac_state::macprtb_map(address_map &map)
{
map(0x900000, 0x93ffff).rom().region("bootrom", 0).mirror(0x0c0000);
map(0xf60000, 0xf6ffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
map(0xf70000, 0xf7ffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
map(0xf90000, 0xf9ffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w));
map(0xfa8000, 0xfaffff).ram().share("vram16"); // VRAM
map(0xfb0000, 0xfbffff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
map(0xfc0000, 0xfcffff).r(this, FUNC(mac_state::mac_config_r));
map(0xfd0000, 0xfdffff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w));
}
void mac_state::maclc_map(address_map &map)
{
map.global_mask(0x80ffffff); // V8 uses bit 31 and 23-0 for address decoding only
map(0xa00000, 0xafffff).rom().region("bootrom", 0); // ROM (in 32-bit mode)
map(0xf00000, 0xf01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
map(0xf04000, 0xf05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
map(0xf06000, 0xf07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
map(0xf10000, 0xf11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w));
map(0xf12000, 0xf13fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
map(0xf14000, 0xf15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
map(0xf16000, 0xf17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
map(0xf24000, 0xf24003).rw(this, FUNC(mac_state::rbv_ramdac_r), FUNC(mac_state::ariel_ramdac_w));
map(0xf26000, 0xf27fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)); // VIA2 (V8)
map(0xf40000, 0xfbffff).ram().share("vram");
}
void mac_state::maclc3_map(address_map &map)
{
map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
map(0x50012000, 0x50013fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
map(0x50024000, 0x50025fff).w(this, FUNC(mac_state::ariel_ramdac_w)).mirror(0x00f00000);
map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)).mirror(0x00f00000);
map(0x50028000, 0x50028003).rw(this, FUNC(mac_state::mac_sonora_vctl_r), FUNC(mac_state::mac_sonora_vctl_w)).mirror(0x00f00000);
map(0x5ffffffc, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id));
map(0x60000000, 0x600fffff).ram().mirror(0x0ff00000).share("vram");
}
void mac_state::macii_map(address_map &map)
{
map(0x40000000, 0x4003ffff).rom().region("bootrom", 0).mirror(0x0ffc0000);
// MMU remaps I/O without the F
map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000);
map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
map(0x50006000, 0x50006003).w(this, FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
map(0x50006060, 0x50006063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
}
void mac_state::maciici_map(address_map &map)
{
map(0x40000000, 0x4007ffff).rom().region("bootrom", 0).mirror(0x0ff80000);
map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
map(0x50024000, 0x50024007).w(this, FUNC(mac_state::rbv_ramdac_w)).mirror(0x00f00000);
map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)).mirror(0x00f00000);
map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
}
void mac_state::macse30_map(address_map &map)
{
map(0x40000000, 0x4003ffff).rom().region("bootrom", 0).mirror(0x0ffc0000);
map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000);
map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); // mirror
map(0xfe000000, 0xfe00ffff).ram().share("vram");
map(0xfee00000, 0xfee0ffff).ram().share("vram").mirror(0x000f0000);
map(0xfeffe000, 0xfeffffff).rom().region("se30vrom", 0x0);
}
void mac_state::maciifx_map(address_map &map)
{
map(0x40000000, 0x4007ffff).rom().region("bootrom", 0).mirror(0x0ff80000);
map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::scciop_r), FUNC(mac_state::scciop_w)).mirror(0x00f00000);
map(0x5000a000, 0x5000bfff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
map(0x5000c060, 0x5000c063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
map(0x5000d000, 0x5000d003).w(this, FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000);
map(0x5000d060, 0x5000d063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000);
map(0x50010000, 0x50011fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000);
map(0x50012000, 0x50013fff).rw(this, FUNC(mac_state::swimiop_r), FUNC(mac_state::swimiop_w)).mirror(0x00f00000);
map(0x50018000, 0x50019fff).rw(this, FUNC(mac_state::biu_r), FUNC(mac_state::biu_w)).mirror(0x00f00000);
map(0x5001a000, 0x5001bfff).rw(this, FUNC(mac_state::oss_r), FUNC(mac_state::oss_w)).mirror(0x00f00000);
map(0x50024000, 0x50027fff).r(this, FUNC(mac_state::buserror_r)).mirror(0x00f00000); // must bus error on access here so ROM can determine we're an FMC
map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
}
// ROM detects the "Jaws" ASIC by checking for I/O space mirrored at 0x01000000 boundries
void mac_state::macpb140_map(address_map &map)
{
map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x01f00000);
map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x01f00000);
map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x01f00000);
map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x01f00000);
map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x01f00000);
map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x01f00000);
map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x01f00000);
map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x01f00000);
map(0x50024000, 0x50027fff).r(this, FUNC(mac_state::buserror_r)).mirror(0x01f00000); // bus error here to make sure we aren't mistaken for another decoder
map(0xfee08000, 0xfeffffff).ram().share("vram");
}
void mac_state::macpb160_map(address_map &map)
{
map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w));
map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w));
map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r));
map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
map(0x50f20000, 0x50f21fff).rw(this, FUNC(mac_state::mac_gsc_r), FUNC(mac_state::mac_gsc_w));
map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder
map(0x60000000, 0x6001ffff).ram().share("vram").mirror(0x0ffe0000);
}
void mac_state::macpb165c_map(address_map &map)
{
map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w));
map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w));
map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r));
map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
map(0x50f20000, 0x50f21fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to detect we're not the grayscale 160/165/180
map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder
// on-board color video on 165c/180c
map(0xfc000000, 0xfc07ffff).ram().share("vram").mirror(0x00380000); // 512k of VRAM
map(0xfc400000, 0xfcefffff).rw(this, FUNC(mac_state::macwd_r), FUNC(mac_state::macwd_w));
// fc4003c8 = DAC control, fc4003c9 = DAC data
// fc4003da bit 3 is VBL
map(0xfcff8000, 0xfcffffff).rom().region("vrom", 0x0000);
}
void mac_state::macpd210_map(address_map &map)
{
map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w));
map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w));
map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w));
map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w));
map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w));
map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r));
map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write));
map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w));
map(0x50f20000, 0x50f21fff).rw(this, FUNC(mac_state::mac_gsc_r), FUNC(mac_state::mac_gsc_w));
map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder
map(0x5ffffffc, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id));
map(0x60000000, 0x6001ffff).ram().share("vram").mirror(0x0ffe0000);
}
void mac_state::quadra700_map(address_map &map)
{
map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000);
map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00fc0000);
map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00fc0000);
// 50008000 = Ethernet MAC ID PROM
// 5000a000 = Sonic (DP83932) ethernet
// 5000f000 = SCSI cf96, 5000f402 = SCSI #2 cf96
map(0x5000f000, 0x5000f3ff).rw(this, FUNC(mac_state::mac_5396_r), FUNC(mac_state::mac_5396_w)).mirror(0x00fc0000);
map(0x5000c000, 0x5000dfff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00fc0000);
map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00fc0000);
map(0x5001e000, 0x5001ffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00fc0000);
// f9800000 = VDAC / DAFB
map(0xf9000000, 0xf91fffff).ram().share("vram");
map(0xf9800000, 0xf98001ff).rw(this, FUNC(mac_state::dafb_r), FUNC(mac_state::dafb_w));
map(0xf9800200, 0xf980023f).rw(this, FUNC(mac_state::dafb_dac_r), FUNC(mac_state::dafb_dac_w));
}
void mac_state::pwrmac_map(address_map &map)
{
map(0x00000000, 0x007fffff).ram(); // 8 MB standard
map(0x40000000, 0x403fffff).rom().region("bootrom", 0).mirror(0x0fc00000);
map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000);
map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000);
// 50008000 = ethernet ID PROM
// 5000a000 = MACE ethernet controller
map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000);
// 50014000 = sound registers (AWACS)
map(0x50014000, 0x50015fff).rw(m_awacs, FUNC(awacs_device::read), FUNC(awacs_device::write)).mirror(0x01f00000);
map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000);
map(0x50024000, 0x50025fff).w(this, FUNC(mac_state::ariel_ramdac_w)).mirror(0x00f00000);
map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000);
map(0x50028000, 0x50028007).rw(this, FUNC(mac_state::mac_sonora_vctl_r), FUNC(mac_state::mac_sonora_vctl_w)).mirror(0x00f00000);
// 5002a000 = interrupt controller
// 5002c000 = diagnostic registers
map(0x5002c000, 0x5002dfff).r(this, FUNC(mac_state::pmac_diag_r)).mirror(0x00f00000);
map(0x50031000, 0x50032fff).rw(this, FUNC(mac_state::amic_dma_r), FUNC(mac_state::amic_dma_w)).mirror(0x00f00000);
map(0x50040000, 0x5004000f).rw(this, FUNC(mac_state::hmc_r), FUNC(mac_state::hmc_w)).mirror(0x00f00000);
map(0x5ffffff8, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id));
map(0xffc00000, 0xffffffff).rom().region("bootrom", 0);
}
/***************************************************************************
DEVICE CONFIG
***************************************************************************/
static const applefdc_interface mac_iwm_interface =
{
sony_set_lines,
mac_fdc_set_enable_lines,
sony_read_data,
sony_write_data,
sony_read_status
};
static void mac_nubus_cards(device_slot_interface &device)
{
device.option_add("m2video", NUBUS_M2VIDEO); /* Apple Macintosh II Video Card */
device.option_add("48gc", NUBUS_48GC); /* Apple 4*8 Graphics Card */
device.option_add("824gc", NUBUS_824GC); /* Apple 8*24 Graphics Card */
device.option_add("cb264", NUBUS_CB264); /* RasterOps ColorBoard 264 */
device.option_add("vikbw", NUBUS_VIKBW); /* Moniterm Viking board */
device.option_add("image", NUBUS_IMAGE); /* Disk Image Pseudo-Card */
device.option_add("specpdq", NUBUS_SPECPDQ); /* SuperMac Spectrum PDQ */
device.option_add("m2hires", NUBUS_M2HIRES); /* Apple Macintosh II Hi-Resolution Card */
device.option_add("spec8s3", NUBUS_SPEC8S3); /* SuperMac Spectrum/8 Series III */
// device.option_add("thundergx", NUBUS_THUNDERGX); /* Radius Thunder GX (not yet) */
device.option_add("radiustpd", NUBUS_RADIUSTPD); /* Radius Two Page Display */
device.option_add("asmc3nb", NUBUS_ASNTMC3NB); /* Asante MC3NB Ethernet card */
device.option_add("portrait", NUBUS_WSPORTRAIT); /* Apple Macintosh II Portrait video card */
device.option_add("enetnb", NUBUS_APPLEENET); /* Apple NuBus Ethernet */
device.option_add("bootbug", NUBUS_BOOTBUG); /* Brigent BootBug debugger card */
device.option_add("quadralink", NUBUS_QUADRALINK); /* AE Quadralink serial card */
}
static void mac_pds030_cards(device_slot_interface &device)
{
device.option_add("cb264", PDS030_CB264SE30); // RasterOps Colorboard 264/SE30
device.option_add("pc816", PDS030_PROCOLOR816); // Lapis ProColor Server 8*16 PDS
device.option_add("lview", PDS030_LVIEW); // Sigma Designs L-View
device.option_add("30hr", PDS030_XCEED30HR); // Micron/XCEED Technology Color 30HR
device.option_add("mc30", PDS030_XCEEDMC30); // Micron/XCEED Technology MacroColor 30
}
static void mac_sepds_cards(device_slot_interface &device)
{
device.option_add("radiusfpd", PDS_SEDISPLAY); // Radius Full Page Display card for SE
}
static void mac_lcpds_cards(device_slot_interface &device)
{
}
/***************************************************************************
MACHINE DRIVERS
***************************************************************************/
static const floppy_interface mac_floppy_interface =
{
FLOPPY_STANDARD_3_5_DSHD,
LEGACY_FLOPPY_OPTIONS_NAME(apple35_mac),
"floppy_3_5"
};
MACHINE_CONFIG_START(mac_state::mac512ke)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, C7M) /* 7.8336 MHz */
MCFG_DEVICE_PROGRAM_MAP(mac512ke_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_RAW_PARAMS(C7M*2, MAC_H_TOTAL, 0, MAC_H_VIS, MAC_V_TOTAL, 0, MAC_V_VIS)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_mac)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 2)
MCFG_PALETTE_INIT_OWNER(mac_state,mac)
MCFG_VIDEO_START_OVERRIDE(mac_state,mac)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mac_state, mac_scanline, "screen", 0, 1)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_8BIT_PWM, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // 2 x ls161
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
/* devices */
MCFG_RTC3430042_ADD("rtc", XTAL(32'768))
MCFG_IWM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
MCFG_MACKBD_ADD(MACKBD_TAG)
#ifdef MAC_USE_EMULATED_KBD
MCFG_MACKBD_DATAOUT_HANDLER(WRITELINE("via6522_0", via6522_device, write_cb2))
MCFG_MACKBD_CLKOUT_HANDLER(WRITELINE(*this, mac_state, mac_kbd_clk_in))
#endif
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("512K")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macplus)
mac512ke(config);
MCFG_DEVICE_MODIFY( "maincpu" )
MCFG_DEVICE_PROGRAM_MAP(macplus_map)
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac_state, mac_scsi_irq))
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_MODIFY(mac_floppy_interface)
/* internal ram */
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("1M,2M,2560K,4M")
// software list
MCFG_SOFTWARE_LIST_ADD("flop35_list","mac_flop")
MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macse)
macplus(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(macse_map)
MCFG_DEVICE_REMOVE("via6522_0")
MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_bbadb))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
/* internal ram */
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("2M,2560K,4M")
MCFG_MACKBD_REMOVE(MACKBD_TAG)
MCFG_MACPDS_BUS_ADD("sepds", "maincpu")
MCFG_MACPDS_SLOT_ADD("sepds", "pds", mac_sepds_cards, nullptr)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macclasc)
macplus(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(macse_map)
MCFG_DEVICE_REMOVE("via6522_0")
MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_bbadb))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
/* internal ram */
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("2M,2560K,4M")
MCFG_MACKBD_REMOVE(MACKBD_TAG)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macprtb)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68000, C15M)
MCFG_DEVICE_PROGRAM_MAP(macprtb_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
/* video hardware */
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_REFRESH_RATE(60.15)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1260))
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_SIZE(700, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macprtb)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 2)
MCFG_PALETTE_INIT_OWNER(mac_state,mac)
MCFG_VIDEO_START_OVERRIDE(mac_state,macprtb)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* devices */
MCFG_RTC3430042_ADD("rtc", XTAL(32'768))
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac_state, mac_scsi_irq))
MCFG_IWM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a_pmu))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b_pmu))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a_pmu))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_pmu))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("1M")
MCFG_RAM_EXTRA_OPTIONS("1M,3M,5M,7M,9M")
// software list
MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macii)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68020PMMU, C15M)
MCFG_DEVICE_PROGRAM_MAP(macii_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* devices */
MCFG_RTC3430042_ADD("rtc", XTAL(32'768))
MCFG_DEVICE_ADD("nubus", NUBUS, 0)
MCFG_NUBUS_CPU("maincpu")
MCFG_NUBUS_OUT_IRQ9_CB(WRITELINE(*this, mac_state, nubus_irq_9_w))
MCFG_NUBUS_OUT_IRQA_CB(WRITELINE(*this, mac_state, nubus_irq_a_w))
MCFG_NUBUS_OUT_IRQB_CB(WRITELINE(*this, mac_state, nubus_irq_b_w))
MCFG_NUBUS_OUT_IRQC_CB(WRITELINE(*this, mac_state, nubus_irq_c_w))
MCFG_NUBUS_OUT_IRQD_CB(WRITELINE(*this, mac_state, nubus_irq_d_w))
MCFG_NUBUS_OUT_IRQE_CB(WRITELINE(*this, mac_state, nubus_irq_e_w))
MCFG_NUBUS_SLOT_ADD("nubus","nb9", mac_nubus_cards, "48gc")
MCFG_NUBUS_SLOT_ADD("nubus","nba", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbb", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbc", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbd", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbe", mac_nubus_cards, nullptr)
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE3, "cdrom", SCSICD, SCSI_ID_4)
MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac_state, mac_scsi_irq))
MCFG_IWM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, C7M/10)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b_ii))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_bbadb))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
MCFG_DEVICE_ADD("via6522_1", VIA6522, C7M/10)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state, mac_via2_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state, mac_via2_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via2_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via2_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via2_irq))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("8M,32M,64M,96M,128M")
// software list
MCFG_SOFTWARE_LIST_ADD("flop35_list","mac_flop")
MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maciihmu)
macii(config);
MCFG_DEVICE_REPLACE("maincpu", M68020HMMU, C15M)
MCFG_DEVICE_PROGRAM_MAP(macii_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maciifx)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68030, 40000000)
MCFG_DEVICE_PROGRAM_MAP(maciifx_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* devices */
MCFG_RTC3430042_ADD("rtc", XTAL(32'768))
MCFG_DEVICE_ADD("nubus", NUBUS, 0)
MCFG_NUBUS_CPU("maincpu")
MCFG_NUBUS_OUT_IRQ9_CB(WRITELINE(*this, mac_state, nubus_irq_9_w))
MCFG_NUBUS_OUT_IRQA_CB(WRITELINE(*this, mac_state, nubus_irq_a_w))
MCFG_NUBUS_OUT_IRQB_CB(WRITELINE(*this, mac_state, nubus_irq_b_w))
MCFG_NUBUS_OUT_IRQC_CB(WRITELINE(*this, mac_state, nubus_irq_c_w))
MCFG_NUBUS_OUT_IRQD_CB(WRITELINE(*this, mac_state, nubus_irq_d_w))
MCFG_NUBUS_OUT_IRQE_CB(WRITELINE(*this, mac_state, nubus_irq_e_w))
MCFG_NUBUS_SLOT_ADD("nubus","nb9", mac_nubus_cards, "48gc")
MCFG_NUBUS_SLOT_ADD("nubus","nba", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbb", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbc", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbd", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbe", mac_nubus_cards, nullptr)
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac_state, mac_scsi_irq))
MCFG_IWM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, C7M/10)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b_ii))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("8M,16M,32M,64M,96M,128M")
// software list
MCFG_SOFTWARE_LIST_ADD("flop35_list","mac_flop")
MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maclc)
macii(config);
MCFG_DEVICE_REPLACE("maincpu", M68020HMMU, C15M)
MCFG_DEVICE_PROGRAM_MAP(maclc_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(256)
MCFG_VIDEO_START_OVERRIDE(mac_state,macv8)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macrbv)
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
MCFG_SCREEN_SIZE(1024,768)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macv8)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mac_state, mac_rbv_vbl))
MCFG_DEFAULT_LAYOUT(layout_mac)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("4M,6M,8M,10M")
MCFG_DEVICE_MODIFY("via6522_0")
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_egadb))
MCFG_NUBUS_SLOT_REMOVE("nb9")
MCFG_NUBUS_SLOT_REMOVE("nba")
MCFG_NUBUS_SLOT_REMOVE("nbb")
MCFG_NUBUS_SLOT_REMOVE("nbc")
MCFG_NUBUS_SLOT_REMOVE("nbd")
MCFG_NUBUS_SLOT_REMOVE("nbe")
MCFG_DEVICE_REMOVE("nubus")
MCFG_DEVICE_ADD("pds", NUBUS, 0)
MCFG_NUBUS_CPU("maincpu")
MCFG_NUBUS_OUT_IRQ9_CB(WRITELINE(*this, mac_state, nubus_irq_9_w))
MCFG_NUBUS_OUT_IRQA_CB(WRITELINE(*this, mac_state, nubus_irq_a_w))
MCFG_NUBUS_OUT_IRQB_CB(WRITELINE(*this, mac_state, nubus_irq_b_w))
MCFG_NUBUS_OUT_IRQC_CB(WRITELINE(*this, mac_state, nubus_irq_c_w))
MCFG_NUBUS_OUT_IRQD_CB(WRITELINE(*this, mac_state, nubus_irq_d_w))
MCFG_NUBUS_OUT_IRQE_CB(WRITELINE(*this, mac_state, nubus_irq_e_w))
MCFG_NUBUS_SLOT_ADD("pds","lcpds", mac_lcpds_cards, nullptr)
MCFG_ASC_REPLACE("asc", C15M, V8, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_EGRET_ADD(EGRET_341S0850)
MCFG_EGRET_RESET_CALLBACK(WRITELINE(*this, mac_state, cuda_reset_w))
MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_EGRET_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_EGRET_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MCFG_QUANTUM_PERFECT_CPU("maincpu")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maclc2)
maclc(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, C15M)
MCFG_DEVICE_PROGRAM_MAP(maclc_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("6M,8M,10M")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maccclas)
maclc2(config);
MCFG_EGRET_REMOVE()
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(*this, mac_state, cuda_reset_w))
MCFG_CUDA_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_CUDA_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_CUDA_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MCFG_DEVICE_MODIFY("via6522_0")
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_cdadb))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maclc3)
maclc(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, 25000000)
MCFG_DEVICE_PROGRAM_MAP(maclc3_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_VIDEO_START_OVERRIDE(mac_state,macsonora)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macsonora)
MCFG_SCREEN_MODIFY(MAC_SCREEN_NAME)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macsonora)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("8M,16M,32M,48M,64M,80M")
MCFG_ASC_REPLACE("asc", C15M, SONORA, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_EGRET_REPLACE(EGRET_341S0851)
MCFG_EGRET_RESET_CALLBACK(WRITELINE(*this, mac_state, cuda_reset_w))
MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_EGRET_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_EGRET_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maclc520)
maclc3(config);
MCFG_EGRET_REMOVE()
MCFG_CUDA_ADD(CUDA_341S0060)
MCFG_CUDA_RESET_CALLBACK(WRITELINE(*this, mac_state, cuda_reset_w))
MCFG_CUDA_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_CUDA_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_CUDA_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MCFG_DEVICE_MODIFY("via6522_0")
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_cdadb))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maciivx)
maclc(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, C32M)
MCFG_DEVICE_PROGRAM_MAP(maclc3_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_VIDEO_START_OVERRIDE(mac_state,macv8)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macrbv)
MCFG_SCREEN_MODIFY(MAC_SCREEN_NAME)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbvvram)
MCFG_DEVICE_ADD("nubus", NUBUS, 0)
MCFG_NUBUS_CPU("maincpu")
MCFG_NUBUS_OUT_IRQ9_CB(WRITELINE(*this, mac_state, nubus_irq_9_w))
MCFG_NUBUS_OUT_IRQA_CB(WRITELINE(*this, mac_state, nubus_irq_a_w))
MCFG_NUBUS_OUT_IRQB_CB(WRITELINE(*this, mac_state, nubus_irq_b_w))
MCFG_NUBUS_OUT_IRQC_CB(WRITELINE(*this, mac_state, nubus_irq_c_w))
MCFG_NUBUS_OUT_IRQD_CB(WRITELINE(*this, mac_state, nubus_irq_d_w))
MCFG_NUBUS_OUT_IRQE_CB(WRITELINE(*this, mac_state, nubus_irq_e_w))
MCFG_NUBUS_SLOT_ADD("nubus","nbc", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbd", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbe", mac_nubus_cards, nullptr)
MCFG_RAM_MODIFY(RAM_TAG)
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)
MCFG_EGRET_RESET_CALLBACK(WRITELINE(*this, mac_state, cuda_reset_w))
MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_EGRET_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_EGRET_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maciivi)
maclc(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, C15M)
MCFG_DEVICE_PROGRAM_MAP(maclc3_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_VIDEO_START_OVERRIDE(mac_state,macv8)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macrbv)
MCFG_SCREEN_MODIFY(MAC_SCREEN_NAME)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbvvram)
MCFG_DEVICE_ADD("nubus", NUBUS, 0)
MCFG_NUBUS_CPU("maincpu")
MCFG_NUBUS_OUT_IRQ9_CB(WRITELINE(*this, mac_state, nubus_irq_9_w))
MCFG_NUBUS_OUT_IRQA_CB(WRITELINE(*this, mac_state, nubus_irq_a_w))
MCFG_NUBUS_OUT_IRQB_CB(WRITELINE(*this, mac_state, nubus_irq_b_w))
MCFG_NUBUS_OUT_IRQC_CB(WRITELINE(*this, mac_state, nubus_irq_c_w))
MCFG_NUBUS_OUT_IRQD_CB(WRITELINE(*this, mac_state, nubus_irq_d_w))
MCFG_NUBUS_OUT_IRQE_CB(WRITELINE(*this, mac_state, nubus_irq_e_w))
MCFG_NUBUS_SLOT_ADD("nubus","nbc", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbd", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbe", mac_nubus_cards, nullptr)
MCFG_RAM_MODIFY(RAM_TAG)
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)
MCFG_EGRET_RESET_CALLBACK(WRITELINE(*this, mac_state, cuda_reset_w))
MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_EGRET_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_EGRET_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maciix)
macii(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, C15M)
MCFG_DEVICE_PROGRAM_MAP(macii_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("8M,32M,64M,96M,128M")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maciicx) // IIcx is a IIx with only slots 9/a/b
maciix(config);
MCFG_NUBUS_SLOT_REMOVE("nbc")
MCFG_NUBUS_SLOT_REMOVE("nbd")
MCFG_NUBUS_SLOT_REMOVE("nbe")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macse30)
MCFG_DEVICE_ADD("maincpu", M68030, C15M)
MCFG_DEVICE_PROGRAM_MAP(macse30_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
/* video hardware */
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_REFRESH_RATE(60.15)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1260))
MCFG_SCREEN_SIZE(MAC_H_TOTAL, MAC_V_TOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, MAC_H_VIS-1, 0, MAC_V_VIS-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macse30)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 2)
MCFG_PALETTE_INIT_OWNER(mac_state,mac)
MCFG_VIDEO_START_OVERRIDE(mac_state,mac)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* devices */
MCFG_RTC3430042_ADD("rtc", XTAL(32'768))
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac_state, mac_scsi_irq))
MCFG_DEVICE_ADD("pds", NUBUS, 0)
MCFG_NUBUS_CPU("maincpu")
MCFG_NUBUS_OUT_IRQ9_CB(WRITELINE(*this, mac_state, nubus_irq_9_w))
MCFG_NUBUS_OUT_IRQA_CB(WRITELINE(*this, mac_state, nubus_irq_a_w))
MCFG_NUBUS_OUT_IRQB_CB(WRITELINE(*this, mac_state, nubus_irq_b_w))
MCFG_NUBUS_OUT_IRQC_CB(WRITELINE(*this, mac_state, nubus_irq_c_w))
MCFG_NUBUS_OUT_IRQD_CB(WRITELINE(*this, mac_state, nubus_irq_d_w))
MCFG_NUBUS_OUT_IRQE_CB(WRITELINE(*this, mac_state, nubus_irq_e_w))
MCFG_NUBUS_SLOT_ADD("pds","pds030", mac_pds030_cards, nullptr)
MCFG_SWIM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_bbadb))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state, mac_via2_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state, mac_via2_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via2_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via2_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via2_irq))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("8M,16M,32M,48M,64M,96M,128M")
MCFG_SOFTWARE_LIST_ADD("flop35_list","mac_flop")
MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macpb140)
MCFG_DEVICE_ADD("maincpu", M68030, C15M)
MCFG_DEVICE_PROGRAM_MAP(macpb140_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
/* video hardware */
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_REFRESH_RATE(60.15)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1260))
MCFG_SCREEN_SIZE(700, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macpb140)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 2)
MCFG_PALETTE_INIT_OWNER(mac_state,mac)
MCFG_VIDEO_START_OVERRIDE(mac_state,macprtb)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* devices */
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac_state, mac_scsi_irq))
MCFG_SWIM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b_via2pmu))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_via2pmu))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state, mac_via2_in_a_pmu))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state, mac_via2_in_b_pmu))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via2_out_a_pmu))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via2_out_b_pmu))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via2_irq))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("4M,6M,8M")
MCFG_SOFTWARE_LIST_ADD("flop35_list","mac_flop")
MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
MACHINE_CONFIG_END
// PowerBook 145 = 140 @ 25 MHz (still 2MB RAM - the 145B upped that to 4MB)
MACHINE_CONFIG_START(mac_state::macpb145)
macpb140(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, 25000000)
MCFG_DEVICE_PROGRAM_MAP(macpb140_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("6M,8M")
MACHINE_CONFIG_END
// PowerBook 170 = 140 @ 25 MHz with an active-matrix LCD (140/145/145B were passive)
MACHINE_CONFIG_START(mac_state::macpb170)
macpb140(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, 25000000)
MCFG_DEVICE_PROGRAM_MAP(macpb140_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("6M,8M")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macpb160)
MCFG_DEVICE_ADD("maincpu", M68030, 25000000)
MCFG_DEVICE_PROGRAM_MAP(macpb160_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
/* video hardware */
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_REFRESH_RATE(60.15)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1260))
MCFG_SCREEN_SIZE(700, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 399)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macpb160)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 16)
MCFG_PALETTE_INIT_OWNER(mac_state,macgsc)
MCFG_VIDEO_START_OVERRIDE(mac_state,macprtb)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_ASC_ADD("asc", C15M, ASC, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* devices */
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac_state, mac_scsi_irq))
MCFG_SWIM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b_via2pmu))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_via2pmu))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state, mac_via2_in_a_pmu))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state, mac_via2_in_b_pmu))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via2_out_a_pmu))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via2_out_b_pmu))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via2_irq))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("8M,12M,16M")
MCFG_SOFTWARE_LIST_ADD("flop35_list","mac_flop")
MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macpb180)
macpb160(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, 33000000)
MCFG_DEVICE_PROGRAM_MAP(macpb160_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("8M,12M,16M")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macpb180c)
macpb160(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, 33000000)
MCFG_DEVICE_PROGRAM_MAP(macpb165c_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_SCREEN_MODIFY(MAC_SCREEN_NAME)
MCFG_SCREEN_SIZE(800, 525)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macpbwd)
MCFG_SCREEN_NO_PALETTE
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("8M,12M,16M")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macpd210)
macpb160(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, 25000000)
MCFG_DEVICE_PROGRAM_MAP(macpd210_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("8M,12M,16M,20M,24M")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macclas2)
maclc(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, C15M)
MCFG_DEVICE_PROGRAM_MAP(maclc_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_VIDEO_START_OVERRIDE(mac_state,macv8)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,maceagle)
MCFG_SCREEN_MODIFY(MAC_SCREEN_NAME)
MCFG_SCREEN_SIZE(MAC_H_TOTAL, MAC_V_TOTAL)
MCFG_SCREEN_VISIBLE_AREA(0, MAC_H_VIS-1, 0, MAC_V_VIS-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbv)
MCFG_ASC_REPLACE("asc", C15M, EAGLE, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("10M")
MCFG_RAM_EXTRA_OPTIONS("2M,4M,6M,8M,10M")
MCFG_EGRET_REPLACE(EGRET_341S0851)
MCFG_EGRET_RESET_CALLBACK(WRITELINE(*this, mac_state, cuda_reset_w))
MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_EGRET_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_EGRET_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maciici)
macii(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, 25000000)
MCFG_DEVICE_PROGRAM_MAP(maciici_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(256)
// IIci only has slots c/d/e
MCFG_NUBUS_SLOT_REMOVE("nb9")
MCFG_NUBUS_SLOT_REMOVE("nba")
MCFG_NUBUS_SLOT_REMOVE("nbb")
MCFG_VIDEO_START_OVERRIDE(mac_state,macrbv)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macrbv)
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
MCFG_SCREEN_SIZE(640, 870)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbv)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mac_state, mac_rbv_vbl))
MCFG_DEFAULT_LAYOUT(layout_mac)
/* internal ram */
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("4M,8M,16M,32M,48M,64M,128M")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::maciisi)
macii(config);
MCFG_DEVICE_REPLACE("maincpu", M68030, 20000000)
MCFG_DEVICE_PROGRAM_MAP(maciici_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(256)
MCFG_NUBUS_SLOT_REMOVE("nb9")
MCFG_NUBUS_SLOT_REMOVE("nba")
MCFG_NUBUS_SLOT_REMOVE("nbb")
MCFG_NUBUS_SLOT_REMOVE("nbc")
MCFG_NUBUS_SLOT_REMOVE("nbd")
MCFG_NUBUS_SLOT_REMOVE("nbe")
MCFG_DEVICE_REMOVE("nubus")
MCFG_VIDEO_START_OVERRIDE(mac_state,macrbv)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macrbv)
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
MCFG_SCREEN_SIZE(640, 870)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbv)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mac_state, mac_rbv_vbl))
MCFG_DEFAULT_LAYOUT(layout_mac)
/* internal ram */
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("4M,8M,16M,32M,48M,64M,128M")
MCFG_DEVICE_MODIFY("via6522_0")
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_egadb))
MCFG_EGRET_ADD(EGRET_344S0100)
MCFG_EGRET_RESET_CALLBACK(WRITELINE(*this, mac_state, cuda_reset_w))
MCFG_EGRET_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_EGRET_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_EGRET_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MCFG_QUANTUM_PERFECT_CPU("maincpu")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::pwrmac)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", PPC601, 60000000)
MCFG_DEVICE_PROGRAM_MAP(pwrmac_map)
/* video hardware */
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
// dot clock, htotal, hstart, hend, vtotal, vstart, vend
MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_SIZE(1024, 768)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbv)
MCFG_PALETTE_ADD("palette", 256)
MCFG_VIDEO_START_OVERRIDE(mac_state,macsonora)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macrbv)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_AWACS_ADD("awacs", 44100)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* devices */
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac_state, mac_scsi_irq))
MCFG_IWM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_cdadb))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
MCFG_DEVICE_ADD("via6522_1", VIA6522, 783360)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state, mac_via2_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state, mac_via2_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via2_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via2_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via2_irq))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("8M")
MCFG_RAM_EXTRA_OPTIONS("16M,32M,64M,128M")
MCFG_CUDA_ADD(CUDA_341S0060)
MCFG_CUDA_RESET_CALLBACK(WRITELINE(*this, mac_state, cuda_reset_w))
MCFG_CUDA_LINECHANGE_CALLBACK(WRITELINE(*this, mac_state, adb_linechange_w))
MCFG_CUDA_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
MCFG_CUDA_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mac_state::macqd700)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M68040, 25000000)
MCFG_DEVICE_PROGRAM_MAP(quadra700_map)
MCFG_DEVICE_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override)
MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
MCFG_SCREEN_REFRESH_RATE(75.08)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(1260))
MCFG_SCREEN_SIZE(1152, 870)
MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 870-1)
MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macdafb)
MCFG_VIDEO_START_OVERRIDE(mac_state,macdafb)
MCFG_VIDEO_RESET_OVERRIDE(mac_state,macdafb)
MCFG_PALETTE_ADD("palette", 256)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_ASC_ADD("asc", C15M, EASC, WRITELINE(*this, mac_state, mac_asc_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
/* devices */
MCFG_RTC3430042_ADD("rtc", XTAL(32'768))
MCFG_DEVICE_ADD("nubus", NUBUS, 0)
MCFG_NUBUS_CPU("maincpu")
MCFG_NUBUS_OUT_IRQ9_CB(WRITELINE(*this, mac_state, nubus_irq_9_w))
MCFG_NUBUS_OUT_IRQA_CB(WRITELINE(*this, mac_state, nubus_irq_a_w))
MCFG_NUBUS_OUT_IRQB_CB(WRITELINE(*this, mac_state, nubus_irq_b_w))
MCFG_NUBUS_OUT_IRQC_CB(WRITELINE(*this, mac_state, nubus_irq_c_w))
MCFG_NUBUS_OUT_IRQD_CB(WRITELINE(*this, mac_state, nubus_irq_d_w))
MCFG_NUBUS_OUT_IRQE_CB(WRITELINE(*this, mac_state, nubus_irq_e_w))
MCFG_NUBUS_SLOT_ADD("nubus","nbd", mac_nubus_cards, nullptr)
MCFG_NUBUS_SLOT_ADD("nubus","nbe", mac_nubus_cards, nullptr)
MCFG_IWM_ADD("fdc", mac_iwm_interface)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
MCFG_DEVICE_ADD("scc", SCC8530, C7M)
MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, mac_state, set_scc_interrupt))
MCFG_DEVICE_ADD("via6522_0", VIA6522, C7M/10)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state,mac_via_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state,mac_via_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via_out_b_bbadb))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac_state,mac_adb_via_out_cb2))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via_irq))
MCFG_DEVICE_ADD("via6522_1", VIA6522, C7M/10)
MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac_state, mac_via2_in_a))
MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac_state, mac_via2_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac_state,mac_via2_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac_state,mac_via2_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac_state,mac_via2_irq))
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_DEVICE_ADD(MAC_539X_1_TAG, NCR539X, C7M)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_NCR539X_OUT_IRQ_CB(WRITELINE(*this, mac_state, irq_539x_1_w))
MCFG_NCR539X_OUT_DRQ_CB(WRITELINE(*this, mac_state, drq_539x_1_w))
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4M")
MCFG_RAM_EXTRA_OPTIONS("8M,16M,32M,64M,68M,72M,80M,96M,128M")
// software list
MCFG_SOFTWARE_LIST_ADD("flop35_list","mac_flop")
MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
MACHINE_CONFIG_END
static INPUT_PORTS_START( macadb )
PORT_START("MOUSE0") /* Mouse - button */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Mouse Button") PORT_CODE(MOUSECODE_BUTTON1)
PORT_START("MOUSE1") /* Mouse - X AXIS */
PORT_BIT( 0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1)
PORT_START("MOUSE2") /* Mouse - Y AXIS */
PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1)
/* This handles the standard (not Extended) Apple ADB keyboard, which is similar to the IIgs's */
/* main keyboard */
PORT_START("KEY0")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED) /* extra key on ISO : */
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
PORT_START("KEY1")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
PORT_START("KEY2")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR('\r')
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
PORT_START("KEY3")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNUSED) /* keyboard Enter : */
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL)
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Command / Open Apple") PORT_CODE(KEYCODE_LALT)
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Option / Solid Apple") PORT_CODE(KEYCODE_RALT)
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left Arrow") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Right Arrow") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Down Arrow") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Up Arrow") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_UNUSED) /* ??? */
/* keypad */
PORT_START("KEY4")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x40
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) // 0x41
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x42
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) // 0x43
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x44
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) // 0x45
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x46
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Keypad Clear") PORT_CODE(/*KEYCODE_NUMLOCK*/KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(NUMLOCK)) // 0x47
PORT_BIT(0x0700, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x48, 49, 4a
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) // 0x4b
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) // 0x4c
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x4d
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) // 0x4e
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x4f
PORT_START("KEY5")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x50
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(/*CODE_OTHER*/KEYCODE_NUMLOCK) PORT_CHAR(UCHAR_MAMEKEY(EQUALS_PAD)) // 0x51
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) // 0x52
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) // 0x53
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) // 0x54
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) // 0x55
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) // 0x56
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) // 0x57
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) // 0x58
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) // 0x59
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED) // 0x5a
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) // 0x5b
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) // 0x5c
PORT_BIT(0xE000, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
INPUT_PORTS_START( maciici )
PORT_INCLUDE(macadb)
PORT_START("MONTYPE")
PORT_CONFNAME(0x0f, 0x06, "Connected monitor")
PORT_CONFSETTING( 0x01, "15\" Portrait Display (640x870)")
PORT_CONFSETTING( 0x02, "12\" RGB (512x384)")
PORT_CONFSETTING( 0x06, "13\" RGB (640x480)")
INPUT_PORTS_END
/***************************************************************************
Game driver(s)
The Mac driver uses a convention of placing the BIOS in "bootrom"
***************************************************************************/
ROM_START( macse )
ROM_REGION16_BE(0x40000, "bootrom", 0)
ROM_LOAD16_WORD( "macse.rom", 0x00000, 0x40000, CRC(0f7ff80c) SHA1(58532b7d0d49659fd5228ac334a1b094f0241968))
ROM_END
ROM_START( macsefd )
ROM_REGION16_BE(0x40000, "bootrom", 0)
ROM_LOAD( "be06e171.rom", 0x000000, 0x040000, CRC(f530cb10) SHA1(d3670a90273d12e53d86d1228c068cb660b8c9d1) )
ROM_END
ROM_START( macclasc )
ROM_REGION16_BE(0x80000, "bootrom", 0) // a49f9914, second half of chip dump is the 6.0.3 XO rom disk
// this dump is big endian
ROM_LOAD( "341-0813__=c=1983-90_apple__japan__910d_d.27c4096_be.ue1", 0x000000, 0x080000, CRC(510d7d38) SHA1(ccd10904ddc0fb6a1d216b2e9effd5ec6cf5a83d) )
ROM_END
ROM_START( maclc )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD("350eacf0.rom", 0x000000, 0x080000, CRC(71681726) SHA1(6bef5853ae736f3f06c2b4e79772f65910c3b7d4))
ROM_REGION(0x1100, "egret", 0)
ROM_LOAD( "341s0851.bin", 0x000000, 0x001100, CRC(ea9ea6e4) SHA1(8b0dae3ec66cdddbf71567365d2c462688aeb571) )
ROM_END
ROM_START( macii )
ROM_REGION32_BE(0x40000, "bootrom", 0)
ROM_SYSTEM_BIOS(0, "default", "rev. B")
ROMX_LOAD( "9779d2c4.rom", 0x000000, 0x040000, CRC(4df6d054) SHA1(db6b504744281369794e26ba71a6e385cf6227fa), ROM_BIOS(1) )
ROM_SYSTEM_BIOS(1, "original", "rev. A")
ROMX_LOAD( "97851db6.rom", 0x000000, 0x040000, CRC(8c8b9d03) SHA1(5c264fe976f1e8495d364947c932a5e8309b4300), ROM_BIOS(2) )
ROM_END
ROM_START( maciihmu )
ROM_REGION32_BE(0x40000, "bootrom", 0)
ROM_SYSTEM_BIOS(0, "default", "rev. B")
ROMX_LOAD( "9779d2c4.rom", 0x000000, 0x040000, CRC(4df6d054) SHA1(db6b504744281369794e26ba71a6e385cf6227fa), ROM_BIOS(1) )
ROM_SYSTEM_BIOS(1, "original", "rev. A")
ROMX_LOAD( "97851db6.rom", 0x000000, 0x040000, CRC(8c8b9d03) SHA1(5c264fe976f1e8495d364947c932a5e8309b4300), ROM_BIOS(2) )
ROM_END
ROM_START( mac2fdhd ) // same ROM for II FDHD, IIx, IIcx, and SE/30
ROM_REGION32_BE(0x40000, "bootrom", 0)
ROM_LOAD( "97221136.rom", 0x000000, 0x040000, CRC(ce3b966f) SHA1(753b94351d94c369616c2c87b19d568dc5e2764e) )
ROM_END
ROM_START( maciix )
ROM_REGION32_BE(0x40000, "bootrom", 0)
ROM_LOAD( "97221136.rom", 0x000000, 0x040000, CRC(ce3b966f) SHA1(753b94351d94c369616c2c87b19d568dc5e2764e) )
ROM_END
ROM_START( maciicx )
ROM_REGION32_BE(0x40000, "bootrom", 0)
ROM_LOAD( "97221136.rom", 0x000000, 0x040000, CRC(ce3b966f) SHA1(753b94351d94c369616c2c87b19d568dc5e2764e) )
ROM_END
ROM_START( macse30 )
ROM_REGION32_BE(0x40000, "bootrom", 0)
ROM_LOAD( "97221136.rom", 0x000000, 0x040000, CRC(ce3b966f) SHA1(753b94351d94c369616c2c87b19d568dc5e2764e) )
ROM_REGION32_BE(0x2000, "se30vrom", 0)
ROM_LOAD( "se30vrom.uk6", 0x000000, 0x002000, CRC(b74c3463) SHA1(584201cc67d9452b2488f7aaaf91619ed8ce8f03) )
ROM_END
ROM_START( maciifx )
ROM_REGION32_BE(0x80000, "bootrom", 0)
ROM_LOAD( "4147dd77.rom", 0x000000, 0x080000, CRC(ef441bbd) SHA1(9fba3d4f672a630745d65788b1d1119afa2c6728) )
ROM_END
ROM_START( maciici )
ROM_REGION32_BE(0x80000, "bootrom", 0)
ROM_LOAD32_BYTE( "341-0736.um12", 0x000000, 0x020000, CRC(7a1906e6) SHA1(3e39c80b52f40798502fcbdfc97b315545c4c4d3) )
ROM_LOAD32_BYTE( "341-0735.um11", 0x000001, 0x020000, CRC(a8942189) SHA1(be9f653cab04c304d7ee8d4ec312c23ff5d47efc) )
ROM_LOAD32_BYTE( "342-0734.um10", 0x000002, 0x020000, CRC(07f56402) SHA1(e11ca97181faf26cd0d05bd639d65998805c7822) )
ROM_LOAD32_BYTE( "342-0733.um9", 0x000003, 0x020000, CRC(20c28451) SHA1(fecf849c9ac9717c18c13184e24a471888028e46) )
ROM_END
ROM_START( maciisi )
ROM_REGION32_BE(0x80000, "bootrom", 0)
ROM_LOAD( "36b7fb6c.rom", 0x000000, 0x080000, CRC(f304d973) SHA1(f923de4125aae810796527ff6e25364cf1d54eec) )
ROM_END
ROM_START( maciivx )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "4957eb49.rom", 0x000000, 0x100000, CRC(61be06e5) SHA1(560ce203d65178657ad09d03f532f86fa512bb40) )
ROM_END
ROM_START( maciivi )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "4957eb49.rom", 0x000000, 0x100000, CRC(61be06e5) SHA1(560ce203d65178657ad09d03f532f86fa512bb40) )
ROM_END
ROM_START( macclas2 )
ROM_REGION32_BE(0x100000, "bootrom", 0) // 3193670e
//ROM_LOAD( "3193670e.rom", 0x000000, 0x080000, CRC(96d2e1fd) SHA1(50df69c1b6e805e12a405dc610bc2a1471b2eac2) )
ROM_LOAD32_BYTE( "341-0867__ba16__=c=apple_91.romhh.27c010.u25", 0x000000, 0x020000, CRC(88230887) SHA1(8f45f6d7eb6a8ec9242a46db4773af1d154409c6) )
ROM_LOAD32_BYTE( "341-0866__5be9__=c=apple_91.rommh.27c010.u24", 0x000001, 0x020000, CRC(eae68c36) SHA1(e6ce79647dfe7e66590a012836d0b6e985ff672b) )
ROM_LOAD32_BYTE( "341-0865__821e__=c=apple_91.romml.27c010.u23", 0x000002, 0x020000, CRC(cb306c01) SHA1(4d6e409995fd9a4aa9afda0fd790a5b09b1c2aca) )
ROM_LOAD32_BYTE( "341-0864__6fc6__=c=apple_91.romll.27c010.u22", 0x000003, 0x020000, CRC(21a51e72) SHA1(bb513c1a5b8a41c7534d66aeacaeea47f58dae92) )
ROM_END
ROM_START( maclc2 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD32_BYTE( "341-0476_ue2-hh.bin", 0x000000, 0x020000, CRC(0c3b0ce4) SHA1(e4e8c883d7f2e002a3f7b7aefaa3840991e57025) )
ROM_LOAD32_BYTE( "341-0475_ud2-mh.bin", 0x000001, 0x020000, CRC(7b013595) SHA1(0b82d8fac570270db9774f6254017d28611ae756) )
ROM_LOAD32_BYTE( "341-0474_uc2-ml.bin", 0x000002, 0x020000, CRC(2ff2f52b) SHA1(876850df61d0233c1dd3c00d48d8d6690186b164) )
ROM_LOAD32_BYTE( "341-0473_ub2-ll.bin", 0x000003, 0x020000, CRC(8843c37c) SHA1(bb5104110507ca543d106f11c6061245fd90c1a7) )
ROM_END
ROM_START( maclc3 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "ecbbc41c.rom", 0x000000, 0x100000, CRC(e578f5f3) SHA1(c77df3220c861f37a2c553b6ee9241b202dfdffc) )
ROM_END
ROM_START( pmac6100 )
ROM_REGION64_BE(0x400000, "bootrom", 0)
ROM_LOAD( "9feb69b3.rom", 0x000000, 0x400000, CRC(a43fadbc) SHA1(6fac1c4e920a077c077b03902fef9199d5e8f2c3) )
ROM_END
ROM_START( macprtb )
ROM_REGION16_BE(0x40000, "bootrom", 0)
ROM_LOAD16_WORD( "93ca3846.rom", 0x000000, 0x040000, CRC(497348f8) SHA1(79b468b33fc53f11e87e2e4b195aac981bf0c0a6) )
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv1.bin", 0x000000, 0x001800, CRC(01dae148) SHA1(29d2fca7426c31f2b9334832ed3d257974a61bb1) )
ROM_END
ROM_START( macpb100 )
ROM_REGION16_BE(0x40000, "bootrom", 0)
ROM_LOAD16_WORD( "96645f9c.rom", 0x000000, 0x040000, CRC(29ac7ee9) SHA1(7f3acf40b1f63612de2314a2e9fcfeafca0711fc) )
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv1.bin", 0x000000, 0x001800, CRC(01dae148) SHA1(29d2fca7426c31f2b9334832ed3d257974a61bb1) )
ROM_END
ROM_START( macpb140 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "420dbff3.rom", 0x000000, 0x100000, CRC(88ea2081) SHA1(7a8ee468d16e64f2ad10cb8d1a45e6f07cc9e212) )
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv2.bin", 0x000000, 0x001800, CRC(1a32b5e5) SHA1(7c096324763cfc8d2024893b3e8493b7729b3a92) )
ROM_END
ROM_START( macpb145 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "420dbff3.rom", 0x000000, 0x100000, CRC(88ea2081) SHA1(7a8ee468d16e64f2ad10cb8d1a45e6f07cc9e212) )
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv2.bin", 0x000000, 0x001800, CRC(1a32b5e5) SHA1(7c096324763cfc8d2024893b3e8493b7729b3a92) )
ROM_END
ROM_START( macpb145b )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "420dbff3.rom", 0x000000, 0x100000, CRC(88ea2081) SHA1(7a8ee468d16e64f2ad10cb8d1a45e6f07cc9e212) )
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv2.bin", 0x000000, 0x001800, CRC(1a32b5e5) SHA1(7c096324763cfc8d2024893b3e8493b7729b3a92) )
ROM_END
ROM_START( macpb170 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "420dbff3.rom", 0x000000, 0x100000, CRC(88ea2081) SHA1(7a8ee468d16e64f2ad10cb8d1a45e6f07cc9e212) )
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv2.bin", 0x000000, 0x001800, CRC(1a32b5e5) SHA1(7c096324763cfc8d2024893b3e8493b7729b3a92) )
ROM_END
ROM_START( macqd700 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "420dbff3.rom", 0x000000, 0x100000, CRC(88ea2081) SHA1(7a8ee468d16e64f2ad10cb8d1a45e6f07cc9e212) )
ROM_END
ROM_START( macpb160 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "e33b2724.rom", 0x000000, 0x100000, CRC(536c60f4) SHA1(c0510682ae6d973652d7e17f3c3b27629c47afac) )
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv3.bin", 0x000000, 0x001800, CRC(f2df696c) SHA1(fc312cbfd407c6f0248c6463910e41ad6b5b0daa) )
ROM_END
ROM_START( macpb180 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "e33b2724.rom", 0x000000, 0x100000, CRC(536c60f4) SHA1(c0510682ae6d973652d7e17f3c3b27629c47afac) )
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv3.bin", 0x000000, 0x001800, CRC(f2df696c) SHA1(fc312cbfd407c6f0248c6463910e41ad6b5b0daa) )
ROM_END
ROM_START( macpb180c )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "e33b2724.rom", 0x000000, 0x100000, CRC(536c60f4) SHA1(c0510682ae6d973652d7e17f3c3b27629c47afac) )
ROM_REGION32_BE(0x8000, "vrom", 0)
ROM_LOAD( "pb180cvrom.bin", 0x0000, 0x8000, CRC(810c75ad) SHA1(3a936e97dee5ceeb25e50197ef504e514ae689a4))
ROM_REGION(0x1800, "pmu", 0)
ROM_LOAD( "pmuv3.bin", 0x000000, 0x001800, CRC(f2df696c) SHA1(fc312cbfd407c6f0248c6463910e41ad6b5b0daa) )
ROM_END
ROM_START( maccclas )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "ecd99dc0.rom", 0x000000, 0x100000, CRC(c84c3aa5) SHA1(fd9e852e2d77fe17287ba678709b9334d4d74f1e) )
ROM_END
ROM_START( macpd210 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "ecfa989b.rom", 0x000000, 0x100000, CRC(b86ed854) SHA1(ed1371c97117a5884da4a6605ecfc5abed48ae5a) )
ROM_END
ROM_START( maclc520 )
ROM_REGION32_BE(0x100000, "bootrom", 0)
ROM_LOAD( "ede66cbd.rom", 0x000000, 0x100000, CRC(a893cb0f) SHA1(c54ee2f45020a4adeb7451adce04cd6e5fb69790) )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
//COMP( 1983, mactw, 0, 0, mac128k, macplus, mac_state, init_mac128k512k, "Apple Computer", "Macintosh (4.3T Prototype)", MACHINE_NOT_WORKING )
COMP( 1987, macse, 0, 0, macse, macadb, mac_state, init_macse, "Apple Computer", "Macintosh SE", 0 )
COMP( 1987, macsefd, 0, 0, macse, macadb, mac_state, init_macse, "Apple Computer", "Macintosh SE (FDHD)", 0 )
COMP( 1987, macii, 0, 0, macii, macadb, mac_state, init_macii, "Apple Computer", "Macintosh II", 0 )
COMP( 1987, maciihmu, macii, 0, maciihmu, macadb, mac_state, init_macii, "Apple Computer", "Macintosh II (w/o 68851 MMU)", 0 )
COMP( 1988, mac2fdhd, 0, 0, macii, macadb, mac_state, init_maciifdhd, "Apple Computer", "Macintosh II (FDHD)", 0 )
COMP( 1988, maciix, mac2fdhd, 0, maciix, macadb, mac_state, init_maciix, "Apple Computer", "Macintosh IIx", 0 )
COMP( 1989, macprtb, 0, 0, macprtb, macadb, mac_state, init_macprtb, "Apple Computer", "Macintosh Portable", MACHINE_NOT_WORKING )
COMP( 1989, macse30, mac2fdhd, 0, macse30, macadb, mac_state, init_macse30, "Apple Computer", "Macintosh SE/30", 0 )
COMP( 1989, maciicx, mac2fdhd, 0, maciicx, macadb, mac_state, init_maciicx, "Apple Computer", "Macintosh IIcx", 0 )
COMP( 1989, maciici, 0, 0, maciici, maciici, mac_state, init_maciici, "Apple Computer", "Macintosh IIci", 0 )
COMP( 1990, maciifx, 0, 0, maciifx, macadb, mac_state, init_maciifx, "Apple Computer", "Macintosh IIfx", MACHINE_NOT_WORKING )
COMP( 1990, macclasc, 0, 0, macclasc, macadb, mac_state, init_macclassic, "Apple Computer", "Macintosh Classic", 0 )
COMP( 1990, maclc, 0, 0, maclc, maciici, mac_state, init_maclc, "Apple Computer", "Macintosh LC", MACHINE_IMPERFECT_SOUND )
COMP( 1990, maciisi, 0, 0, maciisi, maciici, mac_state, init_maciisi, "Apple Computer", "Macintosh IIsi", 0 )
COMP( 1991, macpb100, 0, 0, macprtb, macadb, mac_state, init_macprtb, "Apple Computer", "Macintosh PowerBook 100", MACHINE_NOT_WORKING )
COMP( 1991, macpb140, 0, 0, macpb140, macadb, mac_state, init_macpb140, "Apple Computer", "Macintosh PowerBook 140", MACHINE_NOT_WORKING )
COMP( 1991, macpb170, macpb140, 0, macpb170, macadb, mac_state, init_macpb140, "Apple Computer", "Macintosh PowerBook 170", MACHINE_NOT_WORKING )
COMP( 1991, macqd700, macpb140, 0, macqd700, macadb, mac_state, init_macquadra700, "Apple Computer", "Macintosh Quadra 700", MACHINE_NOT_WORKING )
COMP( 1991, macclas2, 0, 0, macclas2, macadb, mac_state, init_macclassic2, "Apple Computer", "Macintosh Classic II", MACHINE_IMPERFECT_SOUND )
COMP( 1991, maclc2, 0, 0, maclc2, maciici, mac_state, init_maclc2, "Apple Computer", "Macintosh LC II", MACHINE_IMPERFECT_SOUND )
COMP( 1992, macpb145, macpb140, 0, macpb145, macadb, mac_state, init_macpb140, "Apple Computer", "Macintosh PowerBook 145", MACHINE_NOT_WORKING )
COMP( 1992, macpb160, 0, 0, macpb160, macadb, mac_state, init_macpb160, "Apple Computer", "Macintosh PowerBook 160", MACHINE_NOT_WORKING )
COMP( 1992, macpb180, macpb160, 0, macpb180, macadb, mac_state, init_macpb160, "Apple Computer", "Macintosh PowerBook 180", MACHINE_NOT_WORKING )
COMP( 1992, macpb180c, macpb160, 0, macpb180c,macadb, mac_state, init_macpb160, "Apple Computer", "Macintosh PowerBook 180c", MACHINE_NOT_WORKING )
COMP( 1992, macpd210, 0, 0, macpd210, macadb, mac_state, init_macpd210, "Apple Computer", "Macintosh PowerBook Duo 210", MACHINE_NOT_WORKING )
COMP( 1993, maccclas, 0, 0, maccclas, macadb, mac_state, init_maclrcclassic, "Apple Computer", "Macintosh Color Classic", MACHINE_NOT_WORKING )
COMP( 1992, macpb145b, macpb140, 0, macpb170, macadb, mac_state, init_macpb140, "Apple Computer", "Macintosh PowerBook 145B", MACHINE_NOT_WORKING )
COMP( 1993, maclc3, 0, 0, maclc3, maciici, mac_state, init_maclc3, "Apple Computer", "Macintosh LC III", MACHINE_IMPERFECT_SOUND )
COMP( 1993, maciivx, 0, 0, maciivx, maciici, mac_state, init_maciivx, "Apple Computer", "Macintosh IIvx", MACHINE_IMPERFECT_SOUND )
COMP( 1993, maciivi, maciivx, 0, maciivi, maciici, mac_state, init_maciivx, "Apple Computer", "Macintosh IIvi", MACHINE_IMPERFECT_SOUND )
COMP( 1993, maclc520, 0, 0, maclc520, maciici, mac_state, init_maclc520, "Apple Computer", "Macintosh LC 520", MACHINE_NOT_WORKING )
COMP( 1994, pmac6100, 0, 0, pwrmac, macadb, mac_state, init_macpm6100, "Apple Computer", "Power Macintosh 6100/60", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )