(MESS) New WORKING system. NEC TK85. [Robbbert, Nama]

This commit is contained in:
Robbbert 2013-01-12 23:09:03 +00:00
parent d80a7add47
commit 484e42f9f9
2 changed files with 34 additions and 10 deletions

View File

@ -12,6 +12,10 @@ TK80 (Training Kit 80) considered to be Japan's first home computer.
It consisted of 25 keys and 8 LED digits, and was programmed in hex. It consisted of 25 keys and 8 LED digits, and was programmed in hex.
The Mikrolab is a Russian clone which appears to be almost completely identical. The Mikrolab is a Russian clone which appears to be almost completely identical.
TK85 seems to be the same as TK80, except is has a larger ROM. No
schematics etc are available. Thanks to 'Nama' who dumped the rom.
It has 25 keys, so a few aren't defined yet.
When booted, the system begins at 0000 which is ROM. You need to change the When booted, the system begins at 0000 which is ROM. You need to change the
address to 8000 before entering a program. Here is a test to paste in: address to 8000 before entering a program. Here is a test to paste in:
8000-11^22^33^44^55^66^77^88^99^8000- 8000-11^22^33^44^55^66^77^88^99^8000-
@ -58,12 +62,9 @@ public:
tk80bs_state(const machine_config &mconfig, device_type type, const char *tag) tk80bs_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_ppi8255_2(*this, "ppi8255_2") m_ppi8255_2(*this, "ppi8255_2"),
, m_p_videoram(*this, "videoram"){ }
m_p_videoram(*this, "p_videoram"){ }
required_device<cpu_device> m_maincpu;
optional_device<i8255_device> m_ppi8255_2;
DECLARE_READ8_MEMBER(ppi_custom_r); DECLARE_READ8_MEMBER(ppi_custom_r);
DECLARE_WRITE8_MEMBER(ppi_custom_w); DECLARE_WRITE8_MEMBER(ppi_custom_w);
DECLARE_READ8_MEMBER(key_matrix_r); DECLARE_READ8_MEMBER(key_matrix_r);
@ -76,7 +77,6 @@ public:
DECLARE_READ8_MEMBER(port_a_r); DECLARE_READ8_MEMBER(port_a_r);
DECLARE_READ8_MEMBER(port_b_r); DECLARE_READ8_MEMBER(port_b_r);
UINT8 m_term_data; UINT8 m_term_data;
optional_shared_ptr<UINT8> m_p_videoram;
UINT8 m_keyb_press; UINT8 m_keyb_press;
UINT8 m_keyb_press_flag; UINT8 m_keyb_press_flag;
UINT8 m_shift_press_flag; UINT8 m_shift_press_flag;
@ -86,6 +86,9 @@ public:
DECLARE_MACHINE_RESET(tk80bs); DECLARE_MACHINE_RESET(tk80bs);
DECLARE_VIDEO_START(tk80bs); DECLARE_VIDEO_START(tk80bs);
UINT32 screen_update_tk80bs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_tk80bs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
optional_device<i8255_device> m_ppi8255_2;
optional_shared_ptr<UINT8> m_p_videoram;
}; };
/************************************************* TK80 ******************************************/ /************************************************* TK80 ******************************************/
@ -109,6 +112,14 @@ static ADDRESS_MAP_START(tk80_mem, AS_PROGRAM, 8, tk80bs_state)
AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w) AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START(tk85_mem, AS_PROGRAM, 8, tk80bs_state)
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x87ff) // A10-14 not connected
AM_RANGE(0x0000, 0x07ff) AM_ROM
AM_RANGE(0x8000, 0x83f7) AM_RAM
AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START(tk80_io, AS_IO, 8, tk80bs_state) static ADDRESS_MAP_START(tk80_io, AS_IO, 8, tk80bs_state)
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff) // possibly should be 3 ADDRESS_MAP_GLOBAL_MASK(0xff) // possibly should be 3
@ -248,12 +259,18 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mikrolab, tk80 ) static MACHINE_CONFIG_DERIVED( mikrolab, tk80 )
MCFG_CPU_MODIFY("maincpu") MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(tk85_mem)
MCFG_CPU_IO_MAP(mikrolab_io) MCFG_CPU_IO_MAP(mikrolab_io)
/* Devices */ /* Devices */
MCFG_DEVICE_REMOVE("ppi8255_0") MCFG_DEVICE_REMOVE("ppi8255_0")
MCFG_I8255_ADD( "ppi8255_1", ppi8255_intf_1 ) MCFG_I8255_ADD( "ppi8255_1", ppi8255_intf_1 )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( tk85, tk80 )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(tk85_mem)
MACHINE_CONFIG_END
/************************************************* TK80BS ****************************************/ /************************************************* TK80BS ****************************************/
VIDEO_START_MEMBER(tk80bs_state,tk80bs) VIDEO_START_MEMBER(tk80bs_state,tk80bs)
@ -315,7 +332,7 @@ static ADDRESS_MAP_START(tk80bs_mem, AS_PROGRAM, 8, tk80bs_state)
// AM_RANGE(0x0c00, 0x7bff) AM_ROM // ext // AM_RANGE(0x0c00, 0x7bff) AM_ROM // ext
AM_RANGE(0x7df8, 0x7df9) AM_NOP // i8251 sio AM_RANGE(0x7df8, 0x7df9) AM_NOP // i8251 sio
AM_RANGE(0x7dfc, 0x7dff) AM_READWRITE(ppi_custom_r,ppi_custom_w) AM_RANGE(0x7dfc, 0x7dff) AM_READWRITE(ppi_custom_r,ppi_custom_w)
AM_RANGE(0x7e00, 0x7fff) AM_RAM AM_SHARE("p_videoram") // video ram AM_RANGE(0x7e00, 0x7fff) AM_RAM AM_SHARE("videoram") // video ram
AM_RANGE(0x8000, 0xcfff) AM_RAM // RAM AM_RANGE(0x8000, 0xcfff) AM_RAM // RAM
AM_RANGE(0xd000, 0xefff) AM_ROM // BASIC AM_RANGE(0xd000, 0xefff) AM_ROM // BASIC
AM_RANGE(0xf000, 0xffff) AM_ROM // BSMON AM_RANGE(0xf000, 0xffff) AM_ROM // BSMON
@ -433,6 +450,11 @@ ROM_START( mikrolab )
ROM_LOAD( "rom-2.bin", 0x0200, 0x0200, BAD_DUMP CRC(726a224f) SHA1(7ed8d2c6dd4fb7836475e207e1972e33a6a91d2f)) ROM_LOAD( "rom-2.bin", 0x0200, 0x0200, BAD_DUMP CRC(726a224f) SHA1(7ed8d2c6dd4fb7836475e207e1972e33a6a91d2f))
ROM_END ROM_END
ROM_START( nectk85 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "tk85.bin", 0x0000, 0x0800, CRC(8a0b6d7e) SHA1(6acc8c04990692b08929043ccf638761b7301def))
ROM_END
ROM_START( tk80bs ) ROM_START( tk80bs )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
/* all of these aren't taken from an original machine*/ /* all of these aren't taken from an original machine*/
@ -461,6 +483,7 @@ ROM_END
/* Driver */ /* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1976, tk80, 0, 0, tk80, tk80, driver_device, 0, "Nippon Electronic Company", "TK-80", GAME_NO_SOUND_HW) COMP( 1976, tk80, 0, 0, tk80, tk80, driver_device, 0, "Nippon Electronic Company", "TK-80", GAME_NO_SOUND_HW)
COMP( 1980, tk80bs, tk80, 0, tk80bs, tk80bs, driver_device, 0, "Nippon Electronic Company", "TK-80BS", GAME_NOT_WORKING | GAME_NO_SOUND_HW) COMP( 1980, tk80bs, tk80, 0, tk80bs, tk80bs, driver_device, 0, "Nippon Electronic Company", "TK-80BS", GAME_NOT_WORKING | GAME_NO_SOUND_HW)
COMP( 19??, mikrolab, tk80, 0, mikrolab, mikrolab, driver_device, 0, "<unknown>", "Mikrolab KR580IK80", GAME_NO_SOUND_HW) COMP( 19??, nectk85, tk80, 0, tk85, tk80, driver_device, 0, "Nippon Electronic Company", "TK-85", GAME_NO_SOUND_HW)
COMP( 19??, mikrolab, tk80, 0, mikrolab, mikrolab, driver_device, 0, "<unknown>", "Mikrolab KR580IK80", GAME_NO_SOUND_HW)

View File

@ -2193,3 +2193,4 @@ modellot
tim100 tim100
pencil2 pencil2
br8641 br8641
nectk85