home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / sysutl / clock.arc / CLKGBL.H < prev    next >
Text File  |  1987-01-03  |  5KB  |  104 lines

  1. /*************************************************************** CLKGBL.H
  2. * This module defines the global variables for the CLOCK program    *
  3. * and subfunctions.                            *
  4. *************************************************************************
  5. * It is the only place these variables are defined.  To allow for    *
  6. * declaration in the main program and "external" defines in the        *
  7. * subfunctions, a parameter is defined just before the #include.    *
  8. * The constant "XTRNALGLOBALS" is defined as:                *
  9. *    0 = variables declared (only in "main" program)            *
  10. *    1 = variables externally defined (in subfunctions)        *
  11. * EXAMPLE:                                *
  12. *     #define XTRNALGLOBALS 1        (globals externally defined)    *
  13. *    #include "E:CLKGBL.H"        (include defines)        *
  14. ************************************************************************/
  15.  
  16. /*------ setup "extern" prefix -----------------------------------------*/
  17. #if XTRNALGLOBALS > 0 
  18. #define XTRN extern            /* externally defined globals     */
  19. #else
  20. #define XTRN                 /* declared globals        */
  21. #endif
  22.  
  23. /*------ setup video i/o stuff -----------------------------------------*/
  24. static char clrscr[5] = {'\33', '[', '2', 'J', '\0' };    /* clear screen string     */
  25.  
  26.     struct REGS {        /* structure defining bios call registers */
  27.         int ax;        /* ax register                */
  28.         int bx;        /* bx register                */
  29.         int cx;        /* cx register                */
  30.         int dx;        /* dx register                */
  31.         };
  32. XTRN     struct REGS sreg;    /* source data registers        */
  33. XTRN     struct REGS rreg;    /* returned data registers        */
  34.  
  35. #define SYSINTR  0X0021        /* DOS system interrupt #        */
  36. #define GETTIME  0X2C00     /* get time dos int function        */
  37. #define VIDEO 0X10        /* bioscal video interrupt #         */
  38. #define BLK 0            /* color palette 1 background (black)    */
  39. #define GRN 1            /* color palette 1 green        */
  40. #define RED 2            /* color palette 1 red            */
  41. #define YEL 3            /* color palette 1 yellow        */
  42. XTRN    int     kolor;        /* color of dot                */
  43.  
  44. /*------- time ---------------------------------------------------------*/
  45. XTRN    int    lasthr;            /* hour when last looked    */
  46. XTRN    int    lt24hr;            /* (for 24 hour digital clock)    */
  47. XTRN    int    lastmn;            /* minute when last looked    */
  48. XTRN    int    lastsc;            /* second when last looked    */
  49. XTRN    int    thishr;            /* this hour            */
  50. XTRN    int    th24hr;            /* (for 24 hour digital clock)    */
  51. XTRN    int    thismn;            /* this minute            */
  52. XTRN    int    thissc;            /* this second            */
  53. /*----------------------------------------------------------------------*/
  54. #define    SHWTH 1                /* second hand default width    */
  55. #define    SHLTH 100            /* second hand default length    */
  56. #define MHWTH 5                /* minute hand default width    */
  57. #define MHLTH 75            /* minute hand default length    */
  58. #define HHWTH 9             /* hour hand default width    */
  59. #define HHLTH 50            /* hour hand default length    */
  60. XTRN    int     scwth = SHWTH;        /* second hand width        */
  61. XTRN    int     sccol = RED;        /* second hand color        */
  62. XTRN    int    mnwth = MHWTH;        /* minute hand width        */
  63. XTRN    int    mncol = YEL;        /* minute hand color        */
  64. XTRN    int    hrwth = HHWTH;        /* hour hand width        */
  65. XTRN    int    hrcol = GRN;        /* hour hand color        */
  66. XTRN    int    fcwth = MHWTH;        /* face "hand" width        */
  67. XTRN    int    fccol = GRN;        /* face default color        */ 
  68. XTRN    int    bkcol = BLK;        /* background color        */
  69.  
  70. #define    CENTC 320/2            /* center column loc. default    */
  71. #define    CENTR 200/2            /* center row location default    */
  72. XTRN    int    cntcol = CENTC;        /* center column location    */
  73. XTRN    int    cntrow = CENTR;        /* center row location        */
  74.  
  75. XTRN    int    clocksize = 100;    /* size of clock (% fullsize)    */
  76.  
  77. /*------ setup hand display arrays -------------------------------------*/
  78. XTRN    int    actsc;            /* active second hand        */
  79. XTRN    int    actmn;            /* active minute hand        */
  80. XTRN    int    acthr;            /* active hour hand        */
  81. XTRN    int    change;            /* hand change, re-draw        */
  82.  
  83.     struct ACTIMAGE {        /* defines image of hand    */
  84.         int row;        /*  start row            */
  85.         int col;        /*  start col            */
  86.         int wth;        /*  width to draw         */
  87.                     /*   +=step col +, -=step row + */
  88.         };
  89. #define HANDSZ 100        /* length of table req'd to define hand    */
  90. XTRN    struct ACTIMAGE acbsc[HANDSZ];    /* second hand blanking        */
  91. XTRN    struct ACTIMAGE acdsc[HANDSZ];    /* second hand draw        */
  92. XTRN    struct ACTIMAGE acbmn[HANDSZ];    /* minute hand blanking        */
  93. XTRN    struct ACTIMAGE acdmn[HANDSZ];    /* minute hand draw        */
  94. XTRN    struct ACTIMAGE acbhr[HANDSZ];    /* hour hand blanking        */
  95. XTRN    struct ACTIMAGE acdhr[HANDSZ];    /* hour hand draw        */
  96.  
  97. /*------ control digital display of time -------------------------------*/
  98. XTRN    int    digclock = 0;        /* controls display of digital    */
  99.                     /* time... 0 = don't display,    */
  100.                     /*         1 = display it.    */
  101. XTRN     int    digrow = 0;        /* row to display it (on 40x25)    */
  102. XTRN     int    digcol = 32;        /* col to display it (on 40x25)    */
  103. XTRN    int    digclr = GRN;        /* color to display it in    */
  104.