summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/pc_vga.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/pc_vga.h')
-rw-r--r--src/devices/video/pc_vga.h577
1 files changed, 100 insertions, 477 deletions
diff --git a/src/devices/video/pc_vga.h b/src/devices/video/pc_vga.h
index 22d8ba33a65..679f7e2c22e 100644
--- a/src/devices/video/pc_vga.h
+++ b/src/devices/video/pc_vga.h
@@ -11,11 +11,19 @@
#ifndef MAME_VIDEO_PC_VGA_H
#define MAME_VIDEO_PC_VGA_H
+#pragma once
+
+#include "ibm8514a.h"
+
#include "screen.h"
+
// ======================> vga_device
-class vga_device : public device_t, public device_video_interface, public device_palette_interface
+class vga_device : public device_t
+ , public device_video_interface
+ , public device_palette_interface
+ , public device_memory_interface
{
friend class ibm8514a_device;
@@ -26,19 +34,17 @@ public:
virtual void zero();
virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- virtual READ8_MEMBER(port_03b0_r);
- virtual WRITE8_MEMBER(port_03b0_w);
- virtual READ8_MEMBER(port_03c0_r);
- virtual WRITE8_MEMBER(port_03c0_w);
- virtual READ8_MEMBER(port_03d0_r);
- virtual WRITE8_MEMBER(port_03d0_w);
- virtual READ8_MEMBER(mem_r);
- virtual WRITE8_MEMBER(mem_w);
- virtual READ8_MEMBER(mem_linear_r);
- virtual WRITE8_MEMBER(mem_linear_w);
- virtual TIMER_CALLBACK_MEMBER(vblank_timer_cb);
+ void io_map(address_map &map);
+
+ virtual uint8_t mem_r(offs_t offset);
+ virtual void mem_w(offs_t offset, uint8_t data);
+ virtual uint8_t mem_linear_r(offs_t offset);
+ virtual void mem_linear_w(offs_t offset,uint8_t data);
void set_offset(uint16_t val) { vga.crtc.offset = val; }
+ void set_vram_size(size_t vram_size) { vga.svga_intf.vram_size = vram_size; }
+ // FIXME: should be protected, but virge_pci.cpp violates this
+ inline uint16_t get_crtc_port() { return BIT(vga.miscellaneous_output, 0) ? 0x3d0 : 0x3b0; }
protected:
enum
@@ -58,12 +64,15 @@ protected:
vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ TIMER_CALLBACK_MEMBER(vblank_timer_cb);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual ioport_constructor device_input_ports() const override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 0x100; }
+ virtual uint32_t palette_entries() const noexcept override { return 0x100; }
void vga_vh_text(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void vga_vh_ega(bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -72,19 +81,56 @@ protected:
void vga_vh_mono(bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual uint8_t pc_vga_choosevideomode();
void recompute_params_clock(int divisor, int xtal);
- uint8_t crtc_reg_read(uint8_t index);
virtual void recompute_params();
- void crtc_reg_write(uint8_t index, uint8_t data);
- void seq_reg_write(uint8_t index, uint8_t data);
uint8_t vga_vblank();
- READ8_MEMBER(vga_crtc_r);
- WRITE8_MEMBER(vga_crtc_w);
- uint8_t gc_reg_read(uint8_t index);
- void attribute_reg_write(uint8_t index, uint8_t data);
- void gc_reg_write(uint8_t index,uint8_t data);
+
+ virtual space_config_vector memory_space_config() const override;
+
+ virtual void io_3bx_3dx_map(address_map &map);
+
+ u8 crtc_address_r(offs_t offset);
+ void crtc_address_w(offs_t offset, u8 data);
+ virtual u8 crtc_data_r(offs_t offset);
+ virtual void crtc_data_w(offs_t offset, u8 data);
+ u8 input_status_1_r(offs_t offset);
+ void feature_control_w(offs_t offset, u8 data);
+
+ virtual void io_3cx_map(address_map &map);
+
+ u8 atc_address_r(offs_t offset);
+ void atc_address_data_w(offs_t offset, u8 data);
+ u8 atc_data_r(offs_t offset);
+ u8 input_status_0_r(offs_t offset);
+ void miscellaneous_output_w(offs_t offset, u8 data);
+ u8 sequencer_address_r(offs_t offset);
+ void sequencer_address_w(offs_t offset, u8 data);
+ virtual u8 sequencer_data_r(offs_t offset);
+ virtual void sequencer_data_w(offs_t offset, u8 data);
+ u8 ramdac_mask_r(offs_t offset);
+ void ramdac_mask_w(offs_t offset, u8 data);
+ u8 ramdac_state_r(offs_t offset);
+ void ramdac_read_index_w(offs_t offset, u8 data);
+ u8 ramdac_write_index_r(offs_t offset);
+ void ramdac_write_index_w(offs_t offset, u8 data);
+ u8 ramdac_data_r(offs_t offset);
+ void ramdac_data_w(offs_t offset, u8 data);
+ u8 feature_control_r(offs_t offset);
+ u8 miscellaneous_output_r(offs_t offset);
+ virtual u8 gc_address_r(offs_t offset);
+ virtual void gc_address_w(offs_t offset, u8 data);
+ virtual u8 gc_data_r(offs_t offset);
+ virtual void gc_data_w(offs_t offset, u8 data);
+
+ virtual void crtc_map(address_map &map);
+ virtual void sequencer_map(address_map &map);
+ virtual void gc_map(address_map &map);
+ virtual void attribute_map(address_map &map);
+
+ // NOTE: do not use the subclassed result when determining pitch in SVGA modes.
+ // dw & word mode should apply to normal VGA modes only.
virtual uint16_t offset();
- virtual uint32_t start_addr();
- inline uint8_t vga_latch_write(int offs, uint8_t data);
+ virtual uint32_t latch_start_addr() { return vga.crtc.start_addr_latch; }
+ virtual uint8_t vga_latch_write(int offs, uint8_t data);
inline uint8_t rotate_right(uint8_t val) { return (val >> vga.gc.rotate_count) | (val << (8 - vga.gc.rotate_count)); }
inline uint8_t vga_logical_op(uint8_t data, uint8_t plane, uint8_t mask)
{
@@ -108,21 +154,18 @@ protected:
return res;
}
-
+ virtual bool get_interlace_mode() { return false; }
+ virtual void palette_update();
struct vga_t
{
- vga_t(device_t &owner) : read_dipswitch(owner) { }
-
- read8_delegate read_dipswitch;
+ vga_t(device_t &owner) { }
struct
{
size_t vram_size;
- int seq_regcount;
- int crtc_regcount;
} svga_intf;
- std::vector<uint8_t> memory;
+ std::unique_ptr<uint8_t []> memory;
uint32_t pens[16]; /* the current 16 pens */
uint8_t miscellaneous_output;
@@ -235,7 +278,29 @@ protected:
struct { uint8_t reg; } oak;
} vga;
+ required_ioport m_input_sense;
+
emu_timer *m_vblank_timer;
+
+ enum {
+ MAIN_IF_REG = 0,
+ CRTC_REG,
+ GC_REG,
+ SEQ_REG,
+ ATC_REG,
+ // pointer for subclasses to declare further spaces
+ EXT_REG
+ };
+
+ address_space_config m_main_if_space_config;
+ address_space_config m_crtc_space_config;
+ address_space_config m_gc_space_config;
+ address_space_config m_seq_space_config;
+ address_space_config m_atc_space_config;
+
+ bool m_ioas = false;
+private:
+ uint32_t start_addr();
};
@@ -262,468 +327,26 @@ protected:
void svga_vh_rgb32(bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual uint8_t pc_vga_choosevideomode() override;
virtual void device_start() override;
+ virtual u16 line_compare_mask();
struct
{
- uint8_t bank_r,bank_w;
+ uint8_t bank_r, bank_w;
uint8_t rgb8_en;
uint8_t rgb15_en;
uint8_t rgb16_en;
uint8_t rgb24_en;
uint8_t rgb32_en;
uint8_t id;
+ bool ignore_chain4;
} svga;
};
-// ======================> ibm8514_device
-
-class ibm8514a_device : public device_t
-{
-public:
- ibm8514a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- template <typename T> void set_vga(T &&tag) { m_vga.set_tag(std::forward<T>(tag)); }
- void set_vga_owner() { m_vga.set_tag(DEVICE_SELF); }
-
- void enabled();
-
- bool is_8514a_enabled() { return ibm8514.enabled; }
- bool is_passthrough_set() { return ibm8514.passthrough; }
-
- READ16_MEMBER(ibm8514_gpstatus_r);
- WRITE16_MEMBER(ibm8514_cmd_w);
- WRITE16_MEMBER(ibm8514_display_ctrl_w);
- READ16_MEMBER(ibm8514_line_error_r);
- WRITE16_MEMBER(ibm8514_line_error_w);
- READ8_MEMBER(ibm8514_status_r);
- WRITE8_MEMBER(ibm8514_htotal_w);
- READ16_MEMBER(ibm8514_substatus_r);
- WRITE16_MEMBER(ibm8514_subcontrol_w);
- READ16_MEMBER(ibm8514_subcontrol_r);
- READ16_MEMBER(ibm8514_htotal_r);
- READ16_MEMBER(ibm8514_vtotal_r);
- WRITE16_MEMBER(ibm8514_vtotal_w);
- READ16_MEMBER(ibm8514_vdisp_r);
- WRITE16_MEMBER(ibm8514_vdisp_w);
- READ16_MEMBER(ibm8514_vsync_r);
- WRITE16_MEMBER(ibm8514_vsync_w);
- READ16_MEMBER(ibm8514_desty_r);
- WRITE16_MEMBER(ibm8514_desty_w);
- READ16_MEMBER(ibm8514_destx_r);
- WRITE16_MEMBER(ibm8514_destx_w);
- READ16_MEMBER(ibm8514_ssv_r);
- WRITE16_MEMBER(ibm8514_ssv_w);
- READ16_MEMBER(ibm8514_currentx_r);
- WRITE16_MEMBER(ibm8514_currentx_w);
- READ16_MEMBER(ibm8514_currenty_r);
- WRITE16_MEMBER(ibm8514_currenty_w);
- READ16_MEMBER(ibm8514_width_r);
- WRITE16_MEMBER(ibm8514_width_w);
- READ16_MEMBER(ibm8514_fgcolour_r);
- WRITE16_MEMBER(ibm8514_fgcolour_w);
- READ16_MEMBER(ibm8514_bgcolour_r);
- WRITE16_MEMBER(ibm8514_bgcolour_w);
- READ16_MEMBER(ibm8514_multifunc_r);
- WRITE16_MEMBER(ibm8514_multifunc_w);
- READ16_MEMBER(ibm8514_backmix_r);
- WRITE16_MEMBER(ibm8514_backmix_w);
- READ16_MEMBER(ibm8514_foremix_r);
- WRITE16_MEMBER(ibm8514_foremix_w);
- READ16_MEMBER(ibm8514_pixel_xfer_r);
- virtual WRITE16_MEMBER(ibm8514_pixel_xfer_w);
- READ16_MEMBER(ibm8514_read_mask_r);
- WRITE16_MEMBER(ibm8514_read_mask_w);
- READ16_MEMBER(ibm8514_write_mask_r);
- WRITE16_MEMBER(ibm8514_write_mask_w);
- WRITE16_MEMBER(ibm8514_advfunc_w);
-
- void ibm8514_wait_draw();
- struct
- {
- uint16_t htotal; // Horizontal total (9 bits)
- uint16_t vtotal; // Vertical total adjust (3 bits), Vertical total base (9 bit)
- uint16_t vdisp;
- uint16_t vsync;
- uint16_t subctrl;
- uint16_t substatus;
- uint8_t display_ctrl;
- uint16_t ssv;
- uint16_t ec0;
- uint16_t ec1;
- uint16_t ec2;
- uint16_t ec3;
- bool gpbusy;
- bool data_avail;
- int16_t dest_x;
- int16_t dest_y;
- int16_t curr_x;
- int16_t curr_y;
- int16_t prev_x;
- int16_t prev_y;
- int16_t line_axial_step;
- int16_t line_diagonal_step;
- int16_t line_errorterm;
- uint16_t current_cmd;
- uint16_t src_x;
- uint16_t src_y;
- int16_t scissors_left;
- int16_t scissors_right;
- int16_t scissors_top;
- int16_t scissors_bottom;
- uint16_t rect_width;
- uint16_t rect_height;
- uint32_t fgcolour;
- uint32_t bgcolour;
- uint16_t fgmix;
- uint16_t bgmix;
- uint32_t pixel_xfer;
- uint16_t pixel_control;
- uint8_t bus_size;
- uint8_t multifunc_sel;
- uint16_t multifunc_misc;
- uint32_t read_mask;
- uint32_t write_mask;
- uint16_t advfunction_ctrl;
- bool enabled;
- bool passthrough;
-
- int state;
- uint8_t wait_vector_len;
- uint8_t wait_vector_dir;
- bool wait_vector_draw;
- uint8_t wait_vector_count;
-
- } ibm8514;
-
-protected:
- ibm8514a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- void ibm8514_write(uint32_t offset, uint32_t src);
- void ibm8514_write_fg(uint32_t offset);
- void ibm8514_write_bg(uint32_t offset);
-
- required_device<svga_device> m_vga; // for pass-through
-private:
- void ibm8514_draw_vector(uint8_t len, uint8_t dir, bool draw);
- void ibm8514_wait_draw_ssv();
- void ibm8514_draw_ssv(uint8_t data);
- void ibm8514_wait_draw_vector();
-
- //uint8_t* m_vram; // the original 8514/A has it's own VRAM, but most VGA+8514 combination cards will have
- // only one set of VRAM, so this will only be needed in standalone 8514/A cards
- //uint32_t m_vramsize;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(IBM8514A, ibm8514a_device)
-
-
-class mach8_device : public ibm8514a_device
-{
-public:
- mach8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- READ16_MEMBER(mach8_ec0_r);
- WRITE16_MEMBER(mach8_ec0_w);
- READ16_MEMBER(mach8_ec1_r);
- WRITE16_MEMBER(mach8_ec1_w);
- READ16_MEMBER(mach8_ec2_r);
- WRITE16_MEMBER(mach8_ec2_w);
- READ16_MEMBER(mach8_ec3_r);
- WRITE16_MEMBER(mach8_ec3_w);
- READ16_MEMBER(mach8_ext_fifo_r);
- WRITE16_MEMBER(mach8_linedraw_index_w);
- READ16_MEMBER(mach8_bresenham_count_r);
- WRITE16_MEMBER(mach8_bresenham_count_w);
- WRITE16_MEMBER(mach8_linedraw_w);
- READ16_MEMBER(mach8_linedraw_r);
- READ16_MEMBER(mach8_scratch0_r);
- WRITE16_MEMBER(mach8_scratch0_w);
- READ16_MEMBER(mach8_scratch1_r);
- WRITE16_MEMBER(mach8_scratch1_w);
- READ16_MEMBER(mach8_config1_r);
- READ16_MEMBER(mach8_config2_r);
- READ16_MEMBER(mach8_sourcex_r);
- READ16_MEMBER(mach8_sourcey_r);
- WRITE16_MEMBER(mach8_ext_leftscissor_w);
- WRITE16_MEMBER(mach8_ext_topscissor_w);
- READ16_MEMBER(mach8_clksel_r) { return mach8.clksel; }
- WRITE16_MEMBER(mach8_crt_pitch_w);
- WRITE16_MEMBER(mach8_patt_data_w) { logerror("Mach8: Pattern Data write (unimplemented)\n"); }
- WRITE16_MEMBER(mach8_ge_offset_l_w);
- WRITE16_MEMBER(mach8_ge_offset_h_w);
- WRITE16_MEMBER(mach8_ge_pitch_w);
- READ16_MEMBER(mach8_ge_ext_config_r) { return mach8.ge_ext_config; }
- WRITE16_MEMBER(mach8_ge_ext_config_w); // TODO: handle 8-bit I/O
- WRITE16_MEMBER(mach8_scan_x_w);
- WRITE16_MEMBER(mach8_dp_config_w);
- READ16_MEMBER(mach8_readonly_r) { return 0; }
- WRITE16_MEMBER(mach8_pixel_xfer_w);
- WRITE16_MEMBER(mach8_clksel_w) { mach8.ati_mode = true; ibm8514.passthrough = data & 0x0001; mach8.clksel = data; } // read only on the mach8
- WRITE16_MEMBER(mach8_advfunc_w) { mach8.ati_mode = false; ibm8514_advfunc_w(space,offset,data,mem_mask); }
- uint16_t get_ext_config() { return mach8.ge_ext_config; }
- uint16_t offset() { if(mach8.ati_mode) return mach8.ge_pitch; else return 128; }
-
-protected:
- mach8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- struct
- {
- uint16_t scratch0;
- uint16_t scratch1;
- uint16_t linedraw;
- uint16_t clksel;
- uint16_t crt_pitch;
- uint16_t dp_config;
- uint32_t ge_offset;
- uint16_t ge_pitch;
- uint16_t ge_ext_config; // usage varies between the mach8 and mach32 (except for 8514/A monitor alias)
- uint16_t scan_x;
- bool ati_mode;
- } mach8;
-
-private:
- void mach8_wait_scan();
-
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(MACH8, mach8_device)
-
-
-// ======================> tseng_vga_device
-
-class tseng_vga_device : public svga_device
-{
-public:
- // construction/destruction
- tseng_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual READ8_MEMBER(port_03b0_r) override;
- virtual WRITE8_MEMBER(port_03b0_w) override;
- virtual READ8_MEMBER(port_03c0_r) override;
- virtual WRITE8_MEMBER(port_03c0_w) override;
- virtual READ8_MEMBER(port_03d0_r) override;
- virtual WRITE8_MEMBER(port_03d0_w) override;
- virtual READ8_MEMBER(mem_r) override;
- virtual WRITE8_MEMBER(mem_w) override;
-
-protected:
- virtual void device_start() override;
-
-private:
- void tseng_define_video_mode();
- uint8_t tseng_crtc_reg_read(uint8_t index);
- void tseng_crtc_reg_write(uint8_t index, uint8_t data);
- uint8_t tseng_seq_reg_read(uint8_t index);
- void tseng_seq_reg_write(uint8_t index, uint8_t data);
- void tseng_attribute_reg_write(uint8_t index, uint8_t data);
-
- struct
- {
- uint8_t reg_3d8;
- uint8_t dac_ctrl;
- uint8_t dac_state;
- uint8_t horz_overflow;
- uint8_t aux_ctrl;
- bool ext_reg_ena;
- uint8_t misc1;
- uint8_t misc2;
- }et4k;
-
-};
-
-
-// device type definition
-DECLARE_DEVICE_TYPE(TSENG_VGA, tseng_vga_device)
-
-
-// ======================> ati_vga_device
-
-class ati_vga_device : public svga_device
-{
-public:
- // construction/destruction
- ati_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual READ8_MEMBER(mem_r) override;
- virtual WRITE8_MEMBER(mem_w) override;
-
- // VGA registers
- virtual READ8_MEMBER(port_03c0_r) override;
- READ8_MEMBER(ati_port_ext_r);
- WRITE8_MEMBER(ati_port_ext_w);
-
- virtual uint16_t offset() override;
-
- mach8_device* get_8514() { return m_8514; }
-protected:
- ati_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual void ati_define_video_mode();
- void set_dot_clock();
- struct
- {
- uint8_t ext_reg[64];
- uint8_t ext_reg_select;
- uint8_t vga_chip_id;
- } ati;
-
-private:
- mach8_device* m_8514;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(ATI_VGA, ati_vga_device)
-
-
-// ======================> s3_vga_device
-
-class s3_vga_device : public ati_vga_device
-{
-public:
- // construction/destruction
- s3_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- virtual READ8_MEMBER(port_03b0_r) override;
- virtual WRITE8_MEMBER(port_03b0_w) override;
- virtual READ8_MEMBER(port_03c0_r) override;
- virtual WRITE8_MEMBER(port_03c0_w) override;
- virtual READ8_MEMBER(port_03d0_r) override;
- virtual WRITE8_MEMBER(port_03d0_w) override;
- virtual READ8_MEMBER(mem_r) override;
- virtual WRITE8_MEMBER(mem_w) override;
-
- virtual uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override;
-
- virtual TIMER_CALLBACK_MEMBER(vblank_timer_cb) override;
-
- ibm8514a_device* get_8514() { return m_8514; }
-
-protected:
- s3_vga_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
-
- struct
- {
- uint8_t memory_config;
- uint8_t ext_misc_ctrl_2;
- uint8_t crt_reg_lock;
- uint8_t reg_lock1;
- uint8_t reg_lock2;
- uint8_t enable_8514;
- uint8_t enable_s3d;
- uint8_t cr3a;
- uint8_t cr42;
- uint8_t cr43;
- uint8_t cr51;
- uint8_t cr53;
- uint8_t id_high;
- uint8_t id_low;
- uint8_t revision;
- uint8_t id_cr30;
- uint32_t strapping; // power-on strapping bits
- uint8_t sr10; // MCLK PLL
- uint8_t sr11; // MCLK PLL
- uint8_t sr12; // DCLK PLL
- uint8_t sr13; // DCLK PLL
- uint8_t sr15; // CLKSYN control 2
- uint8_t sr17; // CLKSYN test
- uint8_t clk_pll_r; // individual DCLK PLL values
- uint8_t clk_pll_m;
- uint8_t clk_pll_n;
-
- // data for memory-mapped I/O
- uint16_t mmio_9ae8;
- uint16_t mmio_bee8;
- uint16_t mmio_96e8;
-
- // hardware graphics cursor
- uint8_t cursor_mode;
- uint16_t cursor_x;
- uint16_t cursor_y;
- uint16_t cursor_start_addr;
- uint8_t cursor_pattern_x; // cursor pattern origin
- uint8_t cursor_pattern_y;
- uint8_t cursor_fg[4];
- uint8_t cursor_bg[4];
- uint8_t cursor_fg_ptr;
- uint8_t cursor_bg_ptr;
- uint8_t extended_dac_ctrl;
- } s3;
- virtual uint16_t offset() override;
-
-private:
- uint8_t s3_crtc_reg_read(uint8_t index);
- void s3_define_video_mode(void);
- void s3_crtc_reg_write(uint8_t index, uint8_t data);
- uint8_t s3_seq_reg_read(uint8_t index);
- void s3_seq_reg_write(uint8_t index, uint8_t data);
- ibm8514a_device* m_8514;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(S3_VGA, s3_vga_device)
-
-// ======================> gamtor_vga_device
-
-class gamtor_vga_device : public svga_device
-{
-public:
- // construction/destruction
- gamtor_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-
- virtual READ8_MEMBER(port_03b0_r) override;
- virtual WRITE8_MEMBER(port_03b0_w) override;
- virtual READ8_MEMBER(port_03c0_r) override;
- virtual WRITE8_MEMBER(port_03c0_w) override;
- virtual READ8_MEMBER(port_03d0_r) override;
- virtual WRITE8_MEMBER(port_03d0_w) override;
- virtual READ8_MEMBER(mem_r) override;
- virtual WRITE8_MEMBER(mem_w) override;
-};
-
-
-// device type definition
-DECLARE_DEVICE_TYPE(GAMTOR_VGA, gamtor_vga_device)
/*
pega notes (paradise)
build in amstrad pc1640
- ROM_LOAD("40100", 0xc0000, 0x8000, CRC(d2d1f1ae))
-
- 4 additional dipswitches
- seems to have emulation modes at register level
- (mda/hgc lines bit 8 not identical to ega/vga)
-
- standard ega/vga dipswitches
- 00000000 320x200
- 00000001 640x200 hanging
- 00000010 640x200 hanging
- 00000011 640x200 hanging
-
- 00000100 640x350 hanging
- 00000101 640x350 hanging EGA mono
- 00000110 320x200
- 00000111 640x200
-
- 00001000 640x200
- 00001001 640x200
- 00001010 720x350 partial visible
- 00001011 720x350 partial visible
-
- 00001100 320x200
- 00001101 320x200
- 00001110 320x200
- 00001111 320x200
+ ROM_LOAD("40100", 0xc0000, 0x8000, CRC(d2d1f1ae) SHA1(98302006ee38a17c09bd75504cc18c0649174e33) )
*/
@@ -731,7 +354,7 @@ DECLARE_DEVICE_TYPE(GAMTOR_VGA, gamtor_vga_device)
oak vga (oti 037 chip)
(below bios patch needed for running)
- ROM_LOAD("oakvga.bin", 0xc0000, 0x8000, CRC(318c5f43))
+ ROM_LOAD("oakvga.bin", 0xc0000, 0x8000, CRC(318c5f43) SHA1(2aeb6cf737fd87dfd08c9f5b5bc421fcdbab4ce9) )
*/