mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
iwm: remove disable_mon, move to floppy
This commit is contained in:
parent
9bb34aec20
commit
901fe7d7a2
@ -2502,7 +2502,7 @@ void mac_floppy_device::seek_phase_w(int phases)
|
||||
|
||||
case 0x2: // Motor on
|
||||
logerror("cmd motor on\n");
|
||||
mon_w(0);
|
||||
floppy_image_device::mon_w(0);
|
||||
break;
|
||||
|
||||
case 0x3: // End eject
|
||||
@ -2516,7 +2516,7 @@ void mac_floppy_device::seek_phase_w(int phases)
|
||||
|
||||
case 0x6: // Motor off
|
||||
logerror("cmd motor off\n");
|
||||
mon_w(1);
|
||||
floppy_image_device::mon_w(1);
|
||||
break;
|
||||
|
||||
case 0x7: // Start eject
|
||||
@ -2567,6 +2567,10 @@ void mac_floppy_device::track_changed()
|
||||
set_rpm(new_rpm);
|
||||
}
|
||||
|
||||
void mac_floppy_device::mon_w(int)
|
||||
{
|
||||
// Motor control is through commands
|
||||
}
|
||||
|
||||
oa_d34v_device::oa_d34v_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : mac_floppy_device(mconfig, OAD34V, tag, owner, clock)
|
||||
{
|
||||
|
@ -98,7 +98,7 @@ public:
|
||||
std::vector<uint32_t> &get_buffer() { return image->get_buffer(cyl, ss, subcyl); }
|
||||
int get_cyl() { return cyl; }
|
||||
|
||||
void mon_w(int state);
|
||||
virtual void mon_w(int state);
|
||||
bool ready_r();
|
||||
void set_ready(bool state);
|
||||
double get_pos();
|
||||
@ -280,6 +280,7 @@ public:
|
||||
virtual ~mac_floppy_device() = default;
|
||||
|
||||
virtual bool wpt_r() override;
|
||||
virtual void mon_w(int) override;
|
||||
virtual void seek_phase_w(int phases) override;
|
||||
virtual const char *image_interface() const noexcept override { return "floppy_3_5"; }
|
||||
|
||||
|
@ -13,11 +13,10 @@
|
||||
|
||||
DEFINE_DEVICE_TYPE(IWM, iwm_device, "iwm", "Apple IWM floppy controller")
|
||||
|
||||
iwm_device::iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t q3_clock, bool disable_mon) :
|
||||
iwm_device::iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t q3_clock) :
|
||||
applefdintf_device(mconfig, IWM, tag, owner, clock),
|
||||
m_floppy(nullptr),
|
||||
m_q3_clock(q3_clock),
|
||||
m_disable_mon(disable_mon)
|
||||
m_q3_clock(q3_clock)
|
||||
{
|
||||
m_q3_fclk_ratio = q3_clock ? double(clock)/double(q3_clock) : 0; // ~0.25
|
||||
m_fclk_q3_ratio = q3_clock ? double(q3_clock)/double(clock) : 0; // ~4
|
||||
@ -86,7 +85,7 @@ void iwm_device::device_timer(emu_timer &, device_timer_id, int, void *)
|
||||
if(m_active == MODE_DELAY) {
|
||||
flush_write();
|
||||
m_active = MODE_IDLE;
|
||||
if(m_floppy && !m_disable_mon)
|
||||
if(m_floppy)
|
||||
m_floppy->mon_w(true);
|
||||
m_devsel_cb(0);
|
||||
m_status &= ~0x20;
|
||||
@ -101,10 +100,10 @@ void iwm_device::set_floppy(floppy_image_device *floppy)
|
||||
|
||||
sync();
|
||||
|
||||
if(m_floppy && (m_control & 0x10) && !m_disable_mon)
|
||||
if(m_floppy && (m_control & 0x10))
|
||||
m_floppy->mon_w(true);
|
||||
m_floppy = floppy;
|
||||
if(m_floppy && (m_control & 0x10) && !m_disable_mon)
|
||||
if(m_floppy && (m_control & 0x10))
|
||||
m_floppy->mon_w(false);
|
||||
update_phases();
|
||||
}
|
||||
@ -167,7 +166,7 @@ u8 iwm_device::control(int offset, u8 data)
|
||||
if(m_control & 0x10) {
|
||||
m_active = MODE_ACTIVE;
|
||||
m_status |= 0x20;
|
||||
if(m_floppy && !m_disable_mon)
|
||||
if(m_floppy)
|
||||
m_floppy->mon_w(false);
|
||||
} else {
|
||||
if(m_mode & 0x04) {
|
||||
@ -175,7 +174,7 @@ u8 iwm_device::control(int offset, u8 data)
|
||||
m_active = MODE_IDLE;
|
||||
m_status &= ~0x20;
|
||||
m_whd &= ~0x40;
|
||||
if(m_floppy && !m_disable_mon)
|
||||
if(m_floppy)
|
||||
m_floppy->mon_w(true);
|
||||
} else {
|
||||
m_devsel_cb(m_control & 0x20 ? 2 : 1);
|
||||
@ -215,7 +214,7 @@ u8 iwm_device::control(int offset, u8 data)
|
||||
m_rw = MODE_IDLE;
|
||||
}
|
||||
|
||||
if(1) {
|
||||
if(0) {
|
||||
u8 s = m_control & 0xc0;
|
||||
const char *slot = "?";
|
||||
if(s == 0x00 && !m_active)
|
||||
@ -384,7 +383,6 @@ void iwm_device::sync()
|
||||
if(is_sync()) {
|
||||
if(m_rsh >= 0x80) {
|
||||
m_data = m_rsh;
|
||||
logerror("DATAR %02x\n", m_data);
|
||||
if(m_data == 0xfc)
|
||||
machine().debug_break();
|
||||
m_rsh = 0;
|
||||
@ -396,7 +394,6 @@ void iwm_device::sync()
|
||||
|
||||
} else if(m_rsh >= 0x80) {
|
||||
m_data = m_rsh;
|
||||
logerror("DATAR %02x\n", m_data);
|
||||
if(m_data == 0xfc)
|
||||
machine().debug_break();
|
||||
m_rsh = 0;
|
||||
@ -453,7 +450,6 @@ void iwm_device::sync()
|
||||
m_rw_state = S_IDLE;
|
||||
m_last_sync = next_sync;
|
||||
} else {
|
||||
logerror("DATAW %02x\n", m_data);
|
||||
m_wsh = m_data;
|
||||
m_rw_state = SW_WINDOW_MIDDLE;
|
||||
m_whd |= 0x80;
|
||||
|
@ -22,9 +22,9 @@ class iwm_device: public applefdintf_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t q3_clock = 0, bool disable_mon = false);
|
||||
iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, XTAL q3_clock, bool disable_mon = false) :
|
||||
iwm_device(mconfig, tag, owner, clock, q3_clock.value(), disable_mon) {}
|
||||
iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint32_t q3_clock = 0);
|
||||
iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, XTAL q3_clock) :
|
||||
iwm_device(mconfig, tag, owner, clock, q3_clock.value()) {}
|
||||
|
||||
virtual u8 read(offs_t offset) override;
|
||||
virtual void write(offs_t offset, u8 data) override;
|
||||
@ -67,7 +67,6 @@ private:
|
||||
int m_active, m_rw, m_rw_state;
|
||||
u8 m_data, m_whd, m_mode, m_status, m_control, m_rw_bit_count;
|
||||
u8 m_rsh, m_wsh;
|
||||
bool m_disable_mon;
|
||||
|
||||
u8 control(int offset, u8 data);
|
||||
u64 time_to_cycles(const attotime &tm) const;
|
||||
|
@ -5055,7 +5055,7 @@ void apple2gs_state::apple2gs(machine_config &config)
|
||||
A2BUS_SLOT(config, "sl7", m_a2bus, apple2_cards, nullptr);
|
||||
|
||||
#if NEW_IWM
|
||||
IWM(config, m_iwm, A2GS_7M, 1021800*2, true);
|
||||
IWM(config, m_iwm, A2GS_7M, 1021800*2);
|
||||
m_iwm->phases_cb().set(FUNC(apple2gs_state::phases_w));
|
||||
m_iwm->sel35_cb().set(FUNC(apple2gs_state::sel35_w));
|
||||
m_iwm->devsel_cb().set(FUNC(apple2gs_state::devsel_w));
|
||||
|
@ -738,7 +738,7 @@ void mac_state::add_base_devices(machine_config &config, bool rtc, int woz_versi
|
||||
#if NEW_SWIM
|
||||
switch (woz_version) {
|
||||
case 0:
|
||||
IWM(config, m_fdc, C15M, 0, true);
|
||||
IWM(config, m_fdc, C15M);
|
||||
break;
|
||||
case 1:
|
||||
SWIM1(config, m_fdc, C15M);
|
||||
|
@ -1024,7 +1024,7 @@ void mac128_state::mac512ke(machine_config &config)
|
||||
/* devices */
|
||||
RTC3430042(config, m_rtc, 32.768_kHz_XTAL);
|
||||
#if NEW_IWM
|
||||
IWM(config, m_iwm, C7M, 0, true);
|
||||
IWM(config, m_iwm, C7M);
|
||||
m_iwm->phases_cb().set(FUNC(mac128_state::phases_w));
|
||||
m_iwm->sel35_cb().set(FUNC(mac128_state::sel35_w));
|
||||
m_iwm->devsel_cb().set(FUNC(mac128_state::devsel_w));
|
||||
|
Loading…
Reference in New Issue
Block a user