mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
accomm: Fully implemented keyboard
- Added sound (same as Electron) - Added layout and hooked up Caps/Shift Lock LED's
This commit is contained in:
parent
6e685359dd
commit
84f02ebf45
@ -8,18 +8,24 @@
|
|||||||
Electron ULA emulation by Wilbert Pol
|
Electron ULA emulation by Wilbert Pol
|
||||||
|
|
||||||
Main CPU: 65C816
|
Main CPU: 65C816
|
||||||
Other chips: 6850 UART, 6522 VIA, SAA5240(video?), AM7910 modem, PCF0335(?)
|
Other chips: 6850 UART, 6522 VIA, SAA5240(video?), AM7910 modem, PCF0335(?), PCF8573P
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/g65816/g65816.h"
|
#include "cpu/g65816/g65816.h"
|
||||||
|
#include "machine/6522via.h"
|
||||||
#include "machine/nvram.h"
|
#include "machine/nvram.h"
|
||||||
#include "machine/bankdev.h"
|
#include "machine/bankdev.h"
|
||||||
|
#include "sound/beep.h"
|
||||||
|
#include "bus/econet/econet.h"
|
||||||
|
#include "bus/centronics/ctronics.h"
|
||||||
#include "bus/rs232/rs232.h"
|
#include "bus/rs232/rs232.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "speaker.h"
|
#include "speaker.h"
|
||||||
|
|
||||||
|
#include "accomm.lh"
|
||||||
|
|
||||||
/* Interrupts */
|
/* Interrupts */
|
||||||
#define INT_HIGH_TONE 0x40
|
#define INT_HIGH_TONE 0x40
|
||||||
#define INT_TRANSMIT_EMPTY 0x20
|
#define INT_TRANSMIT_EMPTY 0x20
|
||||||
@ -44,7 +50,7 @@ struct ULA
|
|||||||
int current_pal[16];
|
int current_pal[16];
|
||||||
int communication_mode;
|
int communication_mode;
|
||||||
int screen_mode;
|
int screen_mode;
|
||||||
int cassette_motor_mode;
|
int shiftlock_mode;
|
||||||
int capslock_mode;
|
int capslock_mode;
|
||||||
// int scanline;
|
// int scanline;
|
||||||
/* tape reading related */
|
/* tape reading related */
|
||||||
@ -65,8 +71,10 @@ public:
|
|||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_bank0dev(*this, "bank0dev"),
|
m_bank0dev(*this, "bank0dev"),
|
||||||
|
m_beeper(*this, "beeper"),
|
||||||
|
m_via(*this, "via6522"),
|
||||||
m_vram(*this, "vram"),
|
m_vram(*this, "vram"),
|
||||||
m_keybd(*this, "LINE.%u", 0),
|
m_keybd1(*this, "LINE1.%u", 0),
|
||||||
m_keybd2(*this, "LINE2.%u", 0)
|
m_keybd2(*this, "LINE2.%u", 0)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -76,7 +84,7 @@ public:
|
|||||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(b0_rom_disable_w);
|
DECLARE_WRITE8_MEMBER(b0_rom_disable_w);
|
||||||
DECLARE_READ8_MEMBER(read_keyboard);
|
DECLARE_READ8_MEMBER(read_keyboard1);
|
||||||
DECLARE_READ8_MEMBER(read_keyboard2);
|
DECLARE_READ8_MEMBER(read_keyboard2);
|
||||||
DECLARE_READ8_MEMBER(sheila_r);
|
DECLARE_READ8_MEMBER(sheila_r);
|
||||||
DECLARE_WRITE8_MEMBER(sheila_w);
|
DECLARE_WRITE8_MEMBER(sheila_w);
|
||||||
@ -85,12 +93,13 @@ public:
|
|||||||
INTERRUPT_GEN_MEMBER(vbl_int);
|
INTERRUPT_GEN_MEMBER(vbl_int);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// devices
|
// devices
|
||||||
required_device<g65816_device> m_maincpu;
|
required_device<g65816_device> m_maincpu;
|
||||||
required_device<address_map_bank_device> m_bank0dev;
|
required_device<address_map_bank_device> m_bank0dev;
|
||||||
|
required_device<beep_device> m_beeper;
|
||||||
|
required_device<via6522_device> m_via;
|
||||||
required_shared_ptr<uint8_t> m_vram;
|
required_shared_ptr<uint8_t> m_vram;
|
||||||
required_ioport_array<14> m_keybd, m_keybd2;
|
required_ioport_array<14> m_keybd1, m_keybd2;
|
||||||
|
|
||||||
// driver_device overrides
|
// driver_device overrides
|
||||||
virtual void video_start() override;
|
virtual void video_start() override;
|
||||||
@ -122,19 +131,17 @@ PALETTE_INIT_MEMBER(accomm_state, accomm)
|
|||||||
palette.set_pen_colors(0, electron_palette, ARRAY_LENGTH(electron_palette));
|
palette.set_pen_colors(0, electron_palette, ARRAY_LENGTH(electron_palette));
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(accomm_state::read_keyboard)
|
READ8_MEMBER(accomm_state::read_keyboard1)
|
||||||
{
|
{
|
||||||
uint8_t data = 0;
|
uint8_t data = 0;
|
||||||
|
|
||||||
//printf( "keyboard read @ %x\n", offset );
|
|
||||||
for (int i = 0; i < 14; i++)
|
for (int i = 0; i < 14; i++)
|
||||||
{
|
{
|
||||||
if (!(offset & 1))
|
if (!(offset & 1))
|
||||||
data |= m_keybd[i]->read() & 0x0f;
|
data |= m_keybd1[i]->read() & 0x0f;
|
||||||
|
|
||||||
offset = offset >> 1;
|
offset = offset >> 1;
|
||||||
}
|
}
|
||||||
//logerror( ", data: %02x\n", data );
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,7 +149,6 @@ READ8_MEMBER(accomm_state::read_keyboard2)
|
|||||||
{
|
{
|
||||||
uint8_t data = 0;
|
uint8_t data = 0;
|
||||||
|
|
||||||
//printf( "keyboard read @ %x\n", offset );
|
|
||||||
for (int i = 0; i < 14; i++)
|
for (int i = 0; i < 14; i++)
|
||||||
{
|
{
|
||||||
if (!(offset & 1))
|
if (!(offset & 1))
|
||||||
@ -150,7 +156,6 @@ READ8_MEMBER(accomm_state::read_keyboard2)
|
|||||||
|
|
||||||
offset = offset >> 1;
|
offset = offset >> 1;
|
||||||
}
|
}
|
||||||
//logerror( ", data: %02x\n", data );
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,7 +168,7 @@ void accomm_state::machine_reset()
|
|||||||
{
|
{
|
||||||
m_ula.communication_mode = 0x04;
|
m_ula.communication_mode = 0x04;
|
||||||
m_ula.screen_mode = 0;
|
m_ula.screen_mode = 0;
|
||||||
m_ula.cassette_motor_mode = 0;
|
m_ula.shiftlock_mode = 0;
|
||||||
m_ula.capslock_mode = 0;
|
m_ula.capslock_mode = 0;
|
||||||
m_ula.screen_start = 0x3000;
|
m_ula.screen_start = 0x3000;
|
||||||
m_ula.screen_base = 0x3000;
|
m_ula.screen_base = 0x3000;
|
||||||
@ -481,11 +486,11 @@ WRITE8_MEMBER(accomm_state::sheila_w)
|
|||||||
if ( m_ula.communication_mode == 0x01)
|
if ( m_ula.communication_mode == 0x01)
|
||||||
{
|
{
|
||||||
/* GUESS
|
/* GUESS
|
||||||
* the Advanced Users manual says this is the correct algorithm
|
* the Electron Advanced Users manual says this is the correct algorithm
|
||||||
* but the divider is wrong(?), says 16 but results in high pitch,
|
* but the divider is wrong(?), says 16 but results in high pitch,
|
||||||
* 32 is more close
|
* 32 is more close
|
||||||
*/
|
*/
|
||||||
//m_beeper->set_clock( 1000000 / ( 32 * ( data + 1 ) ) );
|
m_beeper->set_clock( 1000000 / ( 32 * ( data + 1 ) ) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x07: /* Misc. */
|
case 0x07: /* Misc. */
|
||||||
@ -493,20 +498,16 @@ WRITE8_MEMBER(accomm_state::sheila_w)
|
|||||||
switch( m_ula.communication_mode )
|
switch( m_ula.communication_mode )
|
||||||
{
|
{
|
||||||
case 0x00: /* cassette input */
|
case 0x00: /* cassette input */
|
||||||
//m_beeper->set_state( 0 );
|
m_beeper->set_state( 0 );
|
||||||
//_start();
|
|
||||||
break;
|
break;
|
||||||
case 0x01: /* sound generation */
|
case 0x01: /* sound generation */
|
||||||
//m_beeper->set_state( 1 );
|
m_beeper->set_state( 1 );
|
||||||
//electron_tape_stop();
|
|
||||||
break;
|
break;
|
||||||
case 0x02: /* cassette output */
|
case 0x02: /* cassette output */
|
||||||
//m_beeper->set_state( 0 );
|
m_beeper->set_state( 0 );
|
||||||
//electron_tape_stop();
|
|
||||||
break;
|
break;
|
||||||
case 0x03: /* not used */
|
case 0x03: /* not used */
|
||||||
//m_beeper->set_state( 0 );
|
m_beeper->set_state( 0 );
|
||||||
//electron_tape_stop();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
m_ula.screen_mode = ( data >> 3 ) & 0x07;
|
m_ula.screen_mode = ( data >> 3 ) & 0x07;
|
||||||
@ -514,9 +515,10 @@ WRITE8_MEMBER(accomm_state::sheila_w)
|
|||||||
m_ula.screen_size = 0x8000 - m_ula.screen_base;
|
m_ula.screen_size = 0x8000 - m_ula.screen_base;
|
||||||
m_ula.vram = (uint8_t *)m_vram.target() + m_ula.screen_base;
|
m_ula.vram = (uint8_t *)m_vram.target() + m_ula.screen_base;
|
||||||
logerror( "ULA: screen mode set to %d\n", m_ula.screen_mode );
|
logerror( "ULA: screen mode set to %d\n", m_ula.screen_mode );
|
||||||
m_ula.cassette_motor_mode = ( data >> 6 ) & 0x01;
|
m_ula.shiftlock_mode = !BIT(data, 6);
|
||||||
//m_cassette->change_state(m_ula.cassette_motor_mode ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MOTOR_DISABLED );
|
output().set_value("shiftlock_led", m_ula.shiftlock_mode);
|
||||||
m_ula.capslock_mode = ( data >> 7 ) & 0x01;
|
m_ula.capslock_mode = BIT(data, 7);
|
||||||
|
output().set_value("capslock_led", m_ula.capslock_mode);
|
||||||
break;
|
break;
|
||||||
case 0x08: case 0x0A: case 0x0C: case 0x0E:
|
case 0x08: case 0x0A: case 0x0C: case 0x0E:
|
||||||
// video_update
|
// video_update
|
||||||
@ -562,10 +564,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, accomm_state )
|
|||||||
AM_RANGE(0x000000, 0x007fff) AM_RAM
|
AM_RANGE(0x000000, 0x007fff) AM_RAM
|
||||||
AM_RANGE(0x008000, 0x00ffff) AM_DEVICE("bank0dev", address_map_bank_device, amap8)
|
AM_RANGE(0x008000, 0x00ffff) AM_DEVICE("bank0dev", address_map_bank_device, amap8)
|
||||||
AM_RANGE(0x010000, 0x08ffff) AM_RAM // "576K RAM"
|
AM_RANGE(0x010000, 0x08ffff) AM_RAM // "576K RAM"
|
||||||
|
AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("via6522", via6522_device, read, write)
|
||||||
AM_RANGE(0x440000, 0x440000) AM_WRITE(b0_rom_disable_w)
|
AM_RANGE(0x440000, 0x440000) AM_WRITE(b0_rom_disable_w)
|
||||||
AM_RANGE(0x450000, 0x457fff) AM_RAM AM_SHARE("vram")
|
AM_RANGE(0x450000, 0x457fff) AM_RAM AM_SHARE("vram")
|
||||||
AM_RANGE(0x458000, 0x459fff) AM_READ(read_keyboard)
|
AM_RANGE(0x458000, 0x459fff) AM_READ(read_keyboard1)
|
||||||
AM_RANGE(0x45a000, 0x45bfff) AM_READ(read_keyboard2)
|
AM_RANGE(0x45a000, 0x45bfff) AM_READ(read_keyboard2)
|
||||||
AM_RANGE(0x45fe00, 0x45feff) AM_READWRITE(sheila_r, sheila_w)
|
AM_RANGE(0x45fe00, 0x45feff) AM_READWRITE(sheila_r, sheila_w)
|
||||||
AM_RANGE(0x460000, 0x467fff) AM_RAM // nvram?
|
AM_RANGE(0x460000, 0x467fff) AM_RAM // nvram?
|
||||||
@ -578,124 +580,177 @@ static ADDRESS_MAP_START( b0dev_map, AS_PROGRAM, 8, accomm_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( accomm )
|
static INPUT_PORTS_START( accomm )
|
||||||
PORT_START("LINE.0")
|
PORT_START("LINE1.0")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
|
||||||
// 04 = underscore
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('_') PORT_CHAR('@')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
|
||||||
|
|
||||||
PORT_START("LINE.1")
|
PORT_START("LINE1.1")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||||
|
|
||||||
PORT_START("LINE.2")
|
PORT_START("LINE1.2")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||||
|
|
||||||
PORT_START("LINE.3") // unk, unk, unk, help
|
PORT_START("LINE1.3")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
PORT_START("LINE.4") // question, slash, question, modifier? (CTRL?)
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR(UCHAR_MAMEKEY(TILDE)) PORT_NAME("Function")
|
||||||
|
|
||||||
PORT_START("LINE.5") // X, W, C, 3
|
PORT_START("LINE1.4")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||||
|
|
||||||
PORT_START("LINE.6") // shift or capslock, unk, 1, Z
|
PORT_START("LINE1.5")
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||||
|
|
||||||
PORT_START("LINE.7")
|
PORT_START("LINE1.6")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_NAME("Shift Lock")
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) PORT_NAME("Tab")
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||||
|
|
||||||
PORT_START("LINE.8") // 9, 6, =, 3
|
PORT_START("LINE1.7")
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||||
|
|
||||||
PORT_START("LINE.9") // backspace, unk, down arrow, unk
|
PORT_START("LINE1.8")
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(10)
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) PORT_NAME("Keypad =")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
|
||||||
|
|
||||||
PORT_START("LINE.10") // unk, KP4, KP0, unk
|
PORT_START("LINE1.9")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) PORT_NAME("Del CE")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("Copy EE")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(10) PORT_NAME(UTF8_DOWN" +")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_NAME("Home %")
|
||||||
|
|
||||||
PORT_START("LINE.11")
|
PORT_START("LINE1.10")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_NAME("Keypad .")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
|
||||||
|
|
||||||
PORT_START("LINE.12")
|
PORT_START("LINE1.11")
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("F1")
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('\\') PORT_CHAR('|')
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
|
||||||
PORT_START("LINE.13")
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10)) PORT_NAME("Phone")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(ESC)) PORT_NAME("Escape")
|
||||||
|
|
||||||
PORT_START("LINE2.0") // colon, caret, open bracket, semicolon
|
PORT_START("LINE1.12")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
|
||||||
|
|
||||||
|
PORT_START("LINE1.13")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
|
||||||
PORT_START("LINE2.1") // L, 0, O, K
|
PORT_START("LINE2.0")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('@')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^') PORT_CHAR('~')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
||||||
|
|
||||||
PORT_START("LINE2.2") // G, 6, T, F
|
PORT_START("LINE2.1")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('£')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
|
||||||
|
|
||||||
PORT_START("LINE2.3") // unk, unk, unk, help?
|
PORT_START("LINE2.2")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
|
||||||
|
|
||||||
|
PORT_START("LINE2.3")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_NAME("Help")
|
||||||
|
|
||||||
PORT_START("LINE2.4") // unk, unk, unk, unk
|
PORT_START("LINE2.4")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_NAME("Ctrl")
|
||||||
|
|
||||||
|
|
||||||
PORT_START("LINE2.5")
|
PORT_START("LINE2.5")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
|
||||||
|
|
||||||
PORT_START("LINE2.6")
|
PORT_START("LINE2.6")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_NAME("Caps Lock")
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
|
||||||
|
|
||||||
PORT_START("LINE2.7")
|
PORT_START("LINE2.7")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
|
||||||
|
|
||||||
PORT_START("LINE2.8") //
|
PORT_START("LINE2.8")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
|
||||||
PORT_START("LINE2.9") // right, unk, up, left?
|
PORT_START("LINE2.9")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT)
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME(UTF8_RIGHT" -")
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP)
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_NAME("Insert " UTF8_DIVIDE)
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT)
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_NAME(UTF8_UP" " UTF8_MULTIPLY)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME(UTF8_LEFT" AC")
|
||||||
PORT_START("LINE2.10") // 8, 2, 5, 7
|
|
||||||
|
|
||||||
|
PORT_START("LINE2.10")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
|
||||||
|
|
||||||
PORT_START("LINE2.11")
|
PORT_START("LINE2.11")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9)) PORT_NAME("Stop")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12)) PORT_NAME("Calc")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||||
|
|
||||||
|
|
||||||
PORT_START("LINE2.12")
|
PORT_START("LINE2.12")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
|
||||||
|
|
||||||
|
PORT_START("LINE2.13")
|
||||||
PORT_START("LINE2.13") // module back, space, calculator, enter
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
PORT_START("BRK") /* BREAK */
|
|
||||||
//PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("BREAK") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12)) PORT_CHANGED_MEMBER(DEVICE_SELF, accomm_state, trigger_reset, 0)
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( accomm )
|
static MACHINE_CONFIG_START( accomm )
|
||||||
MCFG_CPU_ADD("maincpu", G65816, XTAL_2MHz)
|
MCFG_CPU_ADD("maincpu", G65816, XTAL_16MHz / 8)
|
||||||
MCFG_CPU_PROGRAM_MAP(main_map)
|
MCFG_CPU_PROGRAM_MAP(main_map)
|
||||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", accomm_state, vbl_int)
|
MCFG_CPU_VBLANK_INT_DRIVER("screen", accomm_state, vbl_int)
|
||||||
|
|
||||||
@ -710,21 +765,38 @@ static MACHINE_CONFIG_START( accomm )
|
|||||||
MCFG_PALETTE_ADD( "palette", 16 )
|
MCFG_PALETTE_ADD( "palette", 16 )
|
||||||
MCFG_PALETTE_INIT_OWNER(accomm_state, accomm)
|
MCFG_PALETTE_INIT_OWNER(accomm_state, accomm)
|
||||||
|
|
||||||
|
MCFG_DEFAULT_LAYOUT(layout_accomm)
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("bank0dev", ADDRESS_MAP_BANK, 0)
|
MCFG_DEVICE_ADD("bank0dev", ADDRESS_MAP_BANK, 0)
|
||||||
MCFG_DEVICE_PROGRAM_MAP(b0dev_map)
|
MCFG_DEVICE_PROGRAM_MAP(b0dev_map)
|
||||||
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
|
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
|
||||||
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
|
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
|
||||||
MCFG_ADDRESS_MAP_BANK_STRIDE(0x8000)
|
MCFG_ADDRESS_MAP_BANK_STRIDE(0x8000)
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("via6522", VIA6522, XTAL_16MHz / 16)
|
||||||
|
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("cent_data_out", output_latch_device, write))
|
||||||
|
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, write_strobe))
|
||||||
|
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
MCFG_SOUND_ADD("beeper", BEEP, 300)
|
||||||
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||||
|
|
||||||
|
/* printer */
|
||||||
|
MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
|
||||||
|
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
|
||||||
|
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
ROM_START(accomm)
|
ROM_START(accomm)
|
||||||
ROM_REGION(0x40000, "maincpu", 0)
|
ROM_REGION(0x40000, "maincpu", 0)
|
||||||
ROM_LOAD( "romv100-3.rom", 0x000000, 0x010000, CRC(bd87a157) SHA1(b9b9ed1aab9ffef2de988b2cfeac293afa11448a) )
|
ROM_DEFAULT_BIOS("100")
|
||||||
ROM_LOAD( "romv100-2.rom", 0x010000, 0x010000, CRC(3438adee) SHA1(cd9d5522d9430cb2e1936210b77d2edd280f9419) )
|
ROM_SYSTEM_BIOS(0, "100", "1.00 13/Nov/86") /* Version 1.00 13/Nov/86 (C)1986 */
|
||||||
ROM_LOAD( "romv100-1.rom", 0x020000, 0x010000, CRC(adc6a073) SHA1(3e87f21fafc1d69f33c5b541a20a98e82aacbfab) )
|
ROMX_LOAD( "romv100-3.rom", 0x000000, 0x010000, CRC(bd87a157) SHA1(b9b9ed1aab9ffef2de988b2cfeac293afa11448a), ROM_BIOS(1) )
|
||||||
ROM_LOAD( "romv100-0.rom", 0x030000, 0x010000, CRC(6d22950d) SHA1(d4cbdccf8d2bc836fb81182b2ed344d7134fe5c9) )
|
ROMX_LOAD( "romv100-2.rom", 0x010000, 0x010000, CRC(3438adee) SHA1(cd9d5522d9430cb2e1936210b77d2edd280f9419), ROM_BIOS(1) )
|
||||||
|
ROMX_LOAD( "romv100-1.rom", 0x020000, 0x010000, CRC(adc6a073) SHA1(3e87f21fafc1d69f33c5b541a20a98e82aacbfab), ROM_BIOS(1) )
|
||||||
|
ROMX_LOAD( "romv100-0.rom", 0x030000, 0x010000, CRC(6d22950d) SHA1(d4cbdccf8d2bc836fb81182b2ed344d7134fe5c9), ROM_BIOS(1) )
|
||||||
|
/* Version 1.70 04/Jun/87 (C)1987 */
|
||||||
|
/* Versone 3.00 13/gen/88 (C)1988 */
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
COMP( 1986, accomm, 0, 0, accomm, accomm, accomm_state, 0, "Acorn", "Acorn Communicator", MACHINE_NOT_WORKING )
|
COMP( 1986, accomm, 0, 0, accomm, accomm, accomm_state, 0, "Acorn", "Acorn Communicator", MACHINE_NOT_WORKING )
|
||||||
|
67
src/mame/layout/accomm.lay
Normal file
67
src/mame/layout/accomm.lay
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- Basic display of keyboard LEDs for the Acorn Communicator -->
|
||||||
|
|
||||||
|
<mamelayout version="2">
|
||||||
|
|
||||||
|
<element name="green_led" defstate="0">
|
||||||
|
<rect state="1">
|
||||||
|
<color red="0.0" green="1.0" blue="0.0" />
|
||||||
|
</rect>
|
||||||
|
<rect state="0">
|
||||||
|
<color red="0.0" green="0.2" blue="0.0" />
|
||||||
|
</rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="label_caps">
|
||||||
|
<text string="CAPS LOCK">
|
||||||
|
<color red="1.0" green="1.0" blue="1.0" />
|
||||||
|
</text>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="label_shift">
|
||||||
|
<text string="SHIFT LOCK">
|
||||||
|
<color red="1.0" green="1.0" blue="1.0" />
|
||||||
|
</text>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="label_line">
|
||||||
|
<text string="LINE IN USE">
|
||||||
|
<color red="1.0" green="1.0" blue="1.0" />
|
||||||
|
</text>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<view name="Keyboard LED's">
|
||||||
|
<bounds left="0" right="400" top="0" bottom="340" />
|
||||||
|
<screen index="0">
|
||||||
|
<bounds left="0" right="400" top="0" bottom="300" />
|
||||||
|
</screen>
|
||||||
|
|
||||||
|
<bezel name="label_caps" element="label_caps">
|
||||||
|
<bounds x="14" y="302" width="6" height="26" />
|
||||||
|
<orientation rotate="270" />
|
||||||
|
</bezel>
|
||||||
|
|
||||||
|
<bezel name="capslock_led" element="green_led">
|
||||||
|
<bounds x="15" y="330" width="4" height="8" />
|
||||||
|
</bezel>
|
||||||
|
|
||||||
|
<bezel name="label_shift" element="label_shift">
|
||||||
|
<bounds x="29" y="302" width="6" height="26" />
|
||||||
|
<orientation rotate="270" />
|
||||||
|
</bezel>
|
||||||
|
|
||||||
|
<bezel name="shiftlock_led" element="green_led">
|
||||||
|
<bounds x="30" y="330" width="4" height="8" />
|
||||||
|
</bezel>
|
||||||
|
|
||||||
|
<bezel name="label_line" element="label_line">
|
||||||
|
<bounds x="44" y="302" width="6" height="26" />
|
||||||
|
<orientation rotate="270" />
|
||||||
|
</bezel>
|
||||||
|
|
||||||
|
<bezel name="line_led" element="green_led">
|
||||||
|
<bounds x="45" y="330" width="4" height="8" />
|
||||||
|
</bezel>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</mamelayout>
|
Loading…
Reference in New Issue
Block a user