summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2020-05-01 22:35:20 -0500
committer cracyc <cracyc@users.noreply.github.com>2020-05-01 22:35:20 -0500
commit916dce92966dae05b6150e872f6eb80fdfdaddd7 (patch)
treec9ff652088fe81e7dcfb48eb83642e8484667d09
parent194e9f2cb50b72e4d07e1ef268abfeb074666719 (diff)
mc1502: try to work around issues (nw)
-rw-r--r--src/devices/bus/isa/cga.cpp24
-rw-r--r--src/devices/bus/isa/cga.h3
-rw-r--r--src/devices/bus/isa/mc1502_fdc.cpp5
3 files changed, 30 insertions, 2 deletions
diff --git a/src/devices/bus/isa/cga.cpp b/src/devices/bus/isa/cga.cpp
index a91d14dd560..1be367cc992 100644
--- a/src/devices/bus/isa/cga.cpp
+++ b/src/devices/bus/isa/cga.cpp
@@ -1616,6 +1616,30 @@ READ8_MEMBER( isa8_ec1841_0002_device::io_read )
DEFINE_DEVICE_TYPE(ISA8_CGA_MC1502, isa8_cga_mc1502_device, "cga_mc1502", "MC1502 CGA")
+void isa8_cga_mc1502_device::device_add_mconfig(machine_config &config)
+{
+ screen_device &screen(SCREEN(config, CGA_SCREEN_NAME, SCREEN_TYPE_RASTER));
+ screen.set_raw(XTAL(16'000'000), 912, 0, 640, 462, 0, 400);
+ screen.set_screen_update(FUNC(isa8_cga_mc1502_device::screen_update));
+
+ PALETTE(config, m_palette).set_entries(/* CGA_PALETTE_SETS * 16*/ 65536);
+
+ MC6845(config, m_crtc, XTAL(16'000'000)/16); // soviet clone
+ m_crtc->set_screen(nullptr);
+ m_crtc->set_show_border_area(false);
+ m_crtc->set_char_width(8);
+ m_crtc->set_update_row_callback(FUNC(isa8_cga_mc1502_device::crtc_update_row));
+ m_crtc->out_hsync_callback().set(FUNC(isa8_cga_mc1502_device::hsync_changed));
+ m_crtc->out_vsync_callback().set(FUNC(isa8_cga_mc1502_device::vsync_changed));
+ m_crtc->set_reconfigure_callback(FUNC(isa8_cga_mc1502_device::reconfigure));
+}
+
+MC6845_RECONFIGURE( isa8_cga_mc1502_device::reconfigure )
+{
+ // this has a different horiz freq
+ m_screen->configure(width, height, visarea, frame_period);
+}
+
//-------------------------------------------------
// isa8_cga_mc1502_device - constructor
//-------------------------------------------------
diff --git a/src/devices/bus/isa/cga.h b/src/devices/bus/isa/cga.h
index abbac6bbb05..332ae6cb7d6 100644
--- a/src/devices/bus/isa/cga.h
+++ b/src/devices/bus/isa/cga.h
@@ -263,7 +263,10 @@ public:
// construction/destruction
isa8_cga_mc1502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
+ virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
+private:
+ MC6845_RECONFIGURE(reconfigure);
};
// device type definition
diff --git a/src/devices/bus/isa/mc1502_fdc.cpp b/src/devices/bus/isa/mc1502_fdc.cpp
index e533b82626a..f901580314f 100644
--- a/src/devices/bus/isa/mc1502_fdc.cpp
+++ b/src/devices/bus/isa/mc1502_fdc.cpp
@@ -95,8 +95,9 @@ void mc1502_fdc_device::mc1502_wd17xx_aux_w(uint8_t data)
floppy->ss_w((data & 2) ? 1 : 0);
// bits 2, 3 -- motor on (drive 0, 1)
- floppy0->mon_w(!(data & 4));
- floppy1->mon_w(!(data & 8));
+ // the schematic appears to show the motor lines connected, if they aren't then motor_on doesn't work correctly
+ floppy0->mon_w(!(data & 12));
+ floppy1->mon_w(!(data & 12));
if (data & 12)
{