From aec25eca0988737e680dcc98fe84b8a0292df79e Mon Sep 17 00:00:00 2001 From: AJR Date: Mon, 24 Feb 2020 22:22:10 -0500 Subject: i8279: Correct keyboard scan rate and logging thereof pp: Fix shift/control key polarity (nw) --- src/devices/machine/i8279.cpp | 8 ++++---- src/mame/drivers/pp.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/devices/machine/i8279.cpp b/src/devices/machine/i8279.cpp index 47ac639e6bd..c030bae7b1d 100644 --- a/src/devices/machine/i8279.cpp +++ b/src/devices/machine/i8279.cpp @@ -159,8 +159,8 @@ void i8279_device::device_reset() // from here is confirmed m_cmd[0] = 8; m_cmd[1] = 31; - logerror("Initial clock = 3100kHz\n"); timer_adjust(); + logerror("Initial clock = %.2f kHz\n", m_scanclock / 1000.0); } @@ -169,12 +169,12 @@ void i8279_device::timer_adjust() // Real device runs at about 100kHz internally, clock divider is chosen so that // this is the case. If this is too long, the sensor mode doesn't work correctly. - u8 divider = (m_cmd[1]) ? m_cmd[1] : 1; + u8 divider = (m_cmd[1] >= 2) ? m_cmd[1] : 2; u32 new_clock = clock() / divider; if (m_scanclock != new_clock) { - m_timer->adjust(attotime::from_hz(new_clock), 0, attotime::from_hz(new_clock)); + m_timer->adjust(attotime::from_ticks(64, new_clock), 0, attotime::from_ticks(64, new_clock)); m_scanclock = new_clock; } @@ -477,8 +477,8 @@ void i8279_device::cmd_w(u8 data) case 1: if (data > 1) { - logerror("Clock set to %dkHz\n",data*100); timer_adjust(); + logerror("Clock set to %.2f kHz\n", m_scanclock / 1000.0); } break; case 2: diff --git a/src/mame/drivers/pp.cpp b/src/mame/drivers/pp.cpp index a16b62a719b..30ae4f265fd 100644 --- a/src/mame/drivers/pp.cpp +++ b/src/mame/drivers/pp.cpp @@ -210,13 +210,13 @@ u8 pp_state::kbd_cols_r() READ_LINE_MEMBER(pp_state::cntl_r) { // pin 1 of J13 connector - return (m_modifiers->read() & 0x5) != 0x5; + return (m_modifiers->read() & 0x5) == 0x5; } READ_LINE_MEMBER(pp_state::shift_r) { // pin 3 of J13 connector - return (m_modifiers->read() & 0x6) != 0x6; + return (m_modifiers->read() & 0x6) == 0x6; } WRITE_LINE_MEMBER(pp_state::printer_busy_w) -- cgit v1.2.3 From b8e28405d2db37137d832c100b7d6fe22103bbb6 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 25 Feb 2020 10:20:22 -0500 Subject: upd78k2d: Fix a whole batch of mistakes with disassembling 01-prefixed alternate-bank instructions (nw) --- src/devices/cpu/upd78k/upd78k2d.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/devices/cpu/upd78k/upd78k2d.cpp b/src/devices/cpu/upd78k/upd78k2d.cpp index 79ab19ec907..9016faea8b3 100644 --- a/src/devices/cpu/upd78k/upd78k2d.cpp +++ b/src/devices/cpu/upd78k/upd78k2d.cpp @@ -13,7 +13,7 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc, { if (op2 == 0x05) { - u8 op3 = opcodes.r8(pc + 3); + u8 op3 = opcodes.r8(pc + 2); if ((op3 & 0xed) == 0x89) { util::stream_format(stream, "%-8s&[%s]", BIT(op3, 4) ? "ROL4" : "ROR4", BIT(op3, 1) ? "HL" : "DE"); @@ -33,10 +33,10 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc, } else if (op2 == 0x06) { - u8 op3 = opcodes.r8(pc + 3); + u8 op3 = opcodes.r8(pc + 2); if ((op3 & 0x70) < 0x30 && (BIT(op3, 7) ? (op3 & 0x0f) == 0 : BIT(op3, 3) || (op3 & 0x03) == 0)) { - util::stream_format(stream, "%-8s", BIT(op3, 3) ? s_alu_ops[op3 & 0x07] : BIT(op2, 2) ? "XCH" : "MOV"); + util::stream_format(stream, "%-8s", BIT(op3, 3) ? s_alu_ops[op3 & 0x07] : BIT(op3, 2) ? "XCH" : "MOV"); if (!BIT(op3, 7)) stream << "A,"; stream << "&"; @@ -50,7 +50,7 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc, } else if (op2 == 0x09) { - u8 op3 = opcodes.r8(pc + 3); + u8 op3 = opcodes.r8(pc + 2); if ((op3 & 0xfe) == 0xf0) { util::stream_format(stream, "%-8s", "MOV"); @@ -67,18 +67,18 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc, } else if (op2 == 0x0a) { - u8 op3 = opcodes.r8(pc + 3); + u8 op3 = opcodes.r8(pc + 2); if (!BIT(op3, 6) && (BIT(op3, 7) ? (op3 & 0x0f) == 0 : BIT(op3, 3) || (op3 & 0x03) == 0)) { - util::stream_format(stream, "%-8s", BIT(op2, 3) ? s_alu_ops[op3 & 0x07] : BIT(op3, 2) ? "XCH" : "MOV"); - if (!BIT(op2, 7)) + util::stream_format(stream, "%-8s", BIT(op3, 3) ? s_alu_ops[op3 & 0x07] : BIT(op3, 2) ? "XCH" : "MOV"); + if (!BIT(op3, 7)) stream << "A,"; stream << "&"; - if (BIT(op2, 4)) - format_ix_base16(stream, BIT(op2, 5) ? "B" : "A", opcodes.r16(pc + 2)); + if (BIT(op3, 4)) + format_ix_base16(stream, BIT(op3, 5) ? "B" : "A", opcodes.r16(pc + 3)); else - format_ix_disp16(stream, BIT(op2, 5) ? "HL" : "DE", opcodes.r16(pc + 2)); - if (BIT(op2, 7)) + format_ix_disp16(stream, BIT(op3, 5) ? "HL" : "DE", opcodes.r16(pc + 3)); + if (BIT(op3, 7)) stream << ",A"; return 5 | SUPPORTED; } @@ -87,7 +87,7 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc, } else if (op2 == 0x16) { - u8 op3 = opcodes.r8(pc + 3); + u8 op3 = opcodes.r8(pc + 2); if ((op3 & 0x60) != 0x60 && (BIT(op3, 7) ? (op3 & 0x0f) == 0x00 : BIT(op3, 3) || (op3 & 0x03) == 0x00)) { util::stream_format(stream, "%-8s", BIT(op3, 3) ? s_alu_ops[op3 & 0x07] : BIT(op3, 2) ? "XCH" : "MOV"); -- cgit v1.2.3 From 415eef99102af92bad6232afb0ec56c9451348c2 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 25 Feb 2020 10:56:11 -0500 Subject: upd78k2d, upd78k3d: Fix order of operands in instructions using two saddrs/saddrps (nw) --- src/devices/cpu/upd78k/upd78k2d.cpp | 8 ++++---- src/devices/cpu/upd78k/upd78k3d.cpp | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/devices/cpu/upd78k/upd78k2d.cpp b/src/devices/cpu/upd78k/upd78k2d.cpp index 9016faea8b3..7fcc4bd85a2 100644 --- a/src/devices/cpu/upd78k/upd78k2d.cpp +++ b/src/devices/cpu/upd78k/upd78k2d.cpp @@ -229,9 +229,9 @@ offs_t upd78k2_disassembler::dasm_29(std::ostream &stream, offs_t pc, const upd7 offs_t upd78k2_disassembler::dasm_38(std::ostream &stream, u8 op, offs_t pc, const upd78k2_disassembler::data_buffer &opcodes) { util::stream_format(stream, "%-8s", BIT(op, 0) ? "XCH" : "MOV"); - format_saddr(stream, opcodes.r8(pc + 1)); - stream << ","; format_saddr(stream, opcodes.r8(pc + 2)); + stream << ","; + format_saddr(stream, opcodes.r8(pc + 1)); return 3 | SUPPORTED; } @@ -272,9 +272,9 @@ offs_t upd78k2_disassembler::dasm_50(std::ostream &stream, u8 op) offs_t upd78k2_disassembler::dasm_78(std::ostream &stream, u8 op, offs_t pc, const upd78k2_disassembler::data_buffer &opcodes) { util::stream_format(stream, "%-8s", s_alu_ops[op & 0x07]); - format_saddr(stream, opcodes.r8(pc + 1)); - stream << ","; format_saddr(stream, opcodes.r8(pc + 2)); + stream << ","; + format_saddr(stream, opcodes.r8(pc + 1)); return 3 | SUPPORTED; } diff --git a/src/devices/cpu/upd78k/upd78k3d.cpp b/src/devices/cpu/upd78k/upd78k3d.cpp index 28f19d5f735..5d270e227aa 100644 --- a/src/devices/cpu/upd78k/upd78k3d.cpp +++ b/src/devices/cpu/upd78k/upd78k3d.cpp @@ -598,27 +598,27 @@ offs_t upd78k3_disassembler::dasm_24xx(std::ostream &stream, u8 op, u8 rr) offs_t upd78k3_disassembler::dasm_2a(std::ostream &stream, offs_t pc, const upd78k3_disassembler::data_buffer &opcodes) { util::stream_format(stream, "%-8s", "XCHW"); - format_saddrp(stream, opcodes.r8(pc + 1)); - stream << ","; format_saddrp(stream, opcodes.r8(pc + 2)); + stream << ","; + format_saddrp(stream, opcodes.r8(pc + 1)); return 3 | SUPPORTED; } offs_t upd78k3_disassembler::dasm_38(std::ostream &stream, u8 op, offs_t pc, const upd78k3_disassembler::data_buffer &opcodes) { util::stream_format(stream, "%-8s", BIT(op, 0) ? "XCH" : "MOV"); - format_saddr(stream, opcodes.r8(pc + 1)); - stream << ","; format_saddr(stream, opcodes.r8(pc + 2)); + stream << ","; + format_saddr(stream, opcodes.r8(pc + 1)); return 3 | SUPPORTED; } offs_t upd78k3_disassembler::dasm_3c(std::ostream &stream, u8 op, offs_t pc, const upd78k3_disassembler::data_buffer &opcodes) { util::stream_format(stream, "%-8s", s_16bit_ops[op & 0x03]); - format_saddrp(stream, opcodes.r8(pc + 1)); - stream << ","; format_saddrp(stream, opcodes.r8(pc + 2)); + stream << ","; + format_saddrp(stream, opcodes.r8(pc + 1)); return 3 | SUPPORTED; } @@ -658,9 +658,9 @@ offs_t upd78k3_disassembler::dasm_50(std::ostream &stream, u8 op) offs_t upd78k3_disassembler::dasm_78(std::ostream &stream, u8 op, offs_t pc, const upd78k3_disassembler::data_buffer &opcodes) { util::stream_format(stream, "%-8s", s_alu_ops[op & 0x07]); - format_saddr(stream, opcodes.r8(pc + 1)); - stream << ","; format_saddr(stream, opcodes.r8(pc + 2)); + stream << ","; + format_saddr(stream, opcodes.r8(pc + 1)); return 3 | SUPPORTED; } -- cgit v1.2.3 From 9b49a98cce4ba9d643e29848eed75bf064b94b71 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 25 Feb 2020 16:21:27 -0500 Subject: i8279: Fix accidentally uncovered crash in turbo (nw) This device emulation is anything but robust. --- src/devices/machine/i8279.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/devices/machine/i8279.cpp b/src/devices/machine/i8279.cpp index c030bae7b1d..12f2a7cd6dd 100644 --- a/src/devices/machine/i8279.cpp +++ b/src/devices/machine/i8279.cpp @@ -277,6 +277,10 @@ void i8279_device::timer_mainloop() bool ctrl_key = 1; bool strobe_pulse = 0; + // hack to prevent infinite loops + if (decoded && m_scanner == 0) + m_scanner = 1; + // keyboard // type 0 = kbd, 2-key lockout // type 1 = kdb, n-key -- cgit v1.2.3 From f4e1392ecfa5e55521fd36915c36760cb733a49c Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Wed, 26 Feb 2020 23:38:42 +1100 Subject: clean up various stuff (nw) --- hash/mobigo_cart.xml | 2 +- hash/vgmplay.xml | 34 +++++++++++++++++----------------- src/devices/cpu/rii/riscii.cpp | 2 +- src/mame/drivers/nes_clone.cpp | 2 +- src/mame/layout/hp86b.lay | 24 ++++++++++++------------ src/mame/machine/gunsense.cpp | 4 ++-- src/mame/video/twin16.cpp | 4 ++-- 7 files changed, 36 insertions(+), 36 deletions(-) diff --git a/hash/mobigo_cart.xml b/hash/mobigo_cart.xml index 543c475ecbc..297767551c6 100644 --- a/hash/mobigo_cart.xml +++ b/hash/mobigo_cart.xml @@ -38,7 +38,7 @@ - Ben 10 - UltimateAlien - Mine der Gedanken (Germany) (80-250604) + Ben 10 - UltimateAlien - Mine der Gedanken (Germany) (80-250604) 201? VTech diff --git a/hash/vgmplay.xml b/hash/vgmplay.xml index 824ea722a7a..f5fd3e60624 100644 --- a/hash/vgmplay.xml +++ b/hash/vgmplay.xml @@ -43462,27 +43462,27 @@ - + - + - + - + - + - + - + - + @@ -48528,7 +48528,7 @@ - + @@ -101766,7 +101766,7 @@ - + @@ -155687,7 +155687,7 @@ - + @@ -155735,9 +155735,9 @@ - + - + @@ -191490,7 +191490,7 @@ - + @@ -191544,9 +191544,9 @@ - + - + @@ -198545,7 +198545,7 @@ - + diff --git a/src/devices/cpu/rii/riscii.cpp b/src/devices/cpu/rii/riscii.cpp index fef58436d25..f8d1b2a914b 100644 --- a/src/devices/cpu/rii/riscii.cpp +++ b/src/devices/cpu/rii/riscii.cpp @@ -19,7 +19,7 @@ #include "riscii.h" #include "riidasm.h" -#define LOG_TBRD (1 << 1U) +#define LOG_TBRD (1U << 1) #include "logmacro.h" // device type definitions diff --git a/src/mame/drivers/nes_clone.cpp b/src/mame/drivers/nes_clone.cpp index ff26c929400..4a03b5b95d9 100644 --- a/src/mame/drivers/nes_clone.cpp +++ b/src/mame/drivers/nes_clone.cpp @@ -119,7 +119,7 @@ void nes_clone_state::init_nes_clone() { } -CONS( 200?, pjoypj001, 0, 0, nes_clone, nes_clone, nes_clone_state, init_nes_clone, "Trump Grand", "PowerJoy (PJ001, NES based plug & play)", 0 ) +CONS( 200?, pjoypj001, 0, 0, nes_clone, nes_clone, nes_clone_state, init_nes_clone, "Trump Grand", "PowerJoy (PJ001, NES based plug & play)", MACHINE_NOT_WORKING ) // "Flashback Mini 7800 uses normal NES-style hardware, together with a mapper chipset similar to the Waixing kk33xx cartridges (NES 2.0 Mapper 534)" CONS( 2004, afbm7800, 0, 0, nes_clone, nes_clone, nes_clone_state, init_nes_clone, "Atari", "Atari Flashback Mini 7800", MACHINE_NOT_WORKING ) diff --git a/src/mame/layout/hp86b.lay b/src/mame/layout/hp86b.lay index c79f54047e6..621472bf7a8 100644 --- a/src/mame/layout/hp86b.lay +++ b/src/mame/layout/hp86b.lay @@ -13,19 +13,19 @@ Layout of Hewlett-Packard 86B with 82913A monitor (and run light) - + - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/mame/machine/gunsense.cpp b/src/mame/machine/gunsense.cpp index 9f7ccd1e39c..5bd2c2c79d3 100644 --- a/src/mame/machine/gunsense.cpp +++ b/src/mame/machine/gunsense.cpp @@ -42,8 +42,8 @@ void sega_gunsense_board_device::device_add_mconfig(machine_config &config) ROM_START(gunsense) ROM_REGION( 0x10000, "gunmcu", 0 ) - ROM_LOAD( "epr-20006a.ic2",0x00000, 0x10000, CRC(45f310dc) SHA1(b7cf40a1671dc351b607d8d6bba0d51ea128eb75) ) \ - ROM_LOAD( "epr-21262.ic2", 0x00000, 0x10000, CRC(c9adf9b6) SHA1(fc2a331430ef2f009f653b242220599c824cd1d2) ) \ + ROM_LOAD( "epr-20006a.ic2",0x00000, 0x10000, CRC(45f310dc) SHA1(b7cf40a1671dc351b607d8d6bba0d51ea128eb75) ) + ROM_LOAD( "epr-21262.ic2", 0x00000, 0x10000, CRC(c9adf9b6) SHA1(fc2a331430ef2f009f653b242220599c824cd1d2) ) ROM_LOAD( "tg12.ic2", 0x00000, 0x10000, CRC(2c9600b1) SHA1(91813a43851c48d400fde41b1198dabf55bade2d) ) ROM_END diff --git a/src/mame/video/twin16.cpp b/src/mame/video/twin16.cpp index a5bf2e24fa7..ebba2d53d93 100644 --- a/src/mame/video/twin16.cpp +++ b/src/mame/video/twin16.cpp @@ -331,8 +331,8 @@ void twin16_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, co xpos = 320-xpos-width; flipx = !flipx; } - if( xpos>cliprect.max_x ) xpos -= 65536; - if( ypos>cliprect.max_y ) ypos -= 65536; + if( xpos>=320 ) xpos -= 65536; + if( ypos>=256 ) ypos -= 65536; /* slow slow slow, but it's ok for now */ for( y=0; y Date: Thu, 27 Feb 2020 02:09:50 +1100 Subject: fix up some software lists (nw) --- hash/fmtowns_cd.xml | 2 +- hash/mobigo_cart.xml | 4 ++-- hash/pi_storyreader_cart.xml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hash/fmtowns_cd.xml b/hash/fmtowns_cd.xml index 5fcaa25a143..55cd888e6f0 100644 --- a/hash/fmtowns_cd.xml +++ b/hash/fmtowns_cd.xml @@ -8638,7 +8638,7 @@ User/save disks that can be created from the game itself are not included. - +