trunk/src/mess/machine/kb_pcxt83.c
| r23864 | r23865 | |
| 63 | 63 | //------------------------------------------------- |
| 64 | 64 | |
| 65 | 65 | static ADDRESS_MAP_START( ibm_pc_xt_83_keyboard_io, AS_IO, 8, ibm_pc_xt_83_keyboard_device ) |
| 66 | | AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w) |
| 67 | | AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) AM_WRITENOP |
| 66 | AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READNOP AM_WRITE(bus_w) |
| 67 | AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) |
| 68 | 68 | AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) |
| 69 | AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) |
| 69 | 70 | AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) |
| 70 | 71 | ADDRESS_MAP_END |
| 71 | 72 | |
| r23864 | r23865 | |
| 75 | 76 | //------------------------------------------------- |
| 76 | 77 | |
| 77 | 78 | static MACHINE_CONFIG_FRAGMENT( ibm_pc_xt_83_keyboard ) |
| 78 | | MCFG_CPU_ADD(I8048_TAG, I8048, MCS48_LC_CLOCK(IND_U(47), CAP_P(20))) |
| 79 | MCFG_CPU_ADD(I8048_TAG, I8048, 5247000) |
| 79 | 80 | MCFG_CPU_IO_MAP(ibm_pc_xt_83_keyboard_io) |
| 80 | 81 | MACHINE_CONFIG_END |
| 81 | 82 | |
| r23864 | r23865 | |
| 96 | 97 | //------------------------------------------------- |
| 97 | 98 | |
| 98 | 99 | INPUT_PORTS_START( ibm_pc_xt_83_keyboard ) |
| 99 | | PORT_START("DR00") |
| 100 | PORT_START("P10") |
| 100 | 101 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 101 | 102 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 102 | 103 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 103 | 104 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 105 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 106 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 107 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 108 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 104 | 109 | |
| 105 | | PORT_START("DR01") |
| 110 | PORT_START("P11") |
| 106 | 111 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 107 | 112 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 108 | 113 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 109 | 114 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 115 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 116 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 117 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 118 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 110 | 119 | |
| 111 | | PORT_START("DR02") |
| 120 | PORT_START("P12") |
| 112 | 121 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 113 | 122 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 114 | 123 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 115 | 124 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 125 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 126 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 127 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 128 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 116 | 129 | |
| 117 | | PORT_START("DR03") |
| 130 | PORT_START("P13") |
| 118 | 131 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 119 | 132 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 120 | 133 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 121 | 134 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 135 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 136 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 137 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 138 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 122 | 139 | |
| 123 | | PORT_START("DR04") |
| 140 | PORT_START("P14") |
| 124 | 141 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 125 | 142 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 126 | 143 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 127 | 144 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 145 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 146 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 147 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 148 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 128 | 149 | |
| 129 | | PORT_START("DR05") |
| 150 | PORT_START("P15") |
| 130 | 151 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 131 | 152 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 132 | 153 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 133 | 154 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 155 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 156 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 157 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 158 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 134 | 159 | |
| 135 | | PORT_START("DR06") |
| 160 | PORT_START("P16") |
| 136 | 161 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 137 | 162 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 138 | 163 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 139 | 164 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 165 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 166 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 167 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 168 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 140 | 169 | |
| 141 | | PORT_START("DR07") |
| 170 | PORT_START("P17") |
| 142 | 171 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 143 | 172 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 144 | 173 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 145 | 174 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 175 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 176 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 177 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 178 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 146 | 179 | |
| 147 | | PORT_START("DR08") |
| 180 | PORT_START("P23") |
| 148 | 181 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 149 | 182 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 150 | 183 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 151 | 184 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 185 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 186 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 187 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 188 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 152 | 189 | |
| 153 | | PORT_START("DR09") |
| 190 | PORT_START("P24") |
| 154 | 191 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 155 | 192 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 156 | 193 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 157 | 194 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 195 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 196 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 197 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 198 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 158 | 199 | |
| 159 | | PORT_START("DR10") |
| 200 | PORT_START("P25") |
| 160 | 201 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 161 | 202 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 162 | 203 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 163 | 204 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 205 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 206 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 207 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 208 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 164 | 209 | |
| 165 | | PORT_START("DR11") |
| 210 | PORT_START("P26") |
| 166 | 211 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 167 | 212 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 168 | 213 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 169 | 214 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 215 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 216 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 217 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 218 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 170 | 219 | |
| 171 | | PORT_START("DR12") |
| 220 | PORT_START("P27") |
| 172 | 221 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 173 | 222 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 174 | 223 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 175 | 224 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 176 | | |
| 177 | | PORT_START("DR13") |
| 178 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 179 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 180 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 181 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 182 | | |
| 183 | | PORT_START("DR14") |
| 184 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 185 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 186 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 187 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 188 | | |
| 189 | | PORT_START("DR15") |
| 190 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 191 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 192 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 193 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 194 | | |
| 195 | | PORT_START("DR16") |
| 196 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 197 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 198 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 199 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 200 | | |
| 201 | | PORT_START("DR17") |
| 202 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 203 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 204 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 205 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 206 | | |
| 207 | | PORT_START("DR18") |
| 208 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 209 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 210 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 211 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 212 | | |
| 213 | | PORT_START("DR19") |
| 214 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 215 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 216 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 217 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 218 | | |
| 219 | | PORT_START("DR20") |
| 220 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 221 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 222 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 223 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 224 | | |
| 225 | | PORT_START("DR21") |
| 226 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 227 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 228 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 229 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 230 | | |
| 231 | | PORT_START("DR22") |
| 232 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 233 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 234 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 235 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 236 | | |
| 237 | | PORT_START("DR23") |
| 238 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 239 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 240 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 241 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 225 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 226 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 227 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 228 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 242 | 229 | INPUT_PORTS_END |
| 243 | 230 | |
| 244 | 231 | |
| r23864 | r23865 | |
| 262 | 249 | //------------------------------------------------- |
| 263 | 250 | |
| 264 | 251 | ibm_pc_xt_83_keyboard_device::ibm_pc_xt_83_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 265 | | : device_t(mconfig, PC_KBD_IBM_PC_XT_83, "IBM PC/XT 5150/5160 Keyboard", tag, owner, clock, "kb_pcxt83", __FILE__), |
| 252 | : device_t(mconfig, PC_KBD_IBM_PC_XT_83, "IBM 1501100 Keyboard", tag, owner, clock, "kb_pcxt83", __FILE__), |
| 266 | 253 | device_pc_kbd_interface(mconfig, *this), |
| 267 | 254 | m_maincpu(*this, I8048_TAG), |
| 268 | | m_dr00(*this, "DR00"), |
| 269 | | m_dr01(*this, "DR01"), |
| 270 | | m_dr02(*this, "DR02"), |
| 271 | | m_dr03(*this, "DR03"), |
| 272 | | m_dr04(*this, "DR04"), |
| 273 | | m_dr05(*this, "DR05"), |
| 274 | | m_dr06(*this, "DR06"), |
| 275 | | m_dr07(*this, "DR07"), |
| 276 | | m_dr08(*this, "DR08"), |
| 277 | | m_dr09(*this, "DR09"), |
| 278 | | m_dr10(*this, "DR10"), |
| 279 | | m_dr11(*this, "DR11"), |
| 280 | | m_dr12(*this, "DR12"), |
| 281 | | m_dr13(*this, "DR13"), |
| 282 | | m_dr14(*this, "DR14"), |
| 283 | | m_dr15(*this, "DR15"), |
| 284 | | m_dr16(*this, "DR16"), |
| 285 | | m_dr17(*this, "DR17"), |
| 286 | | m_dr18(*this, "DR18"), |
| 287 | | m_dr19(*this, "DR19"), |
| 288 | | m_dr20(*this, "DR20"), |
| 289 | | m_dr21(*this, "DR21"), |
| 290 | | m_dr22(*this, "DR22"), |
| 291 | | m_dr23(*this, "DR23") |
| 255 | m_p10(*this, "P10"), |
| 256 | m_p11(*this, "P11"), |
| 257 | m_p12(*this, "P12"), |
| 258 | m_p13(*this, "P13"), |
| 259 | m_p14(*this, "P14"), |
| 260 | m_p15(*this, "P15"), |
| 261 | m_p16(*this, "P16"), |
| 262 | m_p17(*this, "P17"), |
| 263 | m_p23(*this, "P23"), |
| 264 | m_p24(*this, "P24"), |
| 265 | m_p25(*this, "P25"), |
| 266 | m_p26(*this, "P26"), |
| 267 | m_p27(*this, "P27"), |
| 268 | m_p1(0), |
| 269 | m_p2(0), |
| 270 | m_sense(0) |
| 292 | 271 | { |
| 293 | 272 | } |
| 294 | 273 | |
| r23864 | r23865 | |
| 300 | 279 | void ibm_pc_xt_83_keyboard_device::device_start() |
| 301 | 280 | { |
| 302 | 281 | // state saving |
| 303 | | save_item(NAME(m_cnt)); |
| 282 | save_item(NAME(m_p1)); |
| 283 | save_item(NAME(m_p2)); |
| 284 | save_item(NAME(m_sense)); |
| 304 | 285 | } |
| 305 | 286 | |
| 306 | 287 | |
| r23864 | r23865 | |
| 324 | 305 | |
| 325 | 306 | bit description |
| 326 | 307 | |
| 327 | | 0 CNT 1 |
| 328 | | 1 CNT 2 |
| 329 | | 2 CNT 4 |
| 330 | | 3 CNT 8 |
| 331 | | 4 CNT 16 |
| 332 | | 5 CNT 32 |
| 333 | | 6 CNT 64 |
| 334 | | 7 |
| 308 | 0 |
| 309 | 1 |
| 310 | 2 |
| 311 | 3 |
| 312 | 4 |
| 313 | 5 CLOCK |
| 314 | 6 DATA |
| 315 | 7 IC4 G |
| 335 | 316 | |
| 336 | 317 | */ |
| 337 | 318 | |
| 338 | | m_cnt = data & 0x7f; |
| 319 | m_pc_kbdc->clock_write_from_kb(BIT(data, 5)); |
| 320 | m_pc_kbdc->data_write_from_kb(BIT(data, 6)); |
| 321 | |
| 322 | if (BIT(data, 7)) |
| 323 | { |
| 324 | m_sense = m_p2 & 0x07; |
| 325 | } |
| 339 | 326 | } |
| 340 | 327 | |
| 341 | 328 | |
| 342 | 329 | //------------------------------------------------- |
| 343 | | // p1_r - |
| 330 | // p1_w - |
| 344 | 331 | //------------------------------------------------- |
| 345 | 332 | |
| 346 | | READ8_MEMBER( ibm_pc_xt_83_keyboard_device::p1_r ) |
| 333 | WRITE8_MEMBER( ibm_pc_xt_83_keyboard_device::p1_w ) |
| 347 | 334 | { |
| 348 | 335 | /* |
| 349 | 336 | |
| 350 | 337 | bit description |
| 351 | 338 | |
| 352 | | 0 -REQ IN |
| 353 | | 1 DATA IN |
| 339 | 0 |
| 340 | 1 |
| 354 | 341 | 2 |
| 355 | 342 | 3 |
| 356 | 343 | 4 |
| r23864 | r23865 | |
| 359 | 346 | 7 |
| 360 | 347 | |
| 361 | 348 | */ |
| 362 | | |
| 363 | | UINT8 data = 0; |
| 364 | 349 | |
| 365 | | data |= clock_signal(); |
| 366 | | data |= data_signal() << 1; |
| 367 | | |
| 368 | | return data; |
| 350 | m_p1 = data; |
| 369 | 351 | } |
| 370 | 352 | |
| 371 | 353 | |
| r23864 | r23865 | |
| 379 | 361 | |
| 380 | 362 | bit description |
| 381 | 363 | |
| 382 | | 0 -MATRIX STROBE |
| 383 | | 1 CLOCK OUT |
| 384 | | 2 DATA OUT |
| 364 | 0 SENSE 0 |
| 365 | 1 SENSE 1 |
| 366 | 2 SENSE 2 |
| 385 | 367 | 3 |
| 386 | 368 | 4 |
| 387 | 369 | 5 |
| r23864 | r23865 | |
| 390 | 372 | |
| 391 | 373 | */ |
| 392 | 374 | |
| 393 | | m_pc_kbdc->clock_write_from_kb(BIT(data, 1)); |
| 394 | | m_pc_kbdc->data_write_from_kb(BIT(data, 2)); |
| 375 | m_p2 = data; |
| 395 | 376 | } |
| 396 | 377 | |
| 397 | 378 | |
| 398 | 379 | //------------------------------------------------- |
| 380 | // t0_r - |
| 381 | //------------------------------------------------- |
| 382 | |
| 383 | READ8_MEMBER( ibm_pc_xt_83_keyboard_device::t0_r ) |
| 384 | { |
| 385 | return data_signal(); |
| 386 | } |
| 387 | |
| 388 | |
| 389 | //------------------------------------------------- |
| 399 | 390 | // t1_r - |
| 400 | 391 | //------------------------------------------------- |
| 401 | 392 | |
| r23864 | r23865 | |
| 403 | 394 | { |
| 404 | 395 | UINT8 data = 0xff; |
| 405 | 396 | |
| 406 | | switch (m_cnt >> 2) |
| 407 | | { |
| 408 | | case 0: data = m_dr00->read(); break; |
| 409 | | case 1: data = m_dr01->read(); break; |
| 410 | | case 2: data = m_dr02->read(); break; |
| 411 | | case 3: data = m_dr03->read(); break; |
| 412 | | case 4: data = m_dr04->read(); break; |
| 413 | | case 5: data = m_dr05->read(); break; |
| 414 | | case 6: data = m_dr06->read(); break; |
| 415 | | case 7: data = m_dr07->read(); break; |
| 416 | | case 8: data = m_dr08->read(); break; |
| 417 | | case 9: data = m_dr09->read(); break; |
| 418 | | case 10: data = m_dr10->read(); break; |
| 419 | | case 11: data = m_dr11->read(); break; |
| 420 | | case 12: data = m_dr12->read(); break; |
| 421 | | case 13: data = m_dr13->read(); break; |
| 422 | | case 14: data = m_dr14->read(); break; |
| 423 | | case 15: data = m_dr15->read(); break; |
| 424 | | case 16: data = m_dr16->read(); break; |
| 425 | | case 17: data = m_dr17->read(); break; |
| 426 | | case 18: data = m_dr18->read(); break; |
| 427 | | case 19: data = m_dr19->read(); break; |
| 428 | | case 20: data = m_dr20->read(); break; |
| 429 | | case 21: data = m_dr21->read(); break; |
| 430 | | case 22: data = m_dr22->read(); break; |
| 431 | | case 23: data = m_dr23->read(); break; |
| 432 | | } |
| 397 | if (BIT(m_p1, 0)) data &= m_p10->read(); |
| 398 | if (BIT(m_p1, 1)) data &= m_p11->read(); |
| 399 | if (BIT(m_p1, 2)) data &= m_p12->read(); |
| 400 | if (BIT(m_p1, 3)) data &= m_p13->read(); |
| 401 | if (BIT(m_p1, 4)) data &= m_p14->read(); |
| 402 | if (BIT(m_p1, 5)) data &= m_p15->read(); |
| 403 | if (BIT(m_p1, 6)) data &= m_p16->read(); |
| 404 | if (BIT(m_p1, 7)) data &= m_p17->read(); |
| 405 | if (BIT(m_p2, 3)) data &= m_p23->read(); |
| 406 | if (BIT(m_p2, 4)) data &= m_p24->read(); |
| 407 | if (BIT(m_p2, 5)) data &= m_p25->read(); |
| 408 | if (BIT(m_p2, 6)) data &= m_p26->read(); |
| 409 | if (BIT(m_p2, 7)) data &= m_p27->read(); |
| 433 | 410 | |
| 434 | | int sense = m_cnt & 0x03; |
| 435 | | |
| 436 | | return BIT(data, sense); |
| 411 | return BIT(data, m_sense); |
| 437 | 412 | } |