home *** CD-ROM | disk | FTP | other *** search
/ Hot Shareware 35 / hot35.iso / ficheros / LC / VGAED14.ZIP / VGAEDIT.ZIP / VGATUT.C < prev    next >
C/C++ Source or Header  |  1997-08-13  |  19KB  |  1,027 lines

  1. # include <dos.h>
  2. # include <string.h>
  3. # include <stdio.h>
  4. # include <bios.h>
  5. # include <stdlib.h>
  6. # include <conio.h>
  7. # include <mem.h>
  8. # include <dir.h>
  9.  
  10. # include "simpwin.h"
  11. # include "swskdef.h"
  12. # include "mouse23.h"
  13. # include "vgacolor.h"
  14.  
  15. # define MAIN_WIN 1
  16. # define MAIN_MENU 0
  17. # define QUIT_WIN 5
  18. # define DEMO_MENU 1
  19. # define DEMO_WIN 2
  20. # define TUT_WIN 3
  21. # define TUT_MENU 2
  22. # define FUNC_WIN 4
  23. # define FUNC_MENU 3
  24. # define TXT_WIN 6
  25. # define EXE_WIN 7
  26. # define EXE_MENU 4
  27.  
  28.  
  29. int mou_switch;
  30. int display_switch = 1;
  31.  
  32. int main_menu(void);
  33. int quit(void);
  34. int tutor_menu(void);
  35. int function_menu(void);
  36. int demo_menu(void);
  37. int file_screen(char *file_name);
  38. int text_screen(int file_num);
  39. void dual_font(void);
  40. void large_font(void);
  41. void tall_font(void);
  42. void multi_font(void);
  43. int execute_menu(void);
  44. int color_demo(void);
  45. int gray_demo(void);
  46. int palette_64(void);
  47.  
  48. void main(void)
  49. {
  50.     int i,j,k;
  51.  
  52.     if(init_window(10,5,5,"",1) != 0)
  53.     {
  54.         cprintf("Can't init simple windows!");
  55.         exit(1);
  56.     }
  57.     system("cls");
  58.     mouinit();
  59.     if(mouinstalled() != 0)
  60.     {
  61.         simp_window(30,10,50,12,1,0,14,4,0,0,0,0,0);
  62.         if(loadcurs("moucurs.fnt") == 0)
  63.         {
  64.             mouhide();
  65.             mousetposition(1,1);
  66.             mou_switch = 1;
  67.             write_window(3,2,"Mouse Installed !");
  68.         }
  69.         else
  70.         {
  71.             mou_switch = 0;
  72.             write_window(3,2,"No cursor file !");
  73.         }
  74.         delay(1000);
  75.     }
  76.     else
  77.     {
  78.         simp_window(23,10,57,12,1,0,14,4,0,0,0,0,0);
  79.         write_window(3,2,"NO mouse driver installed");
  80.         mou_switch = 0;
  81.         delay(1000);
  82.     }
  83.     if(load_menu_text("vgatut.men") != 0)
  84.     {
  85.         cprintf("Can't find file FONTEDIT.MEN !");
  86.         uninit_window();
  87.         remove("temp.pal");
  88.         exit(1);
  89.     }
  90.     if(load_win_data("vgatut.win") != 0)
  91.     {
  92.         cprintf("Can't find file FONTEDIT.WIN !");
  93.         uninit_window();
  94.         remove("temp.pal");
  95.         exit(1);
  96.     }
  97.     hide_cursor();
  98.     k= 3;
  99.     for(i = 0;i < 13;i++)
  100.     {
  101.         for(j = k - 3;j < k;j++)
  102.         {
  103.             simp_window(40 - j,13 - i,40 + j,13 + i,1,0,14,1,0,0,0,0,0);
  104.         }
  105.         k = k + 3;
  106.     }
  107.     simp_window(1,1,80,25,1,0,14,1,0,0,0,0,0);
  108.     k = 3;
  109.     for(i = 0;i < 13;i++)
  110.     {
  111.         for(j = k - 3;j < k;j++)
  112.         {
  113.             window(40 - j,13 - i,40 + j,13 + i);
  114.             load_screen_form(0,"vgatut.scr");
  115.         }
  116.         k = k + 3;
  117.     }
  118.     window(1,1,80,25);
  119.     load_screen_form(0,"vgatut.scr");
  120.     write_window(35,25," HIT ANY KEY ");
  121.     bioskey(0);
  122.     draw_horizontal_line(196,196,196,2,79,25);
  123.     save_screen(1);
  124.     moucursortype(1);
  125.     moushow();
  126.     /*mou_switch = 0;*/
  127.     while(main_menu())
  128.     {
  129.     }
  130.     uninit_window();
  131.     mouuninit();
  132.     show_cursor();
  133.     system("cls");
  134. }
  135.  
  136. int main_menu(void)
  137. {
  138.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  139.     char lable[3][13] = {"Demo","Tutor","eXit"};
  140.  
  141.  
  142.     if(display_switch)
  143.     {
  144.         load_screen(1);
  145.         call_window(MAIN_WIN);
  146.         call_menu(MAIN_MENU,3,2);
  147.         save_screen(2);
  148.     }
  149.     else
  150.     {
  151.         load_screen(2);
  152.     }
  153.     display_switch = 1;
  154.     textcolor(4);
  155.     write_window(3,2,"D");
  156.     write_window(22,2,"T");
  157.     write_window(41,2,"X");
  158.     save_screen_buff();
  159.     i = 0;
  160.     moushow();
  161.     for(;;)
  162.     {
  163.         choice = 0;
  164.         if(mouposition(&mousex,&mousey))
  165.         {
  166.             if(mousey == 4)
  167.             {
  168.                 if((mousex > 5) & (mousex < 12))
  169.                 {
  170.                     i = 0;
  171.                 }
  172.                 else if((mousex > 24) & (mousex < 31))
  173.                 {
  174.                     i = 1;
  175.                 }
  176.                 else if((mousex > 42) & (mousex < 49))
  177.                 {
  178.                     i = 2;
  179.                 }
  180.             }
  181.         }
  182.         if(i < 0)
  183.         {
  184.             i = 0;
  185.         }
  186.         if(i > 2)
  187.         {
  188.             i = 2;
  189.         }
  190.         if(old_i != i)
  191.         {
  192.             mouhide();
  193.             old_i = i;
  194.             load_screen_buff();
  195.             switch(i)
  196.             {
  197.                 case 0 : simp_window(6,4,11,4,0,2,0,4,1,8,0,0,0); break;
  198.                 case 1 : simp_window(25,4,31,4,0,2,0,4,1,8,0,0,0); break;
  199.                 case 2 : simp_window(43,4,48,4,0,2,0,4,1,8,0,0,0); break;
  200.             }
  201.             write_window(2,1,"%s",lable[i]);
  202.             moushow();
  203.         }
  204.         if(bioskey(1) | (mou_switch == 0))
  205.         {
  206.             switch(bioskey(0))
  207.             {
  208.                 case ESC : choice = 4; break;
  209.                 case CURSOR_RIGHT : i = i + 1; break;
  210.                 case CURSOR_LEFT : i = i - 1; break;
  211.                 case ENTER : choice = 1; break;
  212.                 case ALT_D : choice = 2; break;
  213.                 case ALT_T : choice = 3; break;
  214.                 case ALT_X : choice = 4; break;
  215.             }
  216.         }
  217.         if(moubuttonpressed(LEFTBUTTON))
  218.         {
  219.             if(mousey == 4)
  220.             {
  221.                 if(((mousex > 5) & (mousex < 12)) |
  222.                     ((mousex > 24) & (mousex < 31)) |
  223.                     ((mousex > 42) & (mousex < 49)))
  224.                 {
  225.                     choice = 1;
  226.                 }
  227.             }
  228.         }
  229.         if(choice != 0)
  230.         {
  231.             break;
  232.         }
  233.     }
  234.     mouhide();
  235.     load_screen_buff();
  236.     if(choice == 1)
  237.     {
  238.         choice = i + 2;
  239.     }
  240.     pick = 1;
  241.     switch(choice)
  242.     {
  243.         case 2 : while(demo_menu()){} break;
  244.         case 3 : while(tutor_menu()){} break;
  245.         case 4 : pick = quit(); break;
  246.     }
  247.     return(pick);
  248. }
  249.  
  250. int quit(void)
  251. {
  252.  
  253.     call_window(QUIT_WIN);
  254.     write_window(3,2,"Quit Y/N ?");
  255.     show_cursor();
  256.     if(get_choice(14,2,"N") == 1)
  257.     {
  258.         uncall_window(QUIT_WIN);
  259.         hide_cursor();
  260.         return(0);
  261.     }
  262.     uncall_window(QUIT_WIN);
  263.     hide_cursor();
  264.     return(1);
  265. }
  266.  
  267.  
  268. int demo_menu(void)
  269. {
  270.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  271.     char lable[3][17] = {"Color demo","Gray demo","Palete demo"};
  272.  
  273.     if(display_switch)
  274.     {
  275.         load_screen(2);
  276.         call_window(DEMO_WIN);
  277.         call_menu(DEMO_MENU,3,2);
  278.         save_screen(3);
  279.     }
  280.     else
  281.     {
  282.         load_screen(3);
  283.     }
  284.     display_switch = 1;
  285.     textcolor(4);
  286.     write_window(3,2,"C");
  287.     write_window(3,3,"G");
  288.     write_window(3,4,"P");
  289.     save_screen_buff();
  290.     i = 0;
  291.     moushow();
  292.     for(;;)
  293.     {
  294.         choice = 0;
  295.         if(mouposition(&mousex,&mousey))
  296.         {
  297.             if((mousex > 7) & (mousex < 19))
  298.             {
  299.                 i = mousey - 5;
  300.             }
  301.         }
  302.         if(i < 0)
  303.         {
  304.             i = 0;
  305.         }
  306.         if(i > 2)
  307.         {
  308.             i = 2;
  309.         }
  310.         if(old_i != i)
  311.         {
  312.             old_i = i;
  313.             mouhide();
  314.             load_screen_buff();
  315.             simp_window(7,5 + i,25,5 + i,0,2,0,4,1,8,0,0,0);
  316.             write_window(2,1,"%s",lable[i]);
  317.             moushow();
  318.         }
  319.         if(bioskey(1) | (mou_switch == 0))
  320.         {
  321.             switch(bioskey(0))
  322.             {
  323.                 case ESC : choice = 9; break;
  324.                 case CURSOR_DN : i = i + 1; break;
  325.                 case CURSOR_UP : i = i - 1; break;
  326.                 case ENTER : choice = 1; break;
  327.                 case ALT_C : choice = 2; break;
  328.                 case ALT_G : choice = 3; break;
  329.                 case ALT_P : choice = 4; break;
  330.             }
  331.         }
  332.         if(moubuttonpressed(LEFTBUTTON))
  333.         {
  334.             if((mousex > 7) & (mousex < 19) & (mousey > 4) & (mousey < 8))
  335.             {
  336.                 choice = 1;
  337.             }
  338.             else
  339.             {
  340.                 choice = 9;
  341.             }
  342.         }
  343.         if(choice != 0)
  344.         {
  345.             break;
  346.         }
  347.     }
  348.     mouhide();
  349.     load_screen_buff();
  350.     pick = 1;
  351.     if(choice == 1)
  352.     {
  353.         choice = i + 2;
  354.     }
  355.     switch(choice)
  356.     {
  357.         case 2 : color_demo(); break;
  358.         case 3 : gray_demo(); break;
  359.         case 4 : palette_64(); break;
  360.         case 9 : pick = 0; break;
  361.     }
  362.     display_switch = 0;
  363.     return(pick);
  364. }
  365.  
  366.  
  367. int tutor_menu(void)
  368. {
  369.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  370.     char lable[5][19] = {"General","Support","Functions","Executes","A word"};
  371.  
  372.     if(display_switch)
  373.     {
  374.         if(display_switch == 1)
  375.         {
  376.             load_screen(2);
  377.         }
  378.         call_window(TUT_WIN);
  379.         call_menu(TUT_MENU,3,2);
  380.         save_screen(3);
  381.     }
  382.     else
  383.     {
  384.         load_screen(3);
  385.     }
  386.     display_switch = 1;
  387.     textcolor(4);
  388.     write_window(3,2,"G");
  389.     write_window(3,3,"S");
  390.     write_window(3,4,"F");
  391.     write_window(3,5,"E");
  392.     write_window(3,6,"A");
  393.     save_screen_buff();
  394.     i = 0;
  395.     moushow();
  396.     for(;;)
  397.     {
  398.         choice = 0;
  399.         if(mouposition(&mousex,&mousey))
  400.         {
  401.             if((mousex > 20) & (mousex < 30))
  402.             {
  403.                 i = mousey - 5;
  404.             }
  405.         }
  406.         if(i < 0)
  407.         {
  408.             i = 0;
  409.         }
  410.         if(i > 4)
  411.         {
  412.             i = 4;
  413.         }
  414.         if(old_i != i)
  415.         {
  416.             old_i = i;
  417.             mouhide();
  418.             load_screen_buff();
  419.             simp_window(21,5 + i,31,5 + i,0,2,0,4,1,8,0,0,0);
  420.             write_window(2,1,"%s",lable[i]);
  421.             moushow();
  422.         }
  423.         if(bioskey(1) | (mou_switch == 0))
  424.         {
  425.             switch(bioskey(0))
  426.             {
  427.                 case ESC : choice = 7; break;
  428.                 case CURSOR_DN : i = i + 1; break;
  429.                 case CURSOR_UP : i = i - 1; break;
  430.                 case ENTER : choice = 1; break;
  431.                 case ALT_G : choice = 2; break;
  432.                 case ALT_S : choice = 3; break;
  433.                 case ALT_F : choice = 4; break;
  434.                 case ALT_A : choice = 6; break;
  435.                 case ALT_E : choice = 5; break;
  436.             }
  437.         }
  438.         if(moubuttonpressed(LEFTBUTTON))
  439.         {
  440.             if((mousex > 20) & (mousex < 30) & (mousey > 4) & (mousey < 10))
  441.             {
  442.                 choice = 1;
  443.             }
  444.             else
  445.             {
  446.                 choice = 7;
  447.             }
  448.         }
  449.         if(choice != 0)
  450.         {
  451.             break;
  452.         }
  453.     }
  454.     mouhide();
  455.     load_screen_buff();
  456.     pick = 1;
  457.     if(choice == 1)
  458.     {
  459.         choice = i + 2;
  460.     }
  461.     switch(choice)
  462.     {
  463.         case 2 : file_screen("vgagenrl.txt"); break;
  464.         case 3 : text_screen(5); break;
  465.         case 4 : while(function_menu()){} break;
  466.         case 5 : while(execute_menu()){} break;
  467.         case 6 : text_screen(6);
  468.         case 7 : pick = 0; break;
  469.     }
  470.     display_switch = pick;
  471.     return(pick);
  472. }
  473.  
  474. int function_menu(void)
  475. {
  476.     int pick,choice,i = 0,old_i = 12,mousex = 0,mousey = 0;
  477.     char lable[14][29] = {"save_color_regs\(\)","load_color_regs\(\)","read_color_reg\(\)",
  478.                 "write_color_reg\(\)","save_palette\(\)","load_palette\(\)","write_palette\(\)",
  479.                 "read_palette\(\)","vag_get_adapter\(\)","gray_color_reg\(\)","gray_color_regs\(\)",
  480.                 "enable_reset\(\)","init_vgaedit\(\)","uninit_vgaedit\(\)"};
  481.  
  482.     if(display_switch)
  483.     {
  484.         load_screen(3);
  485.         call_window(FUNC_WIN);
  486.         call_menu(FUNC_MENU,3,2);
  487.         save_screen(4);
  488.     }
  489.     else
  490.     {
  491.         load_screen(4);
  492.     }
  493.     display_switch = 1;
  494.     save_screen_buff();
  495.     moushow();
  496.     i = 0;
  497.     for(;;)
  498.     {
  499.         choice = 0;
  500.         if(mouposition(&mousex,&mousey))
  501.         {
  502.             if((mousex > 22) & (mousex < 46))
  503.             {
  504.                 i = mousey - 6;
  505.             }
  506.         }
  507.         if(i < 0)
  508.         {
  509.             i = 0;
  510.         }
  511.         if(i > 13)
  512.         {
  513.             i = 13;
  514.         }
  515.         if(old_i != i)
  516.         {
  517.             old_i = i;
  518.             mouhide();
  519.             load_screen_buff();
  520.             simp_window(23,6 + i,47,6 + i,0,2,0,4,1,8,0,0,0);
  521.             write_window(2,1,"%s",lable[i]);
  522.             moushow();
  523.         }
  524.         if(bioskey(1) | (mou_switch == 0))
  525.         {
  526.             switch(bioskey(0))
  527.             {
  528.                 case ESC : choice = 12; break;
  529.                 case CURSOR_DN : i = i + 1; break;
  530.                 case CURSOR_UP : i = i - 1; break;
  531.                 case ENTER: choice = 1; break;
  532.             }
  533.         }
  534.         if(moubuttonpressed(LEFTBUTTON))
  535.         {
  536.             if((mousex > 22) & (mousex < 46) & (mousey > 5) & (mousey < 20))
  537.             {
  538.                 choice = 1;
  539.             }
  540.             else
  541.             {
  542.                 choice = 12;
  543.             }
  544.         }
  545.         if(choice != 0)
  546.         {
  547.             break;
  548.         }
  549.     }
  550.     mouhide();
  551.     load_screen_buff();
  552.     pick = 1;
  553.     if(choice == 1)
  554.     {
  555.         text_screen(i + 7);
  556.     }
  557.     else
  558.     {
  559.         if(choice == 12)
  560.         {
  561.             pick = 0;
  562.         }
  563.     }
  564.     display_switch = 0;
  565.     return(pick);
  566. }
  567.  
  568. int execute_menu(void)
  569. {
  570.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  571.     char lable[5][29] = {"savedac.exe","loaddac.exe","savepal.exe","loadpal.exe","resetpal.exe"};
  572.  
  573.     if(display_switch)
  574.     {
  575.         load_screen(3);
  576.         call_window(EXE_WIN);
  577.         call_menu(EXE_MENU,3,2);
  578.         save_screen(4);
  579.     }
  580.     else
  581.     {
  582.         load_screen(4);
  583.     }
  584.     display_switch = 1;
  585.     save_screen_buff();
  586.     i = 0;
  587.     moushow();
  588.     for(;;)
  589.     {
  590.         choice = 0;
  591.         if(mouposition(&mousex,&mousey))
  592.         {
  593.             if((mousex > 22) & (mousex < 46))
  594.             {
  595.                 i = mousey - 6;
  596.             }
  597.         }
  598.         if(i < 0)
  599.         {
  600.             i = 0;
  601.         }
  602.         if(i > 4)
  603.         {
  604.             i = 4;
  605.         }
  606.         if(old_i != i)
  607.         {
  608.             old_i = i;
  609.             mouhide();
  610.             load_screen_buff();
  611.             simp_window(23,6 + i,41,6 + i,0,2,0,4,1,8,0,0,0);
  612.             write_window(2,1,"%s",lable[i]);
  613.             moushow();
  614.         }
  615.         if(bioskey(1) | (mou_switch == 0))
  616.         {
  617.             switch(bioskey(0))
  618.             {
  619.                 case ESC : choice = 9; break;
  620.                 case CURSOR_DN : i = i + 1; break;
  621.                 case CURSOR_UP : i = i - 1; break;
  622.                 case ENTER: choice = 1; break;
  623.             }
  624.         }
  625.         if(moubuttonpressed(LEFTBUTTON))
  626.         {
  627.             if((mousex > 22) & (mousex < 46) & (mousey > 5) & (mousey < 11))
  628.             {
  629.                 choice = 1;
  630.             }
  631.             else
  632.             {
  633.                 choice = 9;
  634.             }
  635.         }
  636.         if(choice != 0)
  637.         {
  638.             break;
  639.         }
  640.     }
  641.     mouhide();
  642.     load_screen_buff();
  643.     pick = 1;
  644.     if(choice == 1)
  645.     {
  646.         text_screen(i + 21);
  647.     }
  648.     else
  649.     {
  650.         if(choice == 9)
  651.         {
  652.             pick = 0;
  653.         }
  654.     }
  655.     display_switch = 0;
  656.     return(pick);
  657. }
  658.  
  659.  
  660. int text_screen(int file_num)
  661. {
  662.     call_window(TXT_WIN);
  663.     load_text(file_num,"vgatut.men");
  664.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  665.     bioskey(0);
  666.     uncall_window(TXT_WIN);
  667.     return(0);
  668. }
  669.  
  670. int file_screen(char *file_name)
  671. {
  672.     call_window(TXT_WIN);
  673.     write_window((80 - strlen(" PgUp/PgDn ESC ")) / 2,25," PgUp/PgDn ESC ");
  674.     read_text(file_name,1);
  675.     uncall_window(TXT_WIN);
  676.     return(0);
  677. }
  678.  
  679. int color_demo(void)
  680. {
  681.     int i,j,m;
  682.     char color[3];
  683.     char color_temp[3];
  684.     int done = 0;
  685.  
  686.     color[0] = 0x00;
  687.     color[1] = 0x00;
  688.     color[2] = 0x00;
  689.     read_color_reg(color_temp,5);
  690.     write_color_reg(color,5);
  691.     text_screen(26);
  692.     call_window(TXT_WIN);
  693.     write_window((80 - strlen(" HIT ANY KEY TO EXIT ")) / 2,25," HIT ANY KEY TO EXIT ");
  694.     popup_window(8,25,5,55,15,1,2,5,7,1,8,0,0,0);
  695.     clear_window(0xdb);
  696.     window(1,1,80,25);
  697.     write_window((80 - strlen(" HIT ANY KEY TO EXIT ")) / 2,25," HIT ANY KEY TO EXIT ");
  698.     textattr(0x70);
  699.     i = 0;
  700.     j = 0;
  701.     m = 0;
  702.     done = 0;
  703.     for(i = 0;i < 64;i++)
  704.     {
  705.         color[0] = i;
  706.         write_color_reg(color,5);
  707.         write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  708.         if(bioskey(1))
  709.         {
  710.             done = 1;
  711.             break;
  712.         }
  713.         delay(100);
  714.     }
  715.     if(done == 0)
  716.     {
  717.         i = 0;
  718.         color[0] = i;
  719.         for(j = 0;j < 64;j++)
  720.         {
  721.             color[1] = j;
  722.             write_color_reg(color,5);
  723.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  724.             if(bioskey(1))
  725.             {
  726.                 done = 1;
  727.                 break;
  728.             }
  729.             delay(100);
  730.         }
  731.     }
  732.     if(done == 0)
  733.     {
  734.         j = 0;
  735.         color[1] = j;
  736.         for(m = 0;m < 64;m++)
  737.         {
  738.             color[2] = m;
  739.             write_color_reg(color,5);
  740.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  741.             if(bioskey(1))
  742.             {
  743.                 done = 1;
  744.                 break;
  745.             }
  746.             delay(100);
  747.         }
  748.     }
  749.     if(done == 0)
  750.     {
  751.         m = 0;
  752.         color[2] = m;
  753.         for(i = 0;i < 64;i++)
  754.         {
  755.             color[0] = i;
  756.             write_color_reg(color,5);
  757.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  758.             if(bioskey(1))
  759.             {
  760.                 done = 1;
  761.                 break;
  762.             }
  763.             delay(100);
  764.         }
  765.     }
  766.     if(done == 0)
  767.     {
  768.         i = 63;
  769.         for(m = 0;m < 64;m++)
  770.         {
  771.             color[2] = m;
  772.             write_color_reg(color,5);
  773.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  774.             if(bioskey(1))
  775.             {
  776.                 done = 1;
  777.                 break;
  778.             }
  779.             delay(100);
  780.         }
  781.     }
  782.     if(done == 0)
  783.     {
  784.         m = 0;
  785.         color[2] = 0;
  786.         for(j = 0;j < 64;j++)
  787.         {
  788.             color[1] = j;
  789.             write_color_reg(color,5);
  790.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  791.             if(bioskey(1))
  792.             {
  793.                 done = 1;
  794.                 break;
  795.             }
  796.             delay(100);
  797.         }
  798.     }
  799.     if(done == 0)
  800.     {
  801.         j = 0;
  802.         color[1] = j;
  803.         i = 0;
  804.         color[0] = i;
  805.         for(m = 0;m < 64;m++)
  806.         {
  807.             color[2] = m;
  808.             write_color_reg(color,5);
  809.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  810.             if(bioskey(1))
  811.             {
  812.                 done = 1;
  813.                 break;
  814.             }
  815.             delay(100);
  816.         }
  817.     }
  818.     if(done == 0)
  819.     {
  820.         m = 63;
  821.         color[2] = m;
  822.         for(i = 0;i < 64;i++)
  823.         {
  824.             color[0] = i;
  825.             write_color_reg(color,5);
  826.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  827.             if(bioskey(1))
  828.             {
  829.                 done = 1;
  830.                 break;
  831.             }
  832.             delay(100);
  833.         }
  834.     }
  835.     if(done == 0)
  836.     {
  837.         i = 0;
  838.         color[0] = i;
  839.         for(j = 0;j < 64;j++)
  840.         {
  841.             color[1] = j;
  842.             write_color_reg(color,5);
  843.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  844.             if(bioskey(1))
  845.             {
  846.                 done = 1;
  847.                 break;
  848.             }
  849.             delay(100);
  850.         }
  851.     }
  852.     if(done == 0)
  853.     {
  854.         j = 0;
  855.         color[1] = j;
  856.         m = 0;
  857.         color[2] = m;
  858.         for(j = 0;j < 64;j++)
  859.         {
  860.             color[1] = j;
  861.             write_color_reg(color,5);
  862.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  863.             if(bioskey(1))
  864.             {
  865.                 done = 1;
  866.                 break;
  867.             }
  868.             delay(100);
  869.         }
  870.     }
  871.     if(done == 0)
  872.     {
  873.         j = 63;
  874.         for(m = 0;m < 64;m++)
  875.         {
  876.             color[2] = m;
  877.             write_color_reg(color,5);
  878.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  879.             if(bioskey(1))
  880.             {
  881.                 done = 1;
  882.                 break;
  883.             }
  884.             delay(100);
  885.         }
  886.     }
  887.     if(done == 0)
  888.     {
  889.         m = 0;
  890.         color[2] = m;
  891.         for(i = 0;i < 64;i++)
  892.         {
  893.             color[0] = i;
  894.             write_color_reg(color,5);
  895.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  896.             if(bioskey(1))
  897.             {
  898.                 done = 1;
  899.                 break;
  900.             }
  901.             delay(100);
  902.         }
  903.     }
  904.     if(done == 0)
  905.     {
  906.         i = 0;
  907.         color[0] = i;
  908.         j = 0;
  909.         color[1] = j;
  910.         for(m = 0;m < 64;m++)
  911.         {
  912.             color[2] = m;
  913.             write_color_reg(color,5);
  914.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  915.             if(bioskey(1))
  916.             {
  917.                 done = 1;
  918.                 break;
  919.             }
  920.             delay(100);
  921.         }
  922.     }
  923.     if(done == 0)
  924.     {
  925.         m = 63;
  926.         for(i = 0;i < 64;i++)
  927.         {
  928.             color[0] = i;
  929.             write_color_reg(color,5);
  930.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  931.             if(bioskey(1))
  932.             {
  933.                 done = 1;
  934.                 break;
  935.             }
  936.             delay(100);
  937.         }
  938.     }
  939.     if(done == 0)
  940.     {
  941.         i = 63;
  942.         for(j = 0;j < 64;j++)
  943.         {
  944.             color[1] = j;
  945.             write_color_reg(color,5);
  946.             write_window(25,17,"Color Blue = %2d Red = %2d Green = %2d",m,i,j);
  947.             if(bioskey(1))
  948.             {
  949.                 done = 1;
  950.                 break;
  951.             }
  952.             delay(100);
  953.         }
  954.     }
  955.     if(done == 0)
  956.     {
  957.         bioskey(0);
  958.     }
  959.     write_color_reg(color_temp,5);
  960.     uncall_window(TXT_WIN);
  961.     return(0);
  962. }
  963.  
  964.  
  965. int gray_demo(void)
  966. {
  967.     int i;
  968.     char character[2];
  969.  
  970.     text_screen(27);
  971.     save_color_regs("temp.reg");
  972.     call_window(TXT_WIN);
  973.     popup_window(8,30,10,50,12,1,2,15,1,1,8,0,0,0);
  974.     character[0] = 0xdb;
  975.     character[1] = 0x00;
  976.     for(i = 0;i < 16;i++)
  977.     {
  978.         textcolor(i);
  979.         write_window(3 + i,2,"%s",character);
  980.     }
  981.     window(1,1,80,25);
  982.     textattr(0x70);
  983.     write_window(25,14,"This is the color palette.");
  984.     write_window(25,15,"Hit any key to see grayscale.");
  985.     bioskey(0);
  986.     gray_color_regs();
  987.     write_window((80 - strlen(" HIT ANY KET TO EXIT ")) / 2,25," HIT ANY KEY TO EXIT ");
  988.     bioskey(0);
  989.     load_color_regs("temp.reg");
  990.     remove("temp.reg");
  991.     return(0);
  992. }
  993.  
  994. int palette_64(void)
  995. {
  996.     char buff[20 * 64];
  997.     char *temp_point;
  998.     int i,color_temp;
  999.  
  1000.     text_screen(28);
  1001.     if(read_file(buff,"define.dat",20 * 64,0L) > 0)
  1002.     {
  1003.         return(1);
  1004.     }
  1005.     call_window(TXT_WIN);
  1006.     write_window((80 - strlen(" ANY KEY TO TOGGLE COLOR  ESC TO EXIT ")) / 2,25," ANY KEY TO TOGGLE  ESC TO EXIT ");
  1007.     color_temp = read_palette(5);
  1008.     popup_window(8,20,5,60,15,1,2,5,1,1,8,0,0,0);
  1009.     clear_window(0xdb);
  1010.     window(1,1,80,25);
  1011.     textattr(0x70);
  1012.     temp_point = strtok(buff,"\r\n");
  1013.     for(i = 0;i < 64;i++)
  1014.     {
  1015.         write_palette(i,5);
  1016.         write_window(30,18,"Color define %s = %d",temp_point,i);
  1017.         if(bioskey(0) == 283)
  1018.         {
  1019.             break;
  1020.         }
  1021.         write_window(30,18,"                                                ");
  1022.         temp_point = strtok(NULL,"\r\n");
  1023.     }
  1024.     write_palette(color_temp,5);
  1025.     uncall_window(TXT_WIN);
  1026.     return(0);
  1027. }