C语言函数 - K开头


函数名: kbhit

功  能: 检查当前按下的键

用  法: int kbhit(void);

程序例:


#include <conio.h>


int main(void)

{

  cprintf("Press any key to continue:");

  while (!kbhit()) /* do nothing */ ;

  cprintf("\r\nA key was pressed...\r\n");

  return 0;

}





函数名: keep

功  能: 退出并继续驻留

用  法: void keep(int status, int size);

程序例:


/***NOTE:

  This is an interrupt service routine.  You

  can NOT compile this program with Test

  Stack Overflow turned on and get an

  executable file which will operate

  correctly.  Due to the nature of this

  function the formula used to compute

  the number of paragraphs may not

  necessarily work in all cases.  Use with

  care!  Terminate Stay Resident (TSR)

  programs are complex and no other support

  for them is provided.  Refer to the

  MS-DOS technical documentation

  for more information.  */

#include <dos.h>

/* The clock tick interrupt */

#define INTR 0x1C

/* Screen attribute (blue on grey) */

#define ATTR 0x7900


/* reduce heaplength and stacklength

to make a smaller program in memory */

extern unsigned _heaplen = 1024;

extern unsigned _stklen  = 512;


void interrupt ( *oldhandler)(void);


void interrupt handler(void)

{

  unsigned int (far *screen)[80];

  static int count;


/* For a color screen the video memory

  is at B800:0000.  For a monochrome

  system use B000:000 */

  screen = MK_FP(0xB800,0);


/* increase the counter and keep it

  within 0 to 9 */

  count++;

  count %= 10;


/* put the number on the screen */

  screen[0][79] = count + '0' + ATTR;


/* call the old interrupt handler */

  oldhandler();

}


int main(void)

{


/* get the address of the current clock

  tick interrupt */

oldhandler = getvect(INTR);


/* install the new interrupt handler */

setvect(INTR, handler);


/* _psp is the starting address of the

  program in memory.  The top of the stack

  is the end of the program.  Using _SS and

  _SP together we can get the end of the

  stack.  You may want to allow a bit of

  saftey space to insure that enough room

  is being allocated ie:

  (_SS + ((_SP + safety space)/16) - _psp)

*/

keep(0, (_SS + (_SP/16) - _psp));

return 0;

}