summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mahlemiut <bsr@xnet.co.nz>2015-11-27 21:58:03 +1300
committer mahlemiut <bsr@xnet.co.nz>2015-11-27 22:02:43 +1300
commitff29765fd964c8562a671189c3e42d6dd5d92eb9 (patch)
treec0e47a9934bf835d76ad093a08c235f9f7fa4868
parent623bbe98dcd738d0693508ddd12f9b8e66ff0b8b (diff)
mc6845: add AMS40489 CRTC
-rw-r--r--src/devices/video/mc6845.cpp19
-rw-r--r--src/devices/video/mc6845.h12
2 files changed, 31 insertions, 0 deletions
diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp
index 642bc913935..d504ad46b8b 100644
--- a/src/devices/video/mc6845.cpp
+++ b/src/devices/video/mc6845.cpp
@@ -55,6 +55,7 @@ const device_type SY6545_1 = &device_creator<sy6545_1_device>;
const device_type SY6845E = &device_creator<sy6845e_device>;
const device_type HD6345 = &device_creator<hd6345_device>;
const device_type AMS40041 = &device_creator<ams40041_device>;
+const device_type AMS40489 = &device_creator<ams40489_device>;
const device_type MOS8563 = &device_creator<mos8563_device>;
const device_type MOS8568 = &device_creator<mos8568_device>;
@@ -1244,6 +1245,18 @@ void ams40041_device::device_start()
m_supports_transparent = false;
}
+void ams40489_device::device_start()
+{
+ mc6845_device::device_start();
+
+ m_supports_disp_start_addr_r = true;
+ m_supports_vert_sync_width = false;
+ m_supports_status_reg_d5 = false;
+ m_supports_status_reg_d6 = false;
+ m_supports_status_reg_d7 = false;
+ m_supports_transparent = false;
+}
+
void mos8563_device::device_start()
{
@@ -1350,6 +1363,7 @@ void sy6545_1_device::device_reset() { mc6845_device::device_reset(); }
void sy6845e_device::device_reset() { mc6845_device::device_reset(); }
void hd6345_device::device_reset() { mc6845_device::device_reset(); }
void ams40041_device::device_reset() { mc6845_device::device_reset(); }
+void ams40489_device::device_reset() { mc6845_device::device_reset(); }
void mos8563_device::device_reset()
{
@@ -1434,6 +1448,11 @@ ams40041_device::ams40041_device(const machine_config &mconfig, const char *tag,
{
}
+ams40489_device::ams40489_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : mc6845_device(mconfig, AMS40489, "AMS40489 ASIC (CRTC)", tag, owner, clock, "ams40489", __FILE__)
+{
+}
+
mos8563_device::mos8563_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: mc6845_device(mconfig, type, name, tag, owner, clock, shortname, source),
diff --git a/src/devices/video/mc6845.h b/src/devices/video/mc6845.h
index f68a95a326e..5fc1a72d89d 100644
--- a/src/devices/video/mc6845.h
+++ b/src/devices/video/mc6845.h
@@ -98,6 +98,7 @@ class mc6845_device : public device_t,
friend class sy6845e_device;
friend class hd6345_device;
friend class ams40041_device;
+ friend class ams40489_device;
public:
// construction/destruction
@@ -419,6 +420,16 @@ protected:
virtual void device_reset();
};
+class ams40489_device : public mc6845_device
+{
+public:
+ ams40489_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+};
+
class mos8563_device : public mc6845_device,
public device_memory_interface
{
@@ -505,6 +516,7 @@ extern const device_type SY6545_1;
extern const device_type SY6845E;
extern const device_type HD6345;
extern const device_type AMS40041;
+extern const device_type AMS40489;
extern const device_type MOS8563;
extern const device_type MOS8568;