--- uae/src/od-dos/misc/handlers.c 2018/04/24 16:40:30 1.1 +++ uae/src/od-dos/misc/handlers.c 2018/04/24 16:44:01 1.1.1.2 @@ -35,30 +35,20 @@ #include "misc/misc.h" /* dummie Amiga Keys */ -#define AK_EjectDisk 0xfa -#define AK_ChangeDisk 0xfb -#define AK_SaveScreen1 0xfc -#define AK_SaveScreen2 0xfd -#define AK_TougleScreen 0xfe -#define AK_QuitProgram 0xff +#define AK_Options 0x1fc +#define AK_SaveScreen1 0x1fd +#define AK_SaveScreen2 0x1fe +#define AK_TougleScreen 0x1ff /* Event Flags */ -#define EF_ResetCPU 0x0001 -#define EF_EjectDisk0 0x0002 -#define EF_EjectDisk1 0x0004 -#define EF_EjectDisk2 0x0008 -#define EF_EjectDisk3 0x0010 -#define EF_ChangeDisk0 0x0020 -#define EF_ChangeDisk1 0x0040 -#define EF_ChangeDisk2 0x0080 -#define EF_ChangeDisk3 0x0100 -#define EF_ChangeOptions 0x0200 -#define EF_EnterDebug 0x0400 -#define EF_SaveScreen 0x0800 -#define EF_TougleScreen 0x1000 -#define EF_TougleSound 0x2000 -#define EF_TougleCapsLock 0x4000 -#define EF_QuitProgram 0x8000 +#define EF_ResetCPU 0x01 +#define EF_ChangeOptions 0x02 +#define EF_EnterDebug 0x04 +#define EF_SaveScreen 0x08 +#define EF_TougleScreen 0x10 +#define EF_TougleSound 0x20 +#define EF_TougleCapsLock 0x40 +#define EF_QuitProgram 0x80 extern int kpb_first, kpb_last; extern int keybuf[256]; @@ -66,7 +56,7 @@ extern int keybuf[256]; int Original_produce_sound; int KeyBoardInstalled = 0, MouseInstalled = 0; int EventFlags = 0; -int KeyState[256]; +int KeyState[512]; int buttonstate[3] = {0, 0, 0}; int lastmx, lastmy; int newmousecounters = 0; @@ -87,9 +77,9 @@ int AmigaKeys[128] = { AK_F6, AK_F7, AK_F8, AK_F9, AK_F10, -1, AK_TougleScreen, AK_NP7, AK_NP8, AK_NP9, -1, AK_NP4, AK_NP5, AK_NP6, -1, AK_NP1, AK_NP2, AK_NP3, AK_NP0, -1, -1, -1, -1, AK_BACKSLASH, - AK_QuitProgram, -1, -1, -1, -1, -1, -1, -1, - -1, AK_RCTRL, AK_SaveScreen1, AK_SaveScreen2, AK_RALT, -1, AK_ChangeDisk, AK_UP, - AK_RAMI, AK_LF, AK_RT, AK_EjectDisk, AK_DN, AK_LAMI, AK_HELP, AK_DEL, + -1, -1, -1, -1, -1, -1, -1, -1, + -1, AK_RCTRL, AK_SaveScreen1, AK_SaveScreen2, AK_RALT, -1, AK_Options, AK_UP, + AK_RAMI, AK_LF, AK_RT, -1, AK_DN, AK_LAMI, AK_HELP, AK_DEL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, AK_LAMI, AK_RAMI, -1 }; @@ -138,49 +128,12 @@ void handle_events(void) { m68k_reset(); EventFlags &= ~EF_ResetCPU; } - if (EventFlags & EF_EjectDisk0) { - disk_eject(0); - EventFlags &= ~EF_EjectDisk0; - } - if (EventFlags & EF_EjectDisk1) { - disk_eject(1); - EventFlags &= ~EF_EjectDisk1; - } - if (EventFlags & EF_EjectDisk2) { - disk_eject(2); - EventFlags &= ~EF_EjectDisk2; - } - if (EventFlags & EF_EjectDisk3) { - disk_eject(3); - EventFlags &= ~EF_EjectDisk3; - } - if (EventFlags & EF_ChangeDisk0) { - HandleDisk(0); - KeyState[AK_ChangeDisk] = 0; + if (EventFlags & EF_ChangeOptions) { + HandleOptions(); + KeyState[AK_Options] = 0; KeyState[AK_F1] = 0; record_key ((AK_F1 << 1) | 1); - EventFlags &= ~EF_ChangeDisk0; - } - if (EventFlags & EF_ChangeDisk1) { - HandleDisk(1); - KeyState[AK_ChangeDisk] = 0; - KeyState[AK_F2] = 0; - record_key ((AK_F2 << 1) | 1); - EventFlags &= ~EF_ChangeDisk1; - } - if (EventFlags & EF_ChangeDisk2) { - HandleDisk(2); - KeyState[AK_ChangeDisk] = 0; - KeyState[AK_F3] = 0; - record_key ((AK_F3 << 1) | 1); - EventFlags &= ~EF_ChangeDisk2; - } - if (EventFlags & EF_ChangeDisk3) { - HandleDisk(3); - KeyState[AK_ChangeDisk] = 0; - KeyState[AK_F4] = 0; - record_key ((AK_F4 << 1) | 1); - EventFlags &= ~EF_ChangeDisk3; + EventFlags &= ~EF_ChangeOptions; } if (EventFlags & EF_EnterDebug) { EnterDebug(); @@ -275,7 +228,7 @@ static void KeyboardHandler(void) { return; KeyState[AmigaKey] = NewState; - if (AmigaKey < AK_EjectDisk) { + if (AmigaKey < AK_Options) { if (NewState) record_key (AmigaKey << 1); else @@ -285,34 +238,18 @@ static void KeyboardHandler(void) { if ((KeyState[AK_CTRL] && KeyState[AK_LAMI] && KeyState[AK_RAMI]) || (KeyState[AK_RCTRL] && KeyState[AK_LAMI] && KeyState[AK_RAMI])) EventFlags |= EF_ResetCPU; - if (KeyState[AK_EjectDisk]) { - if (KeyState[AK_F1]) - EventFlags |= EF_EjectDisk0; - if (KeyState[AK_F2]) - EventFlags |= EF_EjectDisk1; - if (KeyState[AK_F3]) - EventFlags |= EF_EjectDisk2; - if (KeyState[AK_F4]) - EventFlags |= EF_EjectDisk3; - } - if (KeyState[AK_ChangeDisk]) { + if (KeyState[AK_Options]) { + if (KeyState[AK_ESC]) + EventFlags |= EF_QuitProgram; if (KeyState[AK_F1]) - EventFlags |= EF_ChangeDisk0; + EventFlags |= EF_ChangeOptions; if (KeyState[AK_F2]) - EventFlags |= EF_ChangeDisk1; - if (KeyState[AK_F3]) - EventFlags |= EF_ChangeDisk2; - if (KeyState[AK_F4]) - EventFlags |= EF_ChangeDisk3; - if (KeyState[AK_F6]) EventFlags |= EF_EnterDebug; } if (KeyState[AK_TougleScreen]) EventFlags |= EF_TougleScreen; if (KeyState[AK_SaveScreen1] && KeyState[AK_SaveScreen2]) EventFlags |= EF_SaveScreen; - if (KeyState[AK_QuitProgram]) - EventFlags |= EF_QuitProgram; } int InstallKeyboardHandler(void) {