mirror of
https://github.com/holub/mame
synced 2025-10-07 17:27:06 +03:00
Merge pull request #545 from bmunger/r9751
R9751: Clean up, add timer register, and add another system disk set to software list
This commit is contained in:
commit
ef09a2723d
@ -6,16 +6,21 @@
|
|||||||
Releases known: 9004, 9005
|
Releases known: 9004, 9005
|
||||||
|
|
||||||
9005.6.84 - Last software release (1998)
|
9005.6.84 - Last software release (1998)
|
||||||
Install disks (7)
|
Install disks (7) - MN 19584
|
||||||
Disktool
|
Disktool - MN 19584
|
||||||
Mini Patch Volume MPV4-84
|
Mini Patch Volume MPV4-84 - MN 19274, 19584-36, 19684-35
|
||||||
Additional fixes up to year 2000
|
Additional fixes up to year 2000
|
||||||
RPDN Loadware
|
RPDN Loadware Version 6 - MN 19293-35
|
||||||
|
|
||||||
9005.6.82 (1995)
|
9005.6.82 (1995)
|
||||||
|
Install disks (7) - MN 19582
|
||||||
|
Disktool (missing)
|
||||||
|
Mini Patch Volume 2 - MN 19270
|
||||||
|
Additional fixes up to year 1996
|
||||||
|
RPDN Loadware Version 3.0 - MN 19293-35 PN 51D0553
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<!-- System Software -->
|
||||||
<softwarelist name="r9751" description="ROLM CBX 9751 floppy disk images">
|
<softwarelist name="r9751" description="ROLM CBX 9751 floppy disk images">
|
||||||
<software name="cbxr5684">
|
<software name="cbxr5684">
|
||||||
<description>Siemens ROLM 9751 CBX 9005.6.84</description>
|
<description>Siemens ROLM 9751 CBX 9005.6.84</description>
|
||||||
@ -82,4 +87,64 @@
|
|||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
|
<software name="cbxr5682">
|
||||||
|
<description>Siemens ROLM 9751 CBX 9005.6.82</description>
|
||||||
|
<year>1995</year>
|
||||||
|
<publisher>Siemens Rolm Communications Inc</publisher>
|
||||||
|
<part name="flop1" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="Disk 1" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.Disk1.img" size="1474560" crc="e9600226" sha1="89d18c6b16e66a6dcb74850bca972e54dc89f043" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop2" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="Disk 2" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.Disk2.img" size="1474560" crc="7a8053b5" sha1="fa439bf102143114bd27501619b63d02268e9788" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop3" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="Disk 3" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.Disk3.img" size="1474560" crc="03b4d15a" sha1="1cbdea2407ae1ff1eaa8c08ecadd92cca39a5f00" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop4" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="Disk 4" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.Disk4.img" size="1474560" crc="28377232" sha1="81a1bd74dff32381aefe12faffdf08d4e6532f67" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop5" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="Disk 5" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.Disk5.img" size="1474560" crc="8a8eb36e" sha1="e31ac428d4775d22fbf911f3abb8cf7a416159c1" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop6" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="Disk 6" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.Disk6.img" size="1474560" crc="b2bd782f" sha1="dcd982467132c32ed04a53fe1327272cf1ba8320" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop7" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="Disk 7" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.Disk7.img" size="1474560" crc="1695649f" sha1="dd5a9e5af910237f9a4b7e12d5fade15d1e1ceeb" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop8" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="Mini Patch Volume 2" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.Mini.Patch.Volume.2.img" size="1474560" crc="65d5021d" sha1="57a11686805f3873a4dde231a260943f2e2ab1b3" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
<part name="flop9" interface="floppy_3_5">
|
||||||
|
<feature name="part_id" value="RPDN Loadware Version 3.0" />
|
||||||
|
<dataarea name="flop" size="1474560">
|
||||||
|
<rom name="Siemens.9751.CBX.Release.9005.6.82.RPDN.Loadware.img" size="1474560" crc="f082df1f" sha1="ccfce632a2433b6c5ad6cd75130e999ce98daaea" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
</softwarelist>
|
</softwarelist>
|
||||||
|
@ -67,8 +67,8 @@ public:
|
|||||||
|
|
||||||
DECLARE_READ32_MEMBER(r9751_mmio_5ff_r);
|
DECLARE_READ32_MEMBER(r9751_mmio_5ff_r);
|
||||||
DECLARE_WRITE32_MEMBER(r9751_mmio_5ff_w);
|
DECLARE_WRITE32_MEMBER(r9751_mmio_5ff_w);
|
||||||
DECLARE_READ32_MEMBER(r9751_mmio_ff05_r);
|
DECLARE_READ32_MEMBER(r9751_mmio_ff05_r);
|
||||||
DECLARE_WRITE32_MEMBER(r9751_mmio_ff05_w);
|
DECLARE_WRITE32_MEMBER(r9751_mmio_ff05_w);
|
||||||
DECLARE_READ32_MEMBER(r9751_mmio_fff8_r);
|
DECLARE_READ32_MEMBER(r9751_mmio_fff8_r);
|
||||||
DECLARE_WRITE32_MEMBER(r9751_mmio_fff8_w);
|
DECLARE_WRITE32_MEMBER(r9751_mmio_fff8_w);
|
||||||
|
|
||||||
@ -77,7 +77,6 @@ public:
|
|||||||
|
|
||||||
DECLARE_DRIVER_INIT(r9751);
|
DECLARE_DRIVER_INIT(r9751);
|
||||||
|
|
||||||
//DECLARE_FLOPPY_FORMATS( floppy_formats );
|
|
||||||
private:
|
private:
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<pdc_device> m_pdc;
|
required_device<pdc_device> m_pdc;
|
||||||
@ -87,14 +86,13 @@ private:
|
|||||||
|
|
||||||
// Begin registers
|
// Begin registers
|
||||||
UINT32 reg_ff050004;
|
UINT32 reg_ff050004;
|
||||||
UINT32 reg_ff050320; // Counter?
|
|
||||||
UINT32 reg_fff80040;
|
UINT32 reg_fff80040;
|
||||||
UINT32 fdd_dest_address; // 5FF080B0
|
UINT32 fdd_dest_address; // 5FF080B0
|
||||||
UINT32 fdd_cmd_complete;
|
UINT32 fdd_cmd_complete;
|
||||||
UINT32 smioc_out_addr;
|
UINT32 smioc_out_addr;
|
||||||
|
attotime timer_32khz_last;
|
||||||
// End registers
|
// End registers
|
||||||
|
|
||||||
// UINT32 fdd_scsi_command;
|
|
||||||
address_space *m_mem;
|
address_space *m_mem;
|
||||||
|
|
||||||
// functions
|
// functions
|
||||||
@ -117,14 +115,12 @@ READ8_MEMBER(r9751_state::pdc_dma_r)
|
|||||||
|
|
||||||
WRITE8_MEMBER(r9751_state::pdc_dma_w)
|
WRITE8_MEMBER(r9751_state::pdc_dma_w)
|
||||||
{
|
{
|
||||||
/* NOTE: This needs to be changed to a function that accepts an address and data */
|
|
||||||
m_maincpu->space(AS_PROGRAM).write_byte(m_pdc->fdd_68k_dma_address,data);
|
m_maincpu->space(AS_PROGRAM).write_byte(m_pdc->fdd_68k_dma_address,data);
|
||||||
}
|
}
|
||||||
|
|
||||||
DRIVER_INIT_MEMBER(r9751_state,r9751)
|
DRIVER_INIT_MEMBER(r9751_state,r9751)
|
||||||
{
|
{
|
||||||
reg_ff050004 = 0;
|
reg_ff050004 = 0;
|
||||||
reg_ff050320 = 1;
|
|
||||||
reg_fff80040 = 0;
|
reg_fff80040 = 0;
|
||||||
fdd_dest_address = 0;
|
fdd_dest_address = 0;
|
||||||
// fdd_scsi_command = 0;
|
// fdd_scsi_command = 0;
|
||||||
@ -158,20 +154,16 @@ READ32_MEMBER( r9751_state::r9751_mmio_5ff_r )
|
|||||||
/* PDC HDD region (0x24, device 9) */
|
/* PDC HDD region (0x24, device 9) */
|
||||||
case 0x5FF00824: /* HDD Command result code */
|
case 0x5FF00824: /* HDD Command result code */
|
||||||
return 0x10;
|
return 0x10;
|
||||||
break;
|
|
||||||
case 0x5FF03024: /* HDD SCSI command completed successfully */
|
case 0x5FF03024: /* HDD SCSI command completed successfully */
|
||||||
data = 0x1;
|
data = 0x1;
|
||||||
if(TRACE_HDC) logerror("SCSI HDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
|
if(TRACE_HDC) logerror("SCSI HDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
|
||||||
return data;
|
return data;
|
||||||
break;
|
|
||||||
/* SMIOC region (0x98, device 26) */
|
/* SMIOC region (0x98, device 26) */
|
||||||
case 0x5FF00898: /* Serial status or DMA status */
|
case 0x5FF00898: /* Serial status or DMA status */
|
||||||
return 0x40;
|
return 0x40;
|
||||||
break;
|
|
||||||
/* PDC FDD region (0xB0, device 44 */
|
/* PDC FDD region (0xB0, device 44 */
|
||||||
case 0x5FF008B0: /* FDD Command result code */
|
case 0x5FF008B0: /* FDD Command result code */
|
||||||
return 0x10;
|
return 0x10;
|
||||||
break;
|
|
||||||
case 0x5FF010B0: /* Clear 5FF030B0 ?? */
|
case 0x5FF010B0: /* Clear 5FF030B0 ?? */
|
||||||
if(TRACE_FDC) logerror("--- FDD 0x5FF010B0 READ (0)\n");
|
if(TRACE_FDC) logerror("--- FDD 0x5FF010B0 READ (0)\n");
|
||||||
return 0;
|
return 0;
|
||||||
@ -179,7 +171,6 @@ READ32_MEMBER( r9751_state::r9751_mmio_5ff_r )
|
|||||||
data = (m_pdc->reg_p5 << 8) + m_pdc->reg_p4;
|
data = (m_pdc->reg_p5 << 8) + m_pdc->reg_p4;
|
||||||
if(TRACE_FDC) logerror("--- SCSI FDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
|
if(TRACE_FDC) logerror("--- SCSI FDD command completion status - Read: %08X, From: %08X, Register: %08X\n", data, space.machine().firstcpu->pc(), address);
|
||||||
return data;
|
return data;
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, 0, mem_mask);
|
if(TRACE_FDC || TRACE_HDC || TRACE_SMIOC) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, 0, mem_mask);
|
||||||
return 0;
|
return 0;
|
||||||
@ -306,23 +297,16 @@ READ32_MEMBER( r9751_state::r9751_mmio_ff05_r )
|
|||||||
{
|
{
|
||||||
case 0xFF050004:
|
case 0xFF050004:
|
||||||
return reg_ff050004;
|
return reg_ff050004;
|
||||||
break;
|
|
||||||
case 0xFF050300:
|
case 0xFF050300:
|
||||||
return 0x1B | (1<<0x14);
|
return 0x1B | (1<<0x14);
|
||||||
break;
|
|
||||||
case 0xFF050320: /* Some type of counter */
|
case 0xFF050320: /* Some type of counter */
|
||||||
reg_ff050320++;
|
return (machine().time() - timer_32khz_last).as_ticks(32768) & 0xFFFF;
|
||||||
return reg_ff050320;
|
|
||||||
break;
|
|
||||||
case 0xFF050584:
|
case 0xFF050584:
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
|
||||||
case 0xFF050610:
|
case 0xFF050610:
|
||||||
return 0xabacabac;
|
return 0xabacabac;
|
||||||
break;
|
|
||||||
case 0xFF060014:
|
case 0xFF060014:
|
||||||
return 0x80;
|
return 0x80;
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
data = 0;
|
data = 0;
|
||||||
if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
|
if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
|
||||||
@ -339,11 +323,11 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_ff05_w )
|
|||||||
case 0xFF050004:
|
case 0xFF050004:
|
||||||
reg_ff050004 = data;
|
reg_ff050004 = data;
|
||||||
return;
|
return;
|
||||||
break;
|
|
||||||
case 0xFF05000C: /* CPU LED hex display indicator */
|
case 0xFF05000C: /* CPU LED hex display indicator */
|
||||||
if(TRACE_LED) logerror("\n*** LED: %02x, Instruction: %08x ***\n\n", data, space.machine().firstcpu->pc());
|
if(TRACE_LED) logerror("\n*** LED: %02x, Instruction: %08x ***\n\n", data, space.machine().firstcpu->pc());
|
||||||
return;
|
return;
|
||||||
break;
|
case 0xFF050320:
|
||||||
|
timer_32khz_last = machine().time();
|
||||||
default:
|
default:
|
||||||
if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
|
if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
|
||||||
return;
|
return;
|
||||||
@ -359,7 +343,6 @@ READ32_MEMBER( r9751_state::r9751_mmio_fff8_r )
|
|||||||
{
|
{
|
||||||
case 0xFFF80040:
|
case 0xFFF80040:
|
||||||
return reg_fff80040;
|
return reg_fff80040;
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
data = 0;
|
data = 0;
|
||||||
if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
|
if(TRACE_CPU_REG) logerror("Instruction: %08x READ MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
|
||||||
@ -376,7 +359,6 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w )
|
|||||||
case 0xFFF80040:
|
case 0xFFF80040:
|
||||||
reg_fff80040 = data;
|
reg_fff80040 = data;
|
||||||
return;
|
return;
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
|
if(TRACE_CPU_REG) logerror("Instruction: %08x WRITE MMIO(%08x): %08x & %08x\n", space.machine().firstcpu->pc(), address, data, mem_mask);
|
||||||
}
|
}
|
||||||
@ -389,10 +371,9 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w )
|
|||||||
static ADDRESS_MAP_START(r9751_mem, AS_PROGRAM, 32, r9751_state)
|
static ADDRESS_MAP_START(r9751_mem, AS_PROGRAM, 32, r9751_state)
|
||||||
//ADDRESS_MAP_UNMAP_HIGH
|
//ADDRESS_MAP_UNMAP_HIGH
|
||||||
AM_RANGE(0x00000000,0x00ffffff) AM_RAM AM_SHARE("main_ram") // 16MB
|
AM_RANGE(0x00000000,0x00ffffff) AM_RAM AM_SHARE("main_ram") // 16MB
|
||||||
//AM_RANGE(0x01000000,0x07ffffff) AM_NOP
|
|
||||||
AM_RANGE(0x08000000,0x0800ffff) AM_ROM AM_REGION("prom", 0)
|
AM_RANGE(0x08000000,0x0800ffff) AM_ROM AM_REGION("prom", 0)
|
||||||
AM_RANGE(0x5FF00000,0x5FFFFFFF) AM_READWRITE(r9751_mmio_5ff_r, r9751_mmio_5ff_w)
|
AM_RANGE(0x5FF00000,0x5FFFFFFF) AM_READWRITE(r9751_mmio_5ff_r, r9751_mmio_5ff_w)
|
||||||
AM_RANGE(0xFF050000,0xFF06FFFF) AM_READWRITE(r9751_mmio_ff05_r, r9751_mmio_ff05_w)
|
AM_RANGE(0xFF050000,0xFF06FFFF) AM_READWRITE(r9751_mmio_ff05_r, r9751_mmio_ff05_w)
|
||||||
AM_RANGE(0xFFF80000,0xFFF8FFFF) AM_READWRITE(r9751_mmio_fff8_r, r9751_mmio_fff8_w)
|
AM_RANGE(0xFFF80000,0xFFF8FFFF) AM_READWRITE(r9751_mmio_fff8_r, r9751_mmio_fff8_w)
|
||||||
//AM_RANGE(0xffffff00,0xffffffff) AM_RAM // Unknown area
|
//AM_RANGE(0xffffff00,0xffffffff) AM_RAM // Unknown area
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
Loading…
Reference in New Issue
Block a user