ref: d6e6dfb3526f7f87abcfb55315c271ac0093e24a
dir: /src/isr.c/
/*
Copyright (C) 1994-1995 Apogee Software, Ltd.
Copyright (C) 2002-2015 icculus.org, GNU/Linux port
Copyright (C) 2017-2018 Steven LeVesque
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
============================================================================
TIMER INTERRUPT
============================================================================
*/
#include <stdlib.h>
#include <stdio.h>
#include "rt_def.h"
#include "task_man.h"
#include "isr.h"
#include "_isr.h"
#include "rt_in.h"
#include "rt_util.h"
#include "profile.h"
#include "develop.h"
#include "rt_main.h"
#include "SDL2/SDL.h"
// Global Variables
volatile int Keyboard[MAXKEYBOARDSCAN];
volatile int KeyboardQueue[KEYQMAX];
volatile int Keystate[MAXKEYBOARDSCAN];
volatile int Keyhead;
volatile int Keytail;
volatile boolean PausePressed = false;
volatile boolean PanicPressed = false;
int KeyboardStarted=false;
const int ASCIINames[] = // Unshifted ASCII for scan codes
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
0,27,'1','2','3','4','5','6','7','8','9','0','-','=',8,9, // 0
'q','w','e','r','t','y','u','i','o','p','[',']',13,0,'a','s', // 1
'd','f','g','h','j','k','l',';',39,'`',0,92,'z','x','c','v', // 2
'b','n','m',',','.','/',0,'*',0,' ',0,0,0,0,0,0, // 3
0,0,0,0,0,0,0,'7','8','9','-','4','5','6','+','1', // 4
'2','3','0',127,0,0,0,0,0,0,0,0,0,0,0,0, // 5
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 6
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 // 7
};
const int ShiftNames[] = // Shifted ASCII for scan codes
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
0,27,'!','@','#','$','%','^','&','*','(',')','_','+',8,9, // 0
'Q','W','E','R','T','Y','U','I','O','P','{','}',13,0,'A','S', // 1
'D','F','G','H','J','K','L',':',34,'~',0,'|','Z','X','C','V', // 2
'B','N','M','<','>','?',0,'*',0,' ',0,0,0,0,0,0, // 3
0,0,0,0,0,0,0,'7','8','9','-','4','5','6','+','1', // 4
'2','3','0',127,0,0,0,0,0,0,0,0,0,0,0,0, // 5
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 6
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 // 7
};
static int ticoffset; /* offset for SDL_GetTicks() */
static int ticbase; /* game-supplied base */
int GetTicCount (void)
{
return ((SDL_GetTicks() - ticoffset) * VBLCOUNTER) / 1000 + ticbase;
}
/*
================
=
= ISR_SetTime
=
================
*/
void ISR_SetTime(int settime)
{
ticoffset = SDL_GetTicks();
ticbase = settime;
}
/* developer-only */
int GetFastTics (void)
{
/* STUB_FUNCTION; */
return 0;
}
void SetFastTics (int settime)
{
/* STUB_FUNCTION; */
}
/*
================
=
= I_Delay
=
================
*/
void I_Delay ( int delay )
{
int time;
delay=(VBLCOUNTER*delay)/10;
IN_ClearKeysDown();
time=GetTicCount();
while (!LastScan && !IN_GetMouseButtons() && GetTicCount()<time+delay)
{
IN_UpdateKeyboard();
}
}
/*
===============
=
= I_StartupTimer
=
===============
*/
void I_StartupTimer (void)
{
}
void I_ShutdownTimer (void)
{
}
/*
===============
=
= I_StartupKeyboard
=
===============
*/
void I_StartupKeyboard (void)
{
}
void I_ShutdownKeyboard (void)
{
}