diff options
author | 2020-05-01 22:35:20 -0500 | |
---|---|---|
committer | 2020-05-01 22:35:20 -0500 | |
commit | 916dce92966dae05b6150e872f6eb80fdfdaddd7 (patch) | |
tree | c9ff652088fe81e7dcfb48eb83642e8484667d09 | |
parent | 194e9f2cb50b72e4d07e1ef268abfeb074666719 (diff) |
mc1502: try to work around issues (nw)
-rw-r--r-- | src/devices/bus/isa/cga.cpp | 24 | ||||
-rw-r--r-- | src/devices/bus/isa/cga.h | 3 | ||||
-rw-r--r-- | src/devices/bus/isa/mc1502_fdc.cpp | 5 |
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) { |