mirror of
https://github.com/holub/mame
synced 2025-04-28 11:11:48 +03:00
vt52: Add debug state register to show address translation; minor adjustments (nw)
This commit is contained in:
parent
42f5ceb3db
commit
d58fe33e0e
@ -116,6 +116,7 @@ void vt5x_cpu_device::device_start()
|
|||||||
state_add(VT5X_X, "X", m_x).formatstr("%03O").mask(0177);
|
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_Y, "Y", m_y).formatstr("%02O").mask((1 << m_ybits) - 1);
|
||||||
state_add(VT5X_X8, "X8", m_x8);
|
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_CFF, "CFF", m_cursor_ff);
|
||||||
state_add(VT5X_VID, "VID", m_video_process);
|
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
|
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 u8 x = m_x ^ (m_x8 ? 8 : 0);
|
||||||
const offs_t y_shifted = (offs_t(m_y) << (10 - m_ybits)) & 01700;
|
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)
|
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
|
else
|
||||||
return x | y_shifted | ram_bank;
|
return x | y_shifted | page_sel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void vt5x_cpu_device::execute_te(u8 inst)
|
void vt5x_cpu_device::execute_te(u8 inst)
|
||||||
|
@ -12,7 +12,7 @@ public:
|
|||||||
enum {
|
enum {
|
||||||
VT5X_PC, VT5X_PAGE,
|
VT5X_PC, VT5X_PAGE,
|
||||||
VT5X_MODE, VT5X_DONE,
|
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
|
VT5X_CFF, VT5X_VID
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -209,7 +209,7 @@ void vt52_state::vt52(machine_config &mconfig)
|
|||||||
AY51013(mconfig, m_uart); // TR1402 or equivalent
|
AY51013(mconfig, m_uart); // TR1402 or equivalent
|
||||||
|
|
||||||
screen_device &screen(SCREEN(mconfig, "screen", SCREEN_TYPE_RASTER));
|
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));
|
screen.set_screen_update(FUNC(vt52_state::screen_update));
|
||||||
|
|
||||||
SPEAKER(mconfig, "mono").front_center();
|
SPEAKER(mconfig, "mono").front_center();
|
||||||
|
Loading…
Reference in New Issue
Block a user