summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/nforcepc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/nforcepc.cpp')
-rw-r--r--src/mame/drivers/nforcepc.cpp1247
1 files changed, 0 insertions, 1247 deletions
diff --git a/src/mame/drivers/nforcepc.cpp b/src/mame/drivers/nforcepc.cpp
deleted file mode 100644
index 6cec458ba1b..00000000000
--- a/src/mame/drivers/nforcepc.cpp
+++ /dev/null
@@ -1,1247 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders: Samuele Zannoli
-
-/*
- Computer based on a motherboard utilizing the nForce chipset (also known as CRUSH11 or CRUSH12)
-
- Start with the following components:
- - An Asus A7N266-C motherboard using:
- - nForce 415-D northbridge
- - nForce MCP-D southbridge (with integrated APU)
- - ITE IT8703F-A SuperIO
- - Asus AS99127F chip
- - An AMD Athlon XP processor
- - An IDE hard disk
- - A floppy disk drive
- - A keyboard
- - A ddr dimm memory module
- Later add:
- - A Nvidia NV25 based AGP video card
-
-*/
-
-
-#include "emu.h"
-#include "bus/ata/atadev.h"
-#include "cpu/i386/athlon.h"
-#include "machine/pci.h"
-#include "machine/pci-ide.h"
-#include "machine/intelfsh.h"
-#include "video/virge_pci.h"
-#include "bus/rs232/rs232.h"
-#include "bus/rs232/hlemouse.h"
-#include "bus/rs232/null_modem.h"
-#include "bus/rs232/sun_kbd.h"
-#include "bus/rs232/terminal.h"
-#include "includes/xbox_pci.h"
-#include "includes/nforcepc.h"
-
-#if 1
-// for now let's use this as the contents of the spd chip in the ddr dimm memory module
-static const uint8_t test_spd_data[] = {
- 0x80,0x08,0x07,0x0D,0x0A,0x01,0x40,0x00,0x04,0x75,0x75,0x00,0x82,0x10,0x00,0x01,
- 0x0E,0x04,0x0C,0x01,0x02,0x20,0xC0,0xA0,0x75,0x00,0x00,0x50,0x3C,0x50,0x2D,0x40,
- 0x90,0x90,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x41,0x4B,0x30,0x32,0x75,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA,
- 0xAD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x59,0x4D,0x44,0x35,0x33,0x32,
- 0x4D,0x36,0x34,0x36,0x43,0x36,0x2D,0x48,0x20,0x20,0x20
-};
-#else
-// From a HYS72D64320HU-5-C (512MB PC3200 (400mHz) DDR CL3 ECC)
-static const uint8_t test_spd_data[] = {
- 0x80,0x08,0x07,0x0d,0x0a,0x02,0x48,0x00,0x04,0x50,0x50,0x02,0x82,0x08,0x08,0x01,
- 0x0e,0x04,0x1c,0x01,0x02,0x20,0xc1,0x60,0x50,0x75,0x50,0x3c,0x28,0x3c,0x28,0x40,
- 0x60,0x60,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x37,0x41,0x28,0x28,0x50,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
- 0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x45,0x37,0x32,0x44,0x36,0x34,0x33,0x32,
- 0x30,0x48,0x55,0x35,0x43,0x20,0x20,0x20,0x20,0x20,0x20,0x02,0x4c,0x05,0x44,0x01,
- 0x08,0x56,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-};
-#endif
-
-/*
- Pci devices
-*/
-
-// NVIDIA Corporation nForce CPU bridge
-
-DEFINE_DEVICE_TYPE(CRUSH11, crush11_host_device, "crush11", "NVIDIA Corporation nForce CPU bridge")
-
-void crush11_host_device::config_map(address_map &map)
-{
- pci_host_device::config_map(map);
- map(0x10, 0x27).rw(FUNC(pci_device::address_base_r), FUNC(pci_device::address_base_w));
- map(0x84, 0x87).rw(FUNC(crush11_host_device::ram_size_r), FUNC(crush11_host_device::ram_size_w));
- map(0xf0, 0xf0).rw(FUNC(crush11_host_device::unknown_r), FUNC(crush11_host_device::unknown_w));
-}
-
-uint8_t crush11_host_device::header_type_r()
-{
- return 0x80; // from lspci dump
-}
-
-crush11_host_device::crush11_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_host_device(mconfig, CRUSH11, tag, owner, clock)
- , cpu(*this, finder_base::DUMMY_TAG)
- , biosrom(*this, finder_base::DUMMY_TAG)
- , ram_size(0)
-{
-}
-
-void crush11_host_device::device_start()
-{
- pci_host_device::device_start();
- set_multifunction_device(true);
- memory_space = &cpu->space(AS_DATA);
- io_space = &cpu->space(AS_IO);
-
- memory_window_start = 0;
- memory_window_end = 0xffffffff;
- memory_offset = 0;
- io_window_start = 0;
- io_window_end = 0xffff;
- io_offset = 0;
- status = 0x00b0;
- command = 0x0000;
-
- add_map(64 * 1024 * 1024, M_MEM | M_PREF, FUNC(crush11_host_device::aperture_map));
-}
-
-void crush11_host_device::reset_all_mappings()
-{
- pci_host_device::reset_all_mappings();
-}
-
-void crush11_host_device::device_reset()
-{
- pci_host_device::device_reset();
-}
-
-void crush11_host_device::map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
- uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space)
-{
- io_space->install_device(0, 0xffff, *static_cast<pci_host_device *>(this), &pci_host_device::io_configuration_access_map);
- memory_space->install_device(0, 0xffffffff, *this, &crush11_host_device::bios_map);
-}
-
-void crush11_host_device::bios_map(address_map &map)
-{
- map(0x000c0000, 0x000fffff).rw(biosrom, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
- map(0xfffc0000, 0xffffffff).rw(biosrom, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
-}
-
-uint8_t crush11_host_device::unknown_r()
-{
- return 4;
-}
-
-void crush11_host_device::unknown_w(uint8_t data)
-{
- logerror("test = %02x\n", data);
-}
-
-uint32_t crush11_host_device::ram_size_r()
-{
- return ram_size * 1024 * 1024 - 1;
-}
-
-void crush11_host_device::ram_size_w(uint32_t data)
-{
- logerror("trying to set size = %d\n", data);
-}
-
-// For ddr ram
-
-DEFINE_DEVICE_TYPE(CRUSH11_MEMORY, crush11_memory_device, "crush11_memory", "nForce memory")
-
-void crush11_memory_device::config_map(address_map &map)
-{
- pci_device::config_map(map);
- /*
- bit 31 of a0,a4,a8,ac,b0 and b4 must be 0
- bit 0 of c4 and c8 must be 0
- */
- map(0xa0, 0xa3).nopr();
- map(0xa4, 0xa7).nopr();
- map(0xa8, 0xab).nopr();
- map(0xac, 0xaf).nopr();
- map(0xb0, 0xb3).nopr();
- map(0xb4, 0xb7).nopr();
- map(0xc4, 0xc7).nopr();
- map(0xc8, 0xcb).nopr();
-}
-
-crush11_memory_device::crush11_memory_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t subsystem_id, int ram_size)
- : crush11_memory_device(mconfig, tag, owner, clock)
-{
- set_ids(0x10de01ac, 0xb2, 0x050000, subsystem_id);
- set_ram_size(ram_size);
-}
-
-crush11_memory_device::crush11_memory_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, CRUSH11_MEMORY, tag, owner, clock)
-{
-}
-
-void crush11_memory_device::device_start()
-{
- device_t *r = owner()->subdevice("00.0");
-
- pci_device::device_start();
- set_multifunction_device(true);
- ram.resize(ddr_ram_size * 1024 * 1024 / 4);
- host = dynamic_cast<crush11_host_device *>(r);
- ram_space = host->get_cpu_space(AS_PROGRAM);
- status = 0x0020;
- command = 0x0000;
-}
-
-void crush11_memory_device::device_reset()
-{
- pci_device::device_reset();
- host->set_ram_size(ddr_ram_size);
-}
-
-void crush11_memory_device::set_ram_size(int ram_size)
-{
- ddr_ram_size = ram_size;
- if (ddr_ram_size < 16)
- ddr_ram_size = 16;
-}
-
-void crush11_memory_device::map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
- uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space)
-{
- ram_space->install_ram(0x00000000, ddr_ram_size * 1024 * 1024 - 1, &ram[0]);
-}
-
-/*
- Ddevices connected to SMBus
-*/
-
-// access logger
-
-DEFINE_DEVICE_TYPE(SMBUS_LOGGER, smbus_logger_device, "smbus_logger", "SMBUS LOGGER")
-
-smbus_logger_device::smbus_logger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SMBUS_LOGGER, tag, owner, clock)
-{
-}
-
-int smbus_logger_device::execute_command(int command, int rw, int data)
-{
- if (rw == 1)
- {
- logerror("smbus read from %02x R %02x\n", command, buffer[command]);
- return buffer[command];
- }
- buffer[command] = (uint8_t)data;
- logerror("smbus write to %02x W %02x\n", command, data);
- return 0;
-}
-
-void smbus_logger_device::device_start()
-{
- memset(buffer, 0, sizeof(buffer));
-}
-
-void smbus_logger_device::device_reset()
-{
-}
-
-// read-only data
-
-DEFINE_DEVICE_TYPE(SMBUS_ROM, smbus_rom_device, "smbus_rom", "SMBUS ROM")
-
-smbus_rom_device::smbus_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, SMBUS_ROM, tag, owner, clock)
-{
-}
-
-smbus_rom_device::smbus_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const uint8_t *data, int size) :
- smbus_rom_device(mconfig, tag, owner, clock)
-{
- buffer = data;
- buffer_size = size;
-}
-
-int smbus_rom_device::execute_command(int command, int rw, int data)
-{
- if ((rw == 1) && (command < buffer_size) && (buffer != nullptr))
- {
- logerror("smbus rom read from %02x %02x\n", command, buffer[command]);
- return buffer[command];
- }
- return 0;
-}
-
-void smbus_rom_device::device_start()
-{
-}
-
-void smbus_rom_device::device_reset()
-{
-}
-
-// Asus AS99127F chip
-
-DEFINE_DEVICE_TYPE(AS99127F, as99127f_device, "as99127f", "Asus AS99127F")
-
-as99127f_device::as99127f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AS99127F, tag, owner, clock)
-{
-}
-
-int as99127f_device::execute_command(int command, int rw, int data)
-{
- if (rw == 1)
- {
- logerror("smbus read from %02x R %02x\n", command, buffer[command]);
- return buffer[command];
- }
- buffer[command] = (uint8_t)data;
- logerror("smbus write to %02x W %02x\n", command, data);
- return 0;
-}
-
-void as99127f_device::device_start()
-{
- memset(buffer, 0, sizeof(buffer));
- // used to read voltages by bios, measured in mV
- buffer[0x20] = 0x70; // multiplied by 0x10
- buffer[0x2] = 0x7e; // multiplied by 0x10
- buffer[0x23] = 0x96; // multiplied by 0x540 then divided by 0x32
- buffer[0x24] = 0x9e; // multiplied by 0x260 then divided by 0xa
-}
-
-DEFINE_DEVICE_TYPE(AS99127F_SENSOR2, as99127f_sensor2_device, "as99127f_sensor2", "Asus AS99127F temperature sensor 2")
-
-as99127f_sensor2_device::as99127f_sensor2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AS99127F_SENSOR2, tag, owner, clock)
-{
-}
-
-int as99127f_sensor2_device::execute_command(int command, int rw, int data)
-{
- if (rw == 1)
- {
- logerror("smbus read from %02x R %02x\n", command, buffer[command]);
- return buffer[command];
- }
- buffer[command] = (uint8_t)data;
- logerror("smbus write to %02x W %02x\n", command, data);
- return 0;
-}
-
-void as99127f_sensor2_device::device_start()
-{
- memset(buffer, 0, sizeof(buffer));
-}
-
-DEFINE_DEVICE_TYPE(AS99127F_SENSOR3, as99127f_sensor3_device, "as99127f_sensor3", "Asus AS99127F temperature sensor 3")
-
-as99127f_sensor3_device::as99127f_sensor3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, AS99127F_SENSOR3, tag, owner, clock)
-{
-}
-
-int as99127f_sensor3_device::execute_command(int command, int rw, int data)
-{
- if (rw == 1)
- {
- logerror("smbus read from %02x R %02x\n", command, buffer[command]);
- return buffer[command];
- }
- buffer[command] = (uint8_t)data;
- logerror("smbus write to %02x W %02x\n", command, data);
- return 0;
-}
-
-void as99127f_sensor3_device::device_start()
-{
- memset(buffer, 0, sizeof(buffer));
-}
-
-// ITE IT8703F-A SuperIO
-
-DEFINE_DEVICE_TYPE(IT8703F, it8703f_device, "it8703f_device", "ITE IT8703F-A SuperIO")
-
-it8703f_device::it8703f_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IT8703F, tag, owner, clock)
- , mode(OperatingMode::Run)
- , config_key_step(0)
- , config_index(0)
- , logical_device(0)
- , pin_reset_callback(*this)
- , pin_gatea20_callback(*this)
- , m_txd1_callback(*this)
- , m_ndtr1_callback(*this)
- , m_nrts1_callback(*this)
- , m_txd2_callback(*this)
- , m_ndtr2_callback(*this)
- , m_nrts2_callback(*this)
- , floppy_controller_fdcdev(*this, "fdc")
- , pc_lpt_lptdev(*this, "lpt")
- , pc_serial1_comdev(*this, "uart_0")
- , pc_serial2_comdev(*this, "uart_1")
- , m_kbdc(*this, "pc_kbdc")
- , enabled_game_port(false)
- , enabled_midi_port(false)
-{
- memset(global_configuration_registers, 0, sizeof(global_configuration_registers));
- global_configuration_registers[0x20] = 0x87; // identifies it8703f
- global_configuration_registers[0x21] = 1;
- global_configuration_registers[0x24] = 4;
- memset(configuration_registers, 0, sizeof(configuration_registers));
- configuration_registers[LogicalDevice::FDC][0x60] = 3;
- configuration_registers[LogicalDevice::FDC][0x61] = 0xf0;
- configuration_registers[LogicalDevice::FDC][0x70] = 6;
- configuration_registers[LogicalDevice::FDC][0x74] = 2;
- configuration_registers[LogicalDevice::FDC][0xf0] = 0xe;
- configuration_registers[LogicalDevice::FDC][0xf2] = 0xff;
- configuration_registers[LogicalDevice::Parallel][0x74] = 4;
- configuration_registers[LogicalDevice::Parallel][0xf0] = 0x3f;
- for (int n = 0; n < 13; n++)
- enabled_logical[n] = false;
-}
-
-void it8703f_device::device_start()
-{
- pin_reset_callback.resolve_safe();
- pin_gatea20_callback.resolve_safe();
- m_txd1_callback.resolve_safe();
- m_ndtr1_callback.resolve_safe();
- m_nrts1_callback.resolve_safe();
- m_txd2_callback.resolve_safe();
- m_ndtr2_callback.resolve_safe();
- m_nrts2_callback.resolve_safe();
-}
-
-void it8703f_device::internal_memory_map(address_map &map)
-{
-}
-
-void it8703f_device::internal_io_map(address_map &map)
-{
- map(0x002e, 0x002f).rw(FUNC(it8703f_device::read_it8703f), FUNC(it8703f_device::write_it8703f));
-}
-
-uint16_t it8703f_device::get_base_address(int logical, int index)
-{
- int position = index * 2 + 0x60;
-
- return ((uint16_t)configuration_registers[logical][position] << 8) + (uint16_t)configuration_registers[logical][position + 1];
-}
-
-void it8703f_device::device_add_mconfig(machine_config &config)
-{
- // floppy disc controller
- smc37c78_device& fdcdev(SMC37C78(config, floppy_controller_fdcdev, 24'000'000));
- fdcdev.intrq_wr_callback().set(FUNC(it8703f_device::irq_floppy_w));
- fdcdev.drq_wr_callback().set(FUNC(it8703f_device::drq_floppy_w));
-
- // parallel port
- PC_LPT(config, pc_lpt_lptdev);
- pc_lpt_lptdev->irq_handler().set(FUNC(it8703f_device::irq_parallel_w));
-
- // serial ports
- NS16450(config, pc_serial1_comdev, XTAL(1'843'200)); // or NS16550 ?
- pc_serial1_comdev->out_int_callback().set(FUNC(it8703f_device::irq_serial1_w));
- pc_serial1_comdev->out_tx_callback().set(FUNC(it8703f_device::txd_serial1_w));
- pc_serial1_comdev->out_dtr_callback().set(FUNC(it8703f_device::dtr_serial1_w));
- pc_serial1_comdev->out_rts_callback().set(FUNC(it8703f_device::rts_serial1_w));
-
- NS16450(config, pc_serial2_comdev, XTAL(1'843'200));
- pc_serial2_comdev->out_int_callback().set(FUNC(it8703f_device::irq_serial2_w));
- pc_serial2_comdev->out_tx_callback().set(FUNC(it8703f_device::txd_serial2_w));
- pc_serial2_comdev->out_dtr_callback().set(FUNC(it8703f_device::dtr_serial2_w));
- pc_serial2_comdev->out_rts_callback().set(FUNC(it8703f_device::rts_serial2_w));
-
- // keyboard
- KBDC8042(config, m_kbdc);
- m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_PS2);
- m_kbdc->input_buffer_full_callback().set(FUNC(it8703f_device::irq_keyboard_w));
- m_kbdc->system_reset_callback().set(FUNC(it8703f_device::kbdp20_gp20_reset_w));
- m_kbdc->gate_a20_callback().set(FUNC(it8703f_device::kbdp21_gp25_gatea20_w));
-}
-
-uint8_t it8703f_device::read_it8703f(offs_t offset)
-{
- if (offset == 0)
- {
- if (mode == OperatingMode::Run)
- return 0;
- return config_index;
- }
- else if (offset == 1)
- {
- if (mode == OperatingMode::Run)
- return 0;
- if (config_index < 0x30)
- return read_global_configuration_register(config_index);
- else
- return read_logical_configuration_register(config_index);
- }
- else
- return 0;
-}
-
-void it8703f_device::write_it8703f(offs_t offset, uint8_t data)
-{
- uint8_t byt;
-
- if (offset == 0)
- {
- byt = data & 0xff;
- if (mode == OperatingMode::Run)
- {
- if (byt != 0x87)
- return;
- config_key_step++;
- if (config_key_step > 1)
- {
- config_key_step = 0;
- mode = OperatingMode::Configuration;
- }
- }
- else
- {
- if (byt == 0xaa)
- {
- mode = OperatingMode::Run;
- return;
- }
- config_index = byt;
- }
- }
- else if (offset == 1)
- {
- if (mode == OperatingMode::Run)
- return;
- byt = data & 0xff;
- if (config_index < 0x30)
- write_global_configuration_register(config_index, byt);
- else
- write_logical_configuration_register(config_index, byt);
- }
- else
- return;
-}
-
-void it8703f_device::write_global_configuration_register(int index, int data)
-{
- global_configuration_registers[index] = data;
- switch (index)
- {
- case 7:
- logical_device = data;
- logerror("Selected logical device %d\n", data);
- break;
- }
- logerror("Write global configuration register %02X = %02X\n", index, data);
-}
-
-void it8703f_device::write_logical_configuration_register(int index, int data)
-{
- configuration_registers[logical_device][index] = data;
- switch (logical_device)
- {
- case LogicalDevice::FDC:
- write_fdd_configuration_register(index, data);
- break;
- case LogicalDevice::Serial1:
- write_serial1_configuration_register(index, data);
- break;
- case LogicalDevice::Serial2:
- write_serial2_configuration_register(index, data);
- break;
- case LogicalDevice::Parallel:
- write_parallel_configuration_register(index, data);
- break;
- case LogicalDevice::Keyboard:
- write_keyboard_configuration_register(index, data);
- break;
- case LogicalDevice::Gpio1:
- if (index == 0x30)
- {
- if (data & 1)
- enabled_game_port = true;
- if (data & 2)
- enabled_midi_port = true;
- }
- break;
- }
-}
-
-void it8703f_device::write_fdd_configuration_register(int index, int data)
-{
- if (index == 0x30)
- {
- if (data & 1)
- {
- if (enabled_logical[LogicalDevice::FDC] == false)
- {
- enabled_logical[LogicalDevice::FDC] = true;
- lpchost->remap();
- }
- logerror("Enabled FDD at %04X\n", get_base_address(LogicalDevice::FDC, 0));
- }
- else
- {
- if (enabled_logical[LogicalDevice::FDC] == true)
- {
- enabled_logical[LogicalDevice::FDC] = false;
- lpchost->remap();
- }
- logerror("Disabled FDD at %04X\n", get_base_address(LogicalDevice::FDC, 0));
- }
- }
- if (index == 0x74)
- logerror("Set FDD dma channel %d\n", configuration_registers[LogicalDevice::FDC][0x74]);
-}
-
-void it8703f_device::write_parallel_configuration_register(int index, int data)
-{
- if (index == 0x30)
- {
- if (data & 1)
- {
- if (enabled_logical[LogicalDevice::Parallel] == false)
- {
- enabled_logical[LogicalDevice::Parallel] = true;
- lpchost->remap();
- }
- logerror("Enabled LPT at %04X\n", get_base_address(LogicalDevice::Parallel, 0));
- }
- else
- {
- if (enabled_logical[LogicalDevice::Parallel] == true)
- {
- enabled_logical[LogicalDevice::Parallel] = false;
- lpchost->remap();
- }
- }
- }
- if (index == 0x74)
- logerror("Set LPT dma channel %d\n", configuration_registers[LogicalDevice::Parallel][0x74]);
-}
-
-void it8703f_device::write_serial1_configuration_register(int index, int data)
-{
- if (index == 0x30)
- {
- if (data & 1)
- {
- if (enabled_logical[LogicalDevice::Serial1] == false)
- {
- enabled_logical[LogicalDevice::Serial1] = true;
- lpchost->remap();
- }
- logerror("Enabled Serial1 at %04X\n", get_base_address(LogicalDevice::Serial1, 0));
- }
- else
- {
- if (enabled_logical[LogicalDevice::Serial1] == true)
- {
- enabled_logical[LogicalDevice::Serial1] = false;
- lpchost->remap();
- }
- }
- }
-}
-
-void it8703f_device::write_serial2_configuration_register(int index, int data)
-{
- if (index == 0x30)
- {
- if (data & 1)
- {
- if (enabled_logical[LogicalDevice::Serial2] == false)
- {
- enabled_logical[LogicalDevice::Serial2] = true;
- lpchost->remap();
- }
- logerror("Enabled Serial2 at %04X\n", get_base_address(LogicalDevice::Serial2, 0));
- }
- else
- {
- if (enabled_logical[LogicalDevice::Serial2] == true)
- {
- enabled_logical[LogicalDevice::Serial2] = false;
- lpchost->remap();
- }
- }
- }
-}
-
-void it8703f_device::write_keyboard_configuration_register(int index, int data)
-{
- if (index == 0x30)
- {
- if (data & 1)
- {
- if (enabled_logical[LogicalDevice::Keyboard] == false)
- {
- enabled_logical[LogicalDevice::Keyboard] = true;
- lpchost->remap();
- }
- logerror("Enabled Keyboard\n");
- }
- else
- {
- if (enabled_logical[LogicalDevice::Keyboard] == true)
- {
- enabled_logical[LogicalDevice::Keyboard] = false;
- lpchost->remap();
- }
- }
- }
-}
-
-uint16_t it8703f_device::read_global_configuration_register(int index)
-{
- uint16_t ret = 0;
-
- ret = global_configuration_registers[index];
- switch (index)
- {
- case 7:
- ret = logical_device;
- break;
- }
- logerror("Read global configuration register %02X = %02X\n", index, ret);
- return ret;
-}
-
-uint16_t it8703f_device::read_logical_configuration_register(int index)
-{
- uint16_t ret = 0;
-
- switch (logical_device)
- {
- case LogicalDevice::FDC:
- ret = read_fdd_configuration_register(index);
- break;
- case LogicalDevice::Parallel:
- ret = read_parallel_configuration_register(index);
- break;
- case LogicalDevice::Serial1:
- ret = read_serial1_configuration_register(index);
- break;
- case LogicalDevice::Serial2:
- ret = read_serial2_configuration_register(index);
- break;
- case LogicalDevice::Keyboard:
- ret = read_keyboard_configuration_register(index);
- break;
- default:
- ret = configuration_registers[logical_device][index];
- break;
- }
- return ret;
-}
-
-WRITE_LINE_MEMBER(it8703f_device::irq_floppy_w)
-{
- if (enabled_logical[LogicalDevice::FDC] == false)
- return;
- lpchost->set_virtual_line(configuration_registers[LogicalDevice::FDC][0x70], state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::drq_floppy_w)
-{
- if (enabled_logical[LogicalDevice::FDC] == false)
- return;
- lpchost->set_virtual_line(configuration_registers[LogicalDevice::FDC][0x74] + 16, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::irq_parallel_w)
-{
- if (enabled_logical[LogicalDevice::Parallel] == false)
- return;
- lpchost->set_virtual_line(configuration_registers[LogicalDevice::Parallel][0x70], state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::drq_parallel_w)
-{
- if (enabled_logical[LogicalDevice::Parallel] == false)
- return;
- lpchost->set_virtual_line(configuration_registers[LogicalDevice::Parallel][0x74] + 16, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::irq_serial1_w)
-{
- if (enabled_logical[LogicalDevice::Serial1] == false)
- return;
- lpchost->set_virtual_line(configuration_registers[LogicalDevice::Serial1][0x70], state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::txd_serial1_w)
-{
- if (enabled_logical[LogicalDevice::Serial1] == false)
- return;
- m_txd1_callback(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::dtr_serial1_w)
-{
- if (enabled_logical[LogicalDevice::Serial1] == false)
- return;
- m_ndtr1_callback(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::rts_serial1_w)
-{
- if (enabled_logical[LogicalDevice::Serial1] == false)
- return;
- m_nrts1_callback(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::irq_serial2_w)
-{
- if (enabled_logical[LogicalDevice::Serial2] == false)
- return;
- lpchost->set_virtual_line(configuration_registers[LogicalDevice::Serial2][0x70], state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::txd_serial2_w)
-{
- if (enabled_logical[LogicalDevice::Serial2] == false)
- return;
- m_txd2_callback(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::dtr_serial2_w)
-{
- if (enabled_logical[LogicalDevice::Serial2] == false)
- return;
- m_ndtr2_callback(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::rts_serial2_w)
-{
- if (enabled_logical[LogicalDevice::Serial2] == false)
- return;
- m_nrts2_callback(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::rxd1_w)
-{
- pc_serial1_comdev->rx_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::ndcd1_w)
-{
- pc_serial1_comdev->dcd_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::ndsr1_w)
-{
- pc_serial1_comdev->dsr_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::nri1_w)
-{
- pc_serial1_comdev->ri_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::ncts1_w)
-{
- pc_serial1_comdev->cts_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::rxd2_w)
-{
- pc_serial2_comdev->rx_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::ndcd2_w)
-{
- pc_serial2_comdev->dcd_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::ndsr2_w)
-{
- pc_serial2_comdev->dsr_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::nri2_w)
-{
- pc_serial2_comdev->ri_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::ncts2_w)
-{
- pc_serial2_comdev->cts_w(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::irq_keyboard_w)
-{
- if (enabled_logical[LogicalDevice::Keyboard] == false)
- return;
- lpchost->set_virtual_line(configuration_registers[LogicalDevice::Keyboard][0x70], state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::kbdp21_gp25_gatea20_w)
-{
- if (enabled_logical[LogicalDevice::Keyboard] == false)
- return;
- pin_gatea20_callback(state);
-}
-
-WRITE_LINE_MEMBER(it8703f_device::kbdp20_gp20_reset_w)
-{
- if (enabled_logical[LogicalDevice::Keyboard] == false)
- return;
- pin_reset_callback(state);
-}
-
-void it8703f_device::map_fdc_addresses()
-{
- uint16_t base = get_base_address(LogicalDevice::FDC, 0);
-
- iospace->install_device(base, base + 7, *floppy_controller_fdcdev, &smc37c78_device::map);
-}
-
-void it8703f_device::map_lpt(address_map& map)
-{
- map(0x0, 0x3).rw(FUNC(it8703f_device::lpt_read), FUNC(it8703f_device::lpt_write));
-}
-
-uint8_t it8703f_device::lpt_read(offs_t offset)
-{
- return pc_lpt_lptdev->read(offset);
-}
-
-void it8703f_device::lpt_write(offs_t offset, uint8_t data)
-{
- pc_lpt_lptdev->write(offset, data);
-}
-
-void it8703f_device::map_lpt_addresses()
-{
- uint16_t base = get_base_address(LogicalDevice::Parallel, 0);
-
- iospace->install_device(base, base + 3, *this, &it8703f_device::map_lpt);
-}
-
-void it8703f_device::map_serial1(address_map& map)
-{
- map(0x0, 0x7).rw(FUNC(it8703f_device::serial1_read), FUNC(it8703f_device::serial1_write));
-}
-
-uint8_t it8703f_device::serial1_read(offs_t offset)
-{
- return pc_serial1_comdev->ins8250_r(offset);
-}
-
-void it8703f_device::serial1_write(offs_t offset, uint8_t data)
-{
- pc_serial1_comdev->ins8250_w(offset, data);
-}
-
-void it8703f_device::map_serial1_addresses()
-{
- uint16_t base = get_base_address(LogicalDevice::Serial1, 0);
-
- iospace->install_device(base, base + 7, *this, &it8703f_device::map_serial1);
-}
-
-void it8703f_device::map_serial2(address_map& map)
-{
- map(0x0, 0x7).rw(FUNC(it8703f_device::serial2_read), FUNC(it8703f_device::serial2_write));
-}
-
-uint8_t it8703f_device::serial2_read(offs_t offset)
-{
- return pc_serial2_comdev->ins8250_r(offset);
-}
-
-void it8703f_device::serial2_write(offs_t offset, uint8_t data)
-{
- pc_serial2_comdev->ins8250_w(offset, data);
-}
-
-void it8703f_device::map_serial2_addresses()
-{
- uint16_t base = get_base_address(LogicalDevice::Serial2, 0);
-
- iospace->install_device(base, base + 7, *this, &it8703f_device::map_serial2);
-}
-
-void it8703f_device::map_keyboard(address_map &map)
-{
- map(0x0, 0x0).rw(FUNC(it8703f_device::at_keybc_r), FUNC(it8703f_device::at_keybc_w));
- map(0x4, 0x4).rw(FUNC(it8703f_device::keybc_status_r), FUNC(it8703f_device::keybc_command_w));
-}
-
-uint8_t it8703f_device::at_keybc_r(offs_t offset)
-{
- switch (offset) //m_kbdc
- {
- case 0:
- return m_kbdc->data_r(0);
- }
-
- return 0xff;
-}
-
-void it8703f_device::at_keybc_w(offs_t offset, uint8_t data)
-{
- switch (offset)
- {
- case 0:
- m_kbdc->data_w(0, data);
- }
-}
-
-uint8_t it8703f_device::keybc_status_r()
-{
- return m_kbdc->data_r(4);
-}
-
-void it8703f_device::keybc_command_w(uint8_t data)
-{
- m_kbdc->data_w(4, data);
-}
-
-void it8703f_device::map_keyboard_addresses()
-{
- uint16_t base = get_base_address(LogicalDevice::Keyboard, 0);
-
- iospace->install_device(base, base + 7, *this, &it8703f_device::map_keyboard);
-}
-
-void it8703f_device::map_extra(address_space *memory_space, address_space *io_space)
-{
- memspace = memory_space;
- iospace = io_space;
- io_space->install_device(0, 0xffff, *this, &it8703f_device::internal_io_map);
- if (enabled_logical[LogicalDevice::FDC] == true)
- map_fdc_addresses();
- if (enabled_logical[LogicalDevice::Parallel] == true)
- map_lpt_addresses();
- if (enabled_logical[LogicalDevice::Serial1] == true)
- map_serial1_addresses();
- if (enabled_logical[LogicalDevice::Serial2] == true)
- map_serial2_addresses();
- if (enabled_logical[LogicalDevice::Keyboard] == true)
- map_keyboard_addresses();
-}
-
-void it8703f_device::set_host(int index, lpcbus_host_interface *host)
-{
- lpchost = host;
- lpcindex = index;
-}
-
-/*
- Machine state
-*/
-
-class nforcepc_state : public driver_device
-{
-public:
- struct boot_state_info
- {
- uint8_t val;
- const char *const message;
- };
-
- static const boot_state_info boot_state_infos_award[];
-
- void nforcepc(machine_config &config);
-
- nforcepc_state(const machine_config &mconfig, device_type type, const char *tag);
-
-private:
- void nforce_map(address_map &map);
- void nforce_map_io(address_map &map);
- void boot_state_award_w(uint8_t data);
- IRQ_CALLBACK_MEMBER(irq_callback);
- DECLARE_WRITE_LINE_MEMBER(maincpu_interrupt);
-
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- required_device<cpu_device> m_maincpu;
- required_device<mcpx_isalpc_device> isalpc;
- required_device<as99127f_device> m_as99127f;
-};
-
-nforcepc_state::nforcepc_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- isalpc(*this, ":pci:01.0"),
- m_as99127f(*this, ":pci:01.1:12d")
-{
-}
-
-void nforcepc_state::machine_start()
-{
- m_as99127f->get_buffer()[0x4f] = 0x12;
-}
-
-void nforcepc_state::machine_reset()
-{
-}
-
-const nforcepc_state::boot_state_info nforcepc_state::boot_state_infos_award[] = {
- { 0xC0, "First basic initialization" },
- { 0, nullptr }
-};
-
-void nforcepc_state::boot_state_award_w(uint8_t data)
-{
- const char *desc = "";
- for (int i = 0; boot_state_infos_award[i].message; i++)
- if (boot_state_infos_award[i].val == data)
- {
- desc = boot_state_infos_award[i].message;
- break;
- }
- logerror("Boot state %02x - %s\n", data, desc);
-}
-
-IRQ_CALLBACK_MEMBER(nforcepc_state::irq_callback)
-{
- return isalpc->acknowledge();
-}
-
-WRITE_LINE_MEMBER(nforcepc_state::maincpu_interrupt)
-{
- m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
-}
-
-void nforcepc_state::nforce_map(address_map &map)
-{
- map.unmap_value_high();
-}
-
-void nforcepc_state::nforce_map_io(address_map &map)
-{
- map.unmap_value_high();
-}
-
-static void isa_com(device_slot_interface& device)
-{
- device.option_add("microsoft_mouse", MSFT_HLE_SERIAL_MOUSE);
- device.option_add("logitech_mouse", LOGITECH_HLE_SERIAL_MOUSE);
- device.option_add("wheel_mouse", WHEEL_HLE_SERIAL_MOUSE);
- device.option_add("msystems_mouse", MSYSTEMS_HLE_SERIAL_MOUSE);
- device.option_add("rotatable_mouse", ROTATABLE_HLE_SERIAL_MOUSE);
- device.option_add("terminal", SERIAL_TERMINAL);
- device.option_add("null_modem", NULL_MODEM);
- device.option_add("sun_kbd", SUN_KBD_ADAPTOR);
-}
-
-static void pc_hd_floppies(device_slot_interface& device)
-{
- device.option_add("525hd", FLOPPY_525_HD);
- device.option_add("35hd", FLOPPY_35_HD);
- device.option_add("525dd", FLOPPY_525_DD);
- device.option_add("35dd", FLOPPY_35_DD);
-}
-
-static void floppy_formats(format_registration &fr)
-{
- fr.add_pc_formats();
- fr.add(FLOPPY_NASLITE_FORMAT);
-}
-
-/*
- Machine configuration
-*/
-
-void nforcepc_state::nforcepc(machine_config &config)
-{
- athlonxp_device &maincpu(ATHLONXP(config, "maincpu", 90000000));
- maincpu.set_addrmap(AS_PROGRAM, &nforcepc_state::nforce_map);
- maincpu.set_addrmap(AS_IO, &nforcepc_state::nforce_map_io);
- maincpu.set_irq_acknowledge_callback(FUNC(nforcepc_state::irq_callback));
- //maincpu.smiact().set("pci:01.0", FUNC(???_host_device::smi_act_w));
-
- PCI_ROOT(config, ":pci", 0);
- CRUSH11(config, ":pci:00.0", 0, "maincpu", "bios"); // 10de:01a4 NVIDIA Corporation nForce CPU bridge
- CRUSH11_MEMORY(config, ":pci:00.1", 0, 0x10430c11, 2); // 10de:01ac NVIDIA Corporation nForce 220/420 Memory Controller
- // 10de:01ad NVIDIA Corporation nForce 220/420 Memory Controller
- // 10de:01ab NVIDIA Corporation nForce 420 Memory Controller (DDR)
- mcpx_isalpc_device &isa(MCPX_ISALPC(config, ":pci:01.0", 0, 0x10430c11)); // 10de:01b2 NVIDIA Corporation nForce ISA Bridge (LPC bus)
- isa.smi().set_inputline(":maincpu", INPUT_LINE_SMI);
- isa.boot_state_hook().set(FUNC(nforcepc_state::boot_state_award_w));
- isa.interrupt_output().set(FUNC(nforcepc_state::maincpu_interrupt));
- it8703f_device &ite(IT8703F(config, ":pci:01.0:0", 0));
- ite.pin_reset().set_inputline(":maincpu", INPUT_LINE_RESET);
- ite.pin_gatea20().set_inputline(":maincpu", INPUT_LINE_A20);
- ite.txd1().set("serport0", FUNC(rs232_port_device::write_txd));
- ite.ndtr1().set("serport0", FUNC(rs232_port_device::write_dtr));
- ite.nrts1().set("serport0", FUNC(rs232_port_device::write_rts));
- ite.txd2().set("serport1", FUNC(rs232_port_device::write_txd));
- ite.ndtr2().set("serport1", FUNC(rs232_port_device::write_dtr));
- ite.nrts2().set("serport1", FUNC(rs232_port_device::write_rts));
- MCPX_SMBUS(config, ":pci:01.1", 0, 0x10430c11); // 10de:01b4 NVIDIA Corporation nForce PCI System Management (SMBus)
- SMBUS_ROM(config, ":pci:01.1:050", 0, test_spd_data, sizeof(test_spd_data)); // these 3 are on smbus number 0
- SMBUS_LOGGER(config, ":pci:01.1:051", 0);
- SMBUS_LOGGER(config, ":pci:01.1:052", 0);
- SMBUS_LOGGER(config, ":pci:01.1:108", 0); // these 4 are on smbus number 1
- AS99127F(config, ":pci:01.1:12d", 0);
- AS99127F_SENSOR2(config, ":pci:01.1:148", 0);
- AS99127F_SENSOR3(config, ":pci:01.1:149", 0);
- mcpx_ohci_device &ohci(MCPX_OHCI(config, ":pci:02.0", 0, 0x10430c11)); // 10de:01c2 NVIDIA Corporation nForce USB Controller
- ohci.interrupt_handler().set(":pci:01.0", FUNC(mcpx_isalpc_device::irq1));
- MCPX_OHCI(config, ":pci:03.0", 0, 0x10430c11); // 10de:01c2 NVIDIA Corporation nForce USB Controller
- MCPX_ETH(config, ":pci:04.0", 0); // 10de:01c3 NVIDIA Corporation nForce Ethernet Controller
- MCPX_APU(config, ":pci:05.0", 0, 0x10430c11, m_maincpu); // 10de:01b0 NVIDIA Corporation nForce Audio Processing Unit
- MCPX_AC97_AUDIO(config, ":pci:06.0", 0, 0x10438384); // 10de:01b1 NVIDIA Corporation nForce AC'97 Audio Controller
- PCI_BRIDGE(config, ":pci:08.0", 0, 0x10de01b8, 0xc2); // 10de:01b8 NVIDIA Corporation nForce PCI-to-PCI bridge
- // 10ec:8139 Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (behind bridge)
- mcpx_ide_device &ide(MCPX_IDE(config, ":pci:09.0", 0, 0x10430c11)); // 10de:01bc NVIDIA Corporation nForce IDE
- ide.pri_interrupt_handler().set(":pci:01.0", FUNC(mcpx_isalpc_device::irq14));
- ide.sec_interrupt_handler().set(":pci:01.0", FUNC(mcpx_isalpc_device::irq15));
- ide.subdevice<ide_controller_32_device>("ide1")->options(ata_devices, "hdd", nullptr, true);
- ide.subdevice<ide_controller_32_device>("ide2")->options(ata_devices, "cdrom", nullptr, true);
- NV2A_AGP(config, ":pci:1e.0", 0, 0x10de01b7, 0xb2); // 10de:01b7 NVIDIA Corporation nForce AGP to PCI Bridge
- VIRGEDX_PCI(config, ":pci:0a.0", 0);
- SST_49LF020(config, "bios", 0);
-
- FLOPPY_CONNECTOR(config, ":pci:01.0:0:fdc:0", pc_hd_floppies, "35hd", floppy_formats);
- FLOPPY_CONNECTOR(config, ":pci:01.0:0:fdc:1", pc_hd_floppies, "35hd", floppy_formats);
-
- rs232_port_device& serport0(RS232_PORT(config, "serport0", isa_com, nullptr));
- serport0.rxd_handler().set(":pci:01.0:0", FUNC(it8703f_device::rxd1_w));
- serport0.dcd_handler().set(":pci:01.0:0", FUNC(it8703f_device::ndcd1_w));
- serport0.dsr_handler().set(":pci:01.0:0", FUNC(it8703f_device::ndsr1_w));
- serport0.ri_handler().set(":pci:01.0:0", FUNC(it8703f_device::nri1_w));
- serport0.cts_handler().set(":pci:01.0:0", FUNC(it8703f_device::ncts1_w));
-
- rs232_port_device& serport1(RS232_PORT(config, "serport1", isa_com, nullptr));
- serport1.rxd_handler().set(":pci:01.0:0", FUNC(it8703f_device::rxd2_w));
- serport1.dcd_handler().set(":pci:01.0:0", FUNC(it8703f_device::ndcd2_w));
- serport1.dsr_handler().set(":pci:01.0:0", FUNC(it8703f_device::ndsr2_w));
- serport1.ri_handler().set(":pci:01.0:0", FUNC(it8703f_device::nri2_w));
- serport1.cts_handler().set(":pci:01.0:0", FUNC(it8703f_device::ncts2_w));
-}
-
-ROM_START(nforcepc)
- ROM_REGION32_LE(0x40000, "bios", 0) /* PC bios */
- ROM_SYSTEM_BIOS(0, "a7n266c", "a7n266c") // Motherboard dump. Chip: SST49LF020 Package: PLCC32 Label had 3 lines of text: "A7NC3" "1001.D" "GSQ98"
- ROMX_LOAD("a7n266c.bin", 0, 0x40000, CRC(f4f0e4fc) SHA1(87f11545db178914623e41fb51e328da479a2efc), ROM_BIOS(0))
- ROM_SYSTEM_BIOS(1, "a7n266c1001d", "a7n266c1001d") // bios version 1001.D downloaded from Asus website
- ROMX_LOAD("a7nc101d.awd", 0, 0x40000, CRC(ead1147c) SHA1(27227df98e0c5fb9fecdb4bb6ef72df19766c330), ROM_BIOS(1))
- ROM_SYSTEM_BIOS(2, "a7n266c1001e", "a7n266c1001e") // bios version 1001.E
- ROMX_LOAD("a7nc101e.awd", 0, 0x40000, CRC(a029cd42) SHA1(e257915534bc725f389e57945b45c81e7ef40dcc), ROM_BIOS(2))
- ROM_SYSTEM_BIOS(3, "a7n266c1002c", "a7n266c1002c") // beta bios version 1002C.003 ?
- ROMX_LOAD("1002c.003", 0, 0x40000, CRC(57ced539) SHA1(525d15523be3b373a10c1f6ae355803613506ce2), ROM_BIOS(3))
- ROM_SYSTEM_BIOS(4, "a7n266c1003", "a7n266c1003") // bios version 1003
- ROMX_LOAD("a7nc1003.awd", 0, 0x40000, CRC(ac27f751) SHA1(96d5539ee2a40ea58a32013c16109159a3c41bb8), ROM_BIOS(4))
- ROM_SYSTEM_BIOS(5, "a7n266c1004", "a7n266c1004") // bios version 1004
- ROMX_LOAD("a7nc1004.awd", 0, 0x40000, CRC(04124e4f) SHA1(8778a6722eddaf83101f89834969f0037af65cb9), ROM_BIOS(5))
- ROM_SYSTEM_BIOS(6, "a7n266c1005", "a7n266c1005") // beta bios version 1005.005 ?
- ROMX_LOAD("1005nc.005", 0, 0x40000, CRC(9ca5a9c9) SHA1(5ffb57b9f1e0e163b33c093a3e017020b247b3d3), ROM_BIOS(6))
-ROM_END
-
-static INPUT_PORTS_START(nforcepc)
-INPUT_PORTS_END
-
-COMP(2002, nforcepc, 0, 0, nforcepc, nforcepc, nforcepc_state, empty_init, "Nvidia", "Nvidia nForce PC (CRUSH11/12)", MACHINE_IS_SKELETON)