Previous 15994 Revisions Next

r8664 Saturday 31st July, 2010 at 12:46:02 UTC by Angelo Salese
[BASIC MASTER JR]: Added keyboard support
[src/mess/drivers]bmjr.c

src/mess/drivers/bmjr.c
r8663r8664
4343
4444         count++;
4545      }
46
4746   }
4847
4948    return 0;
5049}
5150
51static UINT8 key_mux;
52
53static READ8_HANDLER( key_r )
54{
55   static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3",
56                                           "KEY4", "KEY5", "KEY6", "KEY7",
57                                           "KEY8", "KEY9", "KEYA", "KEYB",
58                                           "KEYC", "KEYD", "UNUSED", "UNUSED" };
59
60
61   return (input_port_read(space->machine, keynames[key_mux]) & 0xf) | ((input_port_read(space->machine, "KEYMOD") & 0xf) << 4);
62}
63
64static WRITE8_HANDLER( key_w )
65{
66   key_mux = data & 0xf;
67}
68
5269static ADDRESS_MAP_START(bmjr_mem, ADDRESS_SPACE_PROGRAM, 8)
53   ADDRESS_MAP_UNMAP_HIGH
70//   ADDRESS_MAP_UNMAP_HIGH
5471   //0x0100, 0x03ff basic vram
5572   //0x0900, 0x20ff vram, modes 0x40 / 0xc0
5673   //0x2100, 0x38ff vram, modes 0x44 / 0xcc
r8663r8664
6380//   AM_RANGE(0xee20, 0xee20) R start tape
6481//   AM_RANGE(0xee40, 0xee40) W Picture reverse (?)
6582//   AM_RANGE(0xee80, 0xee80) RW tape input / output
66//   AM_RANGE(0xeec0, 0xeec0) RW keyboard
83   AM_RANGE(0xeec0, 0xeec0) AM_READWRITE(key_r,key_w)//RW keyboard
6784//   AM_RANGE(0xef00, 0xef00) R timer
6885//   AM_RANGE(0xef40, 0xef40) R unknown
6986//   AM_RANGE(0xef80, 0xef80) R unknown
r8663r8664
7390
7491/* Input ports */
7592static INPUT_PORTS_START( bmjr )
93   PORT_START("KEY0")
94   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
95   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
96   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
97   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1')
98   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
99
100   PORT_START("KEY1")
101   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X')
102   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S')
103   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
104   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2')
105   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
106
107   PORT_START("KEY2")
108   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C')
109   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D')
110   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E')
111   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
112   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
113
114   PORT_START("KEY3")
115   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V')
116   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
117   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R')
118   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4')
119   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
120
121   PORT_START("KEY4")
122   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B')
123   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G')
124   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T')
125   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5')
126   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
127
128   PORT_START("KEY5")
129   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('N')
130   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H')
131   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
132   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6')
133   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
134
135   PORT_START("KEY6")
136   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M')
137   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J')
138   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U')
139   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7')
140   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
141
142   PORT_START("KEY7")
143   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',')
144   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K')
145   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('I')
146   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8')
147   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
148
149   PORT_START("KEY8")
150   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.')
151   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('L')
152   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O')
153   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9')
154   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
155
156   PORT_START("KEY9")
157   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("/") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('/')
158   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';')
159   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P')
160   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
161   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
162
163   PORT_START("KEYA")
164   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_UNUSED )
165   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(":")
166   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("@ / Up") PORT_CODE(KEYCODE_8_PAD)
167   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("- / =") PORT_CODE(KEYCODE_0_PAD)
168   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
169
170   PORT_START("KEYB")
171   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
172   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']')
173   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("[ / Down") PORT_CODE(KEYCODE_OPENBRACE) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR('[')
174   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("^ / Right") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('^')
175   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
176
177   PORT_START("KEYC")
178   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_UNUSED)
179   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
180   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE)
181   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("\xC2\xA5 / Left") PORT_CODE(KEYCODE_4_PAD)
182   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
183
184   PORT_START("KEYD")
185   PORT_DIPNAME( 0x01, 0x01, "D" )
186   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
187   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
188   PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
189   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
190   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
191   PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
192   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
193   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
194   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
195   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
196   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
197   PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
198
199   PORT_START("UNUSED")
200   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
201
202   PORT_START("KEYMOD") /* Note: you should press Normal to return from a Kana state and vice-versa */
203   PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(DEF_STR( Normal )) PORT_CODE(KEYCODE_LCONTROL)
204   PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT)
205   PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Kana Shift") PORT_CODE(KEYCODE_LALT)
206   PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Kana") PORT_CODE(KEYCODE_RCONTROL)
207   PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED )
76208INPUT_PORTS_END
77209
78210
r8663r8664
105237
106238static MACHINE_DRIVER_START( bmjr )
107239    /* basic machine hardware */
108    MDRV_CPU_ADD("maincpu",M6800, XTAL_4MHz)
240    MDRV_CPU_ADD("maincpu",M6800, XTAL_4MHz/4) //unknown clock / divider
109241    MDRV_CPU_PROGRAM_MAP(bmjr_mem)
110242
111243    MDRV_MACHINE_RESET(bmjr)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team