trunk/src/mess/drivers/amstrad.c
| r32320 | r32321 | |
| 102 | 102 | |
| 103 | 103 | /* Devices */ |
| 104 | 104 | #include "imagedev/snapquik.h" |
| 105 | | #include "imagedev/cartslot.h" |
| 106 | 105 | #include "imagedev/cassette.h" |
| 107 | 106 | #include "formats/tzx_cas.h" |
| 108 | 107 | #include "formats/dsk_dsk.h" |
| r32320 | r32321 | |
| 148 | 147 | *************************************/ |
| 149 | 148 | |
| 150 | 149 | static INPUT_PORTS_START( amstrad_keyboard ) |
| 151 | | /* keyboard row 0 */ |
| 152 | | PORT_START("keyboard_row_0") |
| 150 | PORT_START("kbrow.0") |
| 153 | 151 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 154 | 152 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) |
| 155 | 153 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| r32320 | r32321 | |
| 159 | 157 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad Enter") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) |
| 160 | 158 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) |
| 161 | 159 | |
| 162 | | /* keyboard line 1 */ |
| 163 | | PORT_START("keyboard_row_1") |
| 160 | PORT_START("kbrow.1") |
| 164 | 161 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 165 | 162 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Copy") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END)) |
| 166 | 163 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) |
| r32320 | r32321 | |
| 170 | 167 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) |
| 171 | 168 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) |
| 172 | 169 | |
| 173 | | /* keyboard row 2 */ |
| 174 | | PORT_START("keyboard_row_2") |
| 170 | PORT_START("kbrow.2") |
| 175 | 171 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Clr") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(HOME)) |
| 176 | 172 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR('{') |
| 177 | 173 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| r32320 | r32321 | |
| 181 | 177 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR('\\') PORT_CHAR('`') |
| 182 | 178 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_SHIFT_2) |
| 183 | 179 | |
| 184 | | /* keyboard row 3 */ |
| 185 | | PORT_START("keyboard_row_3") |
| 180 | PORT_START("kbrow.3") |
| 186 | 181 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xE2\x86\x91 \xC2\xA3") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^') PORT_CHAR(0xa3) |
| 187 | 182 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=') |
| 188 | 183 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@ \xC2\xA6") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR('|') |
| r32320 | r32321 | |
| 192 | 187 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') |
| 193 | 188 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') |
| 194 | 189 | |
| 195 | | /* keyboard line 4 */ |
| 196 | | PORT_START("keyboard_row_4") |
| 190 | PORT_START("kbrow.4") |
| 197 | 191 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('_') |
| 198 | 192 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') |
| 199 | 193 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') |
| r32320 | r32321 | |
| 203 | 197 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') |
| 204 | 198 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') |
| 205 | 199 | |
| 206 | | /* keyboard line 5 */ |
| 207 | | PORT_START("keyboard_row_5") |
| 200 | PORT_START("kbrow.5") |
| 208 | 201 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') |
| 209 | 202 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') |
| 210 | 203 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') |
| r32320 | r32321 | |
| 214 | 207 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') |
| 215 | 208 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(32) |
| 216 | 209 | |
| 217 | | /* keyboard line 6 */ |
| 218 | | PORT_START("keyboard_row_6") |
| 210 | PORT_START("kbrow.6") |
| 219 | 211 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') |
| 220 | 212 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') |
| 221 | 213 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') |
| r32320 | r32321 | |
| 225 | 217 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') |
| 226 | 218 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') |
| 227 | 219 | |
| 228 | | /* keyboard line 7 */ |
| 229 | | PORT_START("keyboard_row_7") |
| 220 | PORT_START("kbrow.7") |
| 230 | 221 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') |
| 231 | 222 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') |
| 232 | 223 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') |
| r32320 | r32321 | |
| 236 | 227 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') |
| 237 | 228 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') |
| 238 | 229 | |
| 239 | | /* keyboard line 8 */ |
| 240 | | PORT_START("keyboard_row_8") |
| 230 | PORT_START("kbrow.8") |
| 241 | 231 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') |
| 242 | 232 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"') PORT_CHAR('~') |
| 243 | 233 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_TILDE) PORT_CHAR(27) |
| r32320 | r32321 | |
| 247 | 237 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_TOGGLE |
| 248 | 238 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') |
| 249 | 239 | |
| 250 | | /* keyboard line 9 */ |
| 251 | | PORT_START("keyboard_row_9") |
| 240 | PORT_START("kbrow.9") |
| 252 | 241 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(1) PORT_8WAY |
| 253 | 242 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) PORT_8WAY |
| 254 | 243 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(1) PORT_8WAY |
| r32320 | r32321 | |
| 375 | 364 | static INPUT_PORTS_START( cpc664 ) |
| 376 | 365 | PORT_INCLUDE(amstrad_keyboard) |
| 377 | 366 | |
| 378 | | PORT_MODIFY("keyboard_row_0") |
| 367 | PORT_MODIFY("kbrow.0") |
| 379 | 368 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) |
| 380 | 369 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f6") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) |
| 381 | 370 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) |
| 382 | 371 | |
| 383 | | PORT_MODIFY("keyboard_row_1") |
| 372 | PORT_MODIFY("kbrow.1") |
| 384 | 373 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) |
| 385 | 374 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f8") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) |
| 386 | 375 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f5") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) |
| r32320 | r32321 | |
| 388 | 377 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) |
| 389 | 378 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) |
| 390 | 379 | |
| 391 | | PORT_MODIFY("keyboard_row_2") |
| 380 | PORT_MODIFY("kbrow.2") |
| 392 | 381 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR('{') |
| 393 | 382 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']') PORT_CHAR('}') |
| 394 | 383 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad f4") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) |
| r32320 | r32321 | |
| 401 | 390 | static INPUT_PORTS_START( cpc6128 ) |
| 402 | 391 | PORT_INCLUDE(amstrad_keyboard) |
| 403 | 392 | |
| 404 | | PORT_MODIFY("keyboard_row_0") |
| 393 | PORT_MODIFY("kbrow.0") |
| 405 | 394 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) |
| 406 | 395 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f6") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) |
| 407 | 396 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) |
| 408 | 397 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) |
| 409 | 398 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) |
| 410 | 399 | |
| 411 | | PORT_MODIFY("keyboard_row_1") |
| 400 | PORT_MODIFY("kbrow.1") |
| 412 | 401 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Copy") PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(END)) |
| 413 | 402 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) |
| 414 | 403 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f8") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) |
| r32320 | r32321 | |
| 417 | 406 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) |
| 418 | 407 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) |
| 419 | 408 | |
| 420 | | PORT_MODIFY("keyboard_row_2") |
| 409 | PORT_MODIFY("kbrow.2") |
| 421 | 410 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR('{') |
| 422 | 411 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| 423 | 412 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']') PORT_CHAR('}') |
| r32320 | r32321 | |
| 434 | 423 | static INPUT_PORTS_START( cpc6128f ) |
| 435 | 424 | PORT_INCLUDE(amstrad_keyboard) |
| 436 | 425 | |
| 437 | | PORT_MODIFY("keyboard_row_0") |
| 426 | PORT_MODIFY("kbrow.0") |
| 438 | 427 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) |
| 439 | 428 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f6") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) |
| 440 | 429 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) |
| 441 | 430 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) |
| 442 | 431 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) |
| 443 | 432 | |
| 444 | | PORT_MODIFY("keyboard_row_1") |
| 433 | PORT_MODIFY("kbrow.1") |
| 445 | 434 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Copy") PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(END)) |
| 446 | 435 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) |
| 447 | 436 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f8") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) |
| r32320 | r32321 | |
| 450 | 439 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) |
| 451 | 440 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) |
| 452 | 441 | |
| 453 | | PORT_MODIFY("keyboard_row_2") |
| 442 | PORT_MODIFY("kbrow.2") |
| 454 | 443 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('*') PORT_CHAR('<') |
| 455 | 444 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| 456 | 445 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('#') PORT_CHAR('>') |
| r32320 | r32321 | |
| 458 | 447 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR('$') PORT_CHAR('@') PORT_CHAR('\\') |
| 459 | 448 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2) |
| 460 | 449 | |
| 461 | | PORT_MODIFY("keyboard_row_3") |
| 450 | PORT_MODIFY("kbrow.3") |
| 462 | 451 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('_') |
| 463 | 452 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR(')') PORT_CHAR('[') |
| 464 | 453 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^ \xC2\xA6") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('^') PORT_CHAR('|') |
| r32320 | r32321 | |
| 467 | 456 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('=') PORT_CHAR('+') |
| 468 | 457 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR(':') PORT_CHAR('/') |
| 469 | 458 | |
| 470 | | PORT_MODIFY("keyboard_row_4") |
| 459 | PORT_MODIFY("kbrow.4") |
| 471 | 460 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xC3\xA0 0") PORT_CODE(KEYCODE_0) PORT_CHAR(0xE0) PORT_CHAR('0') |
| 472 | 461 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xC3\xA7 9") PORT_CODE(KEYCODE_9) PORT_CHAR(0xE7) PORT_CHAR('9') |
| 473 | 462 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR(',') PORT_CHAR('?') |
| 474 | 463 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(';') PORT_CHAR('.') |
| 475 | 464 | |
| 476 | | PORT_MODIFY("keyboard_row_5") |
| 465 | PORT_MODIFY("kbrow.5") |
| 477 | 466 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('!') PORT_CHAR('8') |
| 478 | 467 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xC3\xA9 7") PORT_CODE(KEYCODE_7) PORT_CHAR(0xE8) PORT_CHAR('7') |
| 479 | 468 | |
| 480 | | PORT_MODIFY("keyboard_row_6") |
| 469 | PORT_MODIFY("kbrow.6") |
| 481 | 470 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR(']') PORT_CHAR('6') |
| 482 | 471 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('(') PORT_CHAR('5') |
| 483 | 472 | |
| 484 | | PORT_MODIFY("keyboard_row_7") |
| 473 | PORT_MODIFY("kbrow.7") |
| 485 | 474 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('\'') PORT_CHAR('4') |
| 486 | 475 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('\"') PORT_CHAR('3') |
| 487 | 476 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('z') PORT_CHAR('Z') |
| 488 | 477 | |
| 489 | | PORT_MODIFY("keyboard_row_8") |
| 478 | PORT_MODIFY("kbrow.8") |
| 490 | 479 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('&') PORT_CHAR('1') |
| 491 | 480 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xC3\xA9 2 ~") PORT_CODE(KEYCODE_2) PORT_CHAR(0xE9) PORT_CHAR('2') PORT_CHAR('~') |
| 492 | 481 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('a') PORT_CHAR('A') |
| r32320 | r32321 | |
| 500 | 489 | static INPUT_PORTS_START( cpc6128s ) |
| 501 | 490 | PORT_INCLUDE(cpc6128) |
| 502 | 491 | |
| 503 | | PORT_MODIFY("keyboard_row_2") |
| 492 | PORT_MODIFY("kbrow.2") |
| 504 | 493 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xC3\x9C") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(0x00DC) |
| 505 | 494 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xC3\x89") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(0x00E9) |
| 506 | 495 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR('/') PORT_CHAR('?') |
| 507 | 496 | |
| 508 | | PORT_MODIFY("keyboard_row_3") |
| 497 | PORT_MODIFY("kbrow.3") |
| 509 | 498 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('+') PORT_CHAR('*') |
| 510 | 499 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=') |
| 511 | 500 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xC3\x85") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(0x00C5) |
| r32320 | r32321 | |
| 514 | 503 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('<') PORT_CHAR('>') |
| 515 | 504 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(':') |
| 516 | 505 | |
| 517 | | PORT_MODIFY("keyboard_row_4") |
| 506 | PORT_MODIFY("kbrow.4") |
| 518 | 507 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR(';') |
| 519 | 508 | INPUT_PORTS_END |
| 520 | 509 | |
| r32320 | r32321 | |
| 527 | 516 | static INPUT_PORTS_START( kccomp ) |
| 528 | 517 | PORT_INCLUDE(amstrad_keyboard) |
| 529 | 518 | |
| 530 | | PORT_MODIFY("keyboard_row_0") |
| 519 | PORT_MODIFY("kbrow.0") |
| 531 | 520 | PORT_BIT(0x08, 0x08, IPT_UNUSED) |
| 532 | 521 | PORT_BIT(0x10, 0x10, IPT_UNUSED) |
| 533 | 522 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) |
| 534 | 523 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) |
| 535 | 524 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) |
| 536 | 525 | |
| 537 | | PORT_MODIFY("keyboard_row_1") |
| 526 | PORT_MODIFY("kbrow.1") |
| 538 | 527 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Copy") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(END)) |
| 539 | 528 | PORT_BIT(0x04, 0x04, IPT_UNUSED) |
| 540 | 529 | PORT_BIT(0x08, 0x08, IPT_UNUSED) |
| r32320 | r32321 | |
| 543 | 532 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) |
| 544 | 533 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("f0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) |
| 545 | 534 | |
| 546 | | PORT_MODIFY("keyboard_row_2") |
| 535 | PORT_MODIFY("kbrow.2") |
| 547 | 536 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR('{') |
| 548 | 537 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| 549 | 538 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']') PORT_CHAR('}') |
| r32320 | r32321 | |
| 557 | 546 | |
| 558 | 547 | |
| 559 | 548 | static INPUT_PORTS_START( plus ) |
| 560 | | PORT_INCLUDE(amstrad_keyboard) |
| 561 | | PORT_INCLUDE(crtc_links) |
| 562 | | PORT_INCLUDE(amx_mouse) |
| 549 | PORT_INCLUDE(cpc664) |
| 563 | 550 | |
| 564 | 551 | /* The CPC+ and GX4000 adds support for analogue controllers. |
| 565 | 552 | Up to two joysticks or four paddles can be used, although the ASIC supports twice that. |
| r32320 | r32321 | |
| 574 | 561 | |
| 575 | 562 | The connectors' description for both CPCs and CPC+'s can be found at http://www.hardwarebook.info/Category:Computer */ |
| 576 | 563 | |
| 577 | | PORT_START("analog1") |
| 564 | PORT_START("analog.0") |
| 578 | 565 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) |
| 579 | 566 | PORT_SENSITIVITY(100) |
| 580 | 567 | PORT_KEYDELTA(10) |
| 581 | 568 | PORT_PLAYER(1) |
| 582 | 569 | |
| 583 | | PORT_START("analog2") |
| 570 | PORT_START("analog.1") |
| 584 | 571 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) |
| 585 | 572 | PORT_SENSITIVITY(100) |
| 586 | 573 | PORT_KEYDELTA(10) |
| 587 | 574 | PORT_PLAYER(1) |
| 588 | 575 | |
| 589 | | PORT_START("analog3") |
| 576 | PORT_START("analog.2") |
| 590 | 577 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) |
| 591 | 578 | PORT_SENSITIVITY(100) |
| 592 | 579 | PORT_KEYDELTA(10) |
| 593 | 580 | PORT_PLAYER(2) |
| 594 | 581 | |
| 595 | | PORT_START("analog4") |
| 582 | PORT_START("analog.3") |
| 596 | 583 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) |
| 597 | 584 | PORT_SENSITIVITY(100) |
| 598 | 585 | PORT_KEYDELTA(10) |
| 599 | 586 | PORT_PLAYER(2) |
| 600 | 587 | |
| 601 | 588 | // Not used, but are here for completeness |
| 602 | | PORT_START("analog5") |
| 589 | PORT_START("analog.4") |
| 603 | 590 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) |
| 604 | 591 | PORT_SENSITIVITY(100) |
| 605 | 592 | PORT_KEYDELTA(10) |
| 606 | 593 | PORT_PLAYER(3) |
| 607 | 594 | |
| 608 | | PORT_START("analog6") |
| 595 | PORT_START("analog.5") |
| 609 | 596 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) |
| 610 | 597 | PORT_SENSITIVITY(100) |
| 611 | 598 | PORT_KEYDELTA(10) |
| 612 | 599 | PORT_PLAYER(3) |
| 613 | 600 | |
| 614 | | PORT_START("analog7") |
| 601 | PORT_START("analog.6") |
| 615 | 602 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) |
| 616 | 603 | PORT_SENSITIVITY(100) |
| 617 | 604 | PORT_KEYDELTA(10) |
| 618 | 605 | PORT_PLAYER(4) |
| 619 | 606 | |
| 620 | | PORT_START("analog8") |
| 607 | PORT_START("analog.7") |
| 621 | 608 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) |
| 622 | 609 | PORT_SENSITIVITY(100) |
| 623 | 610 | PORT_KEYDELTA(10) |
| r32320 | r32321 | |
| 628 | 615 | static INPUT_PORTS_START( gx4000 ) |
| 629 | 616 | |
| 630 | 617 | // The GX4000 is a console, so no keyboard access other than the joysticks. |
| 631 | | PORT_START("keyboard_row_0") |
| 618 | PORT_START("kbrow.0") |
| 632 | 619 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 633 | 620 | |
| 634 | | PORT_START("keyboard_row_1") |
| 621 | PORT_START("kbrow.1") |
| 635 | 622 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 636 | 623 | |
| 637 | | PORT_START("keyboard_row_2") |
| 624 | PORT_START("kbrow.2") |
| 638 | 625 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 639 | 626 | |
| 640 | | PORT_START("keyboard_row_3") |
| 627 | PORT_START("kbrow.3") |
| 641 | 628 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 642 | 629 | |
| 643 | | PORT_START("keyboard_row_4") |
| 630 | PORT_START("kbrow.4") |
| 644 | 631 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 645 | 632 | |
| 646 | | PORT_START("keyboard_row_5") |
| 633 | PORT_START("kbrow.5") |
| 647 | 634 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 648 | 635 | |
| 649 | | PORT_START("keyboard_row_6") // Joystick 2 |
| 636 | PORT_START("kbrow.6") // Joystick 2 |
| 650 | 637 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(2) PORT_8WAY |
| 651 | 638 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) PORT_8WAY |
| 652 | 639 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(2) PORT_8WAY |
| r32320 | r32321 | |
| 655 | 642 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) |
| 656 | 643 | PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) |
| 657 | 644 | |
| 658 | | PORT_START("keyboard_row_7") |
| 645 | PORT_START("kbrow.7") |
| 659 | 646 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 660 | 647 | |
| 661 | | PORT_START("keyboard_row_8") |
| 648 | PORT_START("kbrow.8") |
| 662 | 649 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 663 | 650 | |
| 664 | | PORT_START("keyboard_row_9") // Joystick 1 |
| 651 | PORT_START("kbrow.9") // Joystick 1 |
| 665 | 652 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(1) PORT_8WAY |
| 666 | 653 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) PORT_8WAY |
| 667 | 654 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(1) PORT_8WAY |
| r32320 | r32321 | |
| 672 | 659 | |
| 673 | 660 | PORT_INCLUDE(crtc_links) // included to keep the driver happy |
| 674 | 661 | |
| 675 | | PORT_START("analog1") |
| 662 | PORT_START("analog.0") |
| 676 | 663 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) |
| 677 | 664 | PORT_SENSITIVITY(100) |
| 678 | 665 | PORT_KEYDELTA(10) |
| 679 | 666 | PORT_PLAYER(1) |
| 680 | 667 | |
| 681 | | PORT_START("analog2") |
| 668 | PORT_START("analog.1") |
| 682 | 669 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) |
| 683 | 670 | PORT_SENSITIVITY(100) |
| 684 | 671 | PORT_KEYDELTA(10) |
| 685 | 672 | PORT_PLAYER(1) |
| 686 | 673 | |
| 687 | | PORT_START("analog3") |
| 674 | PORT_START("analog.2") |
| 688 | 675 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) |
| 689 | 676 | PORT_SENSITIVITY(100) |
| 690 | 677 | PORT_KEYDELTA(10) |
| 691 | 678 | PORT_PLAYER(2) |
| 692 | 679 | |
| 693 | | PORT_START("analog4") |
| 680 | PORT_START("analog.3") |
| 694 | 681 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) |
| 695 | 682 | PORT_SENSITIVITY(100) |
| 696 | 683 | PORT_KEYDELTA(10) |
| 697 | 684 | PORT_PLAYER(2) |
| 698 | 685 | |
| 699 | 686 | // Not used, but are here for completeness |
| 700 | | PORT_START("analog5") |
| 687 | PORT_START("analog.4") |
| 701 | 688 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) |
| 702 | 689 | PORT_SENSITIVITY(100) |
| 703 | 690 | PORT_KEYDELTA(10) |
| 704 | 691 | PORT_PLAYER(3) |
| 705 | 692 | |
| 706 | | PORT_START("analog6") |
| 693 | PORT_START("analog.5") |
| 707 | 694 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) |
| 708 | 695 | PORT_SENSITIVITY(100) |
| 709 | 696 | PORT_KEYDELTA(10) |
| 710 | 697 | PORT_PLAYER(3) |
| 711 | 698 | |
| 712 | | PORT_START("analog7") |
| 699 | PORT_START("analog.6") |
| 713 | 700 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) |
| 714 | 701 | PORT_SENSITIVITY(100) |
| 715 | 702 | PORT_KEYDELTA(10) |
| 716 | 703 | PORT_PLAYER(4) |
| 717 | 704 | |
| 718 | | PORT_START("analog8") |
| 705 | PORT_START("analog.7") |
| 719 | 706 | PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) |
| 720 | 707 | PORT_SENSITIVITY(100) |
| 721 | 708 | PORT_KEYDELTA(10) |
| r32320 | r32321 | |
| 726 | 713 | static INPUT_PORTS_START( aleste ) |
| 727 | 714 | PORT_INCLUDE(amstrad_keyboard) |
| 728 | 715 | |
| 729 | | PORT_MODIFY( "keyboard_row_9" ) |
| 716 | PORT_MODIFY( "kbrow.9" ) |
| 730 | 717 | /* Documentation marks this input as "R/L", it's purpose is unknown - I can't even find it on the keyboard */ |
| 731 | 718 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R L") PORT_CODE(KEYCODE_PGUP) |
| 732 | 719 | |
| 733 | | PORT_START( "keyboard_row_10" ) |
| 720 | PORT_START( "kbrow.10" ) |
| 734 | 721 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1 F6") PORT_CODE(KEYCODE_F1) |
| 735 | 722 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2 F7") PORT_CODE(KEYCODE_F2) |
| 736 | 723 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3 F8") PORT_CODE(KEYCODE_F3) |
| r32320 | r32321 | |
| 799 | 786 | SLOT_INTERFACE_END |
| 800 | 787 | |
| 801 | 788 | static MACHINE_CONFIG_FRAGMENT( cpcplus_cartslot ) |
| 802 | | MCFG_CARTSLOT_ADD("cart") |
| 803 | | MCFG_CARTSLOT_EXTENSION_LIST("cpr,bin") |
| 804 | | MCFG_CARTSLOT_MANDATORY |
| 805 | | MCFG_CARTSLOT_INTERFACE("gx4000_cart") |
| 806 | | MCFG_CARTSLOT_LOAD(amstrad_state,amstrad_plus_cartridge) |
| 807 | | MCFG_SOFTWARE_LIST_ADD("cart_list","gx4000") |
| 789 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "gx4000_cart") |
| 790 | MCFG_GENERIC_EXTENSIONS("bin,cpr") |
| 791 | MCFG_GENERIC_MANDATORY |
| 792 | MCFG_GENERIC_LOAD(amstrad_state, amstrad_plus_cartridge) |
| 793 | |
| 794 | MCFG_SOFTWARE_LIST_ADD("cart_list", "gx4000") |
| 808 | 795 | MACHINE_CONFIG_END |
| 809 | 796 | |
| 810 | 797 | SLOT_INTERFACE_START(cpc_exp_cards) |
trunk/src/mess/machine/amstrad.c
| r32320 | r32321 | |
| 1173 | 1173 | if ( m_asic.enabled ) |
| 1174 | 1174 | { |
| 1175 | 1175 | // logerror("L-ROM: Lower ROM enabled, cart bank %i\n", m_asic.rmr2 & 0x07 ); |
| 1176 | | bank_base = &m_region_maincpu->base()[0x4000 * ( m_asic.rmr2 & 0x07 )]; |
| 1176 | bank_base = &m_region_cart->base()[0x4000 * (m_asic.rmr2 & 0x07)]; |
| 1177 | 1177 | switch( m_asic.rmr2 & 0x18 ) |
| 1178 | 1178 | { |
| 1179 | 1179 | case 0x00: |
| r32320 | r32321 | |
| 1200 | 1200 | } |
| 1201 | 1201 | else |
| 1202 | 1202 | { |
| 1203 | | m_bank1->set_base( m_region_maincpu->base() ); |
| 1204 | | m_bank2->set_base( m_region_maincpu->base() + 0x2000 ); |
| 1203 | m_bank1->set_base(m_region_cart->base()); |
| 1204 | m_bank2->set_base(m_region_cart->base() + 0x2000); |
| 1205 | 1205 | } |
| 1206 | 1206 | } |
| 1207 | 1207 | } |
| r32320 | r32321 | |
| 1495 | 1495 | if ( m_asic.enabled && ( m_asic.rmr2 & 0x18 ) == 0x18 ) |
| 1496 | 1496 | { |
| 1497 | 1497 | // Analogue ports |
| 1498 | | if(offset == 0x0808) |
| 1498 | if(offset >= 0x0808 && offset < 0x080c) |
| 1499 | 1499 | { |
| 1500 | | return (m_io_analog1->read() & 0x3f); |
| 1500 | return (m_io_analog[offset & 3]->read() & 0x3f); |
| 1501 | 1501 | } |
| 1502 | | if(offset == 0x0809) |
| 1503 | | { |
| 1504 | | return (m_io_analog2->read() & 0x3f); |
| 1505 | | } |
| 1506 | | if(offset == 0x080a) |
| 1507 | | { |
| 1508 | | return (m_io_analog3->read() & 0x3f); |
| 1509 | | } |
| 1510 | | if(offset == 0x080b) |
| 1511 | | { |
| 1512 | | return (m_io_analog4->read() & 0x3f); |
| 1513 | | } |
| 1514 | 1502 | if(offset == 0x080c || offset == 0x080e) |
| 1515 | 1503 | { |
| 1516 | 1504 | return 0x3f; |
| r32320 | r32321 | |
| 2634 | 2622 | If keyboard matrix line 11-15 are selected, the byte is always &ff. |
| 2635 | 2623 | After testing on a real CPC, it is found that these never change, they always return &FF. */ |
| 2636 | 2624 | |
| 2637 | | ioport_port *keyrow[] = { |
| 2638 | | m_io_keyboard_row_0, m_io_keyboard_row_1, m_io_keyboard_row_2, m_io_keyboard_row_3, m_io_keyboard_row_4, |
| 2639 | | m_io_keyboard_row_5, m_io_keyboard_row_6, m_io_keyboard_row_7, m_io_keyboard_row_8, m_io_keyboard_row_9, |
| 2640 | | m_io_keyboard_row_10 |
| 2641 | | }; |
| 2642 | | |
| 2643 | 2625 | if ( ( m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F ) > 10) |
| 2644 | 2626 | { |
| 2645 | 2627 | return 0xFF; |
| r32320 | r32321 | |
| 2649 | 2631 | if(m_aleste_mode == 0x08 && ( m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F ) == 10) |
| 2650 | 2632 | return 0xff; |
| 2651 | 2633 | |
| 2652 | | if (keyrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]) |
| 2634 | if (m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]) |
| 2653 | 2635 | { |
| 2654 | 2636 | if(m_system_type != SYSTEM_GX4000) |
| 2655 | 2637 | { |
| r32320 | r32321 | |
| 2659 | 2641 | } |
| 2660 | 2642 | if((m_io_ctrltype->read_safe(0) == 2) && (m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F) == 9) |
| 2661 | 2643 | { |
| 2662 | | return (keyrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]->read_safe(0) & 0x80) | 0x7f; |
| 2644 | return (m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]->read_safe(0) & 0x80) | 0x7f; |
| 2663 | 2645 | } |
| 2664 | 2646 | } |
| 2665 | 2647 | |
| 2666 | | return keyrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]->read_safe(0) & 0xFF; |
| 2648 | return m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]->read_safe(0) & 0xFF; |
| 2667 | 2649 | } |
| 2668 | 2650 | return 0xFF; |
| 2669 | 2651 | } |
| r32320 | r32321 | |
| 2719 | 2701 | prev_x = data_x; |
| 2720 | 2702 | prev_y = data_y; |
| 2721 | 2703 | |
| 2722 | | m_amx_mouse_data |= (m_io_keyboard_row_9->read_safe(0) & 0x80); // DEL key |
| 2704 | m_amx_mouse_data |= (m_io_kbrow[9]->read_safe(0) & 0x80); // DEL key |
| 2723 | 2705 | } |
| 2724 | 2706 | } |
| 2725 | 2707 | return 0xFF; |
| r32320 | r32321 | |
| 2862 | 2844 | |
| 2863 | 2845 | if(m_system_type == SYSTEM_PLUS || m_system_type == SYSTEM_GX4000) |
| 2864 | 2846 | { |
| 2847 | UINT8 *crt = m_region_cart->base(); |
| 2848 | int bank_mask = (m_cart->get_rom_size() / 0x4000) - 1; |
| 2849 | |
| 2865 | 2850 | /* ROMs are stored on the inserted cartridge in the Plus/GX4000 */ |
| 2866 | 2851 | for(i=0; i<128; i++) // fill ROM table |
| 2867 | | m_Amstrad_ROM_Table[i] = &rom[0x4000]; |
| 2852 | m_Amstrad_ROM_Table[i] = &crt[0x4000]; |
| 2868 | 2853 | for(i=128;i<160;i++) |
| 2869 | | m_Amstrad_ROM_Table[i] = &rom[(i-128)*0x4000]; |
| 2870 | | m_Amstrad_ROM_Table[7] = &rom[0xc000]; |
| 2854 | m_Amstrad_ROM_Table[i] = &crt[((i - 128) & bank_mask) * 0x4000]; |
| 2855 | m_Amstrad_ROM_Table[7] = &crt[0xc000]; |
| 2871 | 2856 | slot7 = true; |
| 2872 | 2857 | } |
| 2873 | 2858 | else |
| r32320 | r32321 | |
| 3046 | 3031 | m_asic.ram = m_region_user1->base(); // 16kB RAM for ASIC, memory-mapped registers. |
| 3047 | 3032 | m_system_type = SYSTEM_PLUS; |
| 3048 | 3033 | m_centronics->write_data7(0); |
| 3034 | |
| 3035 | astring region_tag; |
| 3036 | m_region_cart = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 3049 | 3037 | } |
| 3050 | 3038 | |
| 3051 | 3039 | |
| r32320 | r32321 | |
| 3085 | 3073 | { |
| 3086 | 3074 | m_asic.ram = m_region_user1->base(); // 16kB RAM for ASIC, memory-mapped registers. |
| 3087 | 3075 | m_system_type = SYSTEM_GX4000; |
| 3076 | |
| 3077 | astring region_tag; |
| 3078 | m_region_cart = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 3088 | 3079 | } |
| 3089 | 3080 | |
| 3090 | 3081 | MACHINE_RESET_MEMBER(amstrad_state,gx4000) |
| r32320 | r32321 | |
| 3188 | 3179 | |
| 3189 | 3180 | DEVICE_IMAGE_LOAD_MEMBER(amstrad_state, amstrad_plus_cartridge) |
| 3190 | 3181 | { |
| 3191 | | // load CPC Plus / GX4000 cartridge image |
| 3192 | | // Format is RIFF: RIFF header chunk contains "AMS!" |
| 3193 | | // Chunks should be 16k, but may vary |
| 3194 | | // Chunks labeled 'cb00' represent Cartridge block 0, and is loaded to &0000-&3fff |
| 3195 | | // 'cb01' represent Cartridge block 1, and is loaded to &4000-&7fff |
| 3196 | | // ... and so on. |
| 3182 | UINT32 size = m_cart->common_get_size("rom"); |
| 3183 | unsigned char header[12]; |
| 3184 | bool is_cpr = FALSE; |
| 3185 | logerror("IMG: loading CPC+ cartridge file\n"); |
| 3197 | 3186 | |
| 3198 | | UINT32 size, offset = 0; |
| 3199 | | dynamic_buffer temp_copy; |
| 3200 | | unsigned char header[12]; // RIFF chunk |
| 3201 | | char chunkid[4]; // chunk ID (4 character code - cb00, cb01, cb02... upto cb31 (max 512kB), other chunks are ignored) |
| 3202 | | char chunklen[4]; // chunk length (always little-endian) |
| 3203 | | int chunksize; // chunk length, calcaulated from the above |
| 3204 | | int ramblock; // 16k RAM block chunk is to be loaded in to |
| 3205 | | unsigned int bytes_to_read; // total bytes to read, as mame_feof doesn't react to EOF without trying to go past it. |
| 3206 | | unsigned char* mem = m_region_maincpu->base(); |
| 3207 | | |
| 3187 | // check for .CPR header |
| 3208 | 3188 | if (image.software_entry() == NULL) |
| 3209 | 3189 | { |
| 3210 | | size = image.length(); |
| 3211 | | temp_copy.resize(size); |
| 3212 | | if (image.fread(temp_copy, size) != size) |
| 3190 | image.fread(header, 12); |
| 3191 | if (strncmp((char *)header, "RIFF", 4) != 0) |
| 3213 | 3192 | { |
| 3214 | | logerror("IMG: failed to read from cart image\n"); |
| 3215 | | return IMAGE_INIT_FAIL; |
| 3193 | // not a CPR file, so rewind the image at start |
| 3194 | image.fseek(0, SEEK_SET); |
| 3216 | 3195 | } |
| 3196 | else |
| 3197 | { |
| 3198 | is_cpr = TRUE; |
| 3199 | size -= 12; |
| 3200 | } |
| 3217 | 3201 | } |
| 3218 | | else |
| 3219 | | { |
| 3220 | | size= image.get_software_region_length("rom"); |
| 3221 | | temp_copy.resize(size); |
| 3222 | | memcpy(temp_copy, image.get_software_region("rom"), size); |
| 3223 | | } |
| 3224 | 3202 | |
| 3225 | | logerror("IMG: loading CPC+ cartridge file\n"); |
| 3226 | | // load RIFF chunk |
| 3227 | | memcpy(header, temp_copy, 12); |
| 3228 | | offset += 12; |
| 3203 | // alloc ROM |
| 3204 | m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); |
| 3229 | 3205 | |
| 3230 | | if (strncmp((char *)header, "RIFF", 4) != 0) |
| 3206 | // actually load the cart into ROM |
| 3207 | if (image.software_entry() != NULL) |
| 3231 | 3208 | { |
| 3232 | | logerror("IMG: raw CPC+ cartridge file\n"); |
| 3233 | | offset -= 12; // no header, so we go back to the start of the file |
| 3234 | | |
| 3209 | logerror("IMG: raw CPC+ cartridge from softlist\n"); |
| 3210 | memcpy(m_cart->get_rom_base(), image.get_software_region("rom"), size); |
| 3211 | } |
| 3212 | else if (!is_cpr) |
| 3213 | { |
| 3235 | 3214 | // not an RIFF format file, assume raw binary (*.bin) |
| 3236 | | while (offset < size) |
| 3215 | logerror("IMG: raw CPC+ cartridge file\n"); |
| 3216 | if (size % 0x4000) |
| 3237 | 3217 | { |
| 3238 | | memcpy(mem + offset, temp_copy + offset, 0x4000); |
| 3239 | | |
| 3240 | | if ((size - offset) < 0x4000) |
| 3241 | | { |
| 3242 | | logerror("BIN: block %i loaded is smaller than 16kB in size\n", offset / 0x4000); |
| 3243 | | return IMAGE_INIT_FAIL; |
| 3244 | | } |
| 3245 | | offset += 0x4000; |
| 3218 | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Attempt to load a raw binary with some block smaller than 16kB in size"); |
| 3219 | return IMAGE_INIT_FAIL; |
| 3246 | 3220 | } |
| 3221 | else |
| 3222 | image.fread(m_cart->get_rom_base(), size); |
| 3247 | 3223 | } |
| 3248 | | else if (image.software_entry() == NULL) // we have no CPR carts in our gx4000 softlist |
| 3224 | else |
| 3249 | 3225 | { |
| 3226 | // load CPC Plus / GX4000 cartridge image |
| 3227 | // Format is RIFF: RIFF header chunk contains "AMS!" |
| 3228 | // Chunks should be 16k, but may vary |
| 3229 | // Chunks labeled 'cb00' represent Cartridge block 0, and is loaded to &0000-&3fff |
| 3230 | // 'cb01' represent Cartridge block 1, and is loaded to &4000-&7fff |
| 3231 | // ... and so on. |
| 3232 | |
| 3233 | UINT32 offset = 0; |
| 3234 | UINT8 *crt = m_cart->get_rom_base(); |
| 3235 | dynamic_buffer temp_copy; |
| 3236 | temp_copy.resize(size); |
| 3237 | image.fread(temp_copy, size); |
| 3238 | |
| 3239 | // RIFF chunk bits |
| 3240 | char chunkid[4]; // chunk ID (4 character code - cb00, cb01, cb02... upto cb31 (max 512kB), other chunks are ignored) |
| 3241 | char chunklen[4]; // chunk length (always little-endian) |
| 3242 | int chunksize; // chunk length, calcaulated from the above |
| 3243 | int ramblock; // 16k RAM block chunk is to be loaded into |
| 3244 | unsigned int bytes_to_read; // total bytes to read, as mame_feof doesn't react to EOF without trying to go past it. |
| 3245 | |
| 3250 | 3246 | // Is RIFF format (*.cpr) |
| 3251 | 3247 | if (strncmp((char*)(header + 8), "AMS!", 4) != 0) |
| 3252 | 3248 | { |
| 3253 | | logerror("CPR: not an Amstrad CPC cartridge image\n"); |
| 3249 | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Not an Amstrad CPC cartridge image (despite RIFF header)"); |
| 3254 | 3250 | return IMAGE_INIT_FAIL; |
| 3255 | 3251 | } |
| 3256 | 3252 | |
| r32320 | r32321 | |
| 3279 | 3275 | ramblock += chunkid[3] - 0x30; |
| 3280 | 3276 | logerror("CPR: Loading chunk into RAM block %i ['%4s']\n", ramblock, chunkid); |
| 3281 | 3277 | |
| 3282 | | if(ramblock >= 0 && ramblock < 32) |
| 3278 | // load block into ROM area (max 512K) |
| 3279 | if (ramblock >= 0 && ramblock < 32) |
| 3283 | 3280 | { |
| 3284 | | // clear RAM block |
| 3285 | | memset(mem + 0x4000 * ramblock, 0, 0x4000); |
| 3281 | if (chunksize > 0x4000) |
| 3282 | chunksize = 0x4000; |
| 3286 | 3283 | |
| 3287 | | // load block into ROM area |
| 3288 | | if (chunksize > 16384) |
| 3289 | | chunksize = 16384; |
| 3290 | | |
| 3291 | | memcpy(mem + 0x4000 * ramblock, temp_copy + offset, chunksize); |
| 3284 | memcpy(crt + 0x4000 * ramblock, temp_copy + offset, chunksize); |
| 3292 | 3285 | bytes_to_read -= chunksize; |
| 3293 | 3286 | offset += chunksize; |
| 3294 | 3287 | logerror("CPR: Loaded %i-byte chunk into RAM block %i\n", chunksize, ramblock); |
| r32320 | r32321 | |
| 3305 | 3298 | } |
| 3306 | 3299 | } |
| 3307 | 3300 | } |
| 3308 | | else // CPR carts in our softlist |
| 3309 | | { |
| 3310 | | logerror("Gamelist cart in RIFF format\n"); |
| 3311 | | return IMAGE_INIT_FAIL; |
| 3312 | | } |
| 3313 | 3301 | |
| 3314 | 3302 | return IMAGE_INIT_PASS; |
| 3315 | 3303 | } |
trunk/src/mess/includes/amstrad.h
| r32320 | r32321 | |
| 30 | 30 | #include "bus/centronics/epson_lx800.h" |
| 31 | 31 | #include "bus/centronics/printer.h" |
| 32 | 32 | #include "bus/centronics/digiblst.h" |
| 33 | #include "bus/generic/slot.h" |
| 34 | #include "bus/generic/carts.h" |
| 33 | 35 | |
| 34 | 36 | |
| 35 | 37 | /**************************** |
| r32320 | r32321 | |
| 119 | 121 | m_ppi(*this, "ppi8255"), |
| 120 | 122 | m_centronics(*this, "centronics"), |
| 121 | 123 | m_cassette(*this, "cassette"), |
| 124 | m_cart(*this, "cartslot"), |
| 122 | 125 | m_ram(*this, RAM_TAG), |
| 123 | 126 | m_exp(*this, "exp"), |
| 124 | 127 | m_rtc(*this, "rtc"), |
| r32320 | r32321 | |
| 140 | 143 | m_bank14(*this, "bank14"), |
| 141 | 144 | m_bank15(*this, "bank15"), |
| 142 | 145 | m_bank16(*this, "bank16"), |
| 143 | | m_io_keyboard_row_0(*this, "keyboard_row_0"), |
| 144 | | m_io_keyboard_row_1(*this, "keyboard_row_1"), |
| 145 | | m_io_keyboard_row_2(*this, "keyboard_row_2"), |
| 146 | | m_io_keyboard_row_3(*this, "keyboard_row_3"), |
| 147 | | m_io_keyboard_row_4(*this, "keyboard_row_4"), |
| 148 | | m_io_keyboard_row_5(*this, "keyboard_row_5"), |
| 149 | | m_io_keyboard_row_6(*this, "keyboard_row_6"), |
| 150 | | m_io_keyboard_row_7(*this, "keyboard_row_7"), |
| 151 | | m_io_keyboard_row_8(*this, "keyboard_row_8"), |
| 152 | | m_io_keyboard_row_9(*this, "keyboard_row_9"), |
| 153 | | m_io_keyboard_row_10(*this, "keyboard_row_10"), |
| 154 | | m_io_solder_links(*this, "solder_links"), |
| 155 | | m_io_green_display(*this, "green_display"), |
| 156 | | m_io_ctrltype(*this,"controller_type"), |
| 146 | m_io_kbrow(*this, "kbrow"), |
| 147 | m_io_analog(*this, "analog"), |
| 157 | 148 | m_io_mouse1(*this,"mouse_input1"), |
| 158 | 149 | m_io_mouse2(*this,"mouse_input2"), |
| 159 | 150 | m_io_mouse3(*this,"mouse_input3"), |
| 160 | | m_io_analog1(*this, "analog1"), |
| 161 | | m_io_analog2(*this, "analog2"), |
| 162 | | m_io_analog3(*this, "analog3"), |
| 163 | | m_io_analog4(*this, "analog4"), |
| 151 | m_io_solder_links(*this, "solder_links"), |
| 152 | m_io_green_display(*this, "green_display"), |
| 153 | m_io_ctrltype(*this,"controller_type"), |
| 164 | 154 | m_screen(*this, "screen"), |
| 165 | 155 | m_palette(*this, "palette") { } |
| 166 | 156 | |
| r32320 | r32321 | |
| 171 | 161 | required_device<i8255_device> m_ppi; |
| 172 | 162 | optional_device<centronics_device> m_centronics; // not on a GX4000 |
| 173 | 163 | optional_device<cassette_image_device> m_cassette; // not on a GX4000, (or technically, the 6128+) |
| 164 | optional_device<generic_slot_device> m_cart; // only on 664+, 6128+ and GX4000 |
| 174 | 165 | required_device<ram_device> m_ram; |
| 175 | 166 | optional_device<cpc_expansion_slot_device> m_exp; // not on a GX4000 |
| 176 | 167 | optional_device<mc146818_device> m_rtc; // Aleste 520EX only |
| r32320 | r32321 | |
| 274 | 265 | required_memory_bank m_bank14; |
| 275 | 266 | required_memory_bank m_bank15; |
| 276 | 267 | required_memory_bank m_bank16; |
| 277 | | required_ioport m_io_keyboard_row_0; |
| 278 | | required_ioport m_io_keyboard_row_1; |
| 279 | | required_ioport m_io_keyboard_row_2; |
| 280 | | required_ioport m_io_keyboard_row_3; |
| 281 | | required_ioport m_io_keyboard_row_4; |
| 282 | | required_ioport m_io_keyboard_row_5; |
| 283 | | required_ioport m_io_keyboard_row_6; |
| 284 | | required_ioport m_io_keyboard_row_7; |
| 285 | | required_ioport m_io_keyboard_row_8; |
| 286 | | required_ioport m_io_keyboard_row_9; |
| 287 | | optional_ioport m_io_keyboard_row_10; |
| 288 | | required_ioport m_io_solder_links; |
| 289 | | required_ioport m_io_green_display; |
| 290 | | optional_ioport m_io_ctrltype; |
| 268 | optional_ioport_array<11> m_io_kbrow; |
| 269 | optional_ioport_array<4> m_io_analog; |
| 291 | 270 | optional_ioport m_io_mouse1; |
| 292 | 271 | optional_ioport m_io_mouse2; |
| 293 | 272 | optional_ioport m_io_mouse3; |
| 294 | | optional_ioport m_io_analog1; |
| 295 | | optional_ioport m_io_analog2; |
| 296 | | optional_ioport m_io_analog3; |
| 297 | | optional_ioport m_io_analog4; |
| 273 | required_ioport m_io_solder_links; |
| 274 | required_ioport m_io_green_display; |
| 275 | optional_ioport m_io_ctrltype; |
| 298 | 276 | required_device<screen_device> m_screen; |
| 299 | 277 | required_device<palette_device> m_palette; |
| 300 | 278 | |
| 279 | memory_region *m_region_cart; |
| 280 | |
| 301 | 281 | void amstrad_init_lookups(); |
| 302 | 282 | void amstrad_vh_update_mode(); |
| 303 | 283 | void amstrad_plus_dma_parse(int channel); |