summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-12-21 14:31:13 -0500
committer AJR <ajrhacker@users.noreply.github.com>2019-12-21 14:32:01 -0500
commitd58fe33e0e8db4a0dc660e761bd81521519fb84a (patch)
tree924b2f2b085f9b0e933b48b583ee885d84e966b2 /src/devices/cpu
parent42f5ceb3dbfd4e812a3086f58006b3c197d3c546 (diff)
vt52: Add debug state register to show address translation; minor adjustments (nw)
Diffstat (limited to 'src/devices/cpu')
-rw-r--r--src/devices/cpu/vt50/vt50.cpp11
-rw-r--r--src/devices/cpu/vt50/vt50.h2
2 files changed, 9 insertions, 4 deletions
diff --git a/src/devices/cpu/vt50/vt50.cpp b/src/devices/cpu/vt50/vt50.cpp
index cdd27d1a30a..71f996696d5 100644
--- a/src/devices/cpu/vt50/vt50.cpp
+++ b/src/devices/cpu/vt50/vt50.cpp
@@ -116,6 +116,7 @@ void vt5x_cpu_device::device_start()
state_add(VT5X_X, "X", m_x).formatstr("%03O").mask(0177);
state_add(VT5X_Y, "Y", m_y).formatstr("%02O").mask((1 << m_ybits) - 1);
state_add(VT5X_X8, "X8", m_x8);
+ state_add<u16>(VT5X_XYAD, "XYAD", [this]() { return translate_xy(); }).formatstr("%04O").mask((1 << (6 + m_ybits)) - 1);
state_add(VT5X_CFF, "CFF", m_cursor_ff);
state_add(VT5X_VID, "VID", m_video_process);
@@ -156,13 +157,17 @@ void vt5x_cpu_device::device_reset()
offs_t vt5x_cpu_device::translate_xy() const
{
+ // A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
+ // Screen RAM, columns 0–63: y3 y2 y1 y0 x5 x4 x3 x2 x1 x0
+ // Screen RAM, columns 64–79: 1 1 y1 y0 y3 y2 x3 x2 x1 x0
+ // Scratchpad (not displayed): 1 1 y1 y0 1 1 x3 x2 x1 x0
const u8 x = m_x ^ (m_x8 ? 8 : 0);
const offs_t y_shifted = (offs_t(m_y) << (10 - m_ybits)) & 01700;
- const offs_t ram_bank = offs_t(m_y & ((1 << (m_ybits - 4)) - 1)) << 10;
+ const offs_t page_sel = offs_t(m_y & ((1 << (m_ybits - 4)) - 1)) << 10;
if (BIT(x, 6) || (y_shifted & 01400) == 01400)
- return (x & 0017) | (y_shifted & 01400) >> 4 | y_shifted | 01400 | ram_bank;
+ return (x & 0017) | (y_shifted & 01400) >> 4 | y_shifted | 01400 | page_sel;
else
- return x | y_shifted | ram_bank;
+ return x | y_shifted | page_sel;
}
void vt5x_cpu_device::execute_te(u8 inst)
diff --git a/src/devices/cpu/vt50/vt50.h b/src/devices/cpu/vt50/vt50.h
index 17fefade682..ad29f48f265 100644
--- a/src/devices/cpu/vt50/vt50.h
+++ b/src/devices/cpu/vt50/vt50.h
@@ -12,7 +12,7 @@ public:
enum {
VT5X_PC, VT5X_PAGE,
VT5X_MODE, VT5X_DONE,
- VT5X_AC, VT5X_B, VT5X_X, VT5X_Y, VT5X_X8,
+ VT5X_AC, VT5X_B, VT5X_X, VT5X_Y, VT5X_X8, VT5X_XYAD,
VT5X_CFF, VT5X_VID
};