home *** CD-ROM | disk | FTP | other *** search
/ Phoenix Heaven Sunny 2 / APPARE2.BIN / oh_towns / his / sample / stack.c < prev    next >
C/C++ Source or Header  |  1995-06-20  |  1KB  |  56 lines

  1. /***********************************************************************
  2.  
  3.                         垂直同期割り込みサンプル
  4.  
  5.           1995.6.12                                by ちょもらんま
  6.  
  7. ***********************************************************************/
  8.  
  9. #include <stdio.h>
  10. #include <his.h>
  11.  
  12. /*----------------- VSYNC割り込みハンドラ ------------------*/
  13.  
  14. #define VSYNCclear     0x05ca
  15. #define VSYNCintNumber 11
  16.  
  17. int VSYNCflag;
  18.  
  19. void VSYNChandler( void )
  20. {
  21.     VSYNCflag++;
  22.  
  23.     /* VSYNC割り込み原因クリアレジスタへの書き込み */
  24.     _outb( VSYNCclear, 0 );
  25. }
  26.  
  27. void main( void )
  28. {
  29.     #define stackSize 1000
  30.     char stackArea[ stackSize ];
  31.     int i;
  32.  
  33.     /************* スタック領域を一定値で埋める **************/
  34.     #define Filler 0xab
  35.     for( i = 0 ; i < stackSize ; i++ )
  36.     {
  37.         stackArea[ i ] = Filler;
  38.     }
  39.  
  40.     /*------------------- 割り込み設定 ----------------------*/
  41.     HIS_stackArea( stackArea , stackSize );
  42.     HIS_setHandler( VSYNCintNumber , VSYNChandler );
  43.     HIS_enableInterrupt( VSYNCintNumber );
  44.  
  45.     /*------------ 割り込みハンドラの終了を待つ -------------*/
  46.     VSYNCflag = 0;
  47.     while( VSYNCflag == 0 );
  48.  
  49.     /*----------------- 割り込み処理終了 --------------------*/
  50.     HIS_detachHandler( VSYNCintNumber );
  51.  
  52.     /***************** 使用スタック量を表示 ******************/
  53.     for( i = 0 ; stackArea[ i ] == Filler ; i++ );
  54.     printf( "使用したスタックは %d byte です。\n" , stackSize - i );
  55. }
  56.