r8629 Sunday 25th July, 2010 at 20:15:33 UTC by Angelo Salese
[MULTI8]: Fixed shift pressing for good
[src/mess/drivers]multi8.c

src/mess/drivers/multi8.c
r8628r8629
2020#include "sound/beep.h"
2121
2222static UINT8 mcu_init;
23static UINT8 keyb_press,keyb_press_flag,display_reg;
23static UINT8 keyb_press,keyb_press_flag,shift_press_flag,display_reg;
2424static UINT16 cursor_addr,cursor_raster;
2525static UINT8 vram_bank;
2626static UINT8 pen_clut[8],bw_mode;
r8628r8629
168168   if(mcu_init == 1){ mcu_init++;   return 1; }
169169   if(mcu_init == 2){ mcu_init++;   return 0; }
170170
171   return keyb_press_flag;
171   return keyb_press_flag | (shift_press_flag << 7);
172172}
173173
174174static READ8_HANDLER( multi8_vram_r )
r8628r8629
361361   PORT_BIT(0x80000000,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("_")
362362
363363   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)
369369INPUT_PORTS_END
370370
371371static TIMER_CALLBACK( keyboard_callback )
r8628r8629
375375   UINT8 keymod = input_port_read(machine,"key_modifiers") & 0x1f;
376376   scancode = 0;
377377
378   shift_press_flag = ((keymod & 0x02) >> 1);
379
378380   for(port_i=0;port_i<3;port_i++)
379381   {
380382      for(i=0;i<32;i++)
r8628r8629
382384         if((input_port_read(machine,portnames[port_i])>>i) & 1)
383385         {
384386            //key_flag = 1;
385            if(keymod & 0x02)  // shift not pressed
387            if(!shift_press_flag)  // shift not pressed
386388            {
387389               if(scancode >= 0x41 && scancode < 0x5b)
388390                  scancode += 0x20;  // lowercase
r8628r8629
405407                  scancode = 0x3e;
406408            }
407409            keyb_press = scancode;
408            keyb_press_flag = 1 | ((keymod & 0x02) ? 0x00 : 0x80);
410            keyb_press_flag = 1;
409411            return;
410412         }
411413         scancode++;

Previous 509070 RevisionsNext 50


© 1998-2010 The MESS Team