src/mess/drivers/multi8.c
| r8628 | r8629 | |
| 20 | 20 | #include "sound/beep.h" |
| 21 | 21 | |
| 22 | 22 | static UINT8 mcu_init; |
| 23 | | static UINT8 keyb_press,keyb_press_flag,display_reg; |
| 23 | static UINT8 keyb_press,keyb_press_flag,shift_press_flag,display_reg; |
| 24 | 24 | static UINT16 cursor_addr,cursor_raster; |
| 25 | 25 | static UINT8 vram_bank; |
| 26 | 26 | static UINT8 pen_clut[8],bw_mode; |
| r8628 | r8629 | |
| 168 | 168 | if(mcu_init == 1){ mcu_init++; return 1; } |
| 169 | 169 | if(mcu_init == 2){ mcu_init++; return 0; } |
| 170 | 170 | |
| 171 | | return keyb_press_flag; |
| 171 | return keyb_press_flag | (shift_press_flag << 7); |
| 172 | 172 | } |
| 173 | 173 | |
| 174 | 174 | static READ8_HANDLER( multi8_vram_r ) |
| r8628 | r8629 | |
| 361 | 361 | PORT_BIT(0x80000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("_") |
| 362 | 362 | |
| 363 | 363 | PORT_START("key_modifiers") |
| 364 | | PORT_BIT(0x00000001,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) |
| 365 | | PORT_BIT(0x00000002,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) |
| 366 | | PORT_BIT(0x00000004,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("KANA") PORT_CODE(KEYCODE_RCONTROL) |
| 367 | | PORT_BIT(0x00000008,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE |
| 368 | | PORT_BIT(0x00000010,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("GRPH") PORT_CODE(KEYCODE_LALT) |
| 364 | PORT_BIT(0x00000001,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) |
| 365 | PORT_BIT(0x00000002,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) |
| 366 | PORT_BIT(0x00000004,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("KANA") PORT_CODE(KEYCODE_RCONTROL) |
| 367 | PORT_BIT(0x00000008,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("CAPS") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE |
| 368 | PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("GRPH") PORT_CODE(KEYCODE_LALT) |
| 369 | 369 | INPUT_PORTS_END |
| 370 | 370 | |
| 371 | 371 | static TIMER_CALLBACK( keyboard_callback ) |
| r8628 | r8629 | |
| 375 | 375 | UINT8 keymod = input_port_read(machine,"key_modifiers") & 0x1f; |
| 376 | 376 | scancode = 0; |
| 377 | 377 | |
| 378 | shift_press_flag = ((keymod & 0x02) >> 1); |
| 379 | |
| 378 | 380 | for(port_i=0;port_i<3;port_i++) |
| 379 | 381 | { |
| 380 | 382 | for(i=0;i<32;i++) |
| r8628 | r8629 | |
| 382 | 384 | if((input_port_read(machine,portnames[port_i])>>i) & 1) |
| 383 | 385 | { |
| 384 | 386 | //key_flag = 1; |
| 385 | | if(keymod & 0x02) // shift not pressed |
| 387 | if(!shift_press_flag) // shift not pressed |
| 386 | 388 | { |
| 387 | 389 | if(scancode >= 0x41 && scancode < 0x5b) |
| 388 | 390 | scancode += 0x20; // lowercase |
| r8628 | r8629 | |
| 405 | 407 | scancode = 0x3e; |
| 406 | 408 | } |
| 407 | 409 | keyb_press = scancode; |
| 408 | | keyb_press_flag = 1 | ((keymod & 0x02) ? 0x00 : 0x80); |
| 410 | keyb_press_flag = 1; |
| 409 | 411 | return; |
| 410 | 412 | } |
| 411 | 413 | scancode++; |