diff --git a/hash/spectrum_tool.xml b/hash/spectrum_tool.xml
new file mode 100644
index 00000000000..98a715392d7
--- /dev/null
+++ b/hash/spectrum_tool.xml
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+ Floating Bus Test v0.33
+ Ramsoft
+ 2002
+
+
+
+
+
+
+
+
+ FPGA 48k
+ 20??
+ <unknown>
+
+
+
+
+
+
+
+
+ Fuse test
+ 20??
+ <unknown>
+
+
+
+
+
+
+
+
+ Test INT v1.10
+ 1995
+ Good Boy
+
+
+
+
+
+
+
+
+ Scroll 17
+ 2017
+ <unknown>
+
+
+
+
+
+
+
+
+ Tact Meter v1.0
+ 2006
+ Strunov / Good Boy
+
+
+
+
+
+
+
+
+ Timing Tests v1.0
+ 20??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULA Test
+ 20??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ULA Test 3
+ 20??
+ Jan Bobrowski / CDS / BA
+
+
+
+
+
+
+
+
+ Zilog Z80 CPU test suite v1.2
+ 2022
+ Patrik Rak
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/sinclair/spectrum.cpp b/src/mame/sinclair/spectrum.cpp
index d51571687ee..1134e7b0803 100644
--- a/src/mame/sinclair/spectrum.cpp
+++ b/src/mame/sinclair/spectrum.cpp
@@ -835,7 +835,9 @@ void spectrum_state::spectrum_common(machine_config &config)
m_exp->fb_r_handler().set(FUNC(spectrum_state::floating_bus_r));
/* devices */
- SNAPSHOT(config, "snapshot", "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx").set_load_callback(FUNC(spectrum_state::snapshot_cb));
+ SNAPSHOT(config, m_snapshot, "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx");
+ m_snapshot->set_load_callback(FUNC(spectrum_state::snapshot_cb));
+ m_snapshot->set_interface("spectrum_snapshot");
QUICKLOAD(config, "quickload", "raw,scr", attotime::from_seconds(2)).set_load_callback(FUNC(spectrum_state::quickload_cb)); // The delay prevents the screen from being cleared by the RAM test at boot
CASSETTE(config, m_cassette);
@@ -845,6 +847,7 @@ void spectrum_state::spectrum_common(machine_config &config)
m_cassette->set_interface("spectrum_cass");
SOFTWARE_LIST(config, "cass_list").set_original("spectrum_cass");
+ SOFTWARE_LIST(config, "tool_list").set_original("spectrum_tool");
}
void spectrum_state::spectrum(machine_config &config)
diff --git a/src/mame/sinclair/spectrum.h b/src/mame/sinclair/spectrum.h
index 58256cccf10..f26706bad5b 100644
--- a/src/mame/sinclair/spectrum.h
+++ b/src/mame/sinclair/spectrum.h
@@ -54,6 +54,7 @@ public:
m_video_ram(*this, "video_ram"),
m_maincpu(*this, "maincpu"),
m_screen(*this, "screen"),
+ m_snapshot(*this, "snapshot"),
m_cassette(*this, "cassette"),
m_ram(*this, RAM_TAG),
m_specmem(*this, "specmem"),
@@ -154,6 +155,7 @@ protected:
void spectrum_map(address_map &map);
void spectrum_data(address_map &map);
+ required_device m_snapshot;
required_device m_cassette;
required_device m_ram;
optional_device m_specmem;