summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/pc9801.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pc9801.cpp')
-rw-r--r--src/mame/drivers/pc9801.cpp51
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)