trunk/src/mess/drivers/tk80bs.c
| r20229 | r20230 | |
| 12 | 12 | It consisted of 25 keys and 8 LED digits, and was programmed in hex. |
| 13 | 13 | The Mikrolab is a Russian clone which appears to be almost completely identical. |
| 14 | 14 | |
| 15 | TK85 seems to be the same as TK80, except is has a larger ROM. No |
| 16 | schematics etc are available. Thanks to 'Nama' who dumped the rom. |
| 17 | It has 25 keys, so a few aren't defined yet. |
| 18 | |
| 15 | 19 | When booted, the system begins at 0000 which is ROM. You need to change the |
| 16 | 20 | address to 8000 before entering a program. Here is a test to paste in: |
| 17 | 21 | 8000-11^22^33^44^55^66^77^88^99^8000- |
| r20229 | r20230 | |
| 58 | 62 | tk80bs_state(const machine_config &mconfig, device_type type, const char *tag) |
| 59 | 63 | : driver_device(mconfig, type, tag), |
| 60 | 64 | m_maincpu(*this, "maincpu"), |
| 61 | | m_ppi8255_2(*this, "ppi8255_2") |
| 62 | | , |
| 63 | | m_p_videoram(*this, "p_videoram"){ } |
| 65 | m_ppi8255_2(*this, "ppi8255_2"), |
| 66 | m_p_videoram(*this, "videoram"){ } |
| 64 | 67 | |
| 65 | | required_device<cpu_device> m_maincpu; |
| 66 | | optional_device<i8255_device> m_ppi8255_2; |
| 67 | 68 | DECLARE_READ8_MEMBER(ppi_custom_r); |
| 68 | 69 | DECLARE_WRITE8_MEMBER(ppi_custom_w); |
| 69 | 70 | DECLARE_READ8_MEMBER(key_matrix_r); |
| r20229 | r20230 | |
| 76 | 77 | DECLARE_READ8_MEMBER(port_a_r); |
| 77 | 78 | DECLARE_READ8_MEMBER(port_b_r); |
| 78 | 79 | UINT8 m_term_data; |
| 79 | | optional_shared_ptr<UINT8> m_p_videoram; |
| 80 | 80 | UINT8 m_keyb_press; |
| 81 | 81 | UINT8 m_keyb_press_flag; |
| 82 | 82 | UINT8 m_shift_press_flag; |
| r20229 | r20230 | |
| 86 | 86 | DECLARE_MACHINE_RESET(tk80bs); |
| 87 | 87 | DECLARE_VIDEO_START(tk80bs); |
| 88 | 88 | UINT32 screen_update_tk80bs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 89 | required_device<cpu_device> m_maincpu; |
| 90 | optional_device<i8255_device> m_ppi8255_2; |
| 91 | optional_shared_ptr<UINT8> m_p_videoram; |
| 89 | 92 | }; |
| 90 | 93 | |
| 91 | 94 | /************************************************* TK80 ******************************************/ |
| r20229 | r20230 | |
| 109 | 112 | AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w) |
| 110 | 113 | ADDRESS_MAP_END |
| 111 | 114 | |
| 115 | static ADDRESS_MAP_START(tk85_mem, AS_PROGRAM, 8, tk80bs_state) |
| 116 | ADDRESS_MAP_UNMAP_HIGH |
| 117 | ADDRESS_MAP_GLOBAL_MASK(0x87ff) // A10-14 not connected |
| 118 | AM_RANGE(0x0000, 0x07ff) AM_ROM |
| 119 | AM_RANGE(0x8000, 0x83f7) AM_RAM |
| 120 | AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w) |
| 121 | ADDRESS_MAP_END |
| 122 | |
| 112 | 123 | static ADDRESS_MAP_START(tk80_io, AS_IO, 8, tk80bs_state) |
| 113 | 124 | ADDRESS_MAP_UNMAP_HIGH |
| 114 | 125 | ADDRESS_MAP_GLOBAL_MASK(0xff) // possibly should be 3 |
| r20229 | r20230 | |
| 248 | 259 | |
| 249 | 260 | static MACHINE_CONFIG_DERIVED( mikrolab, tk80 ) |
| 250 | 261 | MCFG_CPU_MODIFY("maincpu") |
| 262 | MCFG_CPU_PROGRAM_MAP(tk85_mem) |
| 251 | 263 | MCFG_CPU_IO_MAP(mikrolab_io) |
| 252 | 264 | /* Devices */ |
| 253 | 265 | MCFG_DEVICE_REMOVE("ppi8255_0") |
| 254 | 266 | MCFG_I8255_ADD( "ppi8255_1", ppi8255_intf_1 ) |
| 255 | 267 | MACHINE_CONFIG_END |
| 256 | 268 | |
| 269 | static MACHINE_CONFIG_DERIVED( tk85, tk80 ) |
| 270 | MCFG_CPU_MODIFY("maincpu") |
| 271 | MCFG_CPU_PROGRAM_MAP(tk85_mem) |
| 272 | MACHINE_CONFIG_END |
| 273 | |
| 257 | 274 | /************************************************* TK80BS ****************************************/ |
| 258 | 275 | |
| 259 | 276 | VIDEO_START_MEMBER(tk80bs_state,tk80bs) |
| r20229 | r20230 | |
| 315 | 332 | // AM_RANGE(0x0c00, 0x7bff) AM_ROM // ext |
| 316 | 333 | AM_RANGE(0x7df8, 0x7df9) AM_NOP // i8251 sio |
| 317 | 334 | AM_RANGE(0x7dfc, 0x7dff) AM_READWRITE(ppi_custom_r,ppi_custom_w) |
| 318 | | AM_RANGE(0x7e00, 0x7fff) AM_RAM AM_SHARE("p_videoram") // video ram |
| 335 | AM_RANGE(0x7e00, 0x7fff) AM_RAM AM_SHARE("videoram") // video ram |
| 319 | 336 | AM_RANGE(0x8000, 0xcfff) AM_RAM // RAM |
| 320 | 337 | AM_RANGE(0xd000, 0xefff) AM_ROM // BASIC |
| 321 | 338 | AM_RANGE(0xf000, 0xffff) AM_ROM // BSMON |
| r20229 | r20230 | |
| 433 | 450 | ROM_LOAD( "rom-2.bin", 0x0200, 0x0200, BAD_DUMP CRC(726a224f) SHA1(7ed8d2c6dd4fb7836475e207e1972e33a6a91d2f)) |
| 434 | 451 | ROM_END |
| 435 | 452 | |
| 453 | ROM_START( nectk85 ) |
| 454 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 455 | ROM_LOAD( "tk85.bin", 0x0000, 0x0800, CRC(8a0b6d7e) SHA1(6acc8c04990692b08929043ccf638761b7301def)) |
| 456 | ROM_END |
| 457 | |
| 436 | 458 | ROM_START( tk80bs ) |
| 437 | 459 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 438 | 460 | /* all of these aren't taken from an original machine*/ |
| r20229 | r20230 | |
| 461 | 483 | /* Driver */ |
| 462 | 484 | |
| 463 | 485 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 464 | | COMP( 1976, tk80, 0, 0, tk80, tk80, driver_device, 0, "Nippon Electronic Company", "TK-80", GAME_NO_SOUND_HW) |
| 465 | | COMP( 1980, tk80bs, tk80, 0, tk80bs, tk80bs, driver_device, 0, "Nippon Electronic Company", "TK-80BS", GAME_NOT_WORKING | GAME_NO_SOUND_HW) |
| 466 | | COMP( 19??, mikrolab, tk80, 0, mikrolab, mikrolab, driver_device, 0, "<unknown>", "Mikrolab KR580IK80", GAME_NO_SOUND_HW) |
| 486 | COMP( 1976, tk80, 0, 0, tk80, tk80, driver_device, 0, "Nippon Electronic Company", "TK-80", GAME_NO_SOUND_HW) |
| 487 | COMP( 1980, tk80bs, tk80, 0, tk80bs, tk80bs, driver_device, 0, "Nippon Electronic Company", "TK-80BS", GAME_NOT_WORKING | GAME_NO_SOUND_HW) |
| 488 | COMP( 19??, nectk85, tk80, 0, tk85, tk80, driver_device, 0, "Nippon Electronic Company", "TK-85", GAME_NO_SOUND_HW) |
| 489 | COMP( 19??, mikrolab, tk80, 0, mikrolab, mikrolab, driver_device, 0, "<unknown>", "Mikrolab KR580IK80", GAME_NO_SOUND_HW) |