亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? millisec.txt

?? DOS下時間分辨率精確到毫秒的程序
?? TXT
字號:
Dean Pentcheff
Department of Integrative Biology
University of California at Berkeley
dean@violet.berkeley.edu

The code here provides PC programs with a millisecond resolution timer.  It
is entirely based on "tctimer" 1.0 by Richard S. Sadowsky (released to the
public domain 8/10/88) which, in turn, is based on "tptime" by Brian Foley
and Kim Kokkonen of TurboPower Software (also public domain).  I have
slightly rewritten the code to conform to C language conventions (in tctimer,
results were passed as argument pointers rather than function returns).  In
this version, elapsedtime() returns a time in seconds rather than
milliseconds, saving a floating point division by 1000.0.

These routines reprogram the timer chip, so they probably won't work if your
program does the same.  Other than that, there should be no incompatibility
problems.  They do not interfere with Turbo's sound() and nosound()
functions.

I've tested these under Turbo C 2.0.  Note that the file tctimer.c must be
separately compiled with the standalone "tcc" compiler since it uses inline
assembly.  Attempting to compile it under "tc" will result in compile-time
error messages.

The routine "initializetimer()" MUST be called first to reset the timer.  The
calling program MUST also call "restoretimer()" before exiting to reset the
timer to its original state.


The following routines are included (see testtimer.c for examples):

/*Reprogram the timer chip to allow 1 microsecond resolution*/
void initializetimer(void);

/*Read the timer with 1 microsecond resolution*/
long readtimer(void);

/*Calculate time elapsed (in seconds) between Start and Stop*/
double    elapsedtime(long start, long stop);

/*Restore the timer chip to its normal state*/
void restoretimer(void);


Limitations
-----------
Because long integers are used to represent time, TCTIMER cannot be used to
time events longer than about 60 minutes:

  4,294,967,295 (= $FFFFFFFF, largest unsigned value represented by longint)
/     1,193,181 (timer resolution in counts/second)
---------------
          3,599
        /    60 (seconds/minute)
        -------
           59.9 minutes

This should hardly be a problem, however, since an event longer than an hour
presumably doesn't need to be timed with 1-microsecond accuracy anyway.

Also note that the process of reading the time takes time. Hence, results of
timing very short events will be skewed by the overhead of reading the timer.
The following table shows the time measured between two calls to ReadTimer,
one right after the other.

  Toshiba 1000 (4.77MHz 8088)    125 microseconds  (tctimer)
  ATT 6300 (8MHz 8086)            53     "         (tctimer)
  Deskpro 286 (8MHz 80286)        35     "         (tctimer)
  Sperry IT (7.1MHz 286, 0 wait)  32     "         (tctimer)
  IBM PS/2 model 50               25     "         (tctimer)
  PC Designs GV386 (16MHz)        27     "         (tctimer)
  PC Source Standard 286 (10MHz)  21     "         (these routines)




--SOURCE CODE FOLLOWS--
--CUT FILES BELOW AT DOTTED LINES--

--MAKEFILE------------------------------------------------------------------
# makefile for either Borland's brain-dead make, or Ndmake

OBJS = testtime.obj timer.obj
MODEL = s
TCINC = d:\;c:\usr\tc\include
TCLIB = d:\;c:\usr\tc\lib

testtime.exe:	$(OBJS)
	tcc -o$*.exe $(CFLAGS) -m$(MODEL) -I$(TCINC) -L$(TCLIB) $(OBJS)

timer.c:	timer.h
testtime.c:	timer.h timer.c

.c.obj:
	tcc -c $(CFLAGS) -m$(MODEL) -I$(TCINC) $<


--TESTIME.C-----------------------------------------------------------------
#include	<stdio.h>
#include	<dos.h>
#include	<conio.h>
#include	"timer.h"

void main()
{
	long	start_time;
	long	stop_time;
	double	time;

	initializetimer();
/*
	delay(100);
*/

	start_time=readtimer();
	stop_time=readtimer();
	time = elapsedtime(start_time, stop_time);
	printf("time between succesive calls: %f s  (%f ms)\n",
		time, time*1000.0);

	start_time=readtimer();
/*
	delay(2);
*/
	stop_time=readtimer();
	time = elapsedtime(start_time, stop_time);
	printf("time of a 'delay(2)' call   : %f s  (%f ms)\n",
		time, time*1000.0);

	printf("time until you press a key...");
	start_time = readtimer();
	getch();
	stop_time = readtimer();
	time = elapsedtime(start_time, stop_time);
	printf("\b\b\b\b\b\b\b\b\bed a key: %f s  (%f ms)\n",
		time, time*1000.0);

	restoretimer();
}


--TIMER.C------------------------------------------------------------------
#include	<dos.h>
#include	"timer.h"
/*#pragma		inline*/

#define TimerResolution    1193181.667

double
cardinal(long l)
{
	return((l<0)?4294967296.0 + (long)l : (long)l);
}

double
elapsedtime(long start, long stop)
{
	return(cardinal(stop - start) / TimerResolution);
}

void
initializetimer(void)
{

  outp(0x043,0x034);
  _asm\
  {
   jmp short NullJump1

NullJump1:;
  }
  outp(0x040,0x000);
  _asm\
  {
   jmp short NullJump2

NullJump2:;
  }
  outp(0x040,0x000);

}

void
restoretimer(void)
{
  outp(0x043,0x036);
  _asm\
  {
   jmp short NullJump1

NullJump1:;
  }
  outp(0x040,0x000);
  _asm\
  {
   jmp short NullJump2

NullJump2:;
  }
  outp(0x040,0x000);

}

/* #pragma warn -rvl*/	/* shut up Turbo C warning about return value */
long
readtimer(void)
{
  _asm\
  {
  cli				/* Disable interrupts */
  mov  dx,020h		/* Address PIC ocw3   */
  mov  al,00Ah		/* Ask to read irr    */
  out  dx,al
  mov  al,00h		/* Latch timer 0 */
  out  043h,al
  in   al,dx		/* Read irr      */
  mov  di,ax		/* Save it in DI */
  in   al,040h		/* Counter --> bx*/
  mov  bl,al		/* LSB in BL     */
  in   al,040h
  mov  bh,al		/* MSB in BH     */
  not  bx			/* Need ascending counter */
  in   al,021h		/* Read PIC imr  */
  mov  si,ax		/* Save it in SI */
  mov  al,00FFh		/* Mask all interrupts */
  out  021h,al
  mov  ax,040h		/* read low word of time */
  mov  es,ax		/* from BIOS data area   */
  mov  dx,es:[06Ch]
  mov  ax,si		/* Restore imr from SI   */
  out  021h,al
  sti				/* Enable interrupts */
  mov  ax,di		/* Retrieve old irr  */
  test al,001h		/* Counter hit 0?    */
  jz   done			/* Jump if not       */
  cmp  bx,0FFh		/* Counter > 0x0FF?    */
  ja   done			/* Done if so        */
  inc  dx			/* Else count int req. */
done:;
  mov ax,bx			/* set function result */
  }
}
/*#pragma warn .rvl*/	/* reset Turbo C return value warning */

--TIMER.H-------------------------------------------------------------------
/* timer.h
 * Include file defining the timer routines.
 * Include this file in any program using them.
 */

/*Calculate time elapsed (in seconds) between Start and Stop*/
double	elapsedtime(long start, long stop);

/*Reprogram the timer chip to allow 1 microsecond resolution*/
void	initializetimer(void);

/*Restore the timer chip to its normal state*/
void	restoretimer(void);

/*Read the timer with 1 microsecond resolution*/
long	readtimer(void);


--TESTIME.MAK---------------------------------------------------------------
PROJ	=TESTTIME
DEBUG	=1
CC	=qcl
CFLAGS_G	= /AS /W1 /Za 
CFLAGS_D	= /Zi /Zr /Gi$(PROJ).mdt /Od 
CFLAGS_R	= /Od /DNDEBUG 
CFLAGS	=$(CFLAGS_G) $(CFLAGS_D)
LFLAGS_G	= /CP:0xffff /NOI /SE:0x80 /ST:0x800 
LFLAGS_D	= /INCR 
LFLAGS_R	= 
LFLAGS	=$(LFLAGS_G) $(LFLAGS_D)
RUNFLAGS	=
OBJS_EXT = 	
LIBS_EXT = 	

all:	$(PROJ).exe

testtime.obj:	testtime.c

timer.obj:	timer.c

$(PROJ).exe:	testtime.obj timer.obj $(OBJS_EXT)
	echo >NUL @<<$(PROJ).crf
testtime.obj +
timer.obj +
$(OBJS_EXT)
$(PROJ).exe

$(LIBS_EXT);
<<
	ilink -a -e "link $(LFLAGS) @$(PROJ).crf" $(PROJ)

run: $(PROJ).exe
	$(PROJ) $(RUNFLAGS)


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线不卡一区二区| 成人中文字幕合集| 亚洲欧美另类小说| 中文字幕av免费专区久久| 欧美成人r级一区二区三区| 日韩一区和二区| 欧美xxxx老人做受| 日本一二三不卡| 精品美女一区二区三区| 日韩色视频在线观看| 制服丝袜成人动漫| 欧美一区二区在线看| 欧美一区二区私人影院日本| 欧美日本一区二区| 欧美电影免费观看完整版| 日韩美女视频在线| 国产女主播在线一区二区| 国产亚洲精品资源在线26u| 欧美激情中文字幕一区二区| 亚洲欧洲日本在线| 亚洲444eee在线观看| 蜜桃视频免费观看一区| 国产激情91久久精品导航| 99r精品视频| 91精品国产综合久久小美女| 精品国产乱码久久久久久久久| 久久精品一区二区三区不卡| 中文字幕av一区二区三区高| 国产中文字幕精品| 国产91精品久久久久久久网曝门 | 成人av在线播放网站| 不卡高清视频专区| 欧美三区免费完整视频在线观看| 日韩网站在线看片你懂的| 中文字幕巨乱亚洲| 免费观看成人鲁鲁鲁鲁鲁视频| 国产一区二区不卡在线 | 亚洲一区在线电影| 久草这里只有精品视频| 91视频免费播放| 欧美成人a∨高清免费观看| 亚洲免费在线观看视频| 久色婷婷小香蕉久久| 91久久精品一区二区二区| 久久一留热品黄| 丝袜美腿成人在线| 日韩精品中文字幕一区| 夜夜操天天操亚洲| 成人毛片老司机大片| 欧美一区二区三区视频在线| 国产精品国产三级国产普通话99 | 欧美日韩高清一区| 中文字幕在线视频一区| 久久se精品一区精品二区| 色欧美日韩亚洲| 中文字幕不卡在线观看| 久久国产精品99精品国产| 欧美三级乱人伦电影| 亚洲欧洲综合另类| 国产mv日韩mv欧美| 日韩一区二区免费视频| 亚洲成av人影院| 欧美videos大乳护士334| 亚洲国产精品视频| 欧美极品aⅴ影院| 欧美第一区第二区| 亚洲欧美色一区| 色综合一个色综合| 成人免费av网站| 成人av网站在线观看免费| 亚洲最色的网站| 久久久777精品电影网影网 | 免费三级欧美电影| 国产精品三级久久久久三级| av资源网一区| 成人免费毛片app| 久草热8精品视频在线观看| 亚洲欧美aⅴ...| 国产精品毛片久久久久久久| 日韩一区二区三区在线观看| 在线视频欧美精品| k8久久久一区二区三区| 狠狠久久亚洲欧美| 久久国产生活片100| 日韩不卡一区二区三区 | 色噜噜偷拍精品综合在线| 国产一区不卡在线| 日韩中文字幕麻豆| 亚洲gay无套男同| 欧洲生活片亚洲生活在线观看| 国产精品一区专区| 捆绑调教美女网站视频一区| 亚洲精品欧美专区| 国产精品福利一区| 久久精品无码一区二区三区| 日av在线不卡| 亚洲欧洲日产国码二区| 久久综合狠狠综合久久综合88 | 国产91精品在线观看| 久久精品无码一区二区三区| 国产成人av福利| 亚洲人成网站精品片在线观看| 欧美视频一区在线观看| 日韩电影一区二区三区| 国产亚洲制服色| 国产精品一区二区久久不卡| 色综合咪咪久久| 欧美日韩中文字幕一区二区| 久久综合成人精品亚洲另类欧美| 一区在线观看视频| 亚洲影视在线观看| 九九国产精品视频| 日本精品裸体写真集在线观看 | 欧美视频日韩视频在线观看| 亚洲精品国产视频| 日韩欧美一区中文| 色综合天天综合网天天狠天天 | 综合色天天鬼久久鬼色| 555www色欧美视频| 91美女福利视频| 国产高清在线观看免费不卡| 亚洲一二三四久久| 国产女人水真多18毛片18精品视频| 欧美在线看片a免费观看| 国产福利一区二区三区视频 | 精品美女一区二区| 色婷婷激情一区二区三区| 国产精选一区二区三区| 日韩高清一区二区| 亚洲精品福利视频网站| 欧美激情自拍偷拍| 欧美精品一区在线观看| 欧美肥妇bbw| 在线观看视频欧美| 成年人国产精品| 国产**成人网毛片九色| 精品一区精品二区高清| 日本亚洲免费观看| 亚洲第一主播视频| 一区二区三区 在线观看视频| 欧美国产一区二区在线观看| 欧美mv日韩mv| www激情久久| 欧美www视频| 久久这里只有精品6| 精品少妇一区二区三区在线视频| 91精品一区二区三区久久久久久 | 欧美色视频在线| 欧美专区亚洲专区| 色狠狠色噜噜噜综合网| 91色porny在线视频| 成人av电影在线| 91在线观看下载| 色伊人久久综合中文字幕| 91麻豆自制传媒国产之光| 日本国产一区二区| 欧美日韩一区高清| 欧美日韩在线不卡| 欧美一区二区三区在线观看| 精品欧美黑人一区二区三区| 精品少妇一区二区| 国产亚洲精品免费| 国产精品乱人伦| 一区二区三区不卡视频| 日韩高清一级片| 国产美女一区二区三区| 粉嫩av一区二区三区在线播放| 不卡影院免费观看| 一本久久a久久免费精品不卡| 欧美中文字幕一区| 欧美一级二级在线观看| 欧美国产精品一区| 亚洲国产毛片aaaaa无费看| 免费黄网站欧美| 国产高清亚洲一区| 在线一区二区三区四区五区| 欧美福利电影网| 国产日韩视频一区二区三区| 亚洲精选视频免费看| 日本亚洲欧美天堂免费| 成人动漫一区二区| 7777精品伊人久久久大香线蕉的| 欧美一级二级三级乱码| 亚洲视频在线一区观看| 免费高清成人在线| 99亚偷拍自图区亚洲| 91精品国模一区二区三区| 欧美国产精品专区| 日韩va亚洲va欧美va久久| 不卡视频在线看| 精品欧美一区二区在线观看| 亚洲美女免费视频| 久久国产精品第一页| 91福利区一区二区三区| 国产欧美日韩精品在线| 日本欧美一区二区在线观看| 99精品国产热久久91蜜凸| 2020国产成人综合网| 午夜精品福利一区二区蜜股av| 国产精品夜夜嗨|