mirror of
https://github.com/holub/mame
synced 2025-04-16 21:44:32 +03:00
Commodore PET Joysticks and Sound Device [Ken White]
* pet_cass.xml - Added Supermon (Toronto PET User Group) [Ken White] - Replaced bad dump of Side B of Squiggle, Big Time / Monitor (the m command in the monitor now works correctly) [Ken White]
This commit is contained in:
parent
be3f3c7eba
commit
65b5c2a40c
@ -304,11 +304,11 @@
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="cur11" supported="partial">
|
<software name="cur11">
|
||||||
<description>Cursor 11</description>
|
<description>Cursor 11</description>
|
||||||
<year>1979</year>
|
<year>1979</year>
|
||||||
|
|
||||||
<!-- pet2001n Side A: COVER, DEMON!, HI CALC, WIPEOUT, PEG, STATES -->
|
<!-- pet2001n 2joysnd Side A: COVER, DEMON!, HI CALC, WIPEOUT, PEG, STATES -->
|
||||||
<publisher>The Code Works</publisher>
|
<publisher>The Code Works</publisher>
|
||||||
<part name="cass" interface="cbm_cass">
|
<part name="cass" interface="cbm_cass">
|
||||||
<dataarea name="cass" size="52073122">
|
<dataarea name="cass" size="52073122">
|
||||||
@ -317,11 +317,11 @@
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="cur12" supported="partial">
|
<software name="cur12">
|
||||||
<description>Cursor 12</description>
|
<description>Cursor 12</description>
|
||||||
<year>1979</year>
|
<year>1979</year>
|
||||||
|
|
||||||
<!-- pet2001n Side A: COVER12, CANYON!, GAUSS!, PICKUP, PIEGRAM, FLIGHT! -->
|
<!-- pet2001n 2joysnd Side A: COVER12, CANYON!, GAUSS!, PICKUP, PIEGRAM, FLIGHT! -->
|
||||||
<publisher>The Code Works</publisher>
|
<publisher>The Code Works</publisher>
|
||||||
<part name="cass" interface="cbm_cass">
|
<part name="cass" interface="cbm_cass">
|
||||||
<dataarea name="cass" size="60014980">
|
<dataarea name="cass" size="60014980">
|
||||||
@ -369,11 +369,11 @@
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="cur16" supported="partial">
|
<software name="cur16">
|
||||||
<description>Cursor 16</description>
|
<description>Cursor 16</description>
|
||||||
<year>1980</year>
|
<year>1980</year>
|
||||||
|
|
||||||
<!-- pet2001n Side A: COVER16, NAB!, FIRE!, ALIENS!, BONZO!, CATCH! -->
|
<!-- pet2001n 2joysnd Side A: COVER16, NAB!, FIRE!, ALIENS!, BONZO!, CATCH! -->
|
||||||
<publisher>The Code Works</publisher>
|
<publisher>The Code Works</publisher>
|
||||||
<part name="cass" interface="cbm_cass">
|
<part name="cass" interface="cbm_cass">
|
||||||
<dataarea name="cass" size="45885486">
|
<dataarea name="cass" size="45885486">
|
||||||
@ -2775,11 +2775,11 @@
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<software name="seawolf">
|
<software name="seawolf" supported="partial">
|
||||||
<description>Seawolf</description>
|
<description>Seawolf</description>
|
||||||
<year>1978</year>
|
<year>1978</year>
|
||||||
|
|
||||||
<!-- pet2001b joystick Side A: seawolf -->
|
<!-- pet2001b Side A: seawolf -->
|
||||||
<publisher>Creative Software</publisher>
|
<publisher>Creative Software</publisher>
|
||||||
<part name="cass" interface="cbm_cass">
|
<part name="cass" interface="cbm_cass">
|
||||||
<dataarea name="cass" size="9137146">
|
<dataarea name="cass" size="9137146">
|
||||||
@ -2841,8 +2841,8 @@
|
|||||||
|
|
||||||
<!-- pet2001 Side B: MONITOR -->
|
<!-- pet2001 Side B: MONITOR -->
|
||||||
<part name="cass2" interface="cbm_cass">
|
<part name="cass2" interface="cbm_cass">
|
||||||
<dataarea name="cass" size="2751568">
|
<dataarea name="cass" size="2751312">
|
||||||
<rom name="monitor (1978)(commodore business machines).wav" size="2751568" crc="22c03872" sha1="b6dc48fcb9a82f10730dacb8da6978a419b008e0" offset="0" />
|
<rom name="monitor (1978)(commodore business machines).wav" size="2751312" crc="47a31ba5" sha1="3801e52d49ee224246c6f7cbc0d9d79df181746a" offset="0" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
@ -2860,6 +2860,19 @@
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
|
<software name="supermon">
|
||||||
|
<description>Supermon</description>
|
||||||
|
<year>1979</year>
|
||||||
|
<publisher>Toronto PET User Group</publisher>
|
||||||
|
|
||||||
|
<!-- pet20018 Side A: SUPERMON -->
|
||||||
|
<part name="cass" interface="cbm_cass">
|
||||||
|
<dataarea name="cass" size="6244772">
|
||||||
|
<rom name="supermon1 rel (1979)(tpug)).wav" size="6244772" crc="84cd7682" sha1="edca3f9e751439002aa5e555d3885999db7dd809" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
<software name="swchec">
|
<software name="swchec">
|
||||||
<description>Soundware Checkers</description>
|
<description>Soundware Checkers</description>
|
||||||
<year>1978</year>
|
<year>1978</year>
|
||||||
|
@ -1047,6 +1047,8 @@ if (BUSES["PET"]~=null) then
|
|||||||
MAME_DIR .. "src/devices/bus/pet/petuja.h",
|
MAME_DIR .. "src/devices/bus/pet/petuja.h",
|
||||||
MAME_DIR .. "src/devices/bus/pet/cb2snd.cpp",
|
MAME_DIR .. "src/devices/bus/pet/cb2snd.cpp",
|
||||||
MAME_DIR .. "src/devices/bus/pet/cb2snd.h",
|
MAME_DIR .. "src/devices/bus/pet/cb2snd.h",
|
||||||
|
MAME_DIR .. "src/devices/bus/pet/2joysnd.h",
|
||||||
|
MAME_DIR .. "src/devices/bus/pet/2joysnd.cpp",
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
163
src/devices/bus/pet/2joysnd.cpp
Normal file
163
src/devices/bus/pet/2joysnd.cpp
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders: Ken White
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Commodore PET user port dual joystick and sound device emulation
|
||||||
|
|
||||||
|
BEST OF THE PET GAZETTE magazine documents attaching Atari-style joysticks
|
||||||
|
with DB-9S connectors to a DB-25P connector plugged into the user port.
|
||||||
|
page 42, PET AND THE DUAL JOYSTICKS by Chuck Johnson
|
||||||
|
page 47, STANDARD #1 (CB2 Sound)
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Connections
|
||||||
|
----------
|
||||||
|
User Joysticks
|
||||||
|
Port ____
|
||||||
|
/ |
|
||||||
|
F ----- | 1 | joy 1 up
|
||||||
|
> --- | 6 | joy 1 button
|
||||||
|
E ----- | 2 | joy 1 down
|
||||||
|
| 7 |
|
||||||
|
D ----- | 3 | joy 1 left
|
||||||
|
| 8 |
|
||||||
|
C ----- | 4 | joy 1 right
|
||||||
|
| 9 |
|
||||||
|
| 5 |
|
||||||
|
\____|
|
||||||
|
____
|
||||||
|
/ |
|
||||||
|
L ----- | 1 | joy 2 up
|
||||||
|
> --- | 6 | joy 2 button
|
||||||
|
K ----- | 2 | joy 2 down
|
||||||
|
| 7 |
|
||||||
|
J ----- | 3 | joy 2 left
|
||||||
|
| 8 |
|
||||||
|
H ----- | 4 | joy 2 right
|
||||||
|
| 9 |
|
||||||
|
| 5 |
|
||||||
|
\____|
|
||||||
|
|
||||||
|
M ----- audio amplifier
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "2joysnd.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// DEVICE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
const device_type PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE = &device_creator<pet_userport_joystick_and_sound_device>;
|
||||||
|
|
||||||
|
#define DAC_TAG "dac"
|
||||||
|
|
||||||
|
MACHINE_CONFIG_FRAGMENT( 2joysnd )
|
||||||
|
MCFG_SPEAKER_STANDARD_MONO("cb2spkr")
|
||||||
|
MCFG_SOUND_ADD(DAC_TAG, DAC, 0)
|
||||||
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "cb2spkr", 1.00)
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// INPUT_PORTS( 2joysnd )
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( 2joysnd )
|
||||||
|
PORT_START("JOY")
|
||||||
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, device_pet_user_port_interface, output_c)
|
||||||
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, device_pet_user_port_interface, output_d)
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, pet_userport_joystick_and_sound_device, write_down1)
|
||||||
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, pet_userport_joystick_and_sound_device, write_up1)
|
||||||
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, device_pet_user_port_interface, output_h)
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, device_pet_user_port_interface, output_j)
|
||||||
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, pet_userport_joystick_and_sound_device, write_down2)
|
||||||
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, pet_userport_joystick_and_sound_device, write_up2)
|
||||||
|
|
||||||
|
PORT_START("FIRE")
|
||||||
|
PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, pet_userport_joystick_and_sound_device, write_fire1)
|
||||||
|
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, pet_userport_joystick_and_sound_device, write_fire2)
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// input_ports - device-specific input ports
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
ioport_constructor pet_userport_joystick_and_sound_device::device_input_ports() const
|
||||||
|
{
|
||||||
|
return INPUT_PORTS_NAME( 2joysnd );
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// machine_config_additions - device-specific
|
||||||
|
// machine configurations
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
machine_config_constructor pet_userport_joystick_and_sound_device::device_mconfig_additions() const
|
||||||
|
{
|
||||||
|
return MACHINE_CONFIG_NAME( 2joysnd );
|
||||||
|
}
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// LIVE DEVICE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// pet_user_port_dual_joystick_and_sound_device - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
pet_userport_joystick_and_sound_device::pet_userport_joystick_and_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||||
|
device_t(mconfig, PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE, "Dual Joysticks and Sound", tag, owner, clock, "2joysnd", __FILE__),
|
||||||
|
device_pet_user_port_interface(mconfig, *this),
|
||||||
|
m_dac(*this, DAC_TAG),
|
||||||
|
m_up1(1),
|
||||||
|
m_down1(1),
|
||||||
|
m_fire1(1),
|
||||||
|
m_up2(1),
|
||||||
|
m_down2(1),
|
||||||
|
m_fire2(1)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void pet_userport_joystick_and_sound_device::device_start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// update_port1
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void pet_userport_joystick_and_sound_device::update_port1()
|
||||||
|
{
|
||||||
|
// printf( "update port1\n" );
|
||||||
|
output_f(m_up1 && m_fire1);
|
||||||
|
output_e(m_down1 && m_fire1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// update_port2
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void pet_userport_joystick_and_sound_device::update_port2()
|
||||||
|
{
|
||||||
|
// printf( "update port2\n" );
|
||||||
|
output_l(m_up2 && m_fire2);
|
||||||
|
output_k(m_down2 && m_fire2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_WRITE_LINE_MEMBER( pet_userport_joystick_and_sound_device::input_m )
|
||||||
|
{
|
||||||
|
m_dac->write_unsigned8(state ? 0xff : 0x00);
|
||||||
|
}
|
72
src/devices/bus/pet/2joysnd.h
Normal file
72
src/devices/bus/pet/2joysnd.h
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders: Ken White
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Commodore PET user port dual joystick and CB2 sound emulation
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef __2JOYSND__
|
||||||
|
#define __2JOYSND__
|
||||||
|
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "user.h"
|
||||||
|
#include "sound/dac.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// ======================> pet_userport_joystick_adapter_device
|
||||||
|
|
||||||
|
class pet_userport_joystick_and_sound_device : public device_t,
|
||||||
|
public device_pet_user_port_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
pet_userport_joystick_and_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
|
||||||
|
// optional information overrides
|
||||||
|
virtual ioport_constructor device_input_ports() const override;
|
||||||
|
|
||||||
|
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||||
|
|
||||||
|
virtual DECLARE_WRITE_LINE_MEMBER( input_m ) override;
|
||||||
|
|
||||||
|
required_device<dac_device> m_dac;
|
||||||
|
|
||||||
|
// device_pet_user_port_interface overrides
|
||||||
|
WRITE_LINE_MEMBER( write_up1 ) { m_up1 = state; update_port1(); }
|
||||||
|
WRITE_LINE_MEMBER( write_down1 ) { m_down1 = state; update_port1(); }
|
||||||
|
WRITE_LINE_MEMBER( write_fire1 ) { m_fire1 = state; update_port1(); }
|
||||||
|
WRITE_LINE_MEMBER( write_up2 ) { m_up2 = state; update_port2(); }
|
||||||
|
WRITE_LINE_MEMBER( write_down2 ) { m_down2 = state; update_port2(); }
|
||||||
|
WRITE_LINE_MEMBER( write_fire2 ) { m_fire2 = state; update_port2(); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
void update_port1();
|
||||||
|
void update_port2();
|
||||||
|
int m_up1;
|
||||||
|
int m_down1;
|
||||||
|
int m_fire1;
|
||||||
|
int m_up2;
|
||||||
|
int m_down2;
|
||||||
|
int m_fire2;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
extern const device_type PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE;
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@ -122,9 +122,11 @@ device_pet_user_port_interface::~device_pet_user_port_interface()
|
|||||||
#include "diag.h"
|
#include "diag.h"
|
||||||
#include "petuja.h"
|
#include "petuja.h"
|
||||||
#include "cb2snd.h"
|
#include "cb2snd.h"
|
||||||
|
#include "2joysnd.h"
|
||||||
|
|
||||||
SLOT_INTERFACE_START( pet_user_port_cards )
|
SLOT_INTERFACE_START( pet_user_port_cards )
|
||||||
SLOT_INTERFACE("diag", PET_USERPORT_DIAGNOSTIC_CONNECTOR)
|
SLOT_INTERFACE("diag", PET_USERPORT_DIAGNOSTIC_CONNECTOR)
|
||||||
SLOT_INTERFACE("petuja", PET_USERPORT_JOYSTICK_ADAPTER)
|
SLOT_INTERFACE("petuja", PET_USERPORT_JOYSTICK_ADAPTER)
|
||||||
SLOT_INTERFACE("cb2snd", PET_USERPORT_CB2_SOUND_DEVICE)
|
SLOT_INTERFACE("cb2snd", PET_USERPORT_CB2_SOUND_DEVICE)
|
||||||
|
SLOT_INTERFACE("2joysnd", PET_USERPORT_JOYSTICK_AND_SOUND_DEVICE)
|
||||||
SLOT_INTERFACE_END
|
SLOT_INTERFACE_END
|
||||||
|
Loading…
Reference in New Issue
Block a user