src/mess/drivers/bml3.c
| r8684 | r8685 | |
| 7 | 7 | TODO: |
| 8 | 8 | - no documentation, the entire driver is just a bunch of educated |
| 9 | 9 | guesses ... |
| 10 | | - keyboard shift key, necessary for some key commands |
| 10 | - keyboard shift key is ugly mapped. |
| 11 | 11 | - understand how to load a tape |
| 12 | 12 | - every time that you switch with NEW ON command, there's a "device i/o error" if |
| 13 | 13 | the hres_reg bit 5 is active. |
| 14 | - LINE command doesn't work? It says "type mismatch" |
| 14 | 15 | |
| 15 | 16 | NOTES: |
| 16 | 17 | - NEW ON changes the video mode, they are: |
| r8684 | r8685 | |
| 156 | 157 | return res | 0x80; |
| 157 | 158 | } |
| 158 | 159 | |
| 159 | | return 0; |
| 160 | return 0x00; |
| 160 | 161 | } |
| 161 | 162 | |
| 162 | 163 | /* Note: this custom code is there just for simplicity, it'll be nuked in the end */ |
| r8684 | r8685 | |
| 286 | 287 | PORT_BIT(0x00000008,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) |
| 287 | 288 | PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) |
| 288 | 289 | PORT_BIT(0x00000020,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) |
| 289 | | PORT_BIT(0x00000040,IP_ACTIVE_HIGH,IPT_UNKNOWN) |
| 290 | | PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Caps Lock?")// (changes the items at the bottom, caps lock?) |
| 291 | | PORT_BIT(0x00000100,IP_ACTIVE_HIGH,IPT_UNKNOWN) |
| 292 | | PORT_BIT(0x00000200,IP_ACTIVE_HIGH,IPT_UNKNOWN) |
| 293 | | PORT_BIT(0x00000400,IP_ACTIVE_HIGH,IPT_UNKNOWN) |
| 294 | | PORT_BIT(0x00000800,IP_ACTIVE_HIGH,IPT_UNKNOWN) |
| 295 | | PORT_BIT(0x00001000,IP_ACTIVE_HIGH,IPT_UNKNOWN) |
| 296 | | PORT_BIT(0x00002000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') |
| 297 | | PORT_BIT(0x00004000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') |
| 298 | | PORT_BIT(0x00008000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("*") |
| 290 | PORT_BIT(0x00000040,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X1") |
| 291 | PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Shift")PORT_CODE(KEYCODE_LSHIFT) |
| 292 | PORT_BIT(0x00000100,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X2") |
| 293 | PORT_BIT(0x00000200,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE |
| 294 | PORT_BIT(0x00000400,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Kana Lock") PORT_CODE(KEYCODE_NUMLOCK) PORT_TOGGLE |
| 295 | PORT_BIT(0x00000800,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Kana Shift") PORT_CODE(KEYCODE_LCONTROL) |
| 296 | PORT_BIT(0x00001000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X6") |
| 297 | PORT_BIT(0x00002000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8 PAD") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR('8') |
| 298 | PORT_BIT(0x00004000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9 PAD") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('9') |
| 299 | PORT_BIT(0x00008000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*') |
| 299 | 300 | PORT_BIT(0x00010000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') |
| 300 | 301 | PORT_BIT(0x00020000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') |
| 301 | 302 | PORT_BIT(0x00040000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') |
| 302 | | PORT_BIT(0x00080000,IP_ACTIVE_HIGH,IPT_UNKNOWN) //8 |
| 303 | PORT_BIT(0x00080000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') |
| 303 | 304 | PORT_BIT(0x00100000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') |
| 304 | 305 | PORT_BIT(0x00200000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("^") |
| 305 | 306 | PORT_BIT(0x00400000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') |
| r8684 | r8685 | |
| 309 | 310 | PORT_BIT(0x04000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') |
| 310 | 311 | PORT_BIT(0x08000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') |
| 311 | 312 | PORT_BIT(0x10000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') |
| 312 | | PORT_BIT(0x20000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') |
| 313 | | PORT_BIT(0x40000000,IP_ACTIVE_HIGH,IPT_UNKNOWN) //backspace |
| 313 | PORT_BIT(0x20000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("7 PAD") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR('7') |
| 314 | PORT_BIT(0x40000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X7") //backspace |
| 314 | 315 | PORT_BIT(0x80000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("\xC2\xA5") //PORT_NAME("¥") |
| 315 | 316 | |
| 316 | 317 | PORT_START("key2") //0x20-0x3f |
| r8684 | r8685 | |
| 321 | 322 | PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) |
| 322 | 323 | PORT_BIT(0x00000020,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("[") |
| 323 | 324 | PORT_BIT(0x00000040,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("@") |
| 324 | | PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_UNKNOWN) //0 |
| 325 | PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("0 PAD") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR('0') |
| 325 | 326 | PORT_BIT(0x00000100,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) |
| 326 | 327 | PORT_BIT(0x00000200,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) |
| 327 | 328 | PORT_BIT(0x00000400,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) |
| r8684 | r8685 | |
| 337 | 338 | PORT_BIT(0x00100000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(";") |
| 338 | 339 | PORT_BIT(0x00200000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("]") |
| 339 | 340 | PORT_BIT(0x00400000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(":") |
| 340 | | PORT_BIT(0x00800000,IP_ACTIVE_HIGH,IPT_UNKNOWN) //4 |
| 341 | PORT_BIT(0x00800000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("4 PAD") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR('4') |
| 341 | 342 | PORT_BIT(0x01000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) |
| 342 | 343 | PORT_BIT(0x02000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) |
| 343 | 344 | PORT_BIT(0x04000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) |
| 344 | 345 | PORT_BIT(0x08000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) |
| 345 | 346 | PORT_BIT(0x10000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) |
| 346 | | PORT_BIT(0x20000000,IP_ACTIVE_HIGH,IPT_UNKNOWN) //5 |
| 347 | | PORT_BIT(0x40000000,IP_ACTIVE_HIGH,IPT_UNKNOWN) //6 |
| 347 | PORT_BIT(0x20000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("5 PAD") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR('5') |
| 348 | PORT_BIT(0x40000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("6 PAD") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('6') |
| 348 | 349 | PORT_BIT(0x80000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) |
| 349 | 350 | |
| 350 | 351 | PORT_START("key3") //0x40-0x5f |
| r8684 | r8685 | |
| 353 | 354 | PORT_BIT(0x00000004,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) |
| 354 | 355 | PORT_BIT(0x00000008,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) |
| 355 | 356 | PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("/") PORT_CODE(KEYCODE_BACKSLASH) |
| 356 | | PORT_BIT(0x00000020,IP_ACTIVE_HIGH,IPT_UNKNOWN) // / |
| 357 | PORT_BIT(0x00000020,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("/ PAD") PORT_CODE(KEYCODE_SLASH_PAD) |
| 357 | 358 | PORT_BIT(0x00000040,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("_") |
| 358 | | PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_UNKNOWN) //1 |
| 359 | PORT_BIT(0x00000080,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('1') |
| 359 | 360 | PORT_BIT(0x00000100,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) |
| 360 | 361 | PORT_BIT(0x00000200,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) |
| 361 | 362 | PORT_BIT(0x00000400,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) |
| 362 | 363 | PORT_BIT(0x00000800,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) |
| 363 | 364 | PORT_BIT(0x00001000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) |
| 364 | | PORT_BIT(0x00002000,IP_ACTIVE_HIGH,IPT_UNKNOWN) |
| 365 | | PORT_BIT(0x00004000,IP_ACTIVE_HIGH,IPT_UNKNOWN) |
| 365 | PORT_BIT(0x00002000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("X8") |
| 366 | PORT_BIT(0x00004000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("3 PAD") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR('3') |
| 366 | 367 | PORT_BIT(0x00008000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("+") PORT_CODE(KEYCODE_PLUS_PAD) |
| 367 | 368 | PORT_BIT(0x00010000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("PF1") PORT_CODE(KEYCODE_F1) |
| 368 | 369 | PORT_BIT(0x00020000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("PF2") PORT_CODE(KEYCODE_F2) |
| r8684 | r8685 | |
| 398 | 399 | { |
| 399 | 400 | if((input_port_read(machine,portnames[port_i])>>i) & 1) |
| 400 | 401 | { |
| 401 | | keyb_press = scancode; |
| 402 | | keyb_press_flag = 1; |
| 403 | | cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE); |
| 404 | | return; |
| 402 | { |
| 403 | keyb_press = scancode; |
| 404 | keyb_press_flag = 1; |
| 405 | cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE); |
| 406 | return; |
| 407 | } |
| 405 | 408 | } |
| 406 | 409 | |
| 407 | 410 | scancode++; |