New machines marked as NOT_WORKING

----------------------------------
PC-9801 [Andrew Terwilliger]
PC-9801FS [flyingharuka]
PC-9801DX [flyingharuka]
This commit is contained in:
angelosa 2022-10-16 17:39:49 +02:00
parent efef070b50
commit f8b8b6484c
3 changed files with 135 additions and 4 deletions

View File

@ -34605,8 +34605,11 @@ pc98lt // 1989
pc98ha // 1990
@source:nec/pc9801.cpp
pc9801 // 1982
pc9801bx2 // 1993
pc9801dx // 1990
pc9801f // 1983
pc9801fs // 1992
pc9801rs // 1989
pc9801rx // 1988
pc9801us // 1992

View File

@ -1967,6 +1967,12 @@ MACHINE_RESET_MEMBER(pc9801_state,pc9801f)
uint8_t *PRG = memregion("fdc_data")->base();
int i;
// TODO: this loading shouldn't happen dynamically but actually be tied to specific floppy configs
// pc9801 has no floppy as default
// pc9801f has an internal 2DD disk drive
// pc9801m has an internal 2HD
// and ofc you can actually mount external units,
// cfr. PC-9801-08 (2dd), PC-9801-15 (8' unit) and likely others.
ROM = memregion("fdc_bios_2dd")->base();
op_mode = (ioport("ROM_LOAD")->read() & 2) >> 1;
@ -2355,6 +2361,19 @@ void pc9801vm_state::pc9801ux(machine_config &config)
// AM9157A(config, "i8237", 10000000); // unknown clock
}
void pc9801vm_state::pc9801dx(machine_config &config)
{
pc9801rs(config);
i80286_cpu_device &maincpu(I80286(config.replace(), m_maincpu, 12000000));
maincpu.set_addrmap(AS_PROGRAM, &pc9801vm_state::pc9801ux_map);
maincpu.set_addrmap(AS_IO, &pc9801vm_state::pc9801ux_io);
maincpu.set_a20_callback(i80286_cpu_device::a20_cb(&pc9801vm_state::a20_286, this));
maincpu.set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
config_floppy_525hd(config);
// AM9157A(config, "i8237", 10000000); // unknown clock
}
void pc9801vm_state::pc9801vx(machine_config &config)
{
pc9801ux(config);
@ -2383,6 +2402,23 @@ void pc9801us_state::pc9801us(machine_config &config)
config_floppy_35hd(config);
}
void pc9801vm_state::pc9801fs(machine_config &config)
{
pc9801rs(config);
const XTAL xtal = XTAL(20'000'000); // ~20 MHz
I386SX(config.replace(), m_maincpu, xtal);
m_maincpu->set_addrmap(AS_PROGRAM, &pc9801vm_state::pc9801rs_map);
m_maincpu->set_addrmap(AS_IO, &pc9801vm_state::pc9801rs_io);
m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
// optional 3'5 floppies x2
config_floppy_525hd(config);
// optional SCSI HDD
pit_clock_config(config, xtal / 4);
}
void pc9801bx_state::pc9801bx2(machine_config &config)
{
pc9801rs(config);
@ -2427,6 +2463,46 @@ void pc9801bx_state::pc9801bx2(machine_config &config)
ROM_REGION( 0x100000, "kanji", ROMREGION_ERASEFF ) \
ROM_REGION( 0x80000, "new_chargen", ROMREGION_ERASEFF )
/*
"vanilla" - μPD8086, 5 MHz?
*/
ROM_START( pc9801 )
ROM_REGION16_LE( 0x18000, "ipl", ROMREGION_ERASEFF )
ROM_LOAD16_BYTE( "ruq2g 06.bin", 0x14000, 0x2000, CRC(ee7b336b) SHA1(0691ebfcb9a8ce56ca303c552f634e953bb2ea7c) )
ROM_LOAD16_BYTE( "ruq4f 06.bin", 0x14001, 0x2000, CRC(1e5c38c4) SHA1(5a8681ae0b1c3248d81a5b6707595d85cabe6bc8) )
ROM_LOAD16_BYTE( "ruq2f 06.bin", 0x10000, 0x2000, CRC(be95afa5) SHA1(137fc4dd10ecc9f058b819df89a67df819a6509c) )
ROM_LOAD16_BYTE( "ruq4e 06.bin", 0x10001, 0x2000, CRC(bc425f21) SHA1(f688ef89ebe3993dcbf70608d996067e92176be1) )
ROM_LOAD16_BYTE( "ruq2e 06.bin", 0x0c000, 0x2000, CRC(16a3eaca) SHA1(345c1764e1b8aa5f3baa876658cf4cd224351fae) )
ROM_LOAD16_BYTE( "ruq4d 06.bin", 0x0c001, 0x2000, CRC(0ca07388) SHA1(bdd564d19fcfa3dff8a695e2386c94defadcb164) )
ROM_LOAD16_BYTE( "ruq2d 06.bin", 0x08000, 0x2000, CRC(907d0263) SHA1(30ba910424c99ae4c54eb2be5472258a3d5e4f29) )
ROM_LOAD16_BYTE( "ruq4b 06.bin", 0x08001, 0x2000, CRC(b41d15e7) SHA1(321ec22e50fd2ee69f73c1e3f11c9fd07afa46fc) )
ROM_LOAD16_BYTE( "ruq1f 06.bin", 0x00000, 0x2000, CRC(12d6ea62) SHA1(3a612428aaf3120ec00c10d709674535668f1d65) )
ROM_LOAD16_BYTE( "ruq4h 06.bin", 0x00001, 0x2000, CRC(348992b9) SHA1(f5735f57305fd6585b2db1c81d34bb7ba2ed7510) )
ROM_LOAD16_BYTE( "ruq1g 06.bin", 0x04000, 0x2000, CRC(d4ea8a62) SHA1(c899ea64ce8652a5b6976d62466efe2864cfb049) )
ROM_LOAD16_BYTE( "ruq4g 06.bin", 0x04001, 0x2000, CRC(c1470ae5) SHA1(4eb31b2ad0b8f0dfad99bb67ada9e5853d5af4a1) )
ROM_REGION16_LE( 0x1000, "fdc_bios_2dd", ROMREGION_ERASEFF )
ROM_REGION16_LE( 0x1000, "fdc_bios_2hd", ROMREGION_ERASEFF )
ROM_REGION( 0x20000, "fdc_data", ROMREGION_ERASEFF )
ROM_REGION( 0x800, "kbd_mcu", ROMREGION_ERASEFF)
ROM_LOAD( "mcu.bin", 0x0000, 0x0800, NO_DUMP ) //connected through a i8251 UART, needs decapping
ROM_REGION( 0x80000, "chargen", 0 )
// TODO: original dump, needs heavy bitswap mods
ROM_LOAD( "sfz4w 00.bin", 0x00000, 0x02000, CRC(11197271) SHA1(8dbd2f25daeed545ea2c74d849f0a209ceaf4dd7) )
// taken from i386 model
ROM_LOAD( "d23128c-17.bin", 0x00000, 0x00800, BAD_DUMP CRC(eea57180) SHA1(4aa037c684b72ad4521212928137d3369174eb1e) )
// bad dump, 8x16 charset? (it's on the kanji board)
ROM_LOAD("hn613128pac8.bin",0x00800, 0x01000, BAD_DUMP CRC(b5a15b5c) SHA1(e5f071edb72a5e9a8b8b1c23cf94a74d24cb648e) )
LOAD_KANJI_ROMS
ROM_END
/*
F - 8086 8
*/
@ -2452,10 +2528,12 @@ ROM_START( pc9801f )
ROM_REGION( 0x800, "kbd_mcu", ROMREGION_ERASEFF)
ROM_LOAD( "mcu.bin", 0x0000, 0x0800, NO_DUMP ) //connected through a i8251 UART, needs decapping
/* note: ROM names of following two might be swapped */
ROM_REGION( 0x80000, "chargen", 0 )
ROM_LOAD( "d23128c-17.bin", 0x00000, 0x00800, BAD_DUMP CRC(eea57180) SHA1(4aa037c684b72ad4521212928137d3369174eb1e) ) //original is a bad dump, this is taken from i386 model
ROM_LOAD("hn613128pac8.bin",0x00800, 0x01000, BAD_DUMP CRC(b5a15b5c) SHA1(e5f071edb72a5e9a8b8b1c23cf94a74d24cb648e) ) //bad dump, 8x16 charset? (it's on the kanji board)
// note: ROM labels of following two may be swapped
//original is a bad dump, this is taken from i386 model
ROM_LOAD( "d23128c-17.bin", 0x00000, 0x00800, BAD_DUMP CRC(eea57180) SHA1(4aa037c684b72ad4521212928137d3369174eb1e) )
//bad dump, 8x16 charset? (it's on the kanji board)
ROM_LOAD("hn613128pac8.bin",0x00800, 0x01000, BAD_DUMP CRC(b5a15b5c) SHA1(e5f071edb72a5e9a8b8b1c23cf94a74d24cb648e) )
LOAD_KANJI_ROMS
ROM_END
@ -2564,6 +2642,28 @@ ROM_START( pc9801ux )
// LOAD_IDE_ROM
ROM_END
/*
DX - 80286 12 + V30 8
*/
ROM_START( pc9801dx )
ROM_REGION16_LE( 0x40000, "biosrom", ROMREGION_ERASEFF )
ROM_LOAD16_BYTE( "hdk01_02.bin", 0x000000, 0x020000, CRC(bf8b25fd) SHA1(e86eb6b46d73aad1cc96945bd34bd728d882583e) )
ROM_LOAD16_BYTE( "hdk02_02.bin", 0x000001, 0x020000, CRC(37f21929) SHA1(1bb7c2f09eed399a78c3668f4193429a1980acc9) )
ROM_REGION16_LE( 0x30000, "ipl", ROMREGION_ERASEFF )
ROM_COPY( "biosrom", 0x20000, 0x10000, 0x08000 ) //ITF ROM
ROM_COPY( "biosrom", 0x28000, 0x18000, 0x08000 ) //BIOS ROM
ROM_COPY( "biosrom", 0x30000, 0x20000, 0x08000 )
ROM_COPY( "biosrom", 0x38000, 0x28000, 0x08000 )
ROM_REGION( 0x80000, "chargen", 0 )
ROM_LOAD( "font_ux.rom", 0x000000, 0x046800, BAD_DUMP CRC(19a76eeb) SHA1(96a006e8515157a624599c2b53a581ae0dd560fd) )
LOAD_KANJI_ROMS
// LOAD_IDE_ROM
ROM_END
/*
US - i386SX @ 16 MHz
*/
@ -2592,6 +2692,27 @@ ROM_START( pc9801us )
// LOAD_IDE_ROM
ROM_END
/*
FS - 80386 20
*/
ROM_START( pc9801fs )
ROM_REGION16_LE( 0x40000, "biosrom", ROMREGION_ERASEFF )
ROM_LOAD16_BYTE( "kqx01_00.bin", 0x000000, 0x020000, CRC(4713d388) SHA1(9ae48fbe7b8ab7144e045e183ed88d2544d9a61c) )
ROM_LOAD16_BYTE( "kqx02_00.bin", 0x000001, 0x020000, CRC(f55e42d6) SHA1(2ab0ae817e9abed984544c920182689127550ce3) )
ROM_REGION16_LE( 0x30000, "ipl", ROMREGION_ERASEFF )
ROM_COPY( "biosrom", 0x20000, 0x10000, 0x08000 ) //ITF ROM
ROM_COPY( "biosrom", 0x28000, 0x18000, 0x08000 ) //BIOS ROM
ROM_COPY( "biosrom", 0x30000, 0x20000, 0x08000 )
ROM_COPY( "biosrom", 0x38000, 0x28000, 0x08000 )
ROM_REGION( 0x80000, "chargen", 0 )
ROM_LOAD( "font_ux.rom", 0x000000, 0x046800, BAD_DUMP CRC(19a76eeb) SHA1(96a006e8515157a624599c2b53a581ae0dd560fd) )
LOAD_KANJI_ROMS
// LOAD_IDE_ROM
ROM_END
/*
RX - 80286 12 (no V30?)
@ -2810,7 +2931,8 @@ void pc9801vm_state::init_pc9801vm_kanji()
// specifically happening for PC9801RS. This will be hopefully put into stone with driver splits at some point in future.
// "vanilla" class (i86, E/F/M)
COMP( 1983, pc9801f, 0, 0, pc9801, pc9801, pc9801_state, init_pc9801_kanji, "NEC", "PC-9801F", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // genuine dump
COMP( 1982, pc9801, 0, 0, pc9801, pc9801, pc9801_state, init_pc9801_kanji, "NEC", "PC-9801", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // genuine dump
COMP( 1983, pc9801f, pc9801, 0, pc9801, pc9801, pc9801_state, init_pc9801_kanji, "NEC", "PC-9801F", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // genuine dump
// N5200 (started as a vanilla PC-98 business line derivative,
// eventually diverged into its own thing and incorporated various Hyper 98 features.
@ -2857,10 +2979,14 @@ COMP( 1986, pc9801vx, 0, 0, pc9801vx, pc9801rs, pc9801vm_state, init_p
// RS class (i386SX)
COMP( 1988, pc9801rx, pc9801rs, 0, pc9801rs, pc9801rs, pc9801vm_state, init_pc9801_kanji, "NEC", "PC-9801RX", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
COMP( 1989, pc9801rs, 0, 0, pc9801rs, pc9801rs, pc9801vm_state, init_pc9801_kanji, "NEC", "PC-9801RS", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
// DX class (i286)
COMP( 1990, pc9801dx, 0, 0, pc9801dx, pc9801rs, pc9801vm_state, init_pc9801_kanji, "NEC", "PC-9801DX", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
// DA class (i386SX + SDIP and EMS)
// ...
// UF/UR/US class (i386SX + SDIP, optional high-reso according to BIOS? Derivatives of UX)
COMP( 1992, pc9801us, 0, 0, pc9801us, pc9801rs, pc9801us_state, init_pc9801_kanji, "NEC", "PC-9801US", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
// FS class (i386SX + ?)
COMP( 1992, pc9801fs, 0, 0, pc9801fs, pc9801rs, pc9801vm_state, init_pc9801_kanji, "NEC", "PC-9801FS", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
// FA class (i486SX)
// ...
// BX class (official nickname "98 FELLOW", last releases prior to 9821 line)

View File

@ -371,6 +371,8 @@ public:
void pc9801ux(machine_config &config);
void pc9801vx(machine_config &config);
void pc9801rs(machine_config &config);
void pc9801dx(machine_config &config);
void pc9801fs(machine_config &config);
void init_pc9801vm_kanji();