diff options
author | 2021-09-04 23:25:32 -0400 | |
---|---|---|
committer | 2021-09-04 23:29:04 -0400 | |
commit | fc79b73ba6ecfb95ec09b1683c551d8d4bc293b3 (patch) | |
tree | d2092a4bc7d7703621514eda657454952ebd0e8e | |
parent | ea3185af900624148012b9fda596f7b5f9414d6d (diff) |
tx0.cpp: Further fixes
- Load typewriter input into correct bit positions of LR
- Invert MSB of display coordinates (fixes tic-tac-toe grid)
- tx0_8kw: Resolve confusion between SHR and CYR semantics (these were incorrectly swapped)
-rw-r--r-- | src/devices/cpu/tx0/tx0.cpp | 4 | ||||
-rw-r--r-- | src/mame/drivers/tx0.cpp | 4 | ||||
-rw-r--r-- | src/mame/video/tx0.cpp | 4 |
3 files changed, 5 insertions, 7 deletions
diff --git a/src/devices/cpu/tx0/tx0.cpp b/src/devices/cpu/tx0/tx0.cpp index ff3a8e0ac45..51bc1ba6c6b 100644 --- a/src/devices/cpu/tx0/tx0.cpp +++ b/src/devices/cpu/tx0/tx0.cpp @@ -989,12 +989,12 @@ void tx0_8kw_device::execute_instruction_8kw() { switch (MAR & 0000300) { - case 0000000: /* (1.6) CYR = CYcle ac contents Right one binary + case 0000200: /* (1.6) CYR = CYcle ac contents Right one binary position (AC(17) -> AC(0)) */ AC = (AC >> 1) | ((AC & 1) << 17); break; - case 0000200: /* (1.6) CYcle ac contents Right one binary + case 0000000: /* (1.6) SHR = SHift ac contents Right one binary position (AC(0) unchanged) */ AC = (AC >> 1) | (AC & 0400000); break; diff --git a/src/mame/drivers/tx0.cpp b/src/mame/drivers/tx0.cpp index bb9af652fd4..3f7ab4e7d27 100644 --- a/src/mame/drivers/tx0.cpp +++ b/src/mame/drivers/tx0.cpp @@ -1427,9 +1427,7 @@ void tx0_state::tx0_keyboard() ; charcode = (i << 4) + j; /* shuffle and insert data into LR */ - /* BTW, I am not sure how the char code is combined with the - previous LR */ - lr = (1 << 17) | ((charcode & 040) << 10) | ((charcode & 020) << 8) | ((charcode & 010) << 6) | ((charcode & 004) << 4) | ((charcode & 002) << 2) | ((charcode & 001) << 1); + lr = (1 << 17) | (charcode << 11) | m_maincpu->state_int(TX0_LR); /* write modified LR */ m_maincpu->set_state_int(TX0_LR, lr); tx0_typewriter_drawchar(charcode); /* we want to echo input */ diff --git a/src/mame/video/tx0.cpp b/src/mame/video/tx0.cpp index 619697226bf..4b06ccf9942 100644 --- a/src/mame/video/tx0.cpp +++ b/src/mame/video/tx0.cpp @@ -56,8 +56,8 @@ WRITE_LINE_MEMBER(tx0_state::screen_vblank_tx0) void tx0_state::tx0_plot(int x, int y) { /* compute pixel coordinates and plot */ - x = x*crt_window_width/0777; - y = y*crt_window_height/0777; + x = (x ^ 0400) * crt_window_width / 0777; + y = (y ^ 0400) * crt_window_height / 0777; m_crt->plot(x, y); } |