summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author angelosa <lordkale4@gmail.com>2024-03-24 22:21:23 +0100
committer angelosa <lordkale4@gmail.com>2024-03-24 22:21:42 +0100
commit53ff87737bdd989ac9edf55d1a2a89fb2bc1a7fd (patch)
tree041c2b4d11d258fa88e5ce1b9b91681a43d879e0 /src
parentfbabb96113d690ea562a3258cdf52823d799c1e2 (diff)
New systems marked not working
------------------------------ Dawg Gone Fun [Siftware]
Diffstat (limited to 'src')
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/pc/dawg.cpp131
2 files changed, 134 insertions, 0 deletions
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index e3be12b0775..5d75f561246 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -35713,6 +35713,9 @@ compc1 // 1984 Commodore PC-1
@source:pc/ct486.cpp
ct486 // 1993? 486 with CS4031
+@source:pc/dawg.cpp
+dawg
+
@source:pc/ec184x.cpp
ec1840 //
ec1841 //
diff --git a/src/mame/pc/dawg.cpp b/src/mame/pc/dawg.cpp
new file mode 100644
index 00000000000..eabca699816
--- /dev/null
+++ b/src/mame/pc/dawg.cpp
@@ -0,0 +1,131 @@
+// license:BSD-3-Clause
+// copyright-holders: Angelo Salese
+/**************************************************************************************************
+
+Dawg Gone Fun
+
+AMD Geode AGX0533EEXF080
+AMD Geode CS5535
+SMSC SI010N268-NE (Microchip LPC super I/O)
+86S5IDl0-1MDG DDR1 PC2100 RAM bank
+TI DP83816 MacPhyter-II (PCI Ethernet)
+Serial port with "Windows CE Core 5.0" sticker
+
+TODO:
+- Fails for CPUID off the bat;
+- Upgrade southbridge to CS5535;
+
+**************************************************************************************************/
+
+#include "emu.h"
+
+#include "bus/isa/isa_cards.h"
+#include "cpu/i386/i386.h"
+#include "machine/8042kbdc.h"
+#include "machine/mc146818.h"
+#include "machine/mediagx_cs5530_bridge.h"
+#include "machine/mediagx_cs5530_ide.h"
+#include "machine/mediagx_cs5530_video.h"
+#include "machine/mediagx_host.h"
+#include "machine/pci.h"
+#include "machine/zfmicro_usb.h"
+
+namespace {
+
+class dawg_state : public driver_device
+{
+public:
+ dawg_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_rtc(*this, "rtc")
+ , m_kbdc(*this, "kbdc")
+ { }
+
+ void dawg(machine_config &config);
+
+private:
+ required_device<cpu_device> m_maincpu;
+ required_device<ds1287_device> m_rtc;
+ required_device<kbdc8042_device> m_kbdc;
+};
+
+
+
+static INPUT_PORTS_START( dawg )
+INPUT_PORTS_END
+
+
+void dawg_state::dawg(machine_config &config)
+{
+ MEDIAGX(config, m_maincpu, 233'000'000); // Cyrix MediaGX GXm-266GP
+ m_maincpu->set_irq_acknowledge_callback("pci:12.0:pic8259_master", FUNC(pic8259_device::inta_cb));
+
+ // TODO: from FDC37C93x super I/O?
+ // NOTE: both aren't initialized at $3f0 - $370 but accessed anyway, wtf
+ DS1287(config, m_rtc, 32.768_kHz_XTAL);
+ m_rtc->set_binary(true);
+ m_rtc->set_epoch(1980);
+ m_rtc->irq().set("pci:12.0", FUNC(mediagx_cs5530_bridge_device::pc_irq8n_w));
+
+ KBDC8042(config, m_kbdc, 0);
+ // TODO: PS/2 mouse
+ m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
+ m_kbdc->system_reset_callback().set_inputline(":maincpu", INPUT_LINE_RESET);
+ m_kbdc->gate_a20_callback().set_inputline(":maincpu", INPUT_LINE_A20);
+ m_kbdc->input_buffer_full_callback().set(":pci:12.0", FUNC(mediagx_cs5530_bridge_device::pc_irq1_w));
+ m_kbdc->set_keyboard_tag("at_keyboard");
+
+ at_keyboard_device &at_keyb(AT_KEYB(config, "at_keyboard", pc_keyboard_device::KEYBOARD_TYPE::AT, 1));
+ at_keyb.keypress().set(m_kbdc, FUNC(kbdc8042_device::keyboard_w));
+
+ PCI_ROOT(config, "pci", 0);
+ MEDIAGX_HOST(config, "pci:00.0", 0, "maincpu", 128*1024*1024);
+ // TODO: no clue about the ID used for this, definitely tested
+ // Tries to initialize MediaGX F4 -> ISA -> PCI
+ // May actually be a ZFMicro PCI Bridge (0x10780400)?
+ PCI_BRIDGE(config, "pci:01.0", 0, 0x10780000, 0);
+
+ // "pci:12.0" or "pci:10.0" depending on pin H26 (readable in bridge thru PCI index $44)
+ mediagx_cs5530_bridge_device &isa(MEDIAGX_CS5530_BRIDGE(config, "pci:12.0", 0, "maincpu", "pci:12.2"));
+ isa.set_kbdc_tag("kbdc");
+ isa.boot_state_hook().set([](u8 data) { /* printf("%02x\n", data); */ });
+ //isa.smi().set_inputline("maincpu", INPUT_LINE_SMI);
+ isa.rtcale().set([this](u8 data) { m_rtc->address_w(data); });
+ isa.rtccs_read().set([this]() { return m_rtc->data_r(); });
+ isa.rtccs_write().set([this](u8 data) { m_rtc->data_w(data); });
+
+ // "pci:12.1" SMI & ACPI
+
+ mediagx_cs5530_ide_device &ide(MEDIAGX_CS5530_IDE(config, "pci:12.2", 0, "maincpu"));
+ ide.subdevice<bus_master_ide_controller_device>("ide1")->slot(0).set_default_option("cf");
+ ide.irq_pri().set("pci:12.0", FUNC(mediagx_cs5530_bridge_device::pc_irq14_w));
+ ide.irq_sec().set("pci:12.0", FUNC(mediagx_cs5530_bridge_device::pc_irq15_w));
+
+ // "pci:12.3" XpressAUDIO
+ MEDIAGX_CS5530_VIDEO(config, "pci:12.4", 0);
+
+ ZFMICRO_USB(config, "pci:13.0", 0);
+
+ // 2 PCI slots, 2 ISA slots
+ ISA16_SLOT(config, "isa1", 0, "pci:12.0:isabus", pc_isa16_cards, nullptr, false);
+ ISA16_SLOT(config, "isa2", 0, "pci:12.0:isabus", pc_isa16_cards, nullptr, false);
+}
+
+
+ROM_START( dawg )
+ ROM_REGION32_LE(0x80000, "pci:12.0", 0)
+ ROM_LOAD("dawg.56", 0x00000, 0x80000, CRC(7ad3578f) SHA1(fba268f530765959fee5ad681adb8a7b70e573db) )
+
+ DISK_REGION( "pci:12.2:ide1:0:cf" )
+ // baddump: contains a "System Volume Information" folder
+ DISK_IMAGE( "dawg", 0, BAD_DUMP SHA1(0ada23b43c9fb0d2d8393edfb569a7c5c431775f))
+ROM_END
+
+
+
+
+} // anonymous namespace
+
+// year derived from dump contents
+GAME( 2009, dawg, 0, dawg, dawg, dawg_state, empty_init, ROT0, "Pace-O-Matic", "Dawg Gone Fun", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )