summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/symbolics.cpp123
-rw-r--r--src/mame/mame.lst5
-rw-r--r--src/mame/mess.flt1
4 files changed, 129 insertions, 1 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 829c82af577..eb0322cd2f7 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -3162,6 +3162,7 @@ files {
MAME_DIR .. "src/mame/drivers/squale.cpp",
MAME_DIR .. "src/mame/drivers/swtpc.cpp",
MAME_DIR .. "src/mame/drivers/swyft.cpp",
+ MAME_DIR .. "src/mame/drivers/symbolics.cpp",
MAME_DIR .. "src/mame/drivers/sys2900.cpp",
MAME_DIR .. "src/mame/drivers/systec.cpp",
MAME_DIR .. "src/mame/drivers/tavernie.cpp",
diff --git a/src/mame/drivers/symbolics.cpp b/src/mame/drivers/symbolics.cpp
new file mode 100644
index 00000000000..7818c0363ff
--- /dev/null
+++ b/src/mame/drivers/symbolics.cpp
@@ -0,0 +1,123 @@
+// license:BSD-3-Clause
+// copyright-holders:Jonathan Gevaryahu
+/******************************************************************************
+ Symbolics 3600
+ TODO: add credits, backstory, history, etc here
+ Front-end Processor dumped only, so far, plds/proms/pals not dumped yet
+******************************************************************************/
+
+/* Core includes */
+#include "cpu/m68000/m68000.h"
+
+class symbolics_state : public driver_device
+{
+public:
+
+ symbolics_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu")
+ {
+ }
+
+ required_device<m68000_base_device> m_maincpu;
+ DECLARE_DRIVER_INIT(symbolics);
+
+//protected:
+// virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+};
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+/*
+Address maps (x = ignored; * = selects address within this range, ? = unknown, 1/0 = decodes only when this bit is set to 1/0)
+68k address map:
+a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 (a0 via UDS/LDS)
+? ? ? ? ? 0 0 0 0 * * * * * * * * * * * * * * 0 R ROM 00H
+? ? ? ? ? 0 0 0 0 * * * * * * * * * * * * * * 1 R ROM 00L
+? ? ? ? ? 0 0 0 1 * * * * * * * * * * * * * * 0 R ROM 04H
+? ? ? ? ? 0 0 0 1 * * * * * * * * * * * * * * 1 R ROM 04L
+? ? ? ? ? 0 0 1 0 x x x x x x x x x x x x x x 0 R Open bus?
+? ? ? ? ? 0 0 1 0 x x x x x x x x x x x x x x 1 R Open bus?
+? ? ? ? ? 0 0 1 1 * * * * * * * * * * * * * * 0 R ROM 10H
+? ? ? ? ? 0 0 1 1 * * * * * * * * * * * * * * 1 R ROM 10L
+? ? ? ? ? 0 1 * * * * * * * * * * * * * * * * * RW RAM <- recheck this, might be a weird hole between 20000-20fff ?
+? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * ? Something maps here...
+ | | | | |
+*/
+
+static ADDRESS_MAP_START(m68k_mem, AS_PROGRAM, 16, symbolics_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM */
+ // 10000-17fff open bus here?
+ AM_RANGE(0x018000, 0x01ffff) AM_ROM /* ROM */
+ AM_RANGE(0x020000, 0x03ffff) AM_RAM /* Local FEP ram seems to be here? */
+ // there is stuff mapped at 40000 and ffxxx as well, ffxxx may be the main lisp cpu's microcode and macrocode areas
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(m68k_io, AS_IO, 16, symbolics_state )
+ADDRESS_MAP_END
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+static INPUT_PORTS_START( symbolics )
+INPUT_PORTS_END
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+/*void symbolics_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+ case TIMER_OUTFIFO_READ:
+ outfifo_read_cb(ptr, param);
+ break;
+ default:
+ assert_always(FALSE, "Unknown id in symbolics_state::device_timer");
+ }
+}
+
+TIMER_CALLBACK_MEMBER(symbolics_state::outfifo_read_cb)
+{
+ UINT16 data;
+}
+*/
+
+/* Driver init: stuff that needs setting up which isn't directly affected by reset */
+DRIVER_INIT_MEMBER(symbolics_state,symbolics)
+{
+}
+
+static MACHINE_CONFIG_START( symbolics, symbolics_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 10000000) /* PLACEHOLDER CLOCK, TODO: add correct clock */
+ MCFG_CPU_PROGRAM_MAP(m68k_mem)
+ MCFG_CPU_IO_MAP(m68k_io)
+
+MACHINE_CONFIG_END
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( s3600 )
+ ROM_REGION16_BE(0x40000,"maincpu", 0)
+ ROM_SYSTEM_BIOS( 0, "v127", "Symbolics 3600 L-Machine FEP V127")
+ ROMX_LOAD("00h.127.27128.d13", 0x00000, 0x4000, CRC(b8d7c8da) SHA1(663a09359f5db63beeac00e5c2783ccc25b94250), ROM_SKIP(1) | ROM_BIOS(1)) // Label: "00H.127"
+ ROMX_LOAD("00l.127.27c128.d7", 0x00001, 0x4000, CRC(cc7bae9a) SHA1(057538eb821c4d00dde19cfe5136ccc0aee43800), ROM_SKIP(1) | ROM_BIOS(1)) // Label: "00L.127"
+ ROMX_LOAD("04h.127.27c128.d15", 0x08000, 0x4000, CRC(e01a717b) SHA1(b87a670f7be13553485ce88fad5fcf90f01473c4), ROM_SKIP(1) | ROM_BIOS(1)) // Label: "04H.127"
+ ROMX_LOAD("04l.127.27c128.d9", 0x08001, 0x4000, CRC(68d169fa) SHA1(d6fab3132fca332a9bedb174fddf5fc8c69d05b6), ROM_SKIP(1) | ROM_BIOS(1)) // Label: "04L.127"
+ ROMX_LOAD("10h.127.27c128.d16", 0x18000, 0x4000, CRC(2ea7a70d) SHA1(61cc97aada028612c24d788d946d77e82116cf30), ROM_SKIP(1) | ROM_BIOS(1)) // Label: "10H.127"
+ ROMX_LOAD("10l.127.27128.d10", 0x18001, 0x4000, CRC(b8ddb3c8) SHA1(e6c3b96340c5c767ef18abf48b73fa8e5d7353b9), ROM_SKIP(1) | ROM_BIOS(1)) // Label: "10L.127"
+ // note: load all the PLAs, PALs and PROMs here
+ROM_END
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */
+COMP( 1984, s3600, 0, 0, symbolics, symbolics, symbolics_state, symbolics, "Symbolics", "3600", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index cfae4c5c293..ac22cb7c080 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -28442,7 +28442,7 @@ ssjkrpkr // (c) 1982 Southern Systems & Assembly, Ltd.
tpoker2 // (c) 1993 Micro Manufacturing, Inc.
@source:notetaker.cpp
-notetakr //
+notetakr //
@source:nova2001.cpp
ninjakun // UPL-84003 (c) 1984 Taito Corporation
@@ -33734,6 +33734,9 @@ swyft //
@source:sym1.cpp
sym1 // Synertek SYM-1
+@source:symbolics.cpp
+s3600 //
+
@source:sys2900.cpp
sys2900 //
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 93b0531b119..4c1a841c62a 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -553,6 +553,7 @@ swtpc.cpp
swtpc09.cpp
swyft.cpp
sym1.cpp
+symbolics.cpp
sys2900.cpp
systec.cpp
tamag1.cpp