apple2: introduce new accurate IWM controller and switch apple2cr1/3/4 to use it [O. Galibert, R. Belmont]

This commit is contained in:
arbee 2020-05-23 19:28:13 -04:00
parent 23e8c957e8
commit 1c684902e2
7 changed files with 78 additions and 11 deletions

View File

@ -2286,6 +2286,8 @@ if (BUSES["A2BUS"]~=null) then
MAME_DIR .. "src/devices/bus/a2bus/a2applicard.h", MAME_DIR .. "src/devices/bus/a2bus/a2applicard.h",
MAME_DIR .. "src/devices/bus/a2bus/a2hsscsi.cpp", MAME_DIR .. "src/devices/bus/a2bus/a2hsscsi.cpp",
MAME_DIR .. "src/devices/bus/a2bus/a2hsscsi.h", MAME_DIR .. "src/devices/bus/a2bus/a2hsscsi.h",
MAME_DIR .. "src/devices/bus/a2bus/a2iwm.cpp",
MAME_DIR .. "src/devices/bus/a2bus/a2iwm.h",
MAME_DIR .. "src/devices/bus/a2bus/a2ultraterm.cpp", MAME_DIR .. "src/devices/bus/a2bus/a2ultraterm.cpp",
MAME_DIR .. "src/devices/bus/a2bus/a2ultraterm.h", MAME_DIR .. "src/devices/bus/a2bus/a2ultraterm.h",
MAME_DIR .. "src/devices/bus/a2bus/a2pic.cpp", MAME_DIR .. "src/devices/bus/a2bus/a2pic.cpp",

View File

@ -4352,3 +4352,58 @@ if (MACHINES["CXD1185"]~=null) then
MAME_DIR .. "src/devices/machine/cxd1185.h", MAME_DIR .. "src/devices/machine/cxd1185.h",
} }
end end
---------------------------------------------------
--
--@src/devices/machine/applefdc.h,MACHINES["APPLE_FDINTF"] = true
---------------------------------------------------
if (MACHINES["APPLE_FDINTF"]~=null) then
files {
MAME_DIR .. "src/devices/machine/applefdintf.cpp",
MAME_DIR .. "src/devices/machine/applefdintf.h",
}
end
---------------------------------------------------
--
--@src/devices/machine/iwm.h,MACHINES["IWM"] = true
---------------------------------------------------
if (MACHINES["IWM"]~=null) then
files {
MAME_DIR .. "src/devices/machine/iwm.cpp",
MAME_DIR .. "src/devices/machine/iwm.h",
}
end
---------------------------------------------------
--
--@src/devices/machine/swim1.h,MACHINES["SWIM1"] = true
---------------------------------------------------
if (MACHINES["SWIM1"]~=null) then
files {
MAME_DIR .. "src/devices/machine/swim1.cpp",
MAME_DIR .. "src/devices/machine/swim1.h",
}
end
---------------------------------------------------
--
--@src/devices/machine/swim2.h,MACHINES["SWIM2"] = true
---------------------------------------------------
if (MACHINES["SWIM2"]~=null) then
files {
MAME_DIR .. "src/devices/machine/swim2.cpp",
MAME_DIR .. "src/devices/machine/swim2.h",
}
end
---------------------------------------------------
--
--@src/devices/machine/swim3.h,MACHINES["SWIM3"] = true
---------------------------------------------------
if (MACHINES["SWIM3"]~=null) then
files {
MAME_DIR .. "src/devices/machine/swim3.cpp",
MAME_DIR .. "src/devices/machine/swim3.h",
}
end

View File

@ -675,6 +675,11 @@ MACHINES["FDC37C665GT"] = true
MACHINES["STEPPERS"] = true MACHINES["STEPPERS"] = true
--MACHINES["CORVUSHD"] = true --MACHINES["CORVUSHD"] = true
--MACHINES["WOZFDC"] = true --MACHINES["WOZFDC"] = true
--MACHINES["APPLE_FDINTF"] = true
--MACHINES["IWM"] = true
--MACHINES["SWIM1"] = true
--MACHINES["SWIM2"] = true
--MACHINES["SWIM3"] = true
--MACHINES["DIABLO_HD"] = true --MACHINES["DIABLO_HD"] = true
MACHINES["PCI9050"] = true MACHINES["PCI9050"] = true
MACHINES["TMS1024"] = true MACHINES["TMS1024"] = true

View File

@ -717,6 +717,11 @@ MACHINES["STRATA"] = true
MACHINES["STEPPERS"] = true MACHINES["STEPPERS"] = true
MACHINES["CORVUSHD"] = true MACHINES["CORVUSHD"] = true
MACHINES["WOZFDC"] = true MACHINES["WOZFDC"] = true
MACHINES["APPLE_FDINTF"] = true
MACHINES["IWM"] = true
MACHINES["SWIM1"] = true
MACHINES["SWIM2"] = true
MACHINES["SWIM3"] = true
MACHINES["DIABLO_HD"] = true MACHINES["DIABLO_HD"] = true
MACHINES["TMS1024"] = true MACHINES["TMS1024"] = true
MACHINES["NSC810"] = true MACHINES["NSC810"] = true

View File

@ -578,9 +578,9 @@ applefdc_device::applefdc_device(const machine_config &mconfig, const char *tag,
IWM - Used on early Macs IWM - Used on early Macs
***************************************************************************/ ***************************************************************************/
DEFINE_DEVICE_TYPE(LEGACY_IWM, iwm_device, "iwml", "Apple IWM (Integrated Woz Machine) (legacy)") DEFINE_DEVICE_TYPE(LEGACY_IWM, legacy_iwm_device, "iwml", "Apple IWM (Integrated Woz Machine) (legacy)")
iwm_device::iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) legacy_iwm_device::legacy_iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: applefdc_base_device(APPLEFDC_IWM, mconfig, LEGACY_IWM, tag, owner, clock) : applefdc_base_device(APPLEFDC_IWM, mconfig, LEGACY_IWM, tag, owner, clock)
{ {
} }

View File

@ -31,7 +31,7 @@
#define APPLEFDC_PH3 0x08 #define APPLEFDC_PH3 0x08
DECLARE_DEVICE_TYPE(LEGACY_APPLEFDC, applefdc_device) DECLARE_DEVICE_TYPE(LEGACY_APPLEFDC, applefdc_device)
DECLARE_DEVICE_TYPE(LEGACY_IWM, iwm_device) DECLARE_DEVICE_TYPE(LEGACY_IWM, legacy_iwm_device)
@ -135,16 +135,16 @@ public:
IWM - Used on early Macs IWM - Used on early Macs
***************************************************************************/ ***************************************************************************/
class iwm_device : public applefdc_base_device class legacy_iwm_device : public applefdc_base_device
{ {
public: public:
iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, const applefdc_interface *intrf) legacy_iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, const applefdc_interface *intrf)
: iwm_device(mconfig, tag, owner, (uint32_t)0) : legacy_iwm_device(mconfig, tag, owner, (uint32_t)0)
{ {
set_config(intrf); set_config(intrf);
} }
iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); legacy_iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
static constexpr feature_type imperfect_features() { return feature::DISK; } static constexpr feature_type imperfect_features() { return feature::DISK; }
}; };

View File

@ -158,7 +158,7 @@ Address bus A0-A11 is Y0-Y11
#include "bus/a2bus/4play.h" #include "bus/a2bus/4play.h"
#include "bus/a2bus/computereyes2.h" #include "bus/a2bus/computereyes2.h"
#include "bus/a2bus/byte8251.h" #include "bus/a2bus/byte8251.h"
#include "bus/a2bus/a2iwm.h"
#include "bus/a2gameio/gameio.h" #include "bus/a2gameio/gameio.h"
#include "bus/rs232/rs232.h" #include "bus/rs232/rs232.h"
@ -285,7 +285,7 @@ public:
required_device<address_map_bank_device> m_lcbank; required_device<address_map_bank_device> m_lcbank;
optional_device<mos6551_device> m_acia1, m_acia2; optional_device<mos6551_device> m_acia1, m_acia2;
optional_device<applefdc_base_device> m_laserudc; optional_device<applefdc_base_device> m_laserudc;
optional_device<iwm_device> m_iicpiwm; optional_device<legacy_iwm_device> m_iicpiwm;
required_device<ds1315_device> m_ds1315; required_device<ds1315_device> m_ds1315;
TIMER_DEVICE_CALLBACK_MEMBER(apple2_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(apple2_interrupt);
@ -4560,7 +4560,7 @@ void apple2e_state::apple2c_iwm(machine_config &config)
apple2c(config); apple2c(config);
config.device_remove("sl6"); config.device_remove("sl6");
A2BUS_IWM_FDC(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus); A2BUS_IWM(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
} }
void apple2e_state::apple2c_mem(machine_config &config) void apple2e_state::apple2c_mem(machine_config &config)
@ -4571,7 +4571,7 @@ void apple2e_state::apple2c_mem(machine_config &config)
m_maincpu->set_dasm_override(FUNC(apple2e_state::dasm_trampoline)); m_maincpu->set_dasm_override(FUNC(apple2e_state::dasm_trampoline));
config.device_remove("sl6"); config.device_remove("sl6");
A2BUS_IWM_FDC(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus); A2BUS_IWM(config, "sl6", A2BUS_7M_CLOCK).set_onboard(m_a2bus);
m_ram->set_default_size("128K").set_extra_options("128K, 384K, 640K, 896K, 1152K"); m_ram->set_default_size("128K").set_extra_options("128K, 384K, 640K, 896K, 1152K");
} }