diff --git a/hash/trs80_cass.xml b/hash/trs80_cass.xml
new file mode 100644
index 00000000000..4f720cc6fb2
--- /dev/null
+++ b/hash/trs80_cass.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+ Android Nim
+ 1978
+ 80-NW Publishing Co
+
+
+
+
+
+
+
+
+
+
+ Meteor Mission 2
+ 1982
+ Big Five Software
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hash/trs80_flop.xml b/hash/trs80_flop.xml
new file mode 100644
index 00000000000..f6a9891baab
--- /dev/null
+++ b/hash/trs80_flop.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+ LDOS 5.3.1
+ 1991
+ Misosys
+
+
+
+
+
+
+
+
+
+
+ Lensman/DOS
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
+
+ TRSDOS 6.21
+ 1986
+ Radio Shack
+
+
+
+
+
+
+
+
+
+
+ CP/M 2.2
+ 1982
+ Digital Research
+
+
+
+
+
+
+
+
+
+
diff --git a/hash/trs80_quik.xml b/hash/trs80_quik.xml
new file mode 100644
index 00000000000..09c4e13b449
--- /dev/null
+++ b/hash/trs80_quik.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ Frogger
+ 1981
+ Misosys
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/drivers/lnw80.cpp b/src/mame/drivers/lnw80.cpp
index 5ce6aa3a47d..f6c88298c6b 100644
--- a/src/mame/drivers/lnw80.cpp
+++ b/src/mame/drivers/lnw80.cpp
@@ -601,8 +601,11 @@ void lnw80_state::lnw80(machine_config &config)
m_cassette->set_formats(trs80l2_cassette_formats);
m_cassette->set_default_state(CASSETTE_PLAY);
m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
+ m_cassette->set_interface("trs80_cass");
- QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(lnw80_state::quickload_cb));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)));
+ quickload.set_load_callback(FUNC(lnw80_state::quickload_cb));
+ quickload.set_interface("trs80_quik");
FD1771(config, m_fdc, 4_MHz_XTAL / 4);
m_fdc->intrq_wr_callback().set(FUNC(lnw80_state::intrq_w));
@@ -639,6 +642,10 @@ void lnw80_state::lnw80(machine_config &config)
m_lnw_bank->set_data_width(8);
m_lnw_bank->set_addr_width(16);
m_lnw_bank->set_stride(0x4000);
+
+ SOFTWARE_LIST(config, "cass_list").set_original("trs80_cass").set_filter("1"); // L
+ SOFTWARE_LIST(config, "quik_list").set_original("trs80_quik").set_filter("1"); // L
+ SOFTWARE_LIST(config, "flop_list").set_original("trs80_flop").set_filter("1"); // L
}
diff --git a/src/mame/drivers/meritum.cpp b/src/mame/drivers/meritum.cpp
index 21e4299812c..6d4487acd20 100644
--- a/src/mame/drivers/meritum.cpp
+++ b/src/mame/drivers/meritum.cpp
@@ -527,9 +527,13 @@ void meritum_state::meritum1(machine_config &config)
// media
CASSETTE(config, m_cassette);
+ m_cassette->set_default_state(CASSETTE_PLAY);
m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
- QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(meritum_state::quickload_cb));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)));
+ quickload.set_load_callback(FUNC(meritum_state::quickload_cb));
+ quickload.set_interface("trs80_quik");
+ SOFTWARE_LIST(config, "quik_list").set_original("trs80_quik").set_filter("M");
}
void meritum_state::meritum2(machine_config &config)
diff --git a/src/mame/drivers/radionic.cpp b/src/mame/drivers/radionic.cpp
index ae7115f3f26..24c23edb062 100644
--- a/src/mame/drivers/radionic.cpp
+++ b/src/mame/drivers/radionic.cpp
@@ -503,8 +503,11 @@ void radionic_state::radionic(machine_config &config)
m_cassette->set_formats(trs80l2_cassette_formats);
m_cassette->set_default_state(CASSETTE_PLAY);
m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
+ m_cassette->set_interface("trs80_cass");
- QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(radionic_state::quickload_cb));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)));
+ quickload.set_load_callback(FUNC(radionic_state::quickload_cb));
+ quickload.set_interface("trs80_quik");
FD1771(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->intrq_wr_callback().set(FUNC(radionic_state::intrq_w));
@@ -545,6 +548,10 @@ void radionic_state::radionic(machine_config &config)
m_ppi->out_pa_callback().set(FUNC(radionic_state::ppi_pa_w)); // Data for external plugin printer module
m_ppi->out_pb_callback().set(FUNC(radionic_state::ppi_pb_w)); // Control data to external
m_ppi->out_pc_callback().set(FUNC(radionic_state::ppi_pc_w)); // Printer strobe
+
+ SOFTWARE_LIST(config, "cass_list").set_original("trs80_cass").set_filter("1"); // R
+ SOFTWARE_LIST(config, "quik_list").set_original("trs80_quik").set_filter("1"); // R
+ SOFTWARE_LIST(config, "flop_list").set_original("trs80_flop").set_filter("1"); // R
}
diff --git a/src/mame/drivers/trs80.cpp b/src/mame/drivers/trs80.cpp
index 173f39a2b67..fa281f9b8a9 100644
--- a/src/mame/drivers/trs80.cpp
+++ b/src/mame/drivers/trs80.cpp
@@ -441,6 +441,10 @@ void trs80_state::trs80(machine_config &config) // the original model I, l
m_cassette->set_formats(trs80l1_cassette_formats);
m_cassette->set_default_state(CASSETTE_PLAY);
m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
+ m_cassette->set_interface("trs80_cass");
+
+ /* software lists */
+ SOFTWARE_LIST(config, "cass_list").set_original("trs80_cass").set_filter("0");
}
void trs80_state::model1(machine_config &config) // model I, level II
@@ -454,7 +458,9 @@ void trs80_state::model1(machine_config &config) // model I, level II
/* devices */
m_cassette->set_formats(trs80l2_cassette_formats);
- QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(trs80_state::quickload_cb));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)));
+ quickload.set_load_callback(FUNC(trs80_state::quickload_cb));
+ quickload.set_interface("trs80_quik");
FD1771(config, m_fdc, 4_MHz_XTAL / 4);
m_fdc->intrq_wr_callback().set(FUNC(trs80_state::intrq_w));
@@ -485,6 +491,10 @@ void trs80_state::model1(machine_config &config) // model I, level II
//MCFG_AY31015_WRITE_DAV_CB(WRITELINE( , , ))
m_uart->set_auto_rdav(true);
RS232_PORT(config, "rs232", default_rs232_devices, nullptr);
+
+ SOFTWARE_LIST(config.replace(), "cass_list").set_original("trs80_cass").set_filter("1");
+ SOFTWARE_LIST(config, "quik_list").set_original("trs80_quik").set_filter("1");
+ SOFTWARE_LIST(config, "flop_list").set_original("trs80_flop").set_filter("1");
}
void trs80_state::sys80(machine_config &config)
@@ -516,6 +526,9 @@ void trs80_state::ht1080z(machine_config &config)
AY8910(config, "ay1", 1'500'000).add_route(ALL_OUTPUTS, "mono", 0.25); // guess of clock
//ay1.port_a_read_callback(FUNC(trs80_state::...); // ports are some kind of expansion slot
//ay1.port_b_read_callback(FUNC(trs80_state::...);
+
+ SOFTWARE_LIST(config.replace(), "cass_list").set_original("trs80_cass").set_filter("H");
+ SOFTWARE_LIST(config.replace(), "quik_list").set_original("trs80_quik").set_filter("H");
}
diff --git a/src/mame/drivers/trs80m3.cpp b/src/mame/drivers/trs80m3.cpp
index 0e70d31d686..5cc3f7a0d43 100644
--- a/src/mame/drivers/trs80m3.cpp
+++ b/src/mame/drivers/trs80m3.cpp
@@ -376,8 +376,11 @@ void trs80m3_state::model3(machine_config &config)
m_cassette->set_formats(trs80l2_cassette_formats);
m_cassette->set_default_state(CASSETTE_PLAY);
m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
+ m_cassette->set_interface("trs80_cass");
- QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(trs80m3_state::quickload_cb));
+ quickload_image_device &quickload(QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)));
+ quickload.set_load_callback(FUNC(trs80m3_state::quickload_cb));
+ quickload.set_interface("trs80_quik");
FD1793(config, m_fdc, 4_MHz_XTAL / 4);
m_fdc->intrq_wr_callback().set(FUNC(trs80m3_state::intrq_w));
@@ -408,6 +411,10 @@ void trs80m3_state::model3(machine_config &config)
//MCFG_AY31015_WRITE_DAV_CB(WRITELINE( , , ))
m_uart->set_auto_rdav(true);
RS232_PORT(config, "rs232", default_rs232_devices, nullptr);
+
+ SOFTWARE_LIST(config, "cass_list").set_original("trs80_cass").set_filter("3");
+ SOFTWARE_LIST(config, "quik_list").set_original("trs80_quik").set_filter("3");
+ SOFTWARE_LIST(config, "flop_list").set_original("trs80_flop").set_filter("3");
}
void trs80m3_state::model4(machine_config &config)
@@ -427,7 +434,10 @@ void trs80m3_state::model4(machine_config &config)
m_m4_bank->set_addr_width(18);
m_m4_bank->set_stride(0x10000);
+ SOFTWARE_LIST(config.replace(), "cass_list").set_original("trs80_cass").set_filter("4");
+ SOFTWARE_LIST(config.replace(), "flop_list").set_original("trs80_flop").set_filter("4");
config.device_remove("quickload"); // removed because it crashes..
+ config.device_remove("quik_list");
}
void trs80m3_state::model4p(machine_config &config)
@@ -447,8 +457,11 @@ void trs80m3_state::model4p(machine_config &config)
m_m4p_bank->set_addr_width(19);
m_m4p_bank->set_stride(0x10000);
+ SOFTWARE_LIST(config.replace(), "flop_list").set_original("trs80_flop").set_filter("4");
config.device_remove("quickload");
config.device_remove("cassette");
+ config.device_remove("cass_list");
+ config.device_remove("quik_list");
}
void trs80m3_state::cp500(machine_config &config)