summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/interpro.cpp
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2018-05-15 21:01:13 +0700
committer Olivier Galibert <galibert@pobox.com>2018-05-15 16:01:13 +0200
commit90dc8100237508469cbd741dd8e3d9787c207878 (patch)
tree41327b9f411be77c15aa7216a2a7de192f91fdae /src/mame/drivers/interpro.cpp
parent4a0bbac3b5972755e66bfe322fc750e1087075ce (diff)
interpro: wip checkpoint (nw) (#3573)
* softfloat3: do we like this better? (nw) * softfloat3: it gets the hose again (nw) * softfloat3: sonofa (nw) * interpro: wip checkpoint (nw) * added 6x00 models * added EDGE graphics skeleton * split bus/cards into two types * various fixes/changes
Diffstat (limited to 'src/mame/drivers/interpro.cpp')
-rw-r--r--src/mame/drivers/interpro.cpp425
1 files changed, 391 insertions, 34 deletions
diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp
index e334103260b..56c12ef53f2 100644
--- a/src/mame/drivers/interpro.cpp
+++ b/src/mame/drivers/interpro.cpp
@@ -61,12 +61,11 @@
*
* Both the desktop and minicase units supported expansion slots with a variety
* of cards, although with different profiles and connectors between 2xxx and
- * 6xxx systems. The bus is referred to as SR, SRX, SR Bus, CBUS and some
- * combinations of these in various places, but all appear to be compatible or
- * identical, possibly with SRX being an enhanced version. The bus supported a
- * range of add-in cards, ranging from expanded SCSI and serial controllers,
- * to specialised scanning and plotting controllers, a VME bridge, and most
- * importantly various single and dual-headed graphics boards.
+ * 6xxx systems. The 2xxx bus is referred to as CBUS, with the 6xxx bus known
+ * as SRX bus; SR (shared resource) bus is used to refer to either type. The
+ * bus supported a range of add-in cards, ranging from expanded SCSI and serial
+ * controllers, to specialised scanning and plotting controllers, a VME bridge,
+ * and most importantly various single and dual-headed graphics boards.
*
* The InterPro graphics options included the GT range, generally fitted to the
* desktops, and EDGE graphics for the 6xxx systems. Systems with no graphics
@@ -87,13 +86,14 @@
* GT graphics are also referred to in various places as Memory Mapped Graphics
* or MMG. EDGE stands for Extensible Display Geometry Engine.
*
- * This emulation currently supports the Turquoise and Sapphire desktop systems (i.e. models
- * 2000/2400/2500/2700/2800). Base GT graphics can be used with any of these models, or the
- * graphics and keyboard removed and the systems used with a serial terminal instead.
+ * This driver currently supports the Emerald, Turquoise and Sapphire systems
+ * (i.e. 2x00 and 6x00 models), but not all of the variants of the Emerald at
+ * this point. GT/GTDB or EDGE graphics can be used depending on model, or
+ * graphics and keyboard uninstalled and a serial terminal used instead.
*
* Key parts lists for the supported models are as follows.
*
- * 2000 Turquoise (C300 @ 50MHz?, main board PCB962)
+ * 2000 Turquoise (PCB962 rev A, PCB824 rev J)
*
* Ref Part Function
* U37 Intel 82072 Floppy drive controller
@@ -112,7 +112,7 @@
* U171 128 kB EPROM (MPRGM530E) Boot ROM MSB
* U172 128 kB EPROM (MPRGM540E) Boot ROM LSB
*
- * 2400 Sapphire (C400T @ 40MHz?, main board SMT047)
+ * 2400 Sapphire (SMT047 rev 0, SMT038?)
*
* Ref Part Function
* U31 Zilog Z85C30 SCC Keyboard and console serial controller
@@ -138,7 +138,7 @@
* U118? (MPRG X510R)
* U155 CYID21704 TC140G54AF
*
- * 2700 Sapphire (C400I @ 70MHz?, main board SMT128)
+ * 2700 Sapphire (SMT128 rev 0, SMT104 rev A)
*
* Ref Part Function
* U31 Zilog Z85C30 SCC Keyboard and console serial controller
@@ -149,7 +149,7 @@
* U44 Intel 82596SX-20 Ethernet controller
* U68 CYID21603 TC150G89AF
* U67 Intel N28F010 128Kx8 flash memory (Y226 0C30 4291)
- * U71 LSI L1A7374 CIDC094A3 Intergraph I/O gate array
+ * U71 LSI L1A7374 CICD094A3 Intergraph I/O gate array
* U76 Intel N28F010 128Kx8 flash memory (Y225 0C30 4220)
* U81 NCR 53C94 SCSI controller
* U86 24.0 MHz crystal Clock source for 82077
@@ -164,14 +164,60 @@
* U118? ()
* U155 CYID212?4 TC140G54AF?
*
+ * 6000 (PCB765 rev B, PCB82409 rev D)
+ *
+ * Ref Part Function
+ * U264 Xilinx XC3020-50 Plotter control FPGA?
+ * U294 4.9152 MHz crystal
+ * U287 Z8530H-6JC Serial controller
+ * U288 Z8530H-6JC Serial controller
+ * U318 24.0 MHz crystal
+ * U323 20.0 MHz crystal
+ * U324 Intel 82586-10 Ethernet controller
+ * U303 CICD84607 TC110G75CY
+ * U311 NCR 53C90A SCSI controller
+ * U336 27C010 (MPRGG360F) 128Kx8 Boot EPROM ?SB
+ * U341 Dallas DS1287 RTC and NVRAM
+ * U349 27C010 (MPRGG350F) 128Kx8 Boot EPROM ?SB
+ * U347 Intel 82072 Floppy drive controller
+ *
+ * 6400 (SMT046 rev B, SMT082)
+ *
+ * 6800 Sapphire (SMT127 rev B, SMT104 rev C)
+ *
+ * Ref Part Function
+ * U53 LSI L1A7751 CICD094A3 Intergraph I/O gate array
+ * U55 Xilinx XC3020-70 Plotter control FPGA?
+ * U57 CYID21704 TC140G54AF
+ * U69 CYID21603 TC150G89AF
+ * U73 20.0 MHz crystal Clock source for 82596?
+ * U78 29.0 MHz crystal
+ * U88 4.9152 MHz crystal Clock source for 8530s?
+ * U94 40.0 MHz crystal
+ * U95 CICD 89703 TC110G11AT
+ * U108 24.0 MHz crystal Clock source for 82077
+ * U117 Intel N28F010 128Kx8 flash memory (Y225 0C40 6010)
+ * U118 Zilog Z85C30 SCC Keyboard and console serial controller
+ * U119 Zilog Z85230 ESCC Serial controller for serial port 0 and 1
+ * U130 Intel N28F010 128Kx8 flash memory (Y226 0C40 6280)
+ * U136 NCR 53C94 SCSI controller
+ * U144 27C1024 (MPRGZ530A) 128Kx8 Boot EPROM
+ * U145 Dallas DS12887 RTC and NVRAM
+ * U159 Intel 82596SX-20 Ethernet controller
+ * U164 Intel N82077SL-1? Floppy drive controller
+ *
* CPU daughter-boards
- * PCB824 Rev J - 2000 (also has label MPCBA5507)
+ *
+ * PCB824 Rev J (MPCBA5507)
+ * CPCB82409 rev D (MPCB92108) - 6000 C311 + 2xC322 + 80MHz crystal
+ *
* SMT082 (MSMT0820B, 36MHz?) - 6400 (SMT046 "6400 36-MHz Series System Board")
* SMT03? 2400/6400 - (MSMT03804 -> rev 2 cammu, goes with "6400 36-MHz Series System Board", MSMT0380A eco 3+ use rev 3 cammu)
* SMT019 (MSMT019 C4E CPU Assembly)
* SMT104 Rev A - 2700/6700 (aka MSMT1040A "C4I CPU", C4 CPU REV 3 + C4 FPU REV 3 + C4I CAMMU)
*
* PCB962 2000 System Board MPCB824 C300
+ * PCB??? 6000 System Board w/?MB MPCB824 C300
* SMT046 6400 36-MHz Series System Board MSMT03804 rev 2 CAMMU/30MHz Kryptonite Rev 3 CAMMU/32MHz Kryptonite Rev 3 CAMMU/MSMT0820B(36MHz)
* SMT047 2400 Series System Board MSMT03804 rev 2 CAMMU/MSMT0380A eco 3+ Rev 3 CAMMU
* SMT098A 6400 32-MHz Sapphire System Board
@@ -208,6 +254,8 @@ void interpro_state::machine_start()
save_item(NAME(m_sreg_ctrl2));
save_item(NAME(m_sreg_ctrl3));
+
+ m_reset_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(interpro_state::reset_timer), this));
}
void interpro_state::machine_reset()
@@ -216,6 +264,10 @@ void interpro_state::machine_reset()
m_sreg_error = 0;
m_sreg_status = 0x400;
m_sreg_ctrl1 = CTRL1_FLOPLOW;
+
+ // suspend the main cpu long enough for the keyboard to boot
+ m_maincpu->suspend(SUSPEND_REASON_RESET, false);
+ m_reset_timer->adjust(attotime::from_msec(750));
}
void interpro_state::init_common()
@@ -363,6 +415,39 @@ void interpro_state::interpro_common_map(address_map &map)
map(0x7f0fff00, 0x7f0fffff).m(m_ioga, FUNC(interpro_ioga_device::map));
}
+void emerald_state::emerald_base_map(address_map &map)
+{
+ interpro_common_map(map);
+
+ map(0x40000000, 0x4000003f).m(m_mcga, FUNC(interpro_mcga_device::map));
+
+ // scsi registers have unusual address mapping
+ map(0x7f000201, 0x7f000201).rw(m_scsi, FUNC(ncr53c90a_device::tcounter_lo_r), FUNC(ncr53c90a_device::tcount_lo_w));
+ map(0x7f000205, 0x7f000205).rw(m_scsi, FUNC(ncr53c90a_device::tcounter_hi_r), FUNC(ncr53c90a_device::tcount_hi_w));
+ map(0x7f000209, 0x7f000209).rw(m_scsi, FUNC(ncr53c90a_device::fifo_r), FUNC(ncr53c90a_device::fifo_w));
+ map(0x7f00020d, 0x7f00020d).rw(m_scsi, FUNC(ncr53c90a_device::command_r), FUNC(ncr53c90a_device::command_w));
+ map(0x7f000211, 0x7f000211).rw(m_scsi, FUNC(ncr53c90a_device::status_r), FUNC(ncr53c90a_device::bus_id_w));
+ map(0x7f000215, 0x7f000215).rw(m_scsi, FUNC(ncr53c90a_device::istatus_r), FUNC(ncr53c90a_device::timeout_w));
+ map(0x7f000219, 0x7f000219).rw(m_scsi, FUNC(ncr53c90a_device::seq_step_r), FUNC(ncr53c90a_device::sync_period_w));
+ map(0x7f00021d, 0x7f00021d).rw(m_scsi, FUNC(ncr53c90a_device::fifo_flags_r), FUNC(ncr53c90a_device::sync_offset_w));
+ map(0x7f000221, 0x7f000221).rw(m_scsi, FUNC(ncr53c90a_device::conf_r), FUNC(ncr53c90a_device::conf_w));
+ map(0x7f000225, 0x7f000225).w(m_scsi, FUNC(ncr53c90a_device::clock_w));
+ map(0x7f000229, 0x7f000229).w(m_scsi, FUNC(ncr53c90a_device::test_w));
+ map(0x7f00022d, 0x7f00022d).rw(m_scsi, FUNC(ncr53c90a_device::conf2_r), FUNC(ncr53c90a_device::conf2_w));
+
+ map(0x7f000300, 0x7f000300).w(this, FUNC(emerald_state::sreg_error_w));
+
+ map(0x7f000600, 0x7f00067f).rom().region(INTERPRO_NODEID_TAG, 0);
+}
+
+void emerald_state::emerald_main_map(address_map &map)
+{
+ emerald_base_map(map);
+
+ map(0x00000000, 0x00ffffff).ram().share(RAM_TAG);
+ map(0x7f100000, 0x7f13ffff).rom().region(INTERPRO_EPROM_TAG, 0);
+}
+
void turquoise_state::turquoise_base_map(address_map &map)
{
interpro_common_map(map);
@@ -424,12 +509,26 @@ void sapphire_state::sapphire_base_map(address_map &map)
void sapphire_state::sapphire_main_map(address_map &map)
{
+ //map(0x00000000, 0xffffffff).rw(this, FUNC(sapphire_state::unmapped_r), FUNC(sapphire_state::unmapped_w));
+
sapphire_base_map(map);
map(0x00000000, 0x00ffffff).ram().share(RAM_TAG);
map(0x7f100000, 0x7f11ffff).rom().region(INTERPRO_EPROM_TAG, 0);
map(0x7f180000, 0x7f1fffff).rw(INTERPRO_FLASH_TAG "_lo", FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0x00ff00ff).mask(0x3ffff);
map(0x7f180000, 0x7f1fffff).rw(INTERPRO_FLASH_TAG "_hi", FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0xff00ff00).mask(0x3ffff);
+
+ // HACK: for SRX bus Sapphire only
+ //map(0x8f007f80, 0x8f007fff).rom().region(INTERPRO_IDPROM_TAG, 0);
+}
+
+void emerald_state::emerald_io_map(address_map &map)
+{
+ emerald_base_map(map);
+
+ map(0x00000800, 0x000009ff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map));
+ map(0x00000a00, 0x00000bff).m(INTERPRO_MMU_TAG "_i", FUNC(cammu_c3_device::map));
+ map(0x00000c00, 0x00000dff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map_global));
}
void turquoise_state::turquoise_io_map(address_map &map)
@@ -443,6 +542,8 @@ void turquoise_state::turquoise_io_map(address_map &map)
void sapphire_state::sapphire_io_map(address_map &map)
{
+ //map(0x00000000, 0xffffffff).rw(this, FUNC(sapphire_state::unmapped_r), FUNC(sapphire_state::unmapped_w));
+
sapphire_base_map(map);
map(0x00000000, 0x00001fff).m(m_mmu, FUNC(cammu_c4_device::map));
@@ -457,6 +558,11 @@ void interpro_state::interpro_boot_map(address_map &map)
map(0x00000000, 0x00001fff).ram();
}
+void emerald_state::interpro_82586_map(address_map &map)
+{
+ map(0x00000000, 0x00ffffff).rw(INTERPRO_IOGA_TAG, FUNC(turquoise_ioga_device::eth_r), FUNC(turquoise_ioga_device::eth_w));
+}
+
void turquoise_state::interpro_82586_map(address_map &map)
{
map(0x00000000, 0x00ffffff).rw(INTERPRO_IOGA_TAG, FUNC(turquoise_ioga_device::eth_r), FUNC(turquoise_ioga_device::eth_w));
@@ -473,7 +579,7 @@ FLOPPY_FORMATS_END
static void interpro_floppies(device_slot_interface &device)
{
- device.option_add("525dd", FLOPPY_525_DD);
+ device.option_add("525hd", FLOPPY_525_HD);
device.option_add("35hd", FLOPPY_35_HD);
}
@@ -518,6 +624,11 @@ static void interpro_scsi_devices(device_slot_interface &device)
device.option_add("cdrom", NSCSI_CDROM);
}
+static void emerald_scsi_devices(device_slot_interface &device)
+{
+ device.option_add_internal(INTERPRO_SCSI_ADAPTER_TAG, NCR53C90A);
+}
+
static void turquoise_scsi_devices(device_slot_interface &device)
{
device.option_add_internal(INTERPRO_SCSI_ADAPTER_TAG, NCR53C90A);
@@ -599,12 +710,6 @@ MACHINE_CONFIG_START(interpro_state::interpro)
MCFG_DEVICE_SLOT_INTERFACE(interpro_mouse_devices, "interpro_mouse", false)
MCFG_MOUSE_STATE_CB(WRITE32(INTERPRO_IOGA_TAG, interpro_ioga_device, mouse_status_w))
- // sr bus and slots
- MCFG_DEVICE_ADD(INTERPRO_SRBUS_TAG, SR, 0)
- MCFG_SR_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
- MCFG_SR_SLOT_ADD(INTERPRO_SRBUS_TAG, INTERPRO_SRBUS_TAG ":0", sr_cards, "mpcb963", false)
- MCFG_SR_SLOT_ADD(INTERPRO_SRBUS_TAG, INTERPRO_SRBUS_TAG ":1", sr_cards, nullptr, false)
-
// system layout
MCFG_DEFAULT_LAYOUT(layout_interpro)
@@ -612,6 +717,62 @@ MACHINE_CONFIG_START(interpro_state::interpro)
MCFG_SOFTWARE_LIST_ADD("softlist", "interpro")
MACHINE_CONFIG_END
+MACHINE_CONFIG_START(emerald_state::emerald)
+ interpro(config);
+
+ MCFG_DEVICE_ADD(INTERPRO_CPU_TAG, CLIPPER_C300, XTAL(12'500'000))
+ MCFG_DEVICE_ADDRESS_MAP(0, emerald_main_map)
+ MCFG_DEVICE_ADDRESS_MAP(1, emerald_io_map)
+ MCFG_DEVICE_ADDRESS_MAP(2, interpro_boot_map)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, acknowledge_interrupt)
+
+ MCFG_DEVICE_ADD(INTERPRO_MMU_TAG "_i", CAMMU_C3, 0)
+ MCFG_CAMMU_EXCEPTION_CB(WRITE16(INTERPRO_CPU_TAG, clipper_device, set_exception))
+
+ MCFG_DEVICE_ADD(INTERPRO_MMU_TAG "_d", CAMMU_C3, 0)
+ MCFG_CAMMU_EXCEPTION_CB(WRITE16(INTERPRO_CPU_TAG, clipper_device, set_exception))
+ MCFG_CAMMU_LINK(INTERPRO_MMU_TAG "_i")
+
+ // boot fails memory test without this
+ MCFG_DEVICE_MODIFY(RAM_TAG)
+ MCFG_RAM_DEFAULT_VALUE(0x00)
+
+ // memory control gate array
+ MCFG_DEVICE_ADD(INTERPRO_MCGA_TAG, INTERPRO_MCGA, 0)
+
+ // floppy controller
+ MCFG_I82072_ADD(INTERPRO_FDC_TAG, false)
+ MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir1_w))
+ MCFG_UPD765_DRQ_CALLBACK(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_floppy))
+
+ // connect a 5.25" drive at id 3
+ MCFG_DEVICE_ADD("fdc:0", FLOPPY_CONNECTOR, 0)
+ MCFG_DEVICE_ADD("fdc:1", FLOPPY_CONNECTOR, 0)
+ MCFG_DEVICE_ADD("fdc:2", FLOPPY_CONNECTOR, 0)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", interpro_floppies, "525hd", interpro_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(false)
+
+ // serial controllers and ports
+ MCFG_SCC85C30_ADD(INTERPRO_SCC1_TAG, XTAL(4'915'200), 0, 0, 0, 0)
+ interpro_scc1(config);
+ MCFG_SCC85C30_ADD(INTERPRO_SCC2_TAG, XTAL(4'915'200), 0, 0, 0, 0)
+ interpro_scc2(config);
+
+ // scsi controller
+ MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":7", emerald_scsi_devices, INTERPRO_SCSI_ADAPTER_TAG, true)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG(INTERPRO_SCSI_ADAPTER_TAG, interpro_scsi_adapter)
+
+ // ethernet controller
+ MCFG_DEVICE_ADD(INTERPRO_ETH_TAG, I82586, 10_MHz_XTAL)
+ MCFG_I82586_IRQ_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir12_w))
+ MCFG_DEVICE_ADDRESS_MAP(0, interpro_82586_map)
+
+ // i/o gate array
+ MCFG_DEVICE_ADD(INTERPRO_IOGA_TAG, TURQUOISE_IOGA, 0)
+ MCFG_INTERPRO_IOGA_MEMORY(INTERPRO_CPU_TAG, 0)
+ ioga(config);
+MACHINE_CONFIG_END
+
MACHINE_CONFIG_START(turquoise_state::turquoise)
interpro(config);
MCFG_DEVICE_ADD(INTERPRO_CPU_TAG, CLIPPER_C300, XTAL(12'500'000))
@@ -666,8 +827,15 @@ MACHINE_CONFIG_START(turquoise_state::turquoise)
MCFG_INTERPRO_IOGA_MEMORY(INTERPRO_CPU_TAG, 0)
ioga(config);
- MCFG_DEVICE_MODIFY(INTERPRO_SRBUS_TAG)
- MCFG_SR_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ // cbus and slots
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
+ MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir3_w))
+ MCFG_CBUS_OUT_IRQ1_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir4_w))
+ MCFG_CBUS_OUT_IRQ2_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir5_w))
+ MCFG_CBUS_OUT_VBLANK_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, nullptr, false)
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(sapphire_state::sapphire)
@@ -721,10 +889,6 @@ MACHINE_CONFIG_START(sapphire_state::sapphire)
// flash memory
MCFG_DEVICE_ADD(INTERPRO_FLASH_TAG "_lo", INTEL_28F010, 0)
MCFG_DEVICE_ADD(INTERPRO_FLASH_TAG "_hi", INTEL_28F010, 0)
-
- // sr bus address spaces
- MCFG_DEVICE_MODIFY(INTERPRO_SRBUS_TAG)
- MCFG_SR_MEMORY(INTERPRO_CPU_TAG, 0, 1)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(turquoise_state::ip2000)
@@ -732,6 +896,10 @@ MACHINE_CONFIG_START(turquoise_state::ip2000)
//MCFG_DEVICE_MODIFY(INTERPRO_CPU_TAG)
//MCFG_DEVICE_CLOCK(XTAL(40'000'000))
+ // GT graphics (2020)
+ MCFG_DEVICE_MODIFY(INTERPRO_SLOT_TAG ":0")
+ MCFG_SLOT_DEFAULT_OPTION("mpcb963")
+
MCFG_SOFTWARE_LIST_FILTER("softlist", "2000")
MACHINE_CONFIG_END
@@ -743,8 +911,12 @@ MACHINE_CONFIG_START(sapphire_state::ip2400)
MCFG_DEVICE_MODIFY(INTERPRO_MMU_TAG)
MCFG_CAMMU_ID(cammu_c4i_device::CID_C4IR0)
- MCFG_DEVICE_MODIFY(INTERPRO_SRBUS_TAG ":0")
- MCFG_SLOT_DEFAULT_OPTION("mpcb070")
+ // cbus and slots (default to 2430 with GT+ graphics)
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
+ MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, "msmt070", false)
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
MCFG_SOFTWARE_LIST_FILTER("softlist", "2400")
MACHINE_CONFIG_END
@@ -754,6 +926,16 @@ MACHINE_CONFIG_START(sapphire_state::ip2500)
//MCFG_DEVICE_MODIFY(INTERPRO_CPU_TAG)
//MCFG_DEVICE_CLOCK(XTAL(?)
+ // cbus and slots (default to 2530 with GT+ graphics)
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
+ MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, "msmt070", false)
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
+
+ // GT II graphics?
+ //MCFG_SLOT_DEFAULT_OPTION("msmt135")
+
// FIXME: don't know which cammu revision
MCFG_DEVICE_MODIFY(INTERPRO_MMU_TAG)
MCFG_CAMMU_ID(cammu_c4i_device::CID_C4IR0)
@@ -766,6 +948,16 @@ MACHINE_CONFIG_START(sapphire_state::ip2700)
//MCFG_DEVICE_MODIFY(INTERPRO_CPU_TAG)
//MCFG_DEVICE_CLOCK(?)
+ // cbus and slots (default to 2730 with GT+ graphics)
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
+ MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, "msmt070", false)
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
+
+ // GT II graphics?
+ //MCFG_SLOT_DEFAULT_OPTION("msmt135")
+
MCFG_DEVICE_MODIFY(INTERPRO_MMU_TAG)
MCFG_CAMMU_ID(cammu_c4i_device::CID_C4IR2)
@@ -777,6 +969,16 @@ MACHINE_CONFIG_START(sapphire_state::ip2800)
//MCFG_DEVICE_MODIFY(INTERPRO_CPU_TAG)
//MCFG_DEVICE_CLOCK(?)
+ // cbus and slots (default to 2830 with GT+ graphics)
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
+ MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, "msmt070", false)
+ MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
+
+ // GT II graphics?
+ //MCFG_SLOT_DEFAULT_OPTION("msmt135")
+
// FIXME: don't know which cammu revision
MCFG_DEVICE_MODIFY(INTERPRO_MMU_TAG)
MCFG_CAMMU_ID(cammu_c4i_device::CID_C4IR2)
@@ -784,6 +986,96 @@ MACHINE_CONFIG_START(sapphire_state::ip2800)
MCFG_SOFTWARE_LIST_FILTER("softlist", "2800")
MACHINE_CONFIG_END
+MACHINE_CONFIG_START(emerald_state::ip6000)
+ emerald(config);
+
+ //MCFG_DEVICE_MODIFY(INTERPRO_CPU_TAG)
+ //MCFG_DEVICE_CLOCK(80_MHz_XTAL / 2)
+
+ // srx and slots (default to 6040 with EDGE-1 graphics)
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, SRX, 0)
+ MCFG_SRX_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_SRX_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", srx_cards, "mpcb828", false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":2", srx_cards, nullptr, false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":3", srx_cards, nullptr, false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":4", srx_cards, nullptr, false)
+
+ MCFG_SOFTWARE_LIST_FILTER("softlist", "6000")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(sapphire_state::ip6400)
+ sapphire(config);
+ //MCFG_DEVICE_MODIFY(INTERPRO_CPU_TAG)
+ //MCFG_DEVICE_CLOCK(XTAL(36'000'000))
+
+ MCFG_DEVICE_MODIFY(INTERPRO_MMU_TAG)
+ MCFG_CAMMU_ID(cammu_c4i_device::CID_C4IR0)
+
+ // srx and slots (default to 6450 with GT II graphics)
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, SRX, 0)
+ MCFG_SRX_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_SRX_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", srx_cards, "mpcbb92", false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":2", srx_cards, nullptr, false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":3", srx_cards, nullptr, false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":4", srx_cards, nullptr, false)
+
+ // EDGE-2 graphics (6480)
+ //MCFG_SRX_SLOT_ADD(INTERPRO_SRBUS_TAG, INTERPRO_SRBUS_TAG ":1", srx_cards, "mpcb030", false)
+ //MCFG_SRX_SLOT_ADD(INTERPRO_SRBUS_TAG, INTERPRO_SRBUS_TAG ":2", srx_cards, "mpcba63", false)
+
+ MCFG_SOFTWARE_LIST_FILTER("softlist", "6400")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(sapphire_state::ip6700)
+ sapphire(config);
+ //MCFG_DEVICE_MODIFY(INTERPRO_CPU_TAG)
+ //MCFG_DEVICE_CLOCK(?)
+
+ // FIXME: don't know which cammu revision
+ MCFG_DEVICE_MODIFY(INTERPRO_MMU_TAG)
+ MCFG_CAMMU_ID(cammu_c4i_device::CID_C4IR2)
+
+ // srx and slots (default to 6780 with EDGE-2 Plus graphics)
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, SRX, 0)
+ MCFG_SRX_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_SRX_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", srx_cards, "msmt094", false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":2", srx_cards, "mpcb896", false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":3", srx_cards, nullptr, false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":4", srx_cards, nullptr, false)
+
+ MCFG_SOFTWARE_LIST_FILTER("softlist", "6700")
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(sapphire_state::ip6800)
+ sapphire(config);
+ //MCFG_DEVICE_MODIFY(INTERPRO_CPU_TAG)
+ //MCFG_DEVICE_CLOCK(?)
+
+ // FIXME: don't know which cammu revision
+ MCFG_DEVICE_MODIFY(INTERPRO_MMU_TAG)
+ MCFG_CAMMU_ID(cammu_c4i_device::CID_C4IR2)
+
+ // EDGE systems use graphics keyboard
+ MCFG_DEVICE_MODIFY(INTERPRO_KEYBOARD_PORT_TAG)
+ MCFG_SLOT_DEFAULT_OPTION(nullptr)
+
+ // srx and slots (default to 6880 with EDGE-2 Plus graphics)
+ MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, SRX, 0)
+ MCFG_SRX_MEMORY(INTERPRO_CPU_TAG, 0, 1)
+ MCFG_SRX_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir3_w))
+ MCFG_SRX_OUT_IRQ1_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir4_w))
+ MCFG_SRX_OUT_IRQ2_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir5_w))
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", srx_cards, nullptr, false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":2", srx_cards, nullptr, false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":3", srx_cards, "msmt094", false)
+ MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":4", srx_cards, "mpcb896", false)
+
+ MCFG_SOFTWARE_LIST_FILTER("softlist", "6800")
+MACHINE_CONFIG_END
+
ROM_START(ip2000)
ROM_REGION(0x80, INTERPRO_NODEID_TAG, 0)
ROM_LOAD32_BYTE("nodeid.bin", 0x0, 0x20, CRC(a38397a6) SHA1(9f45fb932bbe231c95b3d5470dcd1fa1c846486f))
@@ -791,7 +1083,7 @@ ROM_START(ip2000)
ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
ROM_LOAD32_BYTE("mpcb962a.bin", 0x0, 0x20, CRC(e391342c) SHA1(02e03aad760b6651b8599c3a41c7c457983ee97d))
- ROM_REGION(0x0040000, INTERPRO_EPROM_TAG, 0)
+ ROM_REGION(0x40000, INTERPRO_EPROM_TAG, 0)
ROM_SYSTEM_BIOS(0, "ip2000", "InterPro 2000 EPROM")
ROMX_LOAD("mprgm530e__26_apr_91k.u171", 0x00001, 0x20000, CRC(e4c470cb) SHA1(ff1917bfa963988d739a9dbf0b8f034fe49f2f8c), ROM_SKIP(1) | ROM_BIOS(1))
ROMX_LOAD("mprgm540e__06_may_91k.u172", 0x00000, 0x20000, CRC(03225843) SHA1(03cfcd5b8ae0057240ef808a40108cb5d082eb63), ROM_SKIP(1) | ROM_BIOS(1))
@@ -801,7 +1093,7 @@ ROM_START(ip2400)
ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
ROM_LOAD32_BYTE("msmt0470.bin", 0x0, 0x20, CRC(498c80df) SHA1(18a49732ac9d04b20a77747c1b946c2e88abb087))
- ROM_REGION(0x0020000, INTERPRO_EPROM_TAG, 0)
+ ROM_REGION(0x20000, INTERPRO_EPROM_TAG, 0)
ROM_SYSTEM_BIOS(0, "ip2400", "InterPro 2400 EPROM")
ROMX_LOAD("mprgw510b__05_16_92.u35", 0x00000, 0x20000, CRC(3b2c4545) SHA1(4e4c98d1cd1035a04be8527223f44d0b687ec3ef), ROM_BIOS(1))
@@ -816,7 +1108,7 @@ ROM_START(ip2500)
ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
ROM_LOAD32_BYTE("msmt1000.bin", 0x0, 0x20, CRC(548046c0) SHA1(ce7646e868f3aa35642d7f9348f6b9e91693918e))
- ROM_REGION(0x0020000, INTERPRO_EPROM_TAG, 0)
+ ROM_REGION(0x20000, INTERPRO_EPROM_TAG, 0)
ROM_SYSTEM_BIOS(0, "ip2500", "InterPro 2500 EPROM")
ROMX_LOAD("ip2500_eprom.bin", 0x00000, 0x20000, NO_DUMP, ROM_BIOS(1))
@@ -831,7 +1123,7 @@ ROM_START(ip2700)
ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
ROM_LOAD32_BYTE("msmt1280.bin", 0x0, 0x20, CRC(32d833af) SHA1(7225c5f5670fe49d86556a2cb453ae6fe09e3e19))
- ROM_REGION(0x0020000, INTERPRO_EPROM_TAG, 0)
+ ROM_REGION(0x20000, INTERPRO_EPROM_TAG, 0)
ROM_SYSTEM_BIOS(0, "ip2700", "InterPro 2700 EPROM")
ROMX_LOAD("mprgz530a__9405181.u35", 0x00000, 0x20000, CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(1))
@@ -846,7 +1138,7 @@ ROM_START(ip2800)
ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
ROM_LOAD32_BYTE("msmt1450.bin", 0x0, 0x20, CRC(61c7a305) SHA1(efcd045cbdfda8df44eaad761b0ba99367973cd7))
- ROM_REGION(0x0020000, INTERPRO_EPROM_TAG, 0)
+ ROM_REGION(0x20000, INTERPRO_EPROM_TAG, 0)
ROM_SYSTEM_BIOS(0, "ip2800", "InterPro 2800 EPROM")
ROMX_LOAD("ip2800_eprom.bin", 0x00000, 0x20000, CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(1))
@@ -857,9 +1149,74 @@ ROM_START(ip2800)
ROM_LOAD_OPTIONAL("y226.u67", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
ROM_END
+ROM_START(ip6000)
+ ROM_REGION(0x80, INTERPRO_NODEID_TAG, 0)
+ ROM_LOAD32_BYTE("nodeid.bin", 0x0, 0x20, CRC(a38397a6) SHA1(9f45fb932bbe231c95b3d5470dcd1fa1c846486f))
+
+ ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
+ ROM_LOAD32_BYTE("mpcb765b.bin", 0x0, 0x20, CRC(d81bda5c) SHA1(27e6baffb13fa9f3118b7ff539c7e11b7e778416))
+
+ ROM_REGION(0x40000, INTERPRO_EPROM_TAG, 0)
+ ROM_SYSTEM_BIOS(0, "ip6000", "InterPro 6000 EPROM")
+ ROMX_LOAD("ip6000_lo.bin", 0x00001, 0x20000, NO_DUMP, ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD("ip6000_hi.bin", 0x00000, 0x20000, NO_DUMP, ROM_SKIP(1) | ROM_BIOS(1))
+ROM_END
+
+ROM_START(ip6400)
+ ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
+ ROM_LOAD32_BYTE("msmt046b.bin", 0x0, 0x20, CRC(3e8ffc77) SHA1(719a3f8b01bb506c9cb876506d63d167550bcd0a))
+
+ // FIXME: use 2400 eprom until we have a 6400 dump
+ ROM_REGION(0x20000, INTERPRO_EPROM_TAG, 0)
+ ROM_SYSTEM_BIOS(0, "ip6400", "InterPro 6400 EPROM")
+ ROMX_LOAD("ip6400_eprom.bin", 0x00000, 0x20000, BAD_DUMP CRC(3b2c4545) SHA1(4e4c98d1cd1035a04be8527223f44d0b687ec3ef), ROM_BIOS(1))
+
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_LOAD_OPTIONAL("flash.lo", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
+
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_LOAD_OPTIONAL("flash.hi", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
+ROM_END
+
+ROM_START(ip6700)
+ ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
+ ROM_LOAD32_BYTE("msmt127b.bin", 0x0, 0x20, CRC(cc112f65) SHA1(8533a31b4733fd91bb87effcd276fc93f2858629))
+
+ // FIXME: use 2800 eprom until we have a 6700 dump
+ ROM_REGION(0x20000, INTERPRO_EPROM_TAG, 0)
+ ROM_SYSTEM_BIOS(0, "ip6700", "InterPro 6700 EPROM")
+ ROMX_LOAD("mprgz530a.u144", 0x00000, 0x20000, BAD_DUMP CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(1))
+
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_LOAD_OPTIONAL("y225.u117", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
+
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_LOAD_OPTIONAL("y226.u130", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
+ROM_END
+
+ROM_START(ip6800)
+ ROM_REGION(0x80, INTERPRO_IDPROM_TAG, 0)
+ ROM_LOAD32_BYTE("msmt127b.bin", 0x0, 0x20, CRC(cc112f65) SHA1(8533a31b4733fd91bb87effcd276fc93f2858629))
+
+ // FIXME: use 2800 eprom until we have a 6800 dump
+ ROM_REGION(0x20000, INTERPRO_EPROM_TAG, 0)
+ ROM_SYSTEM_BIOS(0, "ip6800", "InterPro 6800 EPROM")
+ ROMX_LOAD("mprgz530a__9406270.u144", 0x00000, 0x20000, BAD_DUMP CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(1))
+
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_LOAD_OPTIONAL("y225.u117", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
+
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_LOAD_OPTIONAL("y226.u130", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
+ROM_END
+
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP( 1990, ip2000, 0, 0, ip2000, interpro, turquoise_state,init_common,"Intergraph", "InterPro 2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
COMP( 1992, ip2400, 0, 0, ip2400, interpro, sapphire_state, init_common,"Intergraph", "InterPro 2400", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
COMP( 1993, ip2500, 0, 0, ip2500, interpro, sapphire_state, init_common,"Intergraph", "InterPro 2500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
COMP( 1993, ip2700, 0, 0, ip2700, interpro, sapphire_state, init_common,"Intergraph", "InterPro 2700", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
COMP( 1994, ip2800, 0, 0, ip2800, interpro, sapphire_state, init_common,"Intergraph", "InterPro 2800", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1990, ip6000, 0, 0, ip6000, interpro, emerald_state, init_common,"Intergraph", "InterPro 6000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1992, ip6400, 0, 0, ip6400, interpro, sapphire_state, init_common,"Intergraph", "InterPro 6400", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1993, ip6700, 0, 0, ip6700, interpro, sapphire_state, init_common,"Intergraph", "InterPro 6700", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1993, ip6800, 0, 0, ip6800, interpro, sapphire_state, init_common,"Intergraph", "InterPro 6800", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)