home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / flash-c1.zip / DEMO.C < prev    next >
Text File  |  1990-02-11  |  17KB  |  439 lines

  1. #include <fpclib.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <conio.h>
  6.  
  7. #define NUMBER_WINDOWS 6
  8.  
  9. void OpeningScreen( void );
  10. void DisplayWindows( void );
  11. void GetAltCtrlShft( void );
  12. void DetectToggleKeys( void );
  13. void DisplayVideoInformation( void );
  14. void UseEditSt( void );
  15. void DisplayRvsAttrScreen( void );
  16. void CheckMouse( void );
  17. void IntStr( int Num, int NDigits, char *St );
  18.  
  19. char ColorTbl[2][256] = {
  20.                                0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
  21.                               10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
  22.                               20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
  23.                               30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
  24.                               40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
  25.                               50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
  26.                               60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
  27.                               70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  28.                               80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  29.                               90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
  30.                              100,101,102,103,104,105,106,107,108,109,
  31.                              110,111,112,113,114,115,116,117,118,119,
  32.                              120,121,122,123,124,125,126,127,128,129,
  33.                              130,131,132,133,134,135,136,137,138,139,
  34.                              140,141,142,143,144,145,146,147,148,149,
  35.                              150,151,152,153,154,155,156,157,158,159,
  36.                              160,161,162,163,164,165,166,167,168,169,
  37.                              170,171,172,173,174,175,176,177,178,179,
  38.                              180,181,182,183,184,185,186,187,188,189,
  39.                              190,191,192,193,194,195,196,197,198,199,
  40.                              200,201,202,203,204,205,206,207,208,209,
  41.                              210,211,212,213,214,215,216,217,218,219,
  42.                              220,221,222,223,224,225,226,227,228,229,
  43.                              230,231,232,233,234,235,236,237,238,239,
  44.                              240,241,242,243,244,245,246,247,248,249,
  45.                              250,251,252,253,254,255,
  46.  
  47.                                0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
  48.                               10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
  49.                               20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
  50.                               30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
  51.                               40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
  52.                               50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
  53.                               60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
  54.                               70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  55.                               80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
  56.                               90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
  57.                              100,101,102,103,104,105,106,107,108,109,
  58.                              110,111,112,113,114,115,116,117,118,119,
  59.                              120,121,122,123,124,125,126,127,128,129,
  60.                              130,131,132,133,134,135,136,137,138,139,
  61.                              140,141,142,143,144,145,146,147,148,149,
  62.                              150,151,152,153,154,155,156,157,158,159,
  63.                              160,161,162,163,164,165,166,167,168,169,
  64.                              170,171,172,173,174,175,176,177,178,179,
  65.                              180,181,182,183,184,185,186,187,188,189,
  66.                              190,191,192,193,194,195,196,197,198,199,
  67.                              200,201,202,203,204,205,206,207,208,209,
  68.                              210,211,212,213,214,215,216,217,218,219,
  69.                              220,221,222,223,224,225,226,227,228,229,
  70.                              230,231,232,233,234,235,236,237,238,239,
  71.                              240,241,242,243,244,245,246,247,248,249,
  72.                              250,251,252,253,254,255
  73.                         };
  74.  
  75. char WinTbl[NUMBER_WINDOWS][5] = {
  76.                                     1,  1, 40, 10,  16,
  77.                                     4,  4, 43, 13,  36,
  78.                                     7,  7, 46, 16,  56,
  79.                                    10, 10, 49, 19,  76,
  80.                                    13, 13, 52, 21,  96,
  81.                                    16, 16, 55, 23, 116
  82.                                  };
  83.  
  84. char Digits[17] = "0123456789ABCDEF";
  85.  
  86. char TCSet[32] = { 0, 7, 0 };
  87. char VCSet[32] = {   0,   0,   0,   0, 255, 255, 255, 255,
  88.                    255, 255, 255, 255, 255, 255, 255, 255,
  89.                    255, 255, 255, 255, 255, 255, 255, 255,
  90.                    255, 255, 255, 255, 255, 255, 255, 255
  91.                  };
  92.  
  93.  
  94. char  Buffer[4000],CTbl[256];
  95. int   i,x,y;
  96. char  FnKeyBuf[4][320];
  97.  
  98. /*----------------------------------------------------------------*/
  99. /*                                                                */
  100. /*----------------------------------------------------------------*/
  101.  
  102. void OpeningScreen( void )
  103. {
  104.    int i;
  105.  
  106.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  107.    WindowFP( 1, 1, 80, 25 );
  108.    FrameWin( '╔', '╗', '╚', '╝', '═', '║', CTbl[2] );
  109.  
  110.    ColorMsg( 20,  4, CTbl[1], "            FlashPac C Library           " );
  111.    ColorMsg( 20,  6, CTbl[2], "               Version 3.10              " );
  112.    ColorMsg( 20,  8, CTbl[3], "               Demo Program              " );
  113.    ColorMsg( 20, 15, CTbl[4], "              SimpleSoft Inc.            " );
  114.    ColorMsg( 20, 16, CTbl[4], "              1209 Poplar St             " );
  115.    ColorMsg( 20, 17, CTbl[4], "          La Crescent, MN 55947          " );
  116.    ColorMsg( 20, 18, CTbl[4], "                                         " );
  117.    ColorMsg( 19, 22, CTbl[4], "(c) Copyright 1986-89 - All Rights Reserved");
  118.    ColorMsg( 20, 24, CTbl[5], "       Press any key to continue...      " );
  119.  
  120.    while ( !DosKbdHit() ) {
  121.       FillRowAttr( 20,  4, 41, CTbl[9]  );
  122.       FillRowAttr( 20,  6, 41, CTbl[10] );
  123.       FillRowAttr( 20,  8, 41, CTbl[11] );
  124.       FillRowAttr( 20, 15, 41, CTbl[12] );
  125.       FillRowAttr( 20, 16, 41, CTbl[12] );
  126.       FillRowAttr( 20, 17, 41, CTbl[12] );
  127.       FillRowAttr( 20, 18, 41, CTbl[12] );
  128.       FillRowAttr( 19, 22, 43, CTbl[13] );
  129.  
  130.       for ( i = 0; i < 10000; i++ )
  131.       ;
  132.  
  133.       FillRowAttr( 20,  4, 41, CTbl[1] );
  134.       FillRowAttr( 20,  6, 41, CTbl[2] );
  135.       FillRowAttr( 20,  8, 41, CTbl[3] );
  136.       FillRowAttr( 20, 15, 41, CTbl[4] );
  137.       FillRowAttr( 20, 16, 41, CTbl[4] );
  138.       FillRowAttr( 20, 17, 41, CTbl[4] );
  139.       FillRowAttr( 20, 18, 41, CTbl[4] );
  140.       FillRowAttr( 19, 22, 43, CTbl[5] );
  141.  
  142.       for ( i = 0; i < 10000; i++ )
  143.       ;
  144.    }
  145. }
  146.  
  147. /*----------------------------------------------------------------*/
  148. /*                                                                */
  149. /*----------------------------------------------------------------*/
  150.  
  151. void DisplayWindows( void )
  152. {
  153.    char  St[80];
  154.    int   i,j;
  155.  
  156.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  157.  
  158.    for ( i = 0; i < NUMBER_WINDOWS; i++ ) {
  159.       WindowFP( WinTbl[i][0], WinTbl[i][1], WinTbl[i][2], WinTbl[i][3] );
  160.       ClrWin( WinTbl[i][0], WinTbl[i][1], WinTbl[i][2], WinTbl[i][3], WinTbl[i][4] );
  161.       FrameWin( '╔', '╗', '╚', '╝', '═', '║', CTbl[ WinTbl[i][4] ] );
  162.  
  163.       strcpy( St, "Window - " );
  164.       itoa( i, &St[9], 10 );
  165.       DspMsg( WinTbl[i][0]+2, WinTbl[i][1]+1, St );
  166.       for ( j = 0; j < 15000; j++ )
  167.       ;
  168.    }
  169.  
  170.    ColorMsg( 20, 25, CTbl[96], "       Press any key to continue...      " );
  171.    DosKbdClr();
  172.    GetKey();
  173. }
  174.  
  175. /*----------------------------------------------------------------*/
  176. /*                                                                */
  177. /*----------------------------------------------------------------*/
  178.  
  179. void GetAltCtrlShft( void )
  180. {
  181.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  182.  
  183.    ColorMsg( 10, 15, CTbl[4], " I will use GetScrn to read the normal lines " );
  184.    ColorMsg( 10, 16, CTbl[5], "        Press any key to continue...         " );
  185.    ColorMsg(  1,  1, CTbl[6], "F1-Normal        F2-Normal        F3-Normal        F4-Normal        F5 -Normal" );
  186.    ColorMsg(  1,  2, CTbl[6], "F6-Normal        F7-Normal        F8-Normal        F9-Normal        F10-Normal" );
  187.    GetScrn(   1,  1, 160,     FnKeyBuf[0] );
  188.    DosKbdClr();
  189.    GetKey();
  190.  
  191.    ColorMsg( 10, 15, CTbl[4], "I will use GetScrn to read the Shft lines    " );
  192.    ColorMsg( 10, 16, CTbl[5], "        Press any key to continue...         " );
  193.    ColorMsg(  1,  1, CTbl[6], "F1-Shft          F2-Shft          F3-Shft          F4-Shft          F5 -Shft  " );
  194.    ColorMsg(  1,  2, CTbl[6], "F6-Shft          F7-Shft          F8-Shft          F9-Shft          F10-Shft  " );
  195.    GetScrn(   1,  1, 160,     FnKeyBuf[1] );
  196.    DosKbdClr();
  197.    GetKey();
  198.  
  199.    ColorMsg( 10, 15, CTbl[4], "I will use GetScrn to read the Ctrl lines    " );
  200.    ColorMsg( 10, 16, CTbl[5], "        Press any key to continue...         " );
  201.    ColorMsg(  1,  1, CTbl[6], "F1-Ctrl          F2-Ctrl          F3-Ctrl          F4-Ctrl          F5 -Ctrl  " );
  202.    ColorMsg(  1,  2, CTbl[6], "F6-Ctrl          F7-Ctrl          F8-Ctrl          F9-Ctrl          F10-Ctrl  " );
  203.    GetScrn(   1,  1, 160,     FnKeyBuf[2] );
  204.    DosKbdClr();
  205.    GetKey();
  206.  
  207.    ColorMsg( 10, 15, CTbl[4], "I will use GetScrn to read the Alt lines     " );
  208.    ColorMsg( 10, 16, CTbl[5], "        Press any key to continue...         " );
  209.    ColorMsg(  1,  1, CTbl[6], "F1-Atl           F2-Alt           F3-Alt           F4-Alt           F5 -Alt   " );
  210.    ColorMsg(  1,  2, CTbl[6], "F6-Alt           F7-Alt           F8-Alt           F9-Alt           F10-Alt   " );
  211.    GetScrn(   1,  1, 160,     FnKeyBuf[3] );
  212.    DosKbdClr();
  213.    GetKey();
  214. }
  215.  
  216. /*----------------------------------------------------------------*/
  217. /*                                                                */
  218. /*----------------------------------------------------------------*/
  219.  
  220. void DetectToggleKeys( void )
  221. {
  222.    int  i,Index;
  223.  
  224.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  225.    WindowFP( 8, 1, 55, 12);
  226.    FrameWin( '╔', '╗', '╚', '╝', '═', '║', CTbl[15] );
  227.  
  228.    ColorMsg( 10, 3, CTbl[23], "             BiosKbdStat                     " );
  229.    ColorMsg( 10, 5, CTbl[10], " Pressing the Alt, Shft or Ctrl Toggle Keys  " );
  230.  
  231.    FillRowAttr( 24, 5, 3, CTbl[64] );
  232.    FillRowAttr( 29, 5, 4, CTbl[65] );
  233.    FillRowAttr( 37, 5, 4, CTbl[66] );
  234.  
  235.    ColorMsg( 10,  6, CTbl[10], " will display the function key lines at the  " );
  236.    ColorMsg( 10,  7, CTbl[10], " bottom of the screen.  The lines that are   " );
  237.    ColorMsg( 10,  8, CTbl[10], " being used were just saved using GetScrn    " );
  238.    ColorMsg( 10,  9, CTbl[10], " in the preceeding step.                     " );
  239.    ColorMsg( 10, 11, CTbl[48], "        Press <ENTER> to continue...         " );
  240.  
  241.    for ( i = 0; i != 13;   ) {
  242.       while ( !DosKbdHit() ) {
  243.          i = BiosKbdStat();
  244.          Index = 0;
  245.          if ( i & 3 )      Index = 1;
  246.          else if ( i & 4 ) Index = 2;
  247.          else if ( i & 8 ) Index = 3;
  248.  
  249.          PutScrn( 1, 24, 160, FnKeyBuf[Index] );
  250.       }
  251.       i = GetKey();
  252.    }
  253. }
  254.  
  255. /*-------------------------------------------------------------*/
  256. /* returns a string of length n                                */
  257. /*-------------------------------------------------------------*/
  258.  
  259. void IntStr( Num, NDigits, St )
  260. int   Num,NDigits;
  261. char  St[];
  262. {
  263.    int i;
  264.  
  265.    for ( i = NDigits-1; i >= 0; i-- ) {
  266.       St[i] = Num % 10 + 48;
  267.       Num /= 10;
  268.    }
  269. }
  270.  
  271. /*----------------------------------------------------------------*/
  272. /*                                                                */
  273. /*----------------------------------------------------------------*/
  274.  
  275. void DisplayVideoInformation( void )
  276. {
  277.    char  St[256];
  278.  
  279.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  280.    WindowFP( 24, 9, 57, 17 );
  281.    ClrWin( 24, 9, 57, 17, CTbl[48] );
  282.    FrameWin( '╔', '╗', '╚', '╝', '═', '║', 48 );
  283.  
  284.    ColorMsg( 26, 9, CTbl[48], " GetVideoInfo " );
  285.  
  286.    strcpy( St, " Current mode         = " );
  287.    itoa( GetVideoMode(), &St[24], 10 );
  288.    ColorMsg( 25, 10, CTbl[48], St );
  289.  
  290.    strcpy( St, " Active mode          = " );
  291.    itoa( GetVideoPage(), &St[24], 10 );
  292.    ColorMsg( 25, 11, CTbl[48], St );
  293.  
  294.    strcpy( St, " Number cols          = " );
  295.    itoa( GetVideoCols(), &St[24], 10 );
  296.    ColorMsg( 25, 12, CTbl[48], St );
  297.  
  298.    strcpy( St, " Base Segment Address = " );
  299.    itoa( VioBaseSeg, &St[24], 16 );
  300.    ColorMsg( 25, 13, CTbl[48], St );
  301.  
  302.    ColorMsg( 25, 16, CTbl[48], " Press any key to continue..." );
  303.    GetKey();
  304. }
  305.  
  306. /*----------------------------------------------------------------*/
  307. /*                                                                */
  308. /*----------------------------------------------------------------*/
  309.  
  310. void UseEditSt( void )
  311. {
  312.    char  St[256];
  313.    int   ChOfs = 1,
  314.         TE    = 0;
  315.  
  316.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  317.    WindowFP( 8, 8, 50, 14 );
  318.    FrameWin( '╔', '╗', '╚', '╝', '═', '║', CTbl[48] );
  319.  
  320.    ColorMsg( 10, 10, CTbl[7],  "Enter your name:" );
  321.    ColorMsg(  9, 12, CTbl[48], "          Press <ENTER> to Quit          " );
  322.  
  323.    memset( St, '\0', 256 );
  324.    EditSt( 10,28,48,50,1,7,0,7000,2000, VCSet, TCSet, &ChOfs, &TE, St );
  325.  
  326.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  327.    WindowFP( 5, 8, 75, 14 );
  328.    FrameWin( '╔', '╗', '╚', '╝', '═', '║', CTbl[48] );
  329.  
  330.    GotoxyAbs( 7, 10 );
  331.    printf( "Length of Input string returned = %u characters", strlen( St ) );
  332.    GotoxyAbs( 7, 12 );
  333.    printf( "Input string = *%s*", St );
  334.    ColorMsg( 20, 20, CTbl[6], "    Press any key to continue...    " );
  335.    GetKey();
  336. }
  337.  
  338. /*----------------------------------------------------------------*/
  339. /*                                                                */
  340. /*----------------------------------------------------------------*/
  341.  
  342. void DisplayRvsAttrScreen( void )
  343. {
  344.    char  St[256];
  345.    int   i,j,HiCur,LoCur,k = 0;
  346.  
  347.  
  348.    HiCur = ( VioCursor >> 8 );
  349.    LoCur = ( VioCursor & 0xff );
  350.  
  351.    SetCursorSize( 32, 32 );
  352.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  353.  
  354.    WindowFP( 5, 2, 40, 19 );
  355.    FrameWin( '╔', '╗', '╚', '╝', '═', '║', CTbl[7] );
  356.    ColorMsg( 7, 2, CTbl[7], " Text with normal attributes " );
  357.  
  358.    WindowFP( 45, 2, 80, 19 );
  359.    FrameWin( '╔', '╗', '╚', '╝', '═', '║', CTbl[7] );
  360.    ColorMsg( 47,  2, CTbl[7], " Text with reverse attributes " );
  361.    ColorMsg( 30, 23, CTbl[6], "    Press <ESC> to skip...    " );
  362.  
  363.    for ( j = 0; j <= 16; j++ ) {
  364.       ClrWin(  6, 3, 39, 18, CTbl[7] );
  365.       ClrWin( 46, 3, 79, 18, CTbl[7] );
  366.       for ( i = 0; i < 16; i++ ) {
  367.  
  368.          TextAttr = k;
  369.          strcpy( St, "        TextAttr =                " );
  370.          IntStr( TextAttr, 3, &St[19] );
  371.          ColorMsg( 6, i+3, TextAttr, St );
  372.  
  373.          TextAttr = RvsAttr( TextAttr );
  374.          strcpy( St, "        TextAttr =                " );
  375.          IntStr( TextAttr, 3, &St[19] );
  376.          ColorMsg( 46, i+3, TextAttr, St );
  377.          k++;
  378.       }
  379.       for ( i = 0; i < 15000; i++ )
  380.       ;
  381.  
  382.  
  383.       if ( BiosKbdHit() )
  384.          if ( GetKey() == 1 )
  385.             j = 16;
  386.    }
  387.    TextAttr = 6;
  388.    SetCursorSize( LoCur, HiCur );
  389. }
  390.  
  391. /*----------------------------------------------------------------*/
  392. /*                                                                */
  393. /*----------------------------------------------------------------*/
  394.  
  395. void CheckMouse( void )
  396. {
  397.    int NBut;
  398.  
  399.    ClrWin( 1, 1, 80, 25, CTbl[7] );
  400.    WindowFP( 8, 10, 48, 15 );
  401.    FrameWin( '╔', '╗', '╚', '╝', '═', '║', CTbl[7] );
  402.  
  403.    if ( !MResetMouse( &NBut ) )
  404.       ColorMsg( 10, 12, CTbl[6], "Mouse NOT installed on your computer" );
  405.    else {
  406.       ColorMsg( 10, 12, CTbl[6], "You have a mouse in your computer" );
  407.       ColorMsg( 10, 13, CTbl[7], "Squeak Squeak Squeak"             );
  408.    }
  409.    GetKey();
  410. }
  411.  
  412. /*-------------------- Main Line ------------------------*/
  413.  
  414. void main( void )
  415. {
  416.    int i,x,y;
  417.  
  418.    VioInit();
  419.  
  420.    GetScrn( 1, 1, 2000, Buffer );
  421.    x = WhereXAbs();
  422.    y = WhereYAbs();
  423.    i = 1;
  424.    if ( VioMode == 7 )
  425.       i = 2;
  426.    memcpy( CTbl, ColorTbl[i], sizeof( CTbl ) );
  427.  
  428.    OpeningScreen();
  429.    DisplayWindows();
  430.    GetAltCtrlShft();
  431.    DetectToggleKeys();
  432.    DisplayVideoInformation();
  433.    UseEditSt();
  434.    DisplayRvsAttrScreen();
  435.    CheckMouse();
  436.    PutScrn( 1, 1, 2000, Buffer );
  437.    GotoxyAbs( x, y );
  438. }
  439.