From d58fe33e0e8db4a0dc660e761bd81521519fb84a Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 21 Dec 2019 14:31:13 -0500 Subject: vt52: Add debug state register to show address translation; minor adjustments (nw) --- src/devices/cpu/vt50/vt50.cpp | 11 ++++++++--- src/devices/cpu/vt50/vt50.h | 2 +- src/mame/drivers/vt52.cpp | 2 +- 3 files changed, 10 insertions(+), 5 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(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 }; diff --git a/src/mame/drivers/vt52.cpp b/src/mame/drivers/vt52.cpp index e095c47af89..1cc7dd2799d 100644 --- a/src/mame/drivers/vt52.cpp +++ b/src/mame/drivers/vt52.cpp @@ -209,7 +209,7 @@ void vt52_state::vt52(machine_config &mconfig) AY51013(mconfig, m_uart); // TR1402 or equivalent screen_device &screen(SCREEN(mconfig, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(13.824_MHz_XTAL, 900, 0, 720, 256, 0, 192); + screen.set_raw(13.824_MHz_XTAL, 900, 0, 720, 256, 0, 240); screen.set_screen_update(FUNC(vt52_state::screen_update)); SPEAKER(mconfig, "mono").front_center(); -- cgit v1.2.3