diff options
Diffstat (limited to 'src/devices/video/sed1330.cpp')
-rw-r--r-- | src/devices/video/sed1330.cpp | 177 |
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++; |