diff options
Diffstat (limited to 'src/mame/drivers/poly88.cpp')
-rw-r--r-- | src/mame/drivers/poly88.cpp | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/src/mame/drivers/poly88.cpp b/src/mame/drivers/poly88.cpp index d4f80d7fb15..4d78faaf828 100644 --- a/src/mame/drivers/poly88.cpp +++ b/src/mame/drivers/poly88.cpp @@ -9,6 +9,10 @@ Poly-88 driver by Miodrag Milanovic All input must be UPPERcase. +11K is the minimal amount of user RAM required to run BASIC. PolyMorphic's +"System 16" package shipped with 16K of RAM (as did the 8813), though some +of their lesser systems did not. + ToDo: - Polyphase format not working because 8251 device doesn't support sync. @@ -43,6 +47,7 @@ at least some models of the Poly-88 are known to have used.) #include "emu.h" #include "includes/poly88.h" +#include "bus/s100/poly16k.h" #include "bus/s100/polyfdc.h" #include "bus/s100/polyvti.h" #include "bus/s100/seals8k.h" @@ -99,6 +104,7 @@ static void poly88_s100_devices(device_slot_interface &device) device.option_add("vti", S100_POLY_VTI); device.option_add("8ksc", S100_8K_SC); device.option_add("8kscbb", S100_8K_SC_BB); + device.option_add("poly16k", S100_POLY_16K); device.option_add("polyfdc", S100_POLY_FDC); } @@ -106,8 +112,16 @@ DEVICE_INPUT_DEFAULTS_START(poly88_vti_1800) DEVICE_INPUT_DEFAULTS("ADDRESS", 0x3f, 0x06) // 1800-1FFF DEVICE_INPUT_DEFAULTS_END -DEVICE_INPUT_DEFAULTS_START(poly88_8ksc_2000) - DEVICE_INPUT_DEFAULTS("DSW", 0xff, 0xfd) // 2000-3FFF +DEVICE_INPUT_DEFAULTS_START(poly88_16k_2000) + DEVICE_INPUT_DEFAULTS("DSW", 0xf, 0xd) // 2000-5FFF +DEVICE_INPUT_DEFAULTS_END + +DEVICE_INPUT_DEFAULTS_START(poly88_16k_6000) + DEVICE_INPUT_DEFAULTS("DSW", 0xf, 0x9) // 6000-9FFF +DEVICE_INPUT_DEFAULTS_END + +DEVICE_INPUT_DEFAULTS_START(poly88_16k_a000) + DEVICE_INPUT_DEFAULTS("DSW", 0xf, 0x5) // A000-DFFF DEVICE_INPUT_DEFAULTS_END void poly88_state::poly88(machine_config &config) @@ -152,10 +166,15 @@ void poly88_state::poly88(machine_config &config) m_s100->vi2().set(FUNC(poly88_state::vi2_w)); m_s100->vi5().set(FUNC(poly88_state::vi5_w)); + // Poly-88 backplane has 5 slots, but CPU uses one S100_SLOT(config, m_s100_slot[0], poly88_s100_devices, "vti"); - S100_SLOT(config, m_s100_slot[1], poly88_s100_devices, nullptr); + S100_SLOT(config, m_s100_slot[1], poly88_s100_devices, "poly16k"); S100_SLOT(config, m_s100_slot[2], poly88_s100_devices, nullptr); S100_SLOT(config, m_s100_slot[3], poly88_s100_devices, nullptr); + + m_s100_slot[1]->set_option_device_input_defaults("poly16k", DEVICE_INPUT_DEFAULTS_NAME(poly88_16k_2000)); + m_s100_slot[2]->set_option_device_input_defaults("poly16k", DEVICE_INPUT_DEFAULTS_NAME(poly88_16k_6000)); + m_s100_slot[3]->set_option_device_input_defaults("poly16k", DEVICE_INPUT_DEFAULTS_NAME(poly88_16k_a000)); } void poly88_state::poly8813(machine_config &config) @@ -164,9 +183,8 @@ void poly88_state::poly8813(machine_config &config) m_onboard_io->set_addrmap(0, &poly88_state::poly8813_io); m_s100_slot[0]->set_option_device_input_defaults("vti", DEVICE_INPUT_DEFAULTS_NAME(poly88_vti_1800)); - m_s100_slot[1]->set_default_option("8ksc"); - m_s100_slot[1]->set_option_device_input_defaults("8ksc", DEVICE_INPUT_DEFAULTS_NAME(poly88_8ksc_2000)); - m_s100_slot[2]->set_default_option("polyfdc"); + m_s100_slot[1]->set_default_option("polyfdc"); + m_s100_slot[2]->set_default_option("poly16k"); // Poly-8813 backplane has 10 slots, but CPU uses one S100_SLOT(config, m_s100_slot[4], poly88_s100_devices, nullptr); @@ -174,6 +192,10 @@ void poly88_state::poly8813(machine_config &config) S100_SLOT(config, m_s100_slot[6], poly88_s100_devices, nullptr); S100_SLOT(config, m_s100_slot[7], poly88_s100_devices, nullptr); S100_SLOT(config, m_s100_slot[8], poly88_s100_devices, nullptr); + + m_s100_slot[2]->set_option_device_input_defaults("poly16k", DEVICE_INPUT_DEFAULTS_NAME(poly88_16k_2000)); + m_s100_slot[3]->set_option_device_input_defaults("poly16k", DEVICE_INPUT_DEFAULTS_NAME(poly88_16k_6000)); + m_s100_slot[4]->set_option_device_input_defaults("poly16k", DEVICE_INPUT_DEFAULTS_NAME(poly88_16k_a000)); } /* ROM definition */ |