summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/pc8801.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pc8801.cpp')
-rw-r--r--src/mame/drivers/pc8801.cpp278
1 files changed, 46 insertions, 232 deletions
diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp
index a50c1d6317f..2e975032af3 100644
--- a/src/mame/drivers/pc8801.cpp
+++ b/src/mame/drivers/pc8801.cpp
@@ -25,29 +25,17 @@
probably others (does bus have an actual codename or just "PC-8801 bus"?);
- below notes states that plain PC-8801 doesn't have a disk CPU, but the BIOS clearly checks
the floppy ports. Wrong info or check for external board anyway?
- - fix "jumps" in mouse support pointer (noticeable in Balance of Power);
-
- per-game specific TODO:
- - 100yen Soft 8 Revival Special: tight loop with vblank bit, but vblank irq takes too much time to execute its code;
- - 177: gameplay is too fast (parent pc8801 only);
- - 1942: missing sound, enables a masked irq;
- - Acro Jet: hangs waiting for an irq (floppy issue);
- - Arcus: doesn't surpass Wolf Team logo;
- - Advanced Fantasian: garbage during gameplay (floppy?)
- - American Success: reads the light pen?
- - Attacker: resets after a bunch of animation frames;
- - Balance of Power: uses the SIO port for something ...
+ - fix "jumps" in PC-8872 mouse pointer (noticeable in balpower);
+
+ per-game specific TODO (move to XML):
- Belloncho Shintai Kensa: hangs
- Bishoujo Baseball Gakuen: checks ym2608 after intro screen;
- The Black Onyx: writes a katakana msg: "sono kata ha koko ni orimasen" then doesn't show up anything. (Needs user disk?)
- - Boukenshatachi: dies after the intro.
- Campaign Ban Daisenryaku 2: Hangs at title screen?
- - Carigraph: inputs doesn't work?
- Can Can Bunny: bitmap artifacts on intro, caused by a fancy usage of the attribute vram;
- Can Can Bunny: no sound (regression);
- Can Can Bunny Superior: black screen during the intro
- Chou Bishoujo Densetsu CROQUIS: accesses ports 0xa0-0xa3 and 0xc2-0xc3
- - Combat: mono gfx mode enabled, but I don't see any noticeable quirk?
- Cranston Manor (actually N88-Basic demo): no sound
- Datenshi Kyouko: gfx garbage on the right edge?
- Final Crisis: sound stuck with OPNA?
@@ -56,10 +44,7 @@
- Gaudi - Barcelona no Kaze: fails PCM loading
- GeGeGe no Kitarou: title screen text/bitmap contrast is pretty ugly (BTANB?);
- Grobda: palette is ugly (parent pc8801 only);
- - Makaimura: after losing a life the game doesn't work properly anymore, copy protection?
- Music Collection Vol. 2 - Final Fantasy Tokushuu: sound irq dies pretty soon
- - N-BASIC: cursor doesn't show up;
- - The Return of Ishtar: z80 exception after entering the name.
- Star Cruiser: bad kanji data?
- Star Cruiser: reads at i/o 0x8e?
- Wanderers from Ys: user data disk looks screwed? It loads with everything as maximum as per now ...
@@ -120,11 +105,6 @@
- Fruit Panic
- FSD Sample Ongaku Shuu Vol. 1-7
- Gaia no Kiba (Disk I/O error at 150)
- - Gaiflame
- - Gambler Jiko Chuushin ha
- - Gambler Jiko Chuushin ha 2
- - Gambler Jiko Chuushin ha 3
- - Gambler Jiko Chuushin ha 3 (demo)
- Gambler Jiko Chuushin ha Mahjong Puzzle Collection
- Gambler Jiko Chuushin ha Mahjong Puzzle Collection (demo)
* Game Music Library
@@ -142,14 +122,12 @@
* MakaiMura (attempts to r/w the sio ports, but it's clearly crashed)
* Mugen Senshi Valis (at Telenet logo, it also appears to have a nasty copy protection when taking a specific item (untested))
- Mr. Pro Yakyuu
- - Panorama Toh
- PC-8034 (app)
- PC-8037SR (app)
- P1 (app)
- Pattern Editor 88 (app)
- Super Shunbo II (app) (Load error)
- Super TII (app)
- * The Return of Ishtar
- Tobira wo Akete (random crashes in parent pc8801 only)
list of games that doesn't like i8214_irq_level == 5 in sound irq
@@ -360,6 +338,8 @@ void pc8801_state::draw_bitmap_3bpp(bitmap_ind16 &bitmap,const rectangle &clipre
void pc8801_state::draw_bitmap_1bpp(bitmap_ind16 &bitmap,const rectangle &cliprect)
{
+ // TODO: jettermi really masks the color attribute from 3301
+ // (we currently draw it in b&w, should be colorized)
uint32_t count = 0;
uint8_t color = (m_gfx_ctrl & 1) ? 7 & ((m_layer_mask ^ 0xe) >> 1) : 7;
uint8_t is_cursor = 0;
@@ -803,9 +783,7 @@ uint8_t pc8801_state::pc8801_mem_r(offs_t offset)
window_offset = (offset & 0x3ff) + (m_window_offset_bank << 8);
- if(((window_offset & 0xf000) == 0xf000) && (m_misc_ctrl & 0x10))
- printf("Read from 0xf000 - 0xffff window offset\n"); //accessed by Castle Excellent, no noticeable quirk
-
+ // castlex and imenes accesses this
if(((window_offset & 0xf000) == 0xf000) && (m_misc_ctrl & 0x10))
return pc8801_high_wram_r(window_offset & 0xfff);
@@ -864,9 +842,9 @@ void pc8801_state::pc8801_mem_w(offs_t offset, uint8_t data)
window_offset = (offset & 0x3ff) + (m_window_offset_bank << 8);
- if(((window_offset & 0xf000) == 0xf000) && (m_misc_ctrl & 0x10))
- printf("Write to 0xf000 - 0xffff window offset\n"); //accessed by Castle Excellent, no noticeable quirk
-
+ // castlex and imenes accesses this
+ // TODO: high TVRAM even
+ // (uPD3301 reads from this instead of the regular work RAM)
if(((window_offset & 0xf000) == 0xf000) && (m_misc_ctrl & 0x10))
pc8801_high_wram_w(window_offset & 0xfff,data);
else
@@ -1117,6 +1095,20 @@ void pc8801_state::pc8801_window_bank_inc_w(uint8_t data)
m_window_offset_bank&=0xff;
}
+/*
+ * I/O Port $32 (R/W)
+ *
+ * x--- ---- sound irq mask (0) irq enabled (1) irq masked
+ * -x-- ---- Graphic VRAM access mode (0) independent access mode (1) ALU mode
+ * --x- ---- analog (1) / digital (0) palette select
+ * ---x ---- high speed RAM select (for TVRAM) (1) main RAM bank (0) dedicated Text RAM
+ * ---- xx-- Screen output mode
+ * ---- 00-- TV / video mode
+ * ---- 01-- None (as in disabling the screen entirely?)
+ * ---- 10-- Analog RGB mode
+ * ---- 11-- Optional mode
+ * ---- --xx internal EROM selection
+ */
uint8_t pc8801_state::pc8801_misc_ctrl_r()
{
return m_misc_ctrl;
@@ -1124,11 +1116,6 @@ uint8_t pc8801_state::pc8801_misc_ctrl_r()
void pc8801_state::pc8801_misc_ctrl_w(uint8_t data)
{
- /*
- x--- ---- sound irq mask, active low
- --x- ---- analog (1) / digital (0) palette select
- */
-
m_misc_ctrl = data;
#if USE_PROPER_I8214
@@ -1182,6 +1169,7 @@ void pc8801_state::pc8801_palram_w(offs_t offset, uint8_t data)
// TODO: What happens to the palette contents when the analog/digital palette mode changes?
// Preserve content? Translation? Undefined?
m_palette->set_pen_color(offset, pal3bit(m_palram[offset].r), pal3bit(m_palram[offset].g), pal3bit(m_palram[offset].b));
+ // TODO: at least analog mode can do rasters
}
void pc8801_state::pc8801_layer_masking_w(uint8_t data)
@@ -1472,7 +1460,7 @@ uint8_t pc8801_state::pc8801_sound_board_r(offs_t offset)
void pc8801_state::pc8801_sound_board_w(offs_t offset, uint8_t data)
{
if(m_has_opna)
- m_opna->write(offset,data);
+ m_opna->write(offset, data);
else if((offset & 2) == 0)
m_opn->write(offset, data);
}
@@ -1590,95 +1578,7 @@ void pc8801_state::pc8801_io(address_map &map)
// map(0xf3, 0xf3).noprw(); /* DMA floppy (unknown) */
// map(0xf4, 0xf7).noprw(); /* DMA 5'floppy (may be not released) */
// map(0xf8, 0xfb).noprw(); /* DMA 8'floppy (unknown) */
- map(0xfc, 0xff).rw("d8255_master", FUNC(i8255_device::read), FUNC(i8255_device::write));
-}
-
-uint8_t pc8801_state::cpu_8255_c_r()
-{
-// machine().scheduler().synchronize(); // force resync
-
- return m_i8255_1_pc >> 4;
-}
-
-void pc8801_state::cpu_8255_c_w(uint8_t data)
-{
-// machine().scheduler().synchronize(); // force resync
-
- m_i8255_0_pc = data;
-}
-
-
-uint8_t pc8801_state::fdc_8255_c_r()
-{
-// machine().scheduler().synchronize(); // force resync
-
- return m_i8255_0_pc >> 4;
-}
-
-void pc8801_state::fdc_8255_c_w(uint8_t data)
-{
-// machine().scheduler().synchronize(); // force resync
-
- m_i8255_1_pc = data;
-}
-
-void pc8801_state::pc8801fdc_mem(address_map &map)
-{
- map(0x0000, 0x1fff).rom();
- map(0x4000, 0x7fff).ram();
-}
-
-TIMER_CALLBACK_MEMBER(pc8801_state::pc8801fd_upd765_tc_to_zero)
-{
- // TODO: holein1 explictly reads TC port at PC=504e followed by an HALT opcode, failing to boot
- // is this gonna unbreak HALT state too?
- m_fdc->tc_w(false);
-}
-
-void pc8801_state::upd765_mc_w(uint8_t data)
-{
- m_fdd[0]->get_device()->mon_w(!(data & 1));
- m_fdd[1]->get_device()->mon_w(!(data & 2));
-}
-
-uint8_t pc8801_state::upd765_tc_r()
-{
- //printf("%04x 1\n",m_fdccpu->pc());
-
- if (!machine().side_effects_disabled())
- {
- m_fdc->tc_w(true);
- //TODO: I'm not convinced that this works correctly with current hook-up ... 1000 usec is needed by Aploon, a bigger value breaks Alpha.
- //OTOH, 50 seems more than enough for the new upd...
- machine().scheduler().timer_set(attotime::from_usec(50), timer_expired_delegate(FUNC(pc8801_state::pc8801fd_upd765_tc_to_zero),this));
- }
- return 0xff; // value is meaningless
-}
-
-void pc8801_state::fdc_irq_vector_w(uint8_t data)
-{
- popmessage("Write to FDC IRQ vector I/O %02x, contact MESSdev\n",data);
- m_fdc_irq_opcode = data;
-}
-
-void pc8801_state::fdc_drive_mode_w(uint8_t data)
-{
- logerror("FDC drive mode %02x\n", data);
- m_fdd[0]->get_device()->set_rpm(data & 0x01 ? 360 : 300);
- m_fdd[1]->get_device()->set_rpm(data & 0x02 ? 360 : 300);
-
- m_fdc->set_rate(data & 0x20 ? 500000 : 250000);
-}
-
-void pc8801_state::pc8801fdc_io(address_map &map)
-{
- map.global_mask(0xff);
- map(0xf0, 0xf0).w(FUNC(pc8801_state::fdc_irq_vector_w)); // Interrupt Opcode Port
- map(0xf4, 0xf4).w(FUNC(pc8801_state::fdc_drive_mode_w)); // Drive mode, 2d, 2dd, 2hd
- map(0xf7, 0xf7).nopw(); // printer port output
- map(0xf8, 0xf8).rw(FUNC(pc8801_state::upd765_tc_r), FUNC(pc8801_state::upd765_mc_w)); // (R) Terminal Count Port (W) Motor Control Port
- map(0xfa, 0xfb).m(m_fdc, FUNC(upd765a_device::map));
- map(0xfc, 0xff).rw("d8255_slave", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xfc, 0xff).m(m_pc80s31, FUNC(pc80s31_device::host_map));
}
void pc8801_state::opna_map(address_map &map)
@@ -2005,12 +1905,6 @@ static GFXDECODE_START( gfx_pc8801 )
GFXDECODE_ENTRY( "kanji", 0, kanji_layout, 0, 8 )
GFXDECODE_END
-/* Floppy Configuration */
-
-static void pc88_floppies(device_slot_interface &device)
-{
- device.option_add("525hd", FLOPPY_525_HD);
-}
#if 0
/* Cassette Configuration */
@@ -2164,10 +2058,6 @@ INTERRUPT_GEN_MEMBER(pc8801_state::pc8801_vrtc_irq)
void pc8801_state::machine_start()
{
- m_fdd[0]->get_device()->set_rpm(300);
- m_fdd[1]->get_device()->set_rpm(300);
- m_fdc->set_rate(250000);
-
m_rtc->cs_w(1);
m_rtc->oe_w(1);
@@ -2203,11 +2093,8 @@ void pc8801_state::machine_reset()
// pc8801_dynamic_res_change(machine());
- m_fdc_irq_opcode = 0; //TODO: copied from PC-88VA, could be wrong here ... should be 0x7f ld a,a in the latter case
m_mouse.phase = 0;
- m_fdccpu->set_input_line_vector(0, 0); // Z80
-
{
m_txt_color = 2;
}
@@ -2277,7 +2164,8 @@ MACHINE_RESET_MEMBER(pc8801_state,pc8801_clock_speed)
m_clock_setting = ioport("CFG")->read() & 0x80;
m_maincpu->set_unscaled_clock(m_clock_setting ? XTAL(4'000'000) : XTAL(8'000'000));
- m_fdccpu->set_unscaled_clock(m_clock_setting ? XTAL(4'000'000) : XTAL(8'000'000)); // correct?
+ // TODO: FDC board shouldn't be connected to the clock setting, verify
+// m_fdccpu->set_unscaled_clock(m_clock_setting ? XTAL(4'000'000) : XTAL(8'000'000));
m_baudrate_val = 0;
}
@@ -2348,28 +2236,11 @@ void pc8801_state::pc8801(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(pc8801_state::pc8801_vrtc_irq));
m_maincpu->set_irq_acknowledge_callback(FUNC(pc8801_state::pc8801_irq_callback));
- /* sub CPU(5 inch floppy drive) */
- Z80(config, m_fdccpu, MASTER_CLOCK); /* 4 MHz */
- m_fdccpu->set_addrmap(AS_PROGRAM, &pc8801_state::pc8801fdc_mem);
- m_fdccpu->set_addrmap(AS_IO, &pc8801_state::pc8801fdc_io);
-
- //config.set_maximum_quantum(attotime::from_hz(300000));
+ PC80S31(config, m_pc80s31, MASTER_CLOCK);
config.set_perfect_quantum(m_maincpu);
+ config.set_perfect_quantum("pc80s31:fdc_cpu");
- i8255_device &d8255_master(I8255(config, "d8255_master"));
- d8255_master.in_pa_callback().set("d8255_slave", FUNC(i8255_device::pb_r));
- d8255_master.in_pb_callback().set("d8255_slave", FUNC(i8255_device::pa_r));
- d8255_master.in_pc_callback().set(FUNC(pc8801_state::cpu_8255_c_r));
- d8255_master.out_pc_callback().set(FUNC(pc8801_state::cpu_8255_c_w));
-
- i8255_device &d8255_slave(I8255(config, "d8255_slave"));
- d8255_slave.in_pa_callback().set("d8255_master", FUNC(i8255_device::pb_r));
- d8255_slave.in_pb_callback().set("d8255_master", FUNC(i8255_device::pa_r));
- d8255_slave.in_pc_callback().set(FUNC(pc8801_state::fdc_8255_c_r));
- d8255_slave.out_pc_callback().set(FUNC(pc8801_state::fdc_8255_c_w));
-
- UPD765A(config, m_fdc, 8'000'000, true, true);
- m_fdc->intrq_wr_callback().set_inputline(m_fdccpu, INPUT_LINE_IRQ0);
+// config.set_maximum_quantum(attotime::from_hz(MASTER_CLOCK/1024));
#if USE_PROPER_I8214
I8214(config, I8214_TAG, MASTER_CLOCK);
@@ -2386,9 +2257,8 @@ void pc8801_state::pc8801(machine_config &config)
i8251.txd_handler().set(FUNC(pc8801_state::txdata_callback));
i8251.rts_handler().set(FUNC(pc8801_state::rxrdy_w));
- FLOPPY_CONNECTOR(config, "upd765:0", pc88_floppies, "525hd", floppy_image_device::default_mfm_floppy_formats);
- FLOPPY_CONNECTOR(config, "upd765:1", pc88_floppies, "525hd", floppy_image_device::default_mfm_floppy_formats);
- SOFTWARE_LIST(config, "disk_list").set_original("pc8801_flop");
+ SOFTWARE_LIST(config, "disk_n88_list").set_original("pc8801_flop");
+ SOFTWARE_LIST(config, "disk_n_list").set_original("pc8001_flop");
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -2431,21 +2301,27 @@ void pc8801_state::pc8801(machine_config &config)
TIMER(config, "rtc_timer").configure_periodic(FUNC(pc8801_state::pc8801_rtc_irq), attotime::from_hz(600));
}
-void pc8801_state::pc8801fh(machine_config &config)
+void pc8801_state::pc8801mk2mr(machine_config &config)
{
pc8801(config);
+ PC80S31K(config.replace(), m_pc80s31, MASTER_CLOCK);
+}
+
+void pc8801_state::pc8801fh(machine_config &config)
+{
+ pc8801mk2mr(config);
MCFG_MACHINE_RESET_OVERRIDE(pc8801_state, pc8801_clock_speed )
}
void pc8801_state::pc8801ma(machine_config &config)
{
- pc8801(config);
+ pc8801fh(config);
MCFG_MACHINE_RESET_OVERRIDE(pc8801_state, pc8801_dic )
}
void pc8801_state::pc8801mc(machine_config &config)
{
- pc8801(config);
+ pc8801ma(config);
MCFG_MACHINE_RESET_OVERRIDE(pc8801_state, pc8801_cdrom )
}
@@ -2457,9 +2333,6 @@ ROM_START( pc8801 )
ROM_LOAD( "n88.rom", 0x0000, 0x8000, CRC(ffd68be0) SHA1(3518193b8207bdebf22c1380c2db8c554baff329) )
ROM_LOAD( "n88_0.rom", 0x8000, 0x2000, CRC(61984bab) SHA1(d1ae642aed4f0584eeb81ff50180db694e5101d4) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "disk.rom", 0x0000, 0x0800, CRC(2158d307) SHA1(bb7103a0818850a039c67ff666a31ce49a8d516f) )
-
ROM_REGION( 0x40000, "kanji", ROMREGION_ERASEFF)
ROM_LOAD_OPTIONAL( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
@@ -2477,9 +2350,6 @@ ROM_START( pc8801mk2 )
ROM_LOAD( "m2_n88.rom", 0x0000, 0x8000, CRC(f35169eb) SHA1(ef1f067f819781d9fb2713836d195866f0f81501) )
ROM_LOAD( "m2_n88_0.rom", 0x8000, 0x2000, CRC(5eb7a8d0) SHA1(95a70af83b0637a5a0f05e31fb0452bb2cb68055) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "disk.rom", 0x0000, 0x0800, CRC(2158d307) SHA1(bb7103a0818850a039c67ff666a31ce49a8d516f) )
-
ROM_REGION( 0x40000, "kanji", ROMREGION_ERASEFF)
ROM_LOAD_OPTIONAL( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
@@ -2498,13 +2368,6 @@ ROM_START( pc8801mk2sr )
ROM_LOAD( "n88_2.rom", 0xc000, 0x2000, CRC(af2b6efa) SHA1(b7c8bcea219b77d9cc3ee0efafe343cc307425d1) )
ROM_LOAD( "n88_3.rom", 0xe000, 0x2000, CRC(7713c519) SHA1(efce0b51cab9f0da6cf68507757f1245a2867a72) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "disk.rom", 0x0000, 0x0800, CRC(2158d307) SHA1(bb7103a0818850a039c67ff666a31ce49a8d516f) )
-
- /* No idea of the proper size: it has never been dumped */
- ROM_REGION( 0x2000, "audiocpu", 0)
- ROM_LOAD( "soundbios.rom", 0x0000, 0x2000, NO_DUMP )
-
ROM_REGION( 0x40000, "kanji", 0)
ROM_LOAD( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
ROM_LOAD( "kanji2.rom", 0x20000, 0x20000, CRC(154803cc) SHA1(7e6591cd465cbb35d6d3446c5a83b46d30fafe95) ) // it should not be here
@@ -2524,13 +2387,6 @@ ROM_START( pc8801mk2fr )
ROM_LOAD( "m2fr_n88_2.rom", 0xc000, 0x2000, CRC(98c3a7b2) SHA1(fc4980762d3caa56964d0ae583424756f511d186) )
ROM_LOAD( "m2fr_n88_3.rom", 0xe000, 0x2000, CRC(0ca08abd) SHA1(a5a42d0b7caa84c3bc6e337c9f37874d82f9c14b) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "m2fr_disk.rom", 0x0000, 0x0800, CRC(2163b304) SHA1(80da2dee49d4307f00895a129a5cfeff00cf5321) )
-
- /* No idea of the proper size: it has never been dumped */
- ROM_REGION( 0x2000, "audiocpu", 0)
- ROM_LOAD( "soundbios.rom", 0x0000, 0x2000, NO_DUMP )
-
ROM_REGION( 0x40000, "kanji", 0)
ROM_LOAD( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
@@ -2549,13 +2405,6 @@ ROM_START( pc8801mk2mr )
ROM_LOAD( "m2mr_n88_2.rom", 0xc000, 0x2000, CRC(11176e0b) SHA1(f13f14f3d62df61498a23f7eb624e1a646caea45) )
ROM_LOAD( "m2mr_n88_3.rom", 0xe000, 0x2000, CRC(0ca08abd) SHA1(a5a42d0b7caa84c3bc6e337c9f37874d82f9c14b) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "m2mr_disk.rom", 0x0000, 0x2000, CRC(2447516b) SHA1(1492116f15c426f9796dc2bb6fcccf2656c0ca75) )
-
- /* No idea of the proper size: it has never been dumped */
- ROM_REGION( 0x2000, "audiocpu", 0)
- ROM_LOAD( "soundbios.rom", 0x0000, 0x2000, NO_DUMP )
-
ROM_REGION( 0x40000, "kanji", 0)
ROM_LOAD( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
ROM_LOAD( "m2mr_kanji2.rom", 0x20000, 0x20000, CRC(376eb677) SHA1(bcf96584e2ba362218b813be51ea21573d1a2a78) )
@@ -2575,13 +2424,6 @@ ROM_START( pc8801mh )
ROM_LOAD( "mh_n88_2.rom", 0xc000, 0x2000, CRC(6aa6b6d8) SHA1(2a077ab444a4fd1470cafb06fd3a0f45420c39cc) )
ROM_LOAD( "mh_n88_3.rom", 0xe000, 0x2000, CRC(692cbcd8) SHA1(af452aed79b072c4d17985830b7c5dca64d4b412) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "mh_disk.rom", 0x0000, 0x2000, CRC(a222ecf0) SHA1(79e9c0786a14142f7a83690bf41fb4f60c5c1004) )
-
- /* No idea of the proper size: it has never been dumped */
- ROM_REGION( 0x2000, "audiocpu", 0)
- ROM_LOAD( "soundbios.rom", 0x0000, 0x2000, NO_DUMP )
-
ROM_REGION( 0x40000, "kanji", 0)
ROM_LOAD( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
ROM_LOAD( "mh_kanji2.rom", 0x20000, 0x20000, CRC(376eb677) SHA1(bcf96584e2ba362218b813be51ea21573d1a2a78) )
@@ -2601,13 +2443,6 @@ ROM_START( pc8801fa )
ROM_LOAD( "fa_n88_2.rom", 0xc000, 0x2000, CRC(6aee9a4e) SHA1(e94278682ef9e9bbb82201f72c50382748dcea2a) )
ROM_LOAD( "fa_n88_3.rom", 0xe000, 0x2000, CRC(692cbcd8) SHA1(af452aed79b072c4d17985830b7c5dca64d4b412) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "fa_disk.rom", 0x0000, 0x0800, CRC(2163b304) SHA1(80da2dee49d4307f00895a129a5cfeff00cf5321) )
-
- /* No idea of the proper size: it has never been dumped */
- ROM_REGION( 0x2000, "audiocpu", 0)
- ROM_LOAD( "soundbios.rom", 0x0000, 0x2000, NO_DUMP )
-
ROM_REGION( 0x40000, "kanji", 0 )
ROM_LOAD( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
ROM_LOAD( "fa_kanji2.rom", 0x20000, 0x20000, CRC(376eb677) SHA1(bcf96584e2ba362218b813be51ea21573d1a2a78) )
@@ -2627,13 +2462,6 @@ ROM_START( pc8801ma ) // newer floppy BIOS and Jisyo (dictionary) ROM
ROM_LOAD( "ma_n88_2.rom", 0xc000, 0x2000, CRC(6aee9a4e) SHA1(e94278682ef9e9bbb82201f72c50382748dcea2a) )
ROM_LOAD( "ma_n88_3.rom", 0xe000, 0x2000, CRC(692cbcd8) SHA1(af452aed79b072c4d17985830b7c5dca64d4b412) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "ma_disk.rom", 0x0000, 0x2000, CRC(a222ecf0) SHA1(79e9c0786a14142f7a83690bf41fb4f60c5c1004) )
-
- /* No idea of the proper size: it has never been dumped */
- ROM_REGION( 0x2000, "audiocpu", 0)
- ROM_LOAD( "soundbios.rom", 0x0000, 0x2000, NO_DUMP )
-
ROM_REGION( 0x40000, "kanji", 0 )
ROM_LOAD( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
ROM_LOAD( "ma_kanji2.rom", 0x20000, 0x20000, CRC(376eb677) SHA1(bcf96584e2ba362218b813be51ea21573d1a2a78) )
@@ -2657,13 +2485,6 @@ ROM_START( pc8801ma2 )
ROM_LOAD( "ma2_n88_2.rom", 0xc000, 0x2000, CRC(1d6277b6) SHA1(dd9c3e50169b75bb707ef648f20d352e6a8bcfe4) )
ROM_LOAD( "ma2_n88_3.rom", 0xe000, 0x2000, CRC(692cbcd8) SHA1(af452aed79b072c4d17985830b7c5dca64d4b412) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "ma2_disk.rom", 0x0000, 0x2000, CRC(a222ecf0) SHA1(79e9c0786a14142f7a83690bf41fb4f60c5c1004) )
-
- /* No idea of the proper size: it has never been dumped */
- ROM_REGION( 0x2000, "audiocpu", 0)
- ROM_LOAD( "soundbios.rom", 0x0000, 0x2000, NO_DUMP )
-
ROM_REGION( 0x40000, "kanji", 0)
ROM_LOAD( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
ROM_LOAD( "ma2_kanji2.rom", 0x20000, 0x20000, CRC(376eb677) SHA1(bcf96584e2ba362218b813be51ea21573d1a2a78) )
@@ -2686,16 +2507,9 @@ ROM_START( pc8801mc )
ROM_LOAD( "mc_n88_2.rom", 0xc000, 0x2000, CRC(1d6277b6) SHA1(dd9c3e50169b75bb707ef648f20d352e6a8bcfe4) )
ROM_LOAD( "mc_n88_3.rom", 0xe000, 0x2000, CRC(692cbcd8) SHA1(af452aed79b072c4d17985830b7c5dca64d4b412) )
- ROM_REGION( 0x10000, "fdccpu", 0)
- ROM_LOAD( "mc_disk.rom", 0x0000, 0x2000, CRC(a222ecf0) SHA1(79e9c0786a14142f7a83690bf41fb4f60c5c1004) )
-
ROM_REGION( 0x10000, "cdrom", 0 )
ROM_LOAD( "cdbios.rom", 0x0000, 0x10000, CRC(5c230221) SHA1(6394a8a23f44ea35fcfc3e974cf940bc8f84d62a) )
- /* No idea of the proper size: it has never been dumped */
- ROM_REGION( 0x2000, "audiocpu", 0)
- ROM_LOAD( "soundbios.rom", 0x0000, 0x2000, NO_DUMP )
-
ROM_REGION( 0x40000, "kanji", 0 )
ROM_LOAD( "kanji1.rom", 0x00000, 0x20000, CRC(6178bd43) SHA1(82e11a177af6a5091dd67f50a2f4bafda84d6556) )
ROM_LOAD( "mc_kanji2.rom", 0x20000, 0x20000, CRC(376eb677) SHA1(bcf96584e2ba362218b813be51ea21573d1a2a78) )
@@ -2716,15 +2530,15 @@ COMP( 1983, pc8801mk2, pc8801, 0, pc8801, pc88sr, pc8801_state, empt
COMP( 1985, pc8801mk2sr, pc8801, 0, pc8801, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801mkIISR", MACHINE_NOT_WORKING )
//COMP( 1985, pc8801mk2tr, pc8801, 0, pc8801, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801mkIITR", MACHINE_NOT_WORKING )
COMP( 1985, pc8801mk2fr, pc8801, 0, pc8801, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801mkIIFR", MACHINE_NOT_WORKING )
-COMP( 1985, pc8801mk2mr, pc8801, 0, pc8801, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801mkIIMR", MACHINE_NOT_WORKING )
+COMP( 1985, pc8801mk2mr, pc8801, 0, pc8801mk2mr, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801mkIIMR", MACHINE_NOT_WORKING )
-//COMP( 1986, pc8801fh, 0, 0, pc8801, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801FH", MACHINE_NOT_WORKING )
+//COMP( 1986, pc8801fh, 0, 0, pc8801mk2fr, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801FH", MACHINE_NOT_WORKING )
COMP( 1986, pc8801mh, pc8801, 0, pc8801fh, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801MH", MACHINE_NOT_WORKING )
COMP( 1987, pc8801fa, pc8801, 0, pc8801fh, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801FA", MACHINE_NOT_WORKING )
COMP( 1987, pc8801ma, pc8801, 0, pc8801ma, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801MA", MACHINE_NOT_WORKING )
-//COMP( 1988, pc8801fe, pc8801, 0, pc8801, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801FE", MACHINE_NOT_WORKING )
+//COMP( 1988, pc8801fe, pc8801, 0, pc8801fa, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801FE", MACHINE_NOT_WORKING )
COMP( 1988, pc8801ma2, pc8801, 0, pc8801ma, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801MA2", MACHINE_NOT_WORKING )
-//COMP( 1989, pc8801fe2, pc8801, 0, pc8801, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801FE2", MACHINE_NOT_WORKING )
+//COMP( 1989, pc8801fe2, pc8801, 0, pc8801fa, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801FE2", MACHINE_NOT_WORKING )
COMP( 1989, pc8801mc, pc8801, 0, pc8801mc, pc88sr, pc8801_state, empty_init, "NEC", "PC-8801MC", MACHINE_NOT_WORKING )
//COMP( 1989, pc98do, 0, 0, pc88va, pc88sr, pc8801_state, empty_init, "NEC", "PC-98DO", MACHINE_NOT_WORKING )