verfied anem, bnem, ayy.

entex pacman2 and galaxian2 are playable, coleco alien attack still seems glitchy
This commit is contained in:
hap 2015-03-21 01:13:57 +01:00
parent ec7e08d074
commit c5bfb8287f
3 changed files with 86 additions and 116 deletions

View File

@ -575,107 +575,65 @@ void hmcs40_cpu_device::execute_run()
// fetch next opcode
debugger_instruction_hook(this, m_pc);
m_op = m_program->read_word(m_pc << 1) & 0x3ff;
m_i = BITSWAP8(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for immediate param (except for XAMR?)
m_i = BITSWAP8(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for 4-bit immediate param (except for XAMR)
increment_pc();
// handle opcode
switch (m_op)
{
// unknown:
/*
lay 118
ayy 058
syy 258
am 034
anem 124/324/024/234
alem
bnem
blem
nega 244
*/
case 0x118:
op_lay(); // probably lay
break;
case 0x034:
op_am(); // probably am
break;
case 0x124:
//op_illegal();
op_alem();
break;
case 0x324:
//op_illegal();
op_anem();
break;
case 0x024:
//op_illegal();
op_bnem();
break;
case 0x234:
//op_illegal();
op_blem();
break;
/* 0x000 */
case 0x000: case 0x001: case 0x002: case 0x003:
/* ok */ op_xsp(); break;
op_xsp(); break;
case 0x004: case 0x005: case 0x006: case 0x007:
op_sem(); break;
case 0x008: case 0x009: case 0x00a: case 0x00b:
/* ok */ op_lam(); break;
op_lam(); break;
case 0x010: case 0x011: case 0x012: case 0x013: case 0x014: case 0x015: case 0x016: case 0x017:
case 0x018: case 0x019: case 0x01a: case 0x01b: case 0x01c: case 0x01d: case 0x01e: case 0x01f:
/* ok */ op_lmiiy(); break;
op_lmiiy(); break;
case 0x020: case 0x021: case 0x022: case 0x023:
op_lbm(); break;
case 0x024:
op_blem(); break;
case 0x030:
/* ok */ op_amc(); break;
op_amc(); break;
case 0x034:
op_am(); break;
case 0x03c:
op_lta(); break;
case 0x040:
/* ok */ op_lxa(); break;
op_lxa(); break;
case 0x045:
/* ok */ op_das(); break;
op_das(); break;
case 0x046:
/* ok */ op_daa(); break;
op_daa(); break;
case 0x04c:
/* ok */ op_rec(); break;
op_rec(); break;
case 0x04f:
/* ok */ op_sec(); break;
op_sec(); break;
case 0x050:
op_lya(); break;
case 0x054:
/* ok */ op_iy(); break;
op_iy(); break;
case 0x058:
op_ayy(); break;
case 0x060:
op_lba(); break;
case 0x064:
op_ib(); break;
case 0x070: case 0x071: case 0x072: case 0x073: case 0x074: case 0x075: case 0x076: case 0x077:
case 0x078: case 0x079: case 0x07a: case 0x07b: case 0x07c: case 0x07d: case 0x07e: case 0x07f:
/* ok */ op_lai(); break;
op_lai(); break;
case 0x080: case 0x081: case 0x082: case 0x083: case 0x084: case 0x085: case 0x086: case 0x087:
case 0x088: case 0x089: case 0x08a: case 0x08b: case 0x08c: case 0x08d: case 0x08e: case 0x08f:
/* ok */ op_ai(); break;
op_ai(); break;
case 0x090:
/* ok */ op_sed(); break;
op_sed(); break;
case 0x094:
/* ok */ op_td(); break;
op_td(); break;
case 0x0a0:
op_seif1(); break;
case 0x0a1:
@ -683,7 +641,7 @@ void hmcs40_cpu_device::execute_run()
case 0x0a2:
op_seif0(); break;
case 0x0a4:
/* ok */ op_seie(); break;
op_seie(); break;
case 0x0a5:
op_setf(); break;
@ -696,30 +654,34 @@ void hmcs40_cpu_device::execute_run()
op_lbr(); break;
case 0x0f0: case 0x0f1: case 0x0f2: case 0x0f3: case 0x0f4: case 0x0f5: case 0x0f6: case 0x0f7:
case 0x0f8: case 0x0f9: case 0x0fa: case 0x0fb: case 0x0fc: case 0x0fd: case 0x0fe: case 0x0ff:
/* ok */ op_xamr(); break;
op_xamr(); break;
/* 0x100 */
/* ok */ case 0x110: case 0x111:
case 0x110: case 0x111:
op_lmaiy(); break;
/* ok */ case 0x114: case 0x115:
case 0x114: case 0x115:
op_lmady(); break;
case 0x118:
op_lay(); break;
case 0x120:
op_or(); break;
case 0x124:
op_anem(); break;
case 0x140: case 0x141: case 0x142: case 0x143: case 0x144: case 0x145: case 0x146: case 0x147:
case 0x148: case 0x149: case 0x14a: case 0x14b: case 0x14c: case 0x14d: case 0x14e: case 0x14f:
/* ok */ op_lxi(); break;
op_lxi(); break;
case 0x150: case 0x151: case 0x152: case 0x153: case 0x154: case 0x155: case 0x156: case 0x157:
case 0x158: case 0x159: case 0x15a: case 0x15b: case 0x15c: case 0x15d: case 0x15e: case 0x15f:
/* ok */ op_lyi(); break;
op_lyi(); break;
case 0x160: case 0x161: case 0x162: case 0x163: case 0x164: case 0x165: case 0x166: case 0x167:
case 0x168: case 0x169: case 0x16a: case 0x16b: case 0x16c: case 0x16d: case 0x16e: case 0x16f:
/* ok */ op_lbi(); break;
op_lbi(); break;
case 0x170: case 0x171: case 0x172: case 0x173: case 0x174: case 0x175: case 0x176: case 0x177:
case 0x178: case 0x179: case 0x17a: case 0x17b: case 0x17c: case 0x17d: case 0x17e: case 0x17f:
/* ok */ op_lti(); break;
op_lti(); break;
case 0x1a0:
op_tif1(); break;
@ -740,7 +702,7 @@ void hmcs40_cpu_device::execute_run()
case 0x1e8: case 0x1e9: case 0x1ea: case 0x1eb: case 0x1ec: case 0x1ed: case 0x1ee: case 0x1ef:
case 0x1f0: case 0x1f1: case 0x1f2: case 0x1f3: case 0x1f4: case 0x1f5: case 0x1f6: case 0x1f7:
case 0x1f8: case 0x1f9: case 0x1fa: case 0x1fb: case 0x1fc: case 0x1fd: case 0x1fe: case 0x1ff:
/* ok */ op_br(); break;
op_br(); break;
/* 0x200 */
@ -750,42 +712,48 @@ void hmcs40_cpu_device::execute_run()
case 0x204: case 0x205: case 0x206: case 0x207:
op_rem(); break;
case 0x208: case 0x209: case 0x20a: case 0x20b:
/* ok */ op_xma(); break;
op_xma(); break;
case 0x210: case 0x211: case 0x212: case 0x213: case 0x214: case 0x215: case 0x216: case 0x217:
case 0x218: case 0x219: case 0x21a: case 0x21b: case 0x21c: case 0x21d: case 0x21e: case 0x21f:
op_mnei(); break;
case 0x220: case 0x221: case 0x222: case 0x223:
/* ok */ op_xmb(); break;
op_xmb(); break;
case 0x224:
/* ok */ op_rotr(); break;
op_rotr(); break;
case 0x225:
/* ok */ op_rotl(); break;
op_rotl(); break;
case 0x230:
/* ok */ op_smc(); break;
op_smc(); break;
case 0x234:
op_alem(); break;
case 0x23c:
op_lat(); break;
case 0x240:
/* ok */ op_laspx(); break;
op_laspx(); break;
case 0x244:
op_nega(); break;
case 0x24f:
op_tc(); break;
case 0x250:
/* ok */ op_laspy(); break;
op_laspy(); break;
case 0x254:
op_dy(); break;
case 0x258:
op_syy(); break;
case 0x260:
/* ok */ op_lab(); break;
op_lab(); break;
case 0x267:
op_db(); break;
case 0x270: case 0x271: case 0x272: case 0x273: case 0x274: case 0x275: case 0x276: case 0x277:
case 0x278: case 0x279: case 0x27a: case 0x27b: case 0x27c: case 0x27d: case 0x27e: case 0x27f:
/* ok */ op_alei(); break;
op_alei(); break;
case 0x280: case 0x281: case 0x282: case 0x283: case 0x284: case 0x285: case 0x286: case 0x287:
case 0x288: case 0x289: case 0x28a: case 0x28b: case 0x28c: case 0x28d: case 0x28e: case 0x28f:
/* ok */ op_ynei(); break;
op_ynei(); break;
case 0x290:
/* ok */ op_red(); break;
op_red(); break;
case 0x2a0:
op_reif1(); break;
case 0x2a1:
@ -795,10 +763,10 @@ void hmcs40_cpu_device::execute_run()
case 0x2a4:
op_reie(); break;
case 0x2a5:
/* ok */ op_retf(); break;
op_retf(); break;
case 0x2c0: case 0x2c1: case 0x2c2: case 0x2c3: case 0x2c4: case 0x2c5: case 0x2c6: case 0x2c7:
/* ok */ op_lra(); break;
op_lra(); break;
case 0x2d0: case 0x2d1: case 0x2d2: case 0x2d3: case 0x2d4: case 0x2d5: case 0x2d6: case 0x2d7:
case 0x2d8: case 0x2d9: case 0x2da: case 0x2db: case 0x2dc: case 0x2dd: case 0x2de: case 0x2df:
op_redd(); break;
@ -809,21 +777,23 @@ void hmcs40_cpu_device::execute_run()
/* 0x300 */
case 0x320:
op_comb(); break;
case 0x324:
op_bnem(); break;
case 0x340: case 0x341: case 0x342: case 0x343: case 0x344: case 0x345: case 0x346: case 0x347:
case 0x348: case 0x349: case 0x34a: case 0x34b: case 0x34c: case 0x34d: case 0x34e: case 0x34f:
case 0x350: case 0x351: case 0x352: case 0x353: case 0x354: case 0x355: case 0x356: case 0x357:
case 0x358: case 0x359: case 0x35a: case 0x35b: case 0x35c: case 0x35d: case 0x35e: case 0x35f:
/* ok */ op_lpu(); break;
op_lpu(); break;
case 0x360: case 0x361: case 0x362: case 0x363: case 0x364: case 0x365: case 0x366: case 0x367:
op_tbr(); break;
case 0x368: case 0x369: case 0x36a: case 0x36b: case 0x36c: case 0x36d: case 0x36e: case 0x36f:
/* ok */ op_p(); break;
op_p(); break;
case 0x3a4:
/* ok */ op_rtni(); break;
op_rtni(); break;
case 0x3a7:
/* ok */ op_rtn(); break;
op_rtn(); break;
case 0x3c0: case 0x3c1: case 0x3c2: case 0x3c3: case 0x3c4: case 0x3c5: case 0x3c6: case 0x3c7:
case 0x3c8: case 0x3c9: case 0x3ca: case 0x3cb: case 0x3cc: case 0x3cd: case 0x3ce: case 0x3cf:
@ -833,7 +803,7 @@ void hmcs40_cpu_device::execute_run()
case 0x3e8: case 0x3e9: case 0x3ea: case 0x3eb: case 0x3ec: case 0x3ed: case 0x3ee: case 0x3ef:
case 0x3f0: case 0x3f1: case 0x3f2: case 0x3f3: case 0x3f4: case 0x3f5: case 0x3f6: case 0x3f7:
case 0x3f8: case 0x3f9: case 0x3fa: case 0x3fb: case 0x3fc: case 0x3fd: case 0x3fe: case 0x3ff:
/* ok */ op_cal(); break;
op_cal(); break;
default:

View File

@ -93,11 +93,11 @@ static const UINT8 hmcs40_mnemonic[0x400] =
/* 0x000 */
mNOP, mXSP, mXSP, mXSP, mSEM, mSEM, mSEM, mSEM, mLAM, mLAM, mLAM, mLAM, mILL, mILL, mILL, mILL,
mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY, mLMIIY,
mLBM, mLBM, mLBM, mLBM, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mAMC, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mLTA, mILL, mILL, mILL,
mLBM, mLBM, mLBM, mLBM, mBLEM, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mAMC, mILL, mILL, mILL, mAM, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mLTA, mILL, mILL, mILL,
/* 0x040 */
mLXA, mILL, mILL, mILL, mILL, mDAS, mDAA, mILL, mILL, mILL, mILL, mILL, mREC, mILL, mILL, mSEC,
mLYA, mILL, mILL, mILL, mIY, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mLYA, mILL, mILL, mILL, mIY, mILL, mILL, mILL, mAYY, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mLBA, mILL, mILL, mILL, mIB, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI, mLAI,
/* 0x080 */
@ -114,8 +114,8 @@ static const UINT8 hmcs40_mnemonic[0x400] =
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/* 0x100 */
mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mLMAIY, mLMAIY, mILL, mILL, mLMADY, mLMADY, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mOR, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mLMAIY, mLMAIY, mILL, mILL, mLMADY, mLMADY, mILL, mILL, mLAY, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mOR, mILL, mILL, mILL, mANEM, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
/* 0x140 */
mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI, mLXI,
@ -138,10 +138,10 @@ static const UINT8 hmcs40_mnemonic[0x400] =
mTM, mTM, mTM, mTM, mREM, mREM, mREM, mREM, mXMA, mXMA, mXMA, mXMA, mILL, mILL, mILL, mILL,
mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI,
mXMB, mXMB, mXMB, mXMB, mROTR, mROTL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mSMC, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mLAT, mILL, mILL, mILL,
mSMC, mILL, mILL, mILL, mALEM, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mLAT, mILL, mILL, mILL,
/* 0x240 */
mLASPX, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mTC,
mLASPY, mILL, mILL, mILL, mDY, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mLASPX, mILL, mILL, mILL, mNEGA, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mTC,
mLASPY, mILL, mILL, mILL, mDY, mILL, mILL, mILL, mSYY, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mLAB, mILL, mILL, mILL, mILL, mILL, mILL, mDB, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI,
/* 0x280 */
@ -159,7 +159,7 @@ static const UINT8 hmcs40_mnemonic[0x400] =
/* 0x300 */
mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mCOMB, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mCOMB, mILL, mILL, mILL, mBNEM, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL, mILL,
/* 0x340 */
mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU, mLPU,

View File

@ -611,19 +611,19 @@ READ8_MEMBER(hh_hmcs40_state::egalaxn2_input_r)
static INPUT_PORTS_START( egalaxn2 )
PORT_START("IN.0") // D1 port R0x
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // "
PORT_START("IN.1") // D2 port R0x
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_16WAY // "
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY // "
PORT_START("IN.2") // D3 port R0x
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
@ -688,13 +688,13 @@ static INPUT_PORTS_START( epacman2 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // "
PORT_START("IN.1") // D2 port R0x
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_16WAY // "
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // "
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY // "
PORT_START("IN.2") // D3 port R0x
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_NAME("Skill Control")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("P1 Skill Control")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Demo Light Test")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
@ -702,12 +702,12 @@ static INPUT_PORTS_START( epacman2 )
PORT_START("IN.3") // D4 port R0x
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_CONFNAME( 0x02, 0x02, "Skill" )
PORT_CONFSETTING( 0x02, "1" )
PORT_CONFSETTING( 0x00, "2" )
PORT_CONFNAME( 0x0c, 0x00, "Players" )
PORT_CONFSETTING( 0x08, "0 (Demo)" )
PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x04, "2" )
PORT_CONFSETTING( 0x02, "2" )
PORT_CONFNAME( 0x0c, 0x04, "Players" )
PORT_CONFSETTING( 0x08, "0 (Demo)" )
PORT_CONFSETTING( 0x04, "1" )
PORT_CONFSETTING( 0x00, "2" )
INPUT_PORTS_END