summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/sed1330.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/sed1330.cpp')
-rw-r--r--src/devices/video/sed1330.cpp177
1 files changed, 80 insertions, 97 deletions
diff --git a/src/devices/video/sed1330.cpp b/src/devices/video/sed1330.cpp
index d7cb154cb91..0336205784a 100644
--- a/src/devices/video/sed1330.cpp
+++ b/src/devices/video/sed1330.cpp
@@ -9,14 +9,15 @@
#include "emu.h"
#include "sed1330.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
-#define LOG 0
-
#define INSTRUCTION_SYSTEM_SET 0x40
#define INSTRUCTION_SLEEP_IN 0x53 // unimplemented
@@ -61,7 +62,7 @@
//**************************************************************************
// device type definition
-const device_type SED1330 = device_creator<sed1330_device>;
+DEFINE_DEVICE_TYPE(SED1330, sed1330_device, "sed1330", "Epson SED1330")
// default address map
@@ -139,7 +140,7 @@ inline void sed1330_device::increment_csr()
//-------------------------------------------------
sed1330_device::sed1330_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SED1330, "SED1330", tag, owner, clock, "sed1330", __FILE__),
+ : device_t(mconfig, SED1330, tag, owner, clock),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_bf(0),
@@ -230,7 +231,7 @@ const address_space_config *sed1330_device::memory_space_config(address_spacenum
READ8_MEMBER( sed1330_device::status_r )
{
- if (LOG) logerror("SED1330 '%s' Status Read: %s\n", tag(), m_bf ? "busy" : "ready");
+ LOG("SED1330 Status Read: %s\n", m_bf ? "busy" : "ready");
return m_bf << 6;
}
@@ -257,15 +258,12 @@ WRITE8_MEMBER( sed1330_device::command_w )
case INSTRUCTION_CSRDIR_DOWN:
m_cd = data & 0x03;
- if (LOG)
+ switch (m_cd)
{
- switch (m_cd)
- {
- case CSRDIR_RIGHT: logerror("SED1330 '%s' Cursor Direction: Right\n", tag()); break;
- case CSRDIR_LEFT: logerror("SED1330 '%s' Cursor Direction: Left\n", tag()); break;
- case CSRDIR_UP: logerror("SED1330 '%s' Cursor Direction: Up\n", tag()); break;
- case CSRDIR_DOWN: logerror("SED1330 '%s' Cursor Direction: Down\n", tag()); break;
- }
+ case CSRDIR_RIGHT: LOG("SED1330 Cursor Direction: Right\n"); break;
+ case CSRDIR_LEFT: LOG("SED1330 Cursor Direction: Left\n"); break;
+ case CSRDIR_UP: LOG("SED1330 Cursor Direction: Up\n"); break;
+ case CSRDIR_DOWN: LOG("SED1330 Cursor Direction: Down\n"); break;
}
break;
}
@@ -280,7 +278,7 @@ READ8_MEMBER( sed1330_device::data_r )
{
uint8_t data = readbyte(m_csr);
- if (LOG) logerror("SED1330 '%s' Memory Read %02x from %04x\n", tag(), data, m_csr);
+ LOG("SED1330 Memory Read %02x from %04x\n", data, m_csr);
increment_csr();
@@ -306,45 +304,39 @@ WRITE8_MEMBER( sed1330_device::data_w )
m_ws = BIT(data, 3);
m_iv = BIT(data, 5);
- if (LOG)
- {
- logerror("SED1330 '%s' %s CG ROM\n", tag(), BIT(data, 0) ? "External" : "Internal");
- logerror("SED1330 '%s' D6 Correction: %s\n", tag(), BIT(data, 1) ? "enabled" : "disabled");
- logerror("SED1330 '%s' Character Height: %u\n", tag(), BIT(data, 2) ? 16 : 8);
- logerror("SED1330 '%s' %s Panel Drive\n", tag(), BIT(data, 3) ? "Dual" : "Single");
- logerror("SED1330 '%s' Screen Top-Line Correction: %s\n", tag(), BIT(data, 5) ? "disabled" : "enabled");
- }
+ LOG("SED1330 %s CG ROM\n", BIT(data, 0) ? "External" : "Internal");
+ LOG("SED1330 D6 Correction: %s\n", BIT(data, 1) ? "enabled" : "disabled");
+ LOG("SED1330 Character Height: %u\n", BIT(data, 2) ? 16 : 8);
+ LOG("SED1330 %s Panel Drive\n", BIT(data, 3) ? "Dual" : "Single");
+ LOG("SED1330 Screen Top-Line Correction: %s\n", BIT(data, 5) ? "disabled" : "enabled");
break;
case 1:
m_fx = (data & 0x07) + 1;
m_wf = BIT(data, 7);
- if (LOG)
- {
- logerror("SED1330 '%s' Horizontal Character Size: %u\n", tag(), m_fx);
- logerror("SED1330 '%s' %s AC Drive\n", tag(), BIT(data, 7) ? "2-frame" : "16-line");
- }
+ LOG("SED1330 Horizontal Character Size: %u\n", m_fx);
+ LOG("SED1330 %s AC Drive\n", BIT(data, 7) ? "2-frame" : "16-line");
break;
case 2:
m_fy = (data & 0x0f) + 1;
- if (LOG) logerror("SED1330 '%s' Vertical Character Size: %u\n", tag(), m_fy);
+ LOG("SED1330 Vertical Character Size: %u\n", m_fy);
break;
case 3:
m_cr = data + 1;
- if (LOG) logerror("SED1330 '%s' Visible Characters Per Line: %u\n", tag(), m_cr);
+ LOG("SED1330 Visible Characters Per Line: %u\n", m_cr);
break;
case 4:
m_tcr = data + 1;
- if (LOG) logerror("SED1330 '%s' Total Characters Per Line: %u\n", tag(), m_tcr);
+ LOG("SED1330 Total Characters Per Line: %u\n", m_tcr);
break;
case 5:
m_lf = data + 1;
- if (LOG) logerror("SED1330 '%s' Frame Height: %u\n", tag(), m_lf);
+ LOG("SED1330 Frame Height: %u\n", m_lf);
break;
case 6:
@@ -353,11 +345,11 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 7:
m_ap = (data << 8) | (m_ap & 0xff);
- if (LOG) logerror("SED1330 '%s' Virtual Screen Width: %u\n", tag(), m_ap);
+ LOG("SED1330 Virtual Screen Width: %u\n", m_ap);
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
@@ -366,41 +358,38 @@ WRITE8_MEMBER( sed1330_device::data_w )
m_d = BIT(data, 0);
m_fc = data & 0x03;
m_fp = data >> 2;
- if (LOG)
- {
- logerror("SED1330 '%s' Display: %s\n", tag(), BIT(data, 0) ? "enabled" : "disabled");
+ LOG("SED1330 Display: %s\n", BIT(data, 0) ? "enabled" : "disabled");
- switch (m_fc)
- {
- case FC_OFF: logerror("SED1330 '%s' Cursor: disabled\n", tag()); break;
- case FC_SOLID: logerror("SED1330 '%s' Cursor: solid\n", tag()); break;
- case FC_FLASH_32: logerror("SED1330 '%s' Cursor: fFR/32\n", tag()); break;
- case FC_FLASH_64: logerror("SED1330 '%s' Cursor: fFR/64\n", tag()); break;
- }
+ switch (m_fc)
+ {
+ case FC_OFF: LOG("SED1330 Cursor: disabled\n"); break;
+ case FC_SOLID: LOG("SED1330 Cursor: solid\n"); break;
+ case FC_FLASH_32: LOG("SED1330 Cursor: fFR/32\n"); break;
+ case FC_FLASH_64: LOG("SED1330 Cursor: fFR/64\n"); break;
+ }
- switch (m_fp & 0x03)
- {
- case FC_OFF: logerror("SED1330 '%s' Display Page 1: disabled\n", tag()); break;
- case FC_SOLID: logerror("SED1330 '%s' Display Page 1: enabled\n", tag()); break;
- case FC_FLASH_32: logerror("SED1330 '%s' Display Page 1: flash fFR/32\n", tag()); break;
- case FC_FLASH_64: logerror("SED1330 '%s' Display Page 1: flash fFR/64\n", tag()); break;
- }
+ switch (m_fp & 0x03)
+ {
+ case FC_OFF: LOG("SED1330 Display Page 1: disabled\n"); break;
+ case FC_SOLID: LOG("SED1330 Display Page 1: enabled\n"); break;
+ case FC_FLASH_32: LOG("SED1330 Display Page 1: flash fFR/32\n"); break;
+ case FC_FLASH_64: LOG("SED1330 Display Page 1: flash fFR/64\n"); break;
+ }
- switch ((m_fp >> 2) & 0x03)
- {
- case FC_OFF: logerror("SED1330 '%s' Display Page 2/4: disabled\n", tag()); break;
- case FC_SOLID: logerror("SED1330 '%s' Display Page 2/4: enabled\n", tag()); break;
- case FC_FLASH_32: logerror("SED1330 '%s' Display Page 2/4: flash fFR/32\n", tag()); break;
- case FC_FLASH_64: logerror("SED1330 '%s' Display Page 2/4: flash fFR/64\n", tag()); break;
- }
+ switch ((m_fp >> 2) & 0x03)
+ {
+ case FC_OFF: LOG("SED1330 Display Page 2/4: disabled\n"); break;
+ case FC_SOLID: LOG("SED1330 Display Page 2/4: enabled\n"); break;
+ case FC_FLASH_32: LOG("SED1330 Display Page 2/4: flash fFR/32\n"); break;
+ case FC_FLASH_64: LOG("SED1330 Display Page 2/4: flash fFR/64\n"); break;
+ }
- switch ((m_fp >> 4) & 0x03)
- {
- case FC_OFF: logerror("SED1330 '%s' Display Page 3: disabled\n", tag()); break;
- case FC_SOLID: logerror("SED1330 '%s' Display Page 3: enabled\n", tag()); break;
- case FC_FLASH_32: logerror("SED1330 '%s' Display Page 3: flash fFR/32\n", tag()); break;
- case FC_FLASH_64: logerror("SED1330 '%s' Display Page 3: flash fFR/64\n", tag()); break;
- }
+ switch ((m_fp >> 4) & 0x03)
+ {
+ case FC_OFF: LOG("SED1330 Display Page 3: disabled\n"); break;
+ case FC_SOLID: LOG("SED1330 Display Page 3: enabled\n"); break;
+ case FC_FLASH_32: LOG("SED1330 Display Page 3: flash fFR/32\n"); break;
+ case FC_FLASH_64: LOG("SED1330 Display Page 3: flash fFR/64\n"); break;
}
break;
@@ -413,12 +402,12 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 1:
m_sad1 = (data << 8) | (m_sad1 & 0xff);
- if (LOG) logerror("SED1330 '%s' Display Page 1 Start Address: %04x\n", tag(), m_sad1);
+ LOG("SED1330 Display Page 1 Start Address: %04x\n", m_sad1);
break;
case 2:
m_sl1 = data + 1;
- if (LOG) logerror("SED1330 '%s' Display Block 1 Screen Lines: %u\n", tag(), m_sl1);
+ LOG("SED1330 Display Block 1 Screen Lines: %u\n", m_sl1);
break;
case 3:
@@ -427,12 +416,12 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 4:
m_sad2 = (data << 8) | (m_sad2 & 0xff);
- if (LOG) logerror("SED1330 '%s' Display Page 2 Start Address: %04x\n", tag(), m_sad2);
+ LOG("SED1330 Display Page 2 Start Address: %04x\n", m_sad2);
break;
case 5:
m_sl2 = data + 1;
- if (LOG) logerror("SED1330 '%s' Display Block 2 Screen Lines: %u\n", tag(), m_sl2);
+ LOG("SED1330 Display Block 2 Screen Lines: %u\n", m_sl2);
break;
case 6:
@@ -441,7 +430,7 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 7:
m_sad3 = (data << 8) | (m_sad3 & 0xff);
- if (LOG) logerror("SED1330 '%s' Display Page 3 Start Address: %04x\n", tag(), m_sad3);
+ LOG("SED1330 Display Page 3 Start Address: %04x\n", m_sad3);
break;
case 8:
@@ -450,11 +439,11 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 9:
m_sad4 = (data << 8) | (m_sad4 & 0xff);
- if (LOG) logerror("SED1330 '%s' Display Page 4 Start Address: %04x\n", tag(), m_sad4);
+ LOG("SED1330 Display Page 4 Start Address: %04x\n", m_sad4);
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
@@ -463,21 +452,18 @@ WRITE8_MEMBER( sed1330_device::data_w )
{
case 0:
m_crx = (data & 0x0f) + 1;
- if (LOG) logerror("SED1330 '%s' Horizontal Cursor Size: %u\n", tag(), m_crx);
+ LOG("SED1330 Horizontal Cursor Size: %u\n", m_crx);
break;
case 1:
m_cry = (data & 0x0f) + 1;
m_cm = BIT(data, 7);
- if (LOG)
- {
- logerror("SED1330 '%s' Vertical Cursor Location: %u\n", tag(), m_cry);
- logerror("SED1330 '%s' Cursor Shape: %s\n", tag(), BIT(data, 7) ? "Block" : "Underscore");
- }
+ LOG("SED1330 Vertical Cursor Location: %u\n", m_cry);
+ LOG("SED1330 Cursor Shape: %s\n", BIT(data, 7) ? "Block" : "Underscore");
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
@@ -490,17 +476,17 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 1:
m_sag = (data << 8) | (m_sag & 0xff);
- if (LOG) logerror("SED1330 '%s' Character Generator RAM Start Address: %04x\n", tag(), m_sag);
+ LOG("SED1330 Character Generator RAM Start Address: %04x\n", m_sag);
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
case INSTRUCTION_HDOT_SCR:
m_hdotscr = data & 0x07;
- if (LOG) logerror("SED1330 '%s' Horizontal Dot Scroll: %u\n", tag(), m_hdotscr);
+ LOG("SED1330 Horizontal Dot Scroll: %u\n", m_hdotscr);
break;
case INSTRUCTION_OVLAY:
@@ -508,20 +494,17 @@ WRITE8_MEMBER( sed1330_device::data_w )
m_dm = (data >> 2) & 0x03;
m_ov = BIT(data, 4);
- if (LOG)
+ switch (m_mx)
{
- switch (m_mx)
- {
- case MX_OR: logerror("SED1330 '%s' Display Composition Method: OR\n", tag()); break;
- case MX_XOR: logerror("SED1330 '%s' Display Composition Method: Exclusive-OR\n", tag()); break;
- case MX_AND: logerror("SED1330 '%s' Display Composition Method: AND\n", tag()); break;
- case MX_PRIORITY_OR: logerror("SED1330 '%s' Display Composition Method: Priority-OR\n", tag()); break;
- }
-
- logerror("SED1330 '%s' Display Page 1 Mode: %s\n", tag(), BIT(data, 2) ? "Graphics" : "Text");
- logerror("SED1330 '%s' Display Page 3 Mode: %s\n", tag(), BIT(data, 3) ? "Graphics" : "Text");
- logerror("SED1330 '%s' Display Composition Layers: %u\n", tag(), BIT(data, 4) ? 3 : 2);
+ case MX_OR: LOG("SED1330 Display Composition Method: OR\n"); break;
+ case MX_XOR: LOG("SED1330 Display Composition Method: Exclusive-OR\n"); break;
+ case MX_AND: LOG("SED1330 Display Composition Method: AND\n"); break;
+ case MX_PRIORITY_OR: LOG("SED1330 Display Composition Method: Priority-OR\n"); break;
}
+
+ LOG("SED1330 Display Page 1 Mode: %s\n", BIT(data, 2) ? "Graphics" : "Text");
+ LOG("SED1330 Display Page 3 Mode: %s\n", BIT(data, 3) ? "Graphics" : "Text");
+ LOG("SED1330 Display Composition Layers: %u\n", BIT(data, 4) ? 3 : 2);
break;
case INSTRUCTION_CSRW:
@@ -533,11 +516,11 @@ WRITE8_MEMBER( sed1330_device::data_w )
case 1:
m_csr = (data << 8) | (m_csr & 0xff);
- if (LOG) logerror("SED1330 '%s' Cursor Address %04x\n", tag(), m_csr);
+ LOG("SED1330 Cursor Address %04x\n", m_csr);
break;
default:
- logerror("SED1330 '%s' Invalid parameter byte %02x\n", tag(), data);
+ logerror("SED1330 Invalid parameter byte %02x\n", data);
}
break;
#if 0
@@ -545,7 +528,7 @@ WRITE8_MEMBER( sed1330_device::data_w )
break;
#endif
case INSTRUCTION_MWRITE:
- if (LOG) logerror("SED1330 '%s' Memory Write %02x to %04x (row %u col %u line %u)\n", tag(), data, m_csr, m_csr/80/8, m_csr%80, m_csr/80);
+ LOG("SED1330 Memory Write %02x to %04x (row %u col %u line %u)\n", data, m_csr, m_csr/80/8, m_csr%80, m_csr/80);
writebyte(m_csr, data);
@@ -556,7 +539,7 @@ WRITE8_MEMBER( sed1330_device::data_w )
break;
#endif
default:
- logerror("SED1330 '%s' Unsupported instruction %02x\n", tag(), m_ir);
+ logerror("SED1330 Unsupported instruction %02x\n", m_ir);
}
m_pbc++;