Previous 199869 Revisions Next

r44466 Monday 25th January, 2016 at 00:11:03 UTC by Felipe CorrĂȘa da Silva Sanches
[marywu] more improvements including handling of inputs (dipswitches, push buttons and external keyboard matrix)
[src/mame/drivers]marywu.cpp

trunk/src/mame/drivers/marywu.cpp
r252977r252978
3131
3232    DECLARE_WRITE8_MEMBER(display_7seg_data_w);
3333    DECLARE_WRITE8_MEMBER(multiplex_7seg_w);
34    DECLARE_READ8_MEMBER(keyboard_r);
3435private:
3536    uint8_t m_selected_7seg_module;
3637};
3738
39static 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)
95INPUT_PORTS_END
96
3897WRITE8_MEMBER( marywu_state::multiplex_7seg_w )
3998{
40        m_selected_7seg_module = data;
99    m_selected_7seg_module = data;
41100}
42101
102READ8_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
43114WRITE8_MEMBER( marywu_state::display_7seg_data_w )
44115{
45116    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)
r252977r252978
60131    AM_RANGE(0x9001, 0x9001) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
61132    AM_RANGE(0x9002, 0x9002) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
62133    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. */
63135    AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_NOP /* FIX-ME! I am ignoring port accesses for a while. */
64136ADDRESS_MAP_END
65137
r252977r252978
72144    /* Keyboard & display interface */
73145    MCFG_DEVICE_ADD("i8279", I8279, XTAL_10_738635MHz) /* should it be perhaps a fraction of the XTAL clock ? */
74146    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
76148    MCFG_I8279_OUT_DISP_CB(WRITE8(marywu_state, display_7seg_data_w))
77149
78150    /* Video */
r252977r252978
93165ROM_END
94166
95167/*    YEAR  NAME       PARENT   MACHINE   INPUT     STATE          INIT   ROT    COMPANY       FULLNAME          FLAGS  */
96GAME( ????, marywu,    0,       marywu,   0,        driver_device, 0,     ROT0, "<unknown>", "<unknown> Labeled 'WU- MARY-1A' Music by: SunKiss Chen", MACHINE_NOT_WORKING )
168GAME( ????, marywu,    0,       marywu,   marywu,   driver_device, 0,     ROT0, "<unknown>", "<unknown> Labeled 'WU- MARY-1A' Music by: SunKiss Chen", MACHINE_NOT_WORKING )


Previous 199869 Revisions Next


© 1997-2024 The MAME Team