diff options
Diffstat (limited to 'src/mame/drivers/pc9801.cpp')
-rw-r--r-- | src/mame/drivers/pc9801.cpp | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp index ddc17d285dd..d11579a3793 100644 --- a/src/mame/drivers/pc9801.cpp +++ b/src/mame/drivers/pc9801.cpp @@ -1506,6 +1506,36 @@ void pc9801_state::pc9821_io(address_map &map) // AM_RANGE(0xfcd0, 0xfcd3) MIDI port, option F / <undefined> } +// TODO: identify this, might be an alt way to access SDIP? +READ8_MEMBER(pc9801_state::as_unkdev_data_r) +{ + if (offset == 0) + return m_unkdev0468[m_unkdev0468_addr]; + + return 0xff; +} + +WRITE8_MEMBER(pc9801_state::as_unkdev_data_w) +{ + if (offset == 0) + m_unkdev0468[m_unkdev0468_addr] = data; + + // offset == 0: access bit? +} + +WRITE8_MEMBER(pc9801_state::as_unkdev_addr_w) +{ + if (offset == 0) + m_unkdev0468_addr = data; +} + +void pc9801_state::pc9821as_io(address_map &map) +{ + pc9821_io(map); + map(0x0468, 0x046b).rw(FUNC(pc9801_state::as_unkdev_data_r), FUNC(pc9801_state::as_unkdev_data_w)).umask32(0x00ff00ff); + map(0x046c, 0x046f).w(FUNC(pc9801_state::as_unkdev_addr_w)).umask32(0x00ff00ff); +} + void pc9801_state::upd7220_1_map(address_map &map) { map(0x00000, 0x03fff).ram().share("video_ram_1"); @@ -2500,6 +2530,15 @@ void pc9801_state::pc9821(machine_config &config) PALETTE(config.replace(), m_palette, FUNC(pc9801_state::pc9801_palette), 16 + 16 + 256); } +void pc9801_state::pc9821as(machine_config &config) +{ + pc9821(config); + I486(config.replace(), m_maincpu, 33000000); // unknown clock + m_maincpu->set_addrmap(AS_PROGRAM, &pc9801_state::pc9821_map); + m_maincpu->set_addrmap(AS_IO, &pc9801_state::pc9821as_io); + m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb)); +} + void pc9801_state::pc9821ap2(machine_config &config) { pc9821(config); @@ -2514,7 +2553,7 @@ void pc9801_state::pc9821ap2(machine_config &config) void pc9801_state::pc9821v20(machine_config &config) { pc9821(config); - PENTIUM(config.replace(), m_maincpu, 32000000); /* TODO: clock */ + PENTIUM(config.replace(), m_maincpu, 32000000); // unknown clock m_maincpu->set_addrmap(AS_PROGRAM, &pc9801_state::pc9821_map); m_maincpu->set_addrmap(AS_IO, &pc9801_state::pc9821_io); m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb)); @@ -2604,7 +2643,7 @@ ROM_START( pc9801rx ) ROM_FILL(0x2fffe, 1, 0x0d) ROM_REGION( 0x80000, "chargen", 0 ) - ROM_LOAD( "font_rx.rom", 0x000000, 0x046800, CRC(456d9fc7) SHA1(78ba9960f135372825ab7244b5e4e73a810002ff) ) + ROM_LOAD( "font_rx.rom", 0x000000, 0x046800, BAD_DUMP CRC(456d9fc7) SHA1(78ba9960f135372825ab7244b5e4e73a810002ff) ) LOAD_KANJI_ROMS LOAD_IDE_ROM @@ -2749,15 +2788,15 @@ As - 80486DX 33 */ ROM_START( pc9821as ) - ROM_REGION( 0x80000, "ipl_raw", ROMREGION_ERASEFF ) + ROM_REGION( 0x80000, "biosrom", ROMREGION_ERASEFF ) // ROM_LOAD( "itf.rom", 0x10000, 0x08000, BAD_DUMP CRC(dd4c7bb8) SHA1(cf3aa193df2722899066246bccbed03f2e79a74a) ) // ROM_LOAD( "bios_as.rom", 0x18000, 0x18000, BAD_DUMP CRC(0a682b93) SHA1(76a7360502fa0296ea93b4c537174610a834d367) ) ROM_LOAD( "mvs0100-1.bin", 0x00000, 0x80000, CRC(ca37b631) SHA1(8c481dd0608d6c27235bc88bd77e345628dc28a1) ) ROM_REGION( 0x30000, "ipl", ROMREGION_ERASEFF ) // TODO: not quite right yet, needs actual itf rom loaded - ROM_COPY( "ipl_raw", 0x50000, 0x10000, 0x08000 ) - ROM_COPY( "ipl_raw", 0x28000, 0x18000, 0x18000 ) + ROM_COPY( "biosrom", 0x20000, 0x10000, 0x08000 ) + ROM_COPY( "biosrom", 0x30000, 0x18000, 0x18000 ) ROM_REGION( 0x80000, "chargen", 0 ) ROM_LOAD( "font_as.rom", 0x000000, 0x046800, BAD_DUMP CRC(456d9fc7) SHA1(78ba9960f135372825ab7244b5e4e73a810002ff) ) @@ -3038,7 +3077,7 @@ COMP( 1987, pc9801ux, 0, 0, pc9801ux, pc9801rs, pc9801_state, init_pc9 COMP( 1988, pc9801rx, pc9801rs, 0, pc9801rs, pc9801rs, pc9801_state, init_pc9801_kanji, "NEC", "PC-9801RX", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) COMP( 1993, pc9801bx2, pc9801rs, 0, pc9801bx2, pc9801rs, pc9801_state, init_pc9801_kanji, "NEC", "PC-9801BX2/U2", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) COMP( 1994, pc9821, 0, 0, pc9821, pc9821, pc9801_state, init_pc9801_kanji, "NEC", "PC-9821 (98MATE)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) //TODO: not sure about the exact model -COMP( 1993, pc9821as, pc9821, 0, pc9821, pc9821, pc9801_state, init_pc9801_kanji, "NEC", "PC-9821 (98MATE A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) +COMP( 1993, pc9821as, pc9821, 0, pc9821as, pc9821, pc9801_state, init_pc9801_kanji, "NEC", "PC-9821 (98MATE A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) COMP( 1993, pc9821ap2, pc9821, 0, pc9821ap2, pc9821, pc9801_state, init_pc9801_kanji, "NEC", "PC-9821AP2/U8W (98MATE A)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) COMP( 1994, pc9821xs, pc9821, 0, pc9821, pc9821, pc9801_state, init_pc9801_kanji, "NEC", "PC-9821 (98MATE Xs)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) COMP( 1994, pc9821ce2, pc9821, 0, pc9821, pc9821, pc9801_state, init_pc9801_kanji, "NEC", "PC-9821 (98MULTi Ce2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) |