trunk/src/mame/drivers/marywu.cpp
| r252977 | r252978 | |
| 31 | 31 | |
| 32 | 32 | DECLARE_WRITE8_MEMBER(display_7seg_data_w); |
| 33 | 33 | DECLARE_WRITE8_MEMBER(multiplex_7seg_w); |
| 34 | DECLARE_READ8_MEMBER(keyboard_r); |
| 34 | 35 | private: |
| 35 | 36 | uint8_t m_selected_7seg_module; |
| 36 | 37 | }; |
| 37 | 38 | |
| 39 | static INPUT_PORTS_START( marywu ) |
| 40 | PORT_START("KEYS1") |
| 41 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) |
| 42 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) |
| 43 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) |
| 44 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) |
| 45 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) |
| 46 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) |
| 47 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) |
| 48 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) |
| 49 | |
| 50 | PORT_START("KEYS2") |
| 51 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) |
| 52 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) |
| 53 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) |
| 54 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) |
| 55 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) |
| 56 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) |
| 57 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) |
| 58 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) |
| 59 | |
| 60 | PORT_START("DSW") |
| 61 | PORT_DIPNAME( 0x01, 0x01, "Unknown bit #0" ) PORT_DIPLOCATION("DSW:0") |
| 62 | PORT_DIPSETTING(0x01, DEF_STR( On ) ) |
| 63 | PORT_DIPSETTING(0x00, DEF_STR( Off ) ) |
| 64 | PORT_DIPNAME( 0x02, 0x02, "Unknown bit #1" ) PORT_DIPLOCATION("DSW:1") |
| 65 | PORT_DIPSETTING(0x02, DEF_STR( On ) ) |
| 66 | PORT_DIPSETTING(0x00, DEF_STR( Off ) ) |
| 67 | PORT_DIPNAME( 0x04, 0x04, "Unknown bit #2" ) PORT_DIPLOCATION("DSW:2") |
| 68 | PORT_DIPSETTING(0x04, DEF_STR( On ) ) |
| 69 | PORT_DIPSETTING(0x00, DEF_STR( Off ) ) |
| 70 | PORT_DIPNAME( 0x08, 0x08, "Unknown bit #3" ) PORT_DIPLOCATION("DSW:3") |
| 71 | PORT_DIPSETTING(0x08, DEF_STR( On ) ) |
| 72 | PORT_DIPSETTING(0x00, DEF_STR( Off ) ) |
| 73 | PORT_DIPNAME( 0x10, 0x10, "Unknown bit #4" ) PORT_DIPLOCATION("DSW:4") |
| 74 | PORT_DIPSETTING(0x10, DEF_STR( On ) ) |
| 75 | PORT_DIPSETTING(0x00, DEF_STR( Off ) ) |
| 76 | PORT_DIPNAME( 0x20, 0x20, "Unknown bit #5" ) PORT_DIPLOCATION("DSW:5") |
| 77 | PORT_DIPSETTING(0x20, DEF_STR( On ) ) |
| 78 | PORT_DIPSETTING(0x00, DEF_STR( Off ) ) |
| 79 | PORT_DIPNAME( 0x40, 0x40, "Unknown bit #6" ) PORT_DIPLOCATION("DSW:6") |
| 80 | PORT_DIPSETTING(0x40, DEF_STR( On ) ) |
| 81 | PORT_DIPSETTING(0x00, DEF_STR( Off ) ) |
| 82 | PORT_DIPNAME( 0x80, 0x80, "Unknown bit #7" ) PORT_DIPLOCATION("DSW:7") |
| 83 | PORT_DIPSETTING(0x80, DEF_STR( On ) ) |
| 84 | PORT_DIPSETTING(0x00, DEF_STR( Off ) ) |
| 85 | |
| 86 | PORT_START("PUSHBUTTONS") |
| 87 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 88 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 89 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 90 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 91 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) |
| 92 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) |
| 93 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) |
| 94 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) |
| 95 | INPUT_PORTS_END |
| 96 | |
| 38 | 97 | WRITE8_MEMBER( marywu_state::multiplex_7seg_w ) |
| 39 | 98 | { |
| 40 | | m_selected_7seg_module = data; |
| 99 | m_selected_7seg_module = data; |
| 41 | 100 | } |
| 42 | 101 | |
| 102 | READ8_MEMBER( marywu_state::keyboard_r ) |
| 103 | { |
| 104 | switch(m_selected_7seg_module % 8){ |
| 105 | case 0: return ioport("KEYS1")->read(); |
| 106 | case 1: return ioport("KEYS2")->read(); |
| 107 | case 2: return ioport("DSW")->read(); |
| 108 | case 3: return ioport("PUSHBUTTONS")->read(); |
| 109 | default: |
| 110 | return 0x00; |
| 111 | } |
| 112 | } |
| 113 | |
| 43 | 114 | WRITE8_MEMBER( marywu_state::display_7seg_data_w ) |
| 44 | 115 | { |
| 45 | 116 | static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // HEF4511BP (7 seg display driver) |
| r252977 | r252978 | |
| 60 | 131 | AM_RANGE(0x9001, 0x9001) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) |
| 61 | 132 | AM_RANGE(0x9002, 0x9002) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay2", ay8910_device, data_address_w) |
| 62 | 133 | AM_RANGE(0x9003, 0x9003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) |
| 134 | AM_RANGE(0xf000, 0xf000) AM_NOP /* TODO: Investigate this. There's something going on at this address range. */ |
| 63 | 135 | AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_NOP /* FIX-ME! I am ignoring port accesses for a while. */ |
| 64 | 136 | ADDRESS_MAP_END |
| 65 | 137 | |
| r252977 | r252978 | |
| 72 | 144 | /* Keyboard & display interface */ |
| 73 | 145 | MCFG_DEVICE_ADD("i8279", I8279, XTAL_10_738635MHz) /* should it be perhaps a fraction of the XTAL clock ? */ |
| 74 | 146 | MCFG_I8279_OUT_SL_CB(WRITE8(marywu_state, multiplex_7seg_w)) // select block of 7seg modules by multiplexing the SL scan lines |
| 75 | | // MCFG_I8279_IN_RL_CB(READ8(marywu_state, marywu_kbd_r)) // kbd RL lines |
| 147 | MCFG_I8279_IN_RL_CB(READ8(marywu_state, keyboard_r)) // keyboard Return Lines |
| 76 | 148 | MCFG_I8279_OUT_DISP_CB(WRITE8(marywu_state, display_7seg_data_w)) |
| 77 | 149 | |
| 78 | 150 | /* Video */ |
| r252977 | r252978 | |
| 93 | 165 | ROM_END |
| 94 | 166 | |
| 95 | 167 | /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ |
| 96 | | GAME( ????, marywu, 0, marywu, 0, driver_device, 0, ROT0, "<unknown>", "<unknown> Labeled 'WU- MARY-1A' Music by: SunKiss Chen", MACHINE_NOT_WORKING ) |
| 168 | GAME( ????, marywu, 0, marywu, marywu, driver_device, 0, ROT0, "<unknown>", "<unknown> Labeled 'WU- MARY-1A' Music by: SunKiss Chen", MACHINE_NOT_WORKING ) |