trunk/src/emu/cpu/hmcs40/hmcs40.c
| r244821 | r244822 | |
| 67 | 67 | // internal memory maps |
| 68 | 68 | static ADDRESS_MAP_START(program_1k, AS_PROGRAM, 16, hmcs40_cpu_device) |
| 69 | 69 | AM_RANGE(0x0000, 0x03ff) AM_ROM |
| 70 | | AM_RANGE(0x0400, 0x043f) AM_ROM |
| 70 | AM_RANGE(0x0780, 0x07bf) AM_ROM // patterns on page 30 |
| 71 | 71 | ADDRESS_MAP_END |
| 72 | 72 | |
| 73 | 73 | static ADDRESS_MAP_START(program_2k, AS_PROGRAM, 16, hmcs40_cpu_device) |
| 74 | 74 | AM_RANGE(0x0000, 0x07ff) AM_ROM |
| 75 | | AM_RANGE(0x0800, 0x087f) AM_ROM |
| 75 | AM_RANGE(0x0f40, 0x0fbf) AM_ROM // patterns on page 61,62 |
| 76 | 76 | ADDRESS_MAP_END |
| 77 | 77 | |
| 78 | 78 | |
trunk/src/emu/cpu/hmcs40/hmcs40op.inc
| r244821 | r244822 | |
| 4 | 4 | |
| 5 | 5 | inline UINT8 hmcs40_cpu_device::ram_r() |
| 6 | 6 | { |
| 7 | | UINT16 address = (m_x << 4 | m_y) & m_datamask; |
| 7 | UINT8 address = (m_x << 4 | m_y) & m_datamask; |
| 8 | 8 | return m_data->read_byte(address) & 0xf; |
| 9 | 9 | } |
| 10 | 10 | |
| 11 | 11 | inline void hmcs40_cpu_device::ram_w(UINT8 data) |
| 12 | 12 | { |
| 13 | | UINT16 address = (m_x << 4 | m_y) & m_datamask; |
| 13 | UINT8 address = (m_x << 4 | m_y) & m_datamask; |
| 14 | 14 | m_data->write_byte(address, data & 0xf); |
| 15 | 15 | } |
| 16 | 16 | |
| r244821 | r244822 | |
| 75 | 75 | // XAMR m: Exchange A and MR(m) |
| 76 | 76 | |
| 77 | 77 | // determine MR(Memory Register) location |
| 78 | | UINT8 y = m_op & 0xf; |
| 79 | | UINT8 x = (y > 3) ? 0xf : (y + 12); |
| 80 | | UINT16 address = (x << 4 | y) & m_datamask; |
| 78 | UINT8 address = m_op & 0xf; |
| 81 | 79 | |
| 80 | // HMCS42: MR0 on file 0, MR4-MR15 on file 4 (there is no file 1-3) |
| 81 | // HMCS43: MR0-MR3 on file 0-3, MR4-MR15 on file 4 |
| 82 | if (m_family == FAMILY_HMCS42 || m_family == FAMILY_HMCS43) |
| 83 | address |= (address < 4) ? (address << 4) : 0x40; |
| 84 | |
| 85 | // HMCS44/45/46/47: all on last file |
| 86 | else |
| 87 | address |= 0xf0; |
| 88 | |
| 89 | address &= m_datamask; |
| 82 | 90 | UINT8 old_a = m_a; |
| 83 | 91 | m_a = m_data->read_byte(address) & 0xf; |
| 84 | 92 | m_data->write_byte(address, old_a & 0xf); |
trunk/src/mess/drivers/hh_hmcs40.c
| r244821 | r244822 | |
| 208 | 208 | READ16_MEMBER(hh_hmcs40_state::alnattck_d_r) |
| 209 | 209 | { |
| 210 | 210 | // D5: inputs |
| 211 | | return (offset == 5) ? (read_inputs(7) << 5 & 0x20) : 0; |
| 211 | return (read_inputs(7) & 1) << 5; |
| 212 | 212 | } |
| 213 | 213 | |
| 214 | 214 | WRITE16_MEMBER(hh_hmcs40_state::alnattck_d_w) |
| r244821 | r244822 | |
| 321 | 321 | ***************************************************************************/ |
| 322 | 322 | |
| 323 | 323 | ROM_START( alnattck ) |
| 324 | | ROM_REGION( 0x1100, "maincpu", 0 ) |
| 325 | | ROM_LOAD( "hd38800a25", 0x0000, 0x1100, CRC(18b50869) SHA1(11e9d5f7b4ae818b077b0ee14a3b43190e20bff3) ) |
| 324 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 325 | ROM_LOAD( "hd38800a25", 0x0000, 0x1000, CRC(18b50869) SHA1(11e9d5f7b4ae818b077b0ee14a3b43190e20bff3) ) |
| 326 | ROM_CONTINUE( 0x1e80, 0x0100 ) |
| 326 | 327 | ROM_END |
| 327 | 328 | |
| 328 | 329 | |
| 329 | 330 | ROM_START( tmtron ) |
| 330 | | ROM_REGION( 0x1100, "maincpu", 0 ) |
| 331 | | ROM_LOAD( "hd38800a88", 0x0000, 0x1100, CRC(33db9670) SHA1(d6f747a59356526698784047bcfdbb59e79b9a23) ) |
| 331 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 332 | ROM_LOAD( "hd38800a88", 0x0000, 0x1000, CRC(33db9670) SHA1(d6f747a59356526698784047bcfdbb59e79b9a23) ) |
| 333 | ROM_CONTINUE( 0x1e80, 0x0100 ) |
| 332 | 334 | ROM_END |
| 333 | 335 | |
| 334 | 336 | |