diff options
author | 2022-06-05 14:56:12 -0500 | |
---|---|---|
committer | 2022-06-05 14:56:12 -0500 | |
commit | ed5ba1c0b3d973df957c88f4e2d48d6fb627efd7 (patch) | |
tree | a735ffecc17842505f447ef8b977e7c3a5ce2f02 /src/devices/bus/isa | |
parent | 4b82bafcf3c7ef0fc774d55a2cf2015941ef5747 (diff) |
ega: irq and row preset
at: irq2 is redirected to pic2 ir1
Diffstat (limited to 'src/devices/bus/isa')
-rw-r--r-- | src/devices/bus/isa/ega.cpp | 47 | ||||
-rw-r--r-- | src/devices/bus/isa/ega.h | 7 |
2 files changed, 28 insertions, 26 deletions
diff --git a/src/devices/bus/isa/ega.cpp b/src/devices/bus/isa/ega.cpp index 2c5f78311f5..1aca9ba7cb2 100644 --- a/src/devices/bus/isa/ega.cpp +++ b/src/devices/bus/isa/ega.cpp @@ -507,23 +507,23 @@ ROM_END INPUT_PORTS_START( ega ) PORT_START( "config" ) - PORT_CONFNAME( 0x0f, 0x09, "dipswitches" ) - PORT_CONFSETTING( 0x00, "0000 - MDA PRIMARY, EGA COLOR, 40x25" ) /* DIAG: ?? 40 cols, RGBI */ - PORT_CONFSETTING( 0x08, "0001 - MDA PRIMARY, EGA COLOR, 80x25" ) /* DIAG: ?? 80 cols, RGBI */ - PORT_CONFSETTING( 0x04, "0010 - MDA PRIMARY, EGA HI RES EMULATE (SAME AS 0001)" ) /* DIAG: ?? 80 cols, RGBI */ - PORT_CONFSETTING( 0x0c, "0011 - MDA PRIMARY, EGA HI RES ENHANCED" ) /* DIAG: Color Display 40 cols, RrGgBb */ - PORT_CONFSETTING( 0x02, "0100 - CGA 40 PRIMARY, EGA MONOCHROME" ) /* DIAG: ??, Mono RGBI */ - PORT_CONFSETTING( 0x0a, "0101 - CGA 80 PRIMARY, EGA MONOCHROME" ) /* DIAG: ??, Mono RGBI */ - PORT_CONFSETTING( 0x06, "0110 - MDA SECONDARY, EGA COLOR, 40x25" ) /* DIAG: Color Display 40 cols, RGBI */ - PORT_CONFSETTING( 0x0e, "0111 - MDA SECONDARY, EGA COLOR, 80x25" ) /* DIAG: Color Display 80 cols, RGBI */ - PORT_CONFSETTING( 0x01, "1000 - MDA SECONDARY, EGA HI RES EMULATE (SAME AS 0111)" ) /* DIAG: Color Display 80 cols, RGBI */ - PORT_CONFSETTING( 0x09, "1001 - MDA SECONDARY, EGA HI RES ENHANCED" ) /* DIAG: Color Display 40 cols, RrGgBb */ - PORT_CONFSETTING( 0x05, "1010 - COLOR 40 SECONDARY, EGA" ) /* DIAG: Monochrome display, Mono RGBI */ - PORT_CONFSETTING( 0x0d, "1011 - COLOR 80 SECONDARY, EGA" ) /* DIAG: Monochrome display, Mono RGBI */ - PORT_CONFSETTING( 0x03, "1100 - RESERVED" ) /* ??, RGBI */ - PORT_CONFSETTING( 0x0b, "1101 - RESERVED" ) /* ??, RGBI */ - PORT_CONFSETTING( 0x07, "1110 - RESERVED" ) /* ??, RGBI */ - PORT_CONFSETTING( 0x0f, "1111 - RESERVED" ) /* ??, RGBI */ + PORT_DIPNAME( 0x0f, 0x09, "Display Type" ) + PORT_DIPSETTING( 0x00, "0000 - MDA PRIMARY, EGA COLOR, 40x25" ) /* DIAG: ?? 40 cols, RGBI */ + PORT_DIPSETTING( 0x08, "0001 - MDA PRIMARY, EGA COLOR, 80x25" ) /* DIAG: ?? 80 cols, RGBI */ + PORT_DIPSETTING( 0x04, "0010 - MDA PRIMARY, EGA HI RES EMULATE (SAME AS 0001)" ) /* DIAG: ?? 80 cols, RGBI */ + PORT_DIPSETTING( 0x0c, "0011 - MDA PRIMARY, EGA HI RES ENHANCED" ) /* DIAG: Color Display 40 cols, RrGgBb */ + PORT_DIPSETTING( 0x02, "0100 - CGA 40 PRIMARY, EGA MONOCHROME" ) /* DIAG: ??, Mono RGBI */ + PORT_DIPSETTING( 0x0a, "0101 - CGA 80 PRIMARY, EGA MONOCHROME" ) /* DIAG: ??, Mono RGBI */ + PORT_DIPSETTING( 0x06, "0110 - MDA SECONDARY, EGA COLOR, 40x25" ) /* DIAG: Color Display 40 cols, RGBI */ + PORT_DIPSETTING( 0x0e, "0111 - MDA SECONDARY, EGA COLOR, 80x25" ) /* DIAG: Color Display 80 cols, RGBI */ + PORT_DIPSETTING( 0x01, "1000 - MDA SECONDARY, EGA HI RES EMULATE (SAME AS 0111)" ) /* DIAG: Color Display 80 cols, RGBI */ + PORT_DIPSETTING( 0x09, "1001 - MDA SECONDARY, EGA HI RES ENHANCED" ) /* DIAG: Color Display 40 cols, RrGgBb */ + PORT_DIPSETTING( 0x05, "1010 - COLOR 40 SECONDARY, EGA" ) /* DIAG: Monochrome display, Mono RGBI */ + PORT_DIPSETTING( 0x0d, "1011 - COLOR 80 SECONDARY, EGA" ) /* DIAG: Monochrome display, Mono RGBI */ + PORT_DIPSETTING( 0x03, "1100 - RESERVED" ) /* ??, RGBI */ + PORT_DIPSETTING( 0x0b, "1101 - RESERVED" ) /* ??, RGBI */ + PORT_DIPSETTING( 0x07, "1110 - RESERVED" ) /* ??, RGBI */ + PORT_DIPSETTING( 0x0f, "1111 - RESERVED" ) /* ??, RGBI */ INPUT_PORTS_END //************************************************************************** @@ -554,7 +554,7 @@ void isa8_ega_device::device_add_mconfig(machine_config &config) m_crtc_ega->res_out_hsync_callback().set(FUNC(isa8_ega_device::hsync_changed)); m_crtc_ega->res_out_vsync_callback().set(FUNC(isa8_ega_device::vsync_changed)); m_crtc_ega->res_out_vblank_callback().set(FUNC(isa8_ega_device::vblank_changed)); - m_crtc_ega->res_out_irq_callback().set([this](int state) { m_isa->irq2_w(state); }); + m_crtc_ega->res_out_irq_callback().set([this](int state) { m_irq = state; m_isa->irq2_w(state); }); } //------------------------------------------------- @@ -588,7 +588,7 @@ isa8_ega_device::isa8_ega_device(const machine_config &mconfig, device_type type device_t(mconfig, type, tag, owner, clock), device_isa8_card_interface(mconfig, *this), m_crtc_ega(*this, EGA_CRTC_NAME), m_videoram(nullptr), m_charA(nullptr), m_charB(nullptr), - m_misc_output(0), m_feature_control(0), m_frame_cnt(0), m_hsync(0), m_vsync(0), m_vblank(0), m_display_enable(0), m_video_mode(0), + m_misc_output(0), m_feature_control(0), m_frame_cnt(0), m_hsync(0), m_vsync(0), m_vblank(0), m_display_enable(0), m_irq(0), m_video_mode(0), m_palette(*this, "palette") { } @@ -669,6 +669,7 @@ void isa8_ega_device::device_reset() m_vsync = 0; m_vblank = 0; m_display_enable = 0; + m_irq = 0; install_banks(); @@ -754,7 +755,7 @@ void isa8_ega_device::install_banks() } } -CRTC_EGA_ROW_UPDATE( isa8_ega_device::ega_update_row ) +CRTC_EGA_PIXEL_UPDATE( isa8_ega_device::ega_update_row ) { if (m_video_mode == EGA_MODE_GRAPHICS) pc_ega_graphics(bitmap, cliprect, ma, ra, y, x, cursor_x); @@ -791,7 +792,7 @@ WRITE_LINE_MEMBER( isa8_ega_device::vblank_changed ) } -CRTC_EGA_ROW_UPDATE( isa8_ega_device::pc_ega_graphics ) +CRTC_EGA_PIXEL_UPDATE( isa8_ega_device::pc_ega_graphics ) { uint16_t *p = &bitmap.pix(y, x * 8); @@ -852,7 +853,7 @@ CRTC_EGA_ROW_UPDATE( isa8_ega_device::pc_ega_graphics ) } -CRTC_EGA_ROW_UPDATE( isa8_ega_device::pc_ega_text ) +CRTC_EGA_PIXEL_UPDATE( isa8_ega_device::pc_ega_text ) { uint16_t *p = &bitmap.pix(y, x * ( ( m_sequencer.data[0x01] & 0x01 ) ? 8 : 9 ) ); @@ -1289,7 +1290,7 @@ uint8_t isa8_ega_device::pc_ega8_3c0_r(offs_t offset) data = ( data & 0x0f ); data |= ( ( m_feature_control & 0x03 ) << 5 ); - data |= ( m_vsync ? 0x00 : 0x80 ); + data |= ( m_irq ? 0x00 : 0x80 ); data |= ( ( ( dips >> ( ( ( m_misc_output & 0x0c ) >> 2 ) ) ) & 0x01 ) << 4 ); } break; diff --git a/src/devices/bus/isa/ega.h b/src/devices/bus/isa/ega.h index 04ff53fc055..cea8667ba8e 100644 --- a/src/devices/bus/isa/ega.h +++ b/src/devices/bus/isa/ega.h @@ -32,8 +32,8 @@ public: uint8_t pc_ega8_3d0_r(offs_t offset); void pc_ega8_3d0_w(offs_t offset, uint8_t data); - CRTC_EGA_ROW_UPDATE(pc_ega_graphics); - CRTC_EGA_ROW_UPDATE(pc_ega_text); + CRTC_EGA_PIXEL_UPDATE(pc_ega_graphics); + CRTC_EGA_PIXEL_UPDATE(pc_ega_text); protected: isa8_ega_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -55,7 +55,7 @@ private: DECLARE_WRITE_LINE_MEMBER(vsync_changed); DECLARE_WRITE_LINE_MEMBER(vblank_changed); - CRTC_EGA_ROW_UPDATE(ega_update_row); + CRTC_EGA_PIXEL_UPDATE(ega_update_row); public: required_device<crtc_ega_device> m_crtc_ega; @@ -104,6 +104,7 @@ public: uint8_t m_vsync; uint8_t m_vblank; uint8_t m_display_enable; + uint8_t m_irq; int m_video_mode; required_device<palette_device> m_palette; }; |