Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 85 additions & 3 deletions hash/pc98_cd.xml
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,87 @@ Has [PC9801-86] DAC FIFO issues
</part>
</software>

<software name="plamo3x" supported="partial">
<!--
Origin: Plamo Linux ring.gr.jp
plamo-3.x.iso sha1=a454655ddf48934d01a508911f3c4825434cee7c md5=c0a2ff5216fd3457399268f2ba0d983a
plamo-3.x-contrib.iso sha1=d80d57bfc3ecf05343f0bcbdde30bd5e10525137 md5=0c969f5643aa48355551902f54f563f1
-->
<description>Plamo Linux 3.x</description>
<year>2003</year>
<publisher>Plamo Linux</publisher>
<notes><![CDATA[
Slackware-based distro
https://git.sr.ht/~nkali/plamo98-goodies/tree/main/item/plamo3x/install.md
pc9821ap2: installer randomly corrupt logs at startup when entering 256 color mode (clear output fixes it)
Cannot install GRUB once install completed, need workaround (verify)
Booting with load rootdsk from (fd1) fails (verify, GRUB has issues specifically with these disks)
]]></notes>
<info name="usage" value="cfr. detailed URL in XML notes node" />
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Boot Disk" />
<dataarea name="flop" size="1474560">
<rom name="bootdsk.img" size="1474560" crc="38647e2a" sha1="b959b43cbacc5b189fd6246312413cda9fe8ff19" />
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Root Disk" />
<dataarea name="flop" size="1474560">
<rom name="rootdsk.img" size="1474560" crc="e8fd82e8" sha1="9c23f79967d2af34c7790d14166645e35fd56e55" />
</dataarea>
</part>
<part name="cdrom1" interface="cdrom">
<diskarea name="cdrom">
<disk name="plamo-3.x" sha1="6dbb4e58161b8117832d95c524b98d8addb5cade"/>
</diskarea>
</part>
<part name="cdrom2" interface="cdrom">
<diskarea name="cdrom">
<disk name="plamo-3.x-contrib" sha1="35aa2f1bf839be0417a45bcc309f5f64457285c6"/>
</diskarea>
</part>
</software>

<software name="plamo33" supported="partial">
<!--
Origin: Plamo Linux ring.gr.jp
plamo-3.3.iso sha1=80012a39c4567ac649fd3ba94c3e51e1e8a29e8d md5=ace1849cbf2cdfc6b657e2e2254f0821
plamo-3.3-contrib.iso sha1=15aba189c5846db625589135aa248134e311afa3 md5=af5f608ec74d356b8fb1fa307ccbcbe4
-->
<description>Plamo Linux 3.3</description>
<year>2003</year>
<publisher>Plamo Linux</publisher>
<notes><![CDATA[
Slackware-based distro, cfr. plamo3x
]]></notes>
<info name="usage" value="cfr. detailed URL in plamo3x XML notes node" />
<part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Boot Disk" />
<dataarea name="flop" size="1474560">
<rom name="bootdsk.img" size="1474560" crc="f8cc84cc" sha1="64e3d3d148a931adb8607cdd5f35d4273cd7ea87" />
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<feature name="part_id" value="Root Disk" />
<dataarea name="flop" size="1474560">
<rom name="rootdsk.img" size="1474560" crc="a686291e" sha1="fa5e61023925788774458e7f49ea2a16efadef1b" />
</dataarea>
</part>
<part name="cdrom1" interface="cdrom">
<diskarea name="cdrom">
<disk name="plamo-3.3" sha1="6f8b0a3c0d947bb30cd632cad7789a77ac664f8d"/>
</diskarea>
</part>
<part name="cdrom2" interface="cdrom">
<diskarea name="cdrom">
<disk name="plamo-3.3-contrib" sha1="a2abdc63bae1e9e7ddcf5458941909c2dad5b8fd"/>
</diskarea>
</part>
</software>

<!--

Current status of Windows OSes:
Outdated status of Windows OSes (i.e. test me again, move to notes)

Windows 95: works, but the PC-9801-86 driver has some trouble playing sounds
Windows 98: installer complains about not having at least a 66 MHz CPU
Expand Down Expand Up @@ -308,7 +386,7 @@ Has [PC9801-86] DAC FIFO issues
</part>
</software>

<software name="win95" supported="partial">
<software name="win95">
<!--
Origin: Unknown
<rom name="Microsoft Windows 95 PC-98 (JPN).iso" size="81395712" crc="d402c155" sha1="14d10f62db11397ea46bdf02d1619f1b8e1ff345"/>
Expand Down Expand Up @@ -366,6 +444,7 @@ Has [PC9801-86] DAC FIFO issues
</part>
</software>

<!-- TODO: retest me, potentially lift partial -->
<software name="win95o2" supported="partial">
<!--
Origin: Neo Kobe Collection
Expand Down Expand Up @@ -465,7 +544,7 @@ Has [PC9801-86] DAC FIFO issues
</part>
</software>

<software name="xa12c8ss">
<software name="xa12c8ss" supported="no">
<!--
Origin: Neo Kobe Collection
CCD converted to CUE with GNU ccd2cue
Expand All @@ -477,6 +556,9 @@ Has [PC9801-86] DAC FIFO issues
<description>PC-9821Xa12C8 System Software</description>
<year>1995</year>
<publisher>NEC</publisher>
<notes><![CDATA[
Media for undumped pc9821xa12
]]></notes>
<part name="flop1" interface="floppy_5_25">
<feature name="part_id" value="System Install Disk #1" />
<dataarea name="flop" size="1261568">
Expand Down
6 changes: 6 additions & 0 deletions scripts/src/bus.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5453,6 +5453,8 @@ if (BUSES["CBUS"]~=null) then
MAME_DIR .. "src/devices/bus/cbus/mif201.h",
MAME_DIR .. "src/devices/bus/cbus/mpu_pc98.cpp",
MAME_DIR .. "src/devices/bus/cbus/mpu_pc98.h",
MAME_DIR .. "src/devices/bus/cbus/options.cpp",
MAME_DIR .. "src/devices/bus/cbus/options.h",
MAME_DIR .. "src/devices/bus/cbus/pc9801_26.cpp",
MAME_DIR .. "src/devices/bus/cbus/pc9801_26.h",
MAME_DIR .. "src/devices/bus/cbus/pc9801_55.cpp",
Expand All @@ -5465,6 +5467,10 @@ if (BUSES["CBUS"]~=null) then
MAME_DIR .. "src/devices/bus/cbus/pc9801_cbus.h",
MAME_DIR .. "src/devices/bus/cbus/sb16_ct2720.cpp",
MAME_DIR .. "src/devices/bus/cbus/sb16_ct2720.h",
MAME_DIR .. "src/devices/bus/cbus/sound.cpp",
MAME_DIR .. "src/devices/bus/cbus/sound.h",
MAME_DIR .. "src/devices/bus/cbus/wavestar.cpp",
MAME_DIR .. "src/devices/bus/cbus/wavestar.h",
}
end

Expand Down
45 changes: 45 additions & 0 deletions src/devices/bus/cbus/options.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// license: BSD-3-Clause
// copyright-holders: Angelo Salese

#include "emu.h"
#include "options.h"

#include "amd98.h"
#include "pc9801_26.h"
#include "pc9801_55.h"
#include "pc9801_86.h"
#include "pc9801_118.h"
#include "mpu_pc98.h"
#include "pc9801_cbus.h"
#include "sb16_ct2720.h"
#include "sound.h"
#include "wavestar.h"


void pc98_cbus_devices(device_slot_interface &device)
{
// official HW
// PC-9801-14
device.option_add("pc9801_26", PC9801_26);
device.option_add("pc9801_55u", PC9801_55U);
device.option_add("pc9801_55l", PC9801_55L);
device.option_add("pc9801_86", PC9801_86);
device.option_add("pc9801_118", PC9801_118);
device.option_add("pc9801_spb", PC9801_SPEAKBOARD);
// Spark Board
device.option_add("amd98", AMD98);
device.option_add("mpu_pc98", MPU_PC98);
device.option_add("sb16", SB16_CT2720);
device.option_add("wavestar", QVISION_WAVESTAR);

// doujinshi HW
// MAD Factory / Doujin Hard (同人ハード)
// MAD Factory Chibi-Oto: an ADPCM override for -86
// MAD Factory Otomi-chan: "TORIE9211 MAD FACTORY" printed on proto PCB, just overrides for ADPCM for -86?
device.option_add("otomichan_kai", OTOMICHAN_KAI);

// internal sound options
device.option_add_internal("sound_pc9821ce", SOUND_PC9821CE);
device.option_add_internal("sound_pc9821cx3", SOUND_PC9821CX3);
}

11 changes: 11 additions & 0 deletions src/devices/bus/cbus/options.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// license: BSD-3-Clause
// copyright-holders: Angelo Salese

#ifndef MAME_BUS_CBUS_OPTIONS_H
#define MAME_BUS_CBUS_OPTIONS_H

#pragma once

void pc98_cbus_devices(device_slot_interface &device);

#endif // MAME_BUS_CBUS_OPTIONS_H
31 changes: 12 additions & 19 deletions src/devices/bus/cbus/pc9801_118.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,20 @@ Doesn't have a sound ROM, it also cannot be installed with an environment also s
#define XTAL_5B 24.576_MHz_XTAL
#define XTAL_5D 33.8688_MHz_XTAL

//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************

// device type definition
DEFINE_DEVICE_TYPE(PC9801_118, pc9801_118_device, "pc9801_118", "NEC PC-9801-118")

pc9801_118_device::pc9801_118_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock)
, m_bus(*this, DEVICE_SELF_OWNER)
, m_opn3(*this, "opn3")
{
}

pc9801_118_device::pc9801_118_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: pc9801_118_device(mconfig, PC9801_118, tag, owner, clock)
{
}

void pc9801_118_device::device_add_mconfig(machine_config &config)
{
// TODO: "ANCHOR" & "MAZE" custom NEC chips
Expand Down Expand Up @@ -130,20 +137,6 @@ const tiny_rom_entry *pc9801_118_device::device_rom_region() const
return ROM_NAME( pc9801_118 );
}

//**************************************************************************
// LIVE DEVICE
//**************************************************************************

//-------------------------------------------------
// pc9801_118_device - constructor
//-------------------------------------------------

pc9801_118_device::pc9801_118_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, PC9801_118, tag, owner, clock),
m_bus(*this, DEVICE_SELF_OWNER),
m_opn3(*this, "opn3")
{
}

void pc9801_118_device::device_start()
{
Expand Down
6 changes: 4 additions & 2 deletions src/devices/bus/cbus/pc9801_118.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ class pc9801_118_device : public device_t
void ext_w(offs_t offset, uint8_t data);

protected:
pc9801_118_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);

// device-level overrides
virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override ATTR_COLD;
Expand All @@ -44,9 +46,9 @@ class pc9801_118_device : public device_t
virtual ioport_constructor device_input_ports() const override ATTR_COLD;
virtual const tiny_rom_entry *device_rom_region() const override ATTR_COLD;

private:
required_device<pc9801_slot_device> m_bus;
required_device<ym2608_device> m_opn3;
required_device<ym2608_device> m_opn3;
private:

// u16 m_io_base, m_joy_sel;

Expand Down
34 changes: 7 additions & 27 deletions src/devices/bus/cbus/pc9801_55.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,21 @@
// copyright-holders:Angelo Salese
/**************************************************************************************************

NEC PC-9801-55/-55U/-55L
NEC PC-9801-55/-55U/-55L

SCSI interface, running on WD33C93A
SCSI interface, running on WD33C93A

TODO:
- Is PC-9801-55 also running on this except with WD33C93 instead?
Will see once we obtain a dump of that;
- DIP is never taken (definitely lies at vector 0x2c -> PC=0xdc01e);
- DRQ
- All roms seems to be misdumped (too generous sizes), is it intentional?
TODO:
- Accesses registers that doesn't exist in wd33c9x core, NEC overlay?
- DIP is never taken (definitely lies at vector 0x2c -> PC=0xdc01e);
- DMA / DRQ;
- PC-9801-55 also runs on this except with vanilla WD33C93 instead;

**************************************************************************************************/

#include "emu.h"
#include "bus/cbus/pc9801_55.h"

//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************

// device type definition
DEFINE_DEVICE_TYPE(PC9801_55U, pc9801_55u_device, "pc9801_55u", "NEC PC-9801-55U")
DEFINE_DEVICE_TYPE(PC9801_55L, pc9801_55l_device, "pc9801_55l", "NEC PC-9801-55L")

Expand Down Expand Up @@ -52,10 +46,6 @@ const tiny_rom_entry *pc9801_55l_device::device_rom_region() const
return ROM_NAME( pc9801_55l );
}

//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------

void pc9801_55_device::scsi_irq_w(int state)
{
// TODO: should be INT3, but BIOS configures as INT0 somewhere (unhandled dip reading?)
Expand Down Expand Up @@ -164,20 +154,10 @@ pc9801_55l_device::pc9801_55l_device(const machine_config &mconfig, const char *

}


//-------------------------------------------------
// device_validity_check - perform validity checks
// on this device
//-------------------------------------------------

void pc9801_55_device::device_validity_check(validity_checker &valid) const
{
}

//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------

void pc9801_55_device::device_start()
{
m_bus->program_space().install_rom(
Expand Down
3 changes: 2 additions & 1 deletion src/devices/bus/cbus/pc9801_86.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,13 @@ class pc9801_86_device : public device_t
public:
// construction/destruction
pc9801_86_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
pc9801_86_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);

static constexpr feature_type unemulated_features() { return feature::MICROPHONE; }
static constexpr feature_type imperfect_features() { return feature::SOUND; }

protected:
pc9801_86_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);

void io_map(address_map &map) ATTR_COLD;
u8 pcm_control_r();
void pcm_control_w(u8 data);
Expand Down
Loading
Loading