home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 25 / nopv25.iso / 039A / SW.ZIP / SIMPWN15.ZIP / SIMPTUT.C < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-08  |  66.2 KB  |  2,986 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 <process.h>
  9.  
  10. /***************************************************************************
  11.  
  12.       simple windows includes
  13.  
  14. ***************************************************************************/
  15.  
  16. # include "simpwin.h"
  17. # include "swskdef.h"
  18. # include "mouse21.h"
  19.  
  20. /***************************************************************************
  21.  
  22.       window call defines
  23.  
  24. ***************************************************************************/
  25.  
  26. # define MAIN_WIN 1
  27. # define DEMO_WIN 2
  28. # define TEXT_WIN 3
  29. # define FONT_TEXT 4
  30. # define FONT_WIN 5
  31. # define QUIT_WIN 6
  32. # define FUNG_WIN 7
  33. # define DEMO_TEXT 8
  34. # define ENTER_WIN 9
  35. # define EDIT_WIN 10
  36. # define OPT_WIN 19
  37.  
  38. /***************************************************************************
  39.  
  40.       menu call defines
  41.  
  42. ***************************************************************************/
  43.  
  44. # define MAIN_MENU 0
  45. # define DEMO_MENU 1
  46. # define TEXT_MENU 2
  47. # define FONT_TEXT_MENU 3
  48. # define FONT_MENU 4
  49. # define CAP_MENU 6
  50. # define FUNG_MENU 5
  51. # define SHADOW_MENU 7
  52. # define BOARDER_MENU 8
  53. # define ENTER_MENU 9
  54. # define EDIT_MENU 10
  55. # define SCREEN_MENU 11
  56. # define FORM_MENU 12
  57. # define SONG_MENU 13
  58. # define OPT_MENU_1 14
  59. # define OPT_MENU_2 15
  60. # define OPT_MENU 16
  61.  
  62. /***************************************************************************
  63.  
  64.       fungtion prototypes
  65.  
  66. ***************************************************************************/
  67.  
  68. int font_demo(void);
  69. int main_menu(void);
  70. int quit(void);
  71. int demo_menu(void);
  72. int tutor_menu(void);
  73. int tut_menu(void);
  74. int demo_popup(void);
  75. int shad_demo(void);
  76. int boarder_demo(void);
  77. int enter_demo(void);
  78. int data_ok(void);
  79. int scr_form(void);
  80. int song_demo(void);
  81. void view_text(int file_num);
  82. int reg_form(void);
  83. void view_tut(int file_num,char *lable);
  84. void reed_text(char *file_name);
  85. int option_menu(void);
  86. int o_menu(void);
  87. void get_port(void);
  88. int save_option(int save_switch);
  89. int change_window(char lable[9][15]);
  90. int boarder_select(void);
  91. int shadow_select(void);
  92. int color_select(void);
  93. void write_data(int record);
  94. void save_data(void);
  95. int get_color(void);
  96. int mou_menu(void);
  97.  
  98. typedef struct
  99. {
  100.     int port;
  101.     int hk_color;
  102.     char font[15];
  103.     int data[8][8];
  104. } O_DATA;
  105.  
  106.  
  107. int mou_switch,port_number,win_num = 0,color_code,display_switch = 1;
  108. O_DATA o_data;
  109. char *edit_buff,font_string[255];
  110. char *t_buff;
  111.  
  112. void main(void)
  113. {
  114.     int i,j,k;
  115.  
  116. /****************************************************************************
  117.  
  118.     load system file
  119.  
  120. ****************************************************************************/
  121.  
  122.  
  123.     init_window(2,1,1,"",1);
  124.     read_file(&o_data,"simptut.sys",sizeof(O_DATA),0L);
  125.     strcpy(font_string,"swloadft ");
  126.     strcat(font_string,o_data.font);
  127.     system(font_string);
  128.     hide_cursor();
  129.     system("cls");
  130.  
  131. /***************************************************************************
  132.  
  133.     check for enough memory
  134.  
  135. ***************************************************************************/
  136.  
  137.     if(((edit_buff = (char *)malloc(22 * 80)) == NULL) |
  138.         ((t_buff = (char *)malloc(4000)) == NULL))
  139.     {       popup_window(0,1,25,80,25,0,0,14,4,1,0,0,0,0);
  140.         write_window(3,2,"Not enough memory!");
  141.         exit(1);
  142.     }
  143.     memset(edit_buff,0,(22 * 80));
  144.  
  145. /****************************************************************************
  146.  
  147.     initialize simple windows anf mouse21
  148.  
  149. ***************************************************************************/
  150.  
  151.     port_number = o_data.port;
  152.     if(init_window(30,20,4,"",port_number) == 1)
  153.     {
  154.         simp_window(1,25,80,25,0,0,14,4,1,0,0,0,0);
  155.         gotoxy(3,2);
  156.         cprintf("Unable to install simple windows");
  157.         exit(1);
  158.     }
  159.     if(mouinstalled() != 0)
  160.     {
  161.         loadcurs("cursor.fnt",0);
  162.         mousetposition(1,1);
  163.         mou_switch = 1;
  164.         simp_window(30,10,50,12,1,0,14,4,0,0,0,0,0);
  165.         write_window(3,2,"Mouse Installed !");
  166.         delay(1000);
  167.     }
  168.     else
  169.     {
  170.         simp_window(23,10,57,12,1,0,14,4,0,0,0,0,0);
  171.         write_window(3,2,"NO mouse driver installed");
  172.         delay(1000);
  173.     }
  174.  
  175.     if(load_menu_text("simptut.men") != 0)
  176.     {
  177.         uninit_window();
  178.         free(edit_buff);
  179.         exit(1);
  180.     }
  181.     load_win_data("simptut.win");
  182.     save_data();
  183.  
  184. /***************************************************************************
  185.  
  186.     make title screen
  187.  
  188. ****************************************************************************/
  189.     hide_cursor();
  190.     k= 3;
  191.     for(i = 0;i < 13;i++)
  192.     {
  193.         for(j = k - 3;j < k;j++)
  194.         {
  195.             simp_window(40 - j,13 - i,40 + j,13 + i,o_data.data[0][0],
  196.                 o_data.data[0][1],o_data.data[0][2],o_data.data[0][3],
  197.                 o_data.data[0][4],o_data.data[0][5],o_data.data[0][6],
  198.                 o_data.data[0][7],0);
  199.         }
  200.         k = k + 3;
  201.     }
  202.     simp_window(1,1,80,25,o_data.data[0][0],o_data.data[0][1],o_data.data[0][2],
  203.         o_data.data[0][3],o_data.data[0][4],o_data.data[0][5],
  204.         o_data.data[0][6],o_data.data[0][7],0);
  205.     k = 3;
  206.     for(i = 0;i < 13;i++)
  207.     {
  208.         for(j = k - 3;j < k;j++)
  209.         {
  210.             window(40 - j,13 - i,40 + j,13 + i);
  211.             load_screen_form(0,"simptut.scr");
  212.         }
  213.         k = k + 3;
  214.     }
  215.     window(1,1,80,25);
  216.     load_screen_form(0,"simptut.scr");
  217.     save_screen(1);
  218.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  219.     bioskey(0);
  220.     moucursortype(0xff);
  221.  
  222. /****************************************************************************
  223.  
  224.     run program menu system
  225.  
  226. ***************************************************************************/
  227.  
  228.     while(main_menu())
  229.     {
  230.     }
  231.  
  232. /***************************************************************************
  233.  
  234.     uninitialize simple windows and exit
  235.  
  236. ****************************************************************************/
  237.  
  238.     free(edit_buff);
  239.     uninit_window();
  240.     show_cursor();
  241.     spawnlp(P_WAIT,"swloadft.exe","swloadft.exe","ibmstd.fnt",NULL);
  242.     system("cls");
  243. }
  244.  
  245. /**************************************************************************
  246.  
  247.     This is a typical menu fungtion. I will comment this one only
  248.     to save on redundancy. All the other menuing moduals are similar.
  249.  
  250. **************************************************************************/
  251.  
  252. int font_demo(void)
  253. {
  254.     int i,pick,choice,old_i = 9,mousex = 0,mousey = 0;
  255.     char lable[8][13] = {"Roman","Script","Antique","Brodway","saNserif",
  256.         "Courrier","Medieval","Ibmstd"};
  257.  
  258. /**************************************************************************
  259.  
  260.     draw window and menu with hilght
  261.  
  262. **************************************************************************/
  263.  
  264.     load_screen(3);
  265.     call_window(FONT_TEXT);
  266.     call_menu(FONT_TEXT_MENU,3,2);
  267.     write_window(16,10," HIT ANY KEY ");
  268.     bioskey(0);
  269.     call_window(FONT_WIN);
  270.     write_window(5,1," FONTS ");
  271.     call_menu(FONT_MENU,3,2);
  272.     textcolor(o_data.hk_color);
  273.     write_window(3,2,"R");
  274.     write_window(3,3,"S");
  275.     write_window(3,4,"A");
  276.     write_window(3,5,"B");
  277.     write_window(5,6,"N");
  278.     write_window(3,7,"C");
  279.     write_window(3,8,"M");
  280.     write_window(3,9,"I");
  281.     save_screen_buff();
  282.  
  283. /***************************************************************************
  284.  
  285.     This is the cursor and mouse control
  286.  
  287. ***************************************************************************/
  288.  
  289.     i = 0;
  290.     moushow();
  291.     for(;;)
  292.     {
  293.         choice = 0;
  294.     /******************************************************************
  295.  
  296.         This tells where is mouse
  297.  
  298.     ******************************************************************/
  299.         if(mouposition(&mousex,&mousey))
  300.         {
  301.             if((mousex > 30 ) & (mousex < 45 ))
  302.             {
  303.                 i = mousey - 7;
  304.             }
  305.         }
  306.     /******************************************************************
  307.  
  308.         This checks for key entery
  309.  
  310.     ******************************************************************/
  311.         if(bioskey(1) | (mou_switch == 0))
  312.         {
  313.             switch(bioskey(0))
  314.             {
  315.                 case ESC : choice = 10; break;
  316.                 case ENTER : choice = 1; break;
  317.                 case CURSOR_UP : i = i - 1; break;
  318.                 case CURSOR_DN : i = i + 1; break;
  319.                 case ALT_R : choice = 2; break;
  320.                 case ALT_S : choice = 3; break;
  321.                 case ALT_A : choice = 4; break;
  322.                 case ALT_B : choice = 5; break;
  323.                 case ALT_N : choice = 6; break;
  324.                 case ALT_C : choice = 7; break;
  325.                 case ALT_M : choice = 8; break;
  326.                 case ALT_I : choice = 9; break;
  327.             }
  328.         }
  329.     /******************************************************************
  330.  
  331.         this is for cursor control
  332.  
  333.     ******************************************************************/
  334.  
  335.         if(i < 0)
  336.         {
  337.             i = 0;
  338.         }
  339.         if(i > 7)
  340.         {
  341.             i = 7;
  342.         }
  343.  
  344.     /******************************************************************
  345.  
  346.         this draws shadowed hilight
  347.  
  348.     ********************************************************************/
  349.  
  350.         if(old_i != i)
  351.         {
  352.             old_i = i;
  353.             mouhide();
  354.             load_screen_buff();
  355.             simp_window(31,7 + i,44,7 + i,o_data.data[7][0],o_data.data[7][1],
  356.                 o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  357.                 o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  358.             write_window(2,1,"%s",lable[i]);
  359.             moushow();
  360.         }
  361.  
  362.     /******************************************************************
  363.  
  364.         this checks mouse button
  365.  
  366.     ******************************************************************/
  367.  
  368.         if(moubuttonpressed(LEFTBUTTON))
  369.         {
  370.             if((mousex < 45) & (mousex > 30) & (mousey > 6) & (mousey < 15))
  371.             {
  372.                 choice = 1;
  373.             }
  374.         }
  375.         if(choice != 0)
  376.         {
  377.             break;
  378.         }
  379.     }
  380.  
  381.     mouhide();
  382.     load_screen_buff();
  383.  
  384. /************************************************************************
  385.  
  386.     this check to see if there is a selection
  387.  
  388. ************************************************************************/
  389.  
  390.     if(choice == 1)
  391.     {
  392.         choice = i + 2;
  393.     }
  394.     pick = 1;
  395.     switch(choice)
  396.     {
  397.         case 2 :
  398.         case 3 :
  399.         case 4 :
  400.         case 5 :
  401.         case 6 :
  402.         case 7 :
  403.         case 8 :
  404.         case 9 : strcpy(o_data.font,lable[i]); break;
  405.     }
  406.     if(choice != 10)
  407.     {
  408.         strcat(o_data.font,".fnt");
  409.         strcpy(font_string,"swloadft ");
  410.         strcat(font_string,o_data.font);
  411.         system(font_string);
  412.     }
  413.     load_screen_buff();
  414.     uncall_window(FONT_WIN);
  415.     uncall_window(FONT_TEXT);
  416.     display_switch = 0;
  417.     return(pick);
  418. }
  419.  
  420. int main_menu(void)
  421. {
  422.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  423.     char lable[4][13] = {"Demo","Text","Options","eXit"};
  424.  
  425. /***************************************************************************
  426.  
  427.     this code is used to get rid of window flash
  428.  
  429. **************************************************************************/
  430.  
  431.     if(display_switch)
  432.     {
  433.         load_screen(1);
  434.         call_window(MAIN_WIN);
  435.         call_menu(MAIN_MENU,3,2);
  436.         save_screen(2);
  437.     }
  438.     else
  439.     {
  440.         load_screen(2);
  441.     }
  442.  
  443. /**************************************************************************/
  444.  
  445.     display_switch = 1;
  446.     textcolor(o_data.hk_color);
  447.     write_window(3,2,"D");
  448.     write_window(15,2,"T");
  449.     write_window(28,2,"O");
  450.     write_window(43,2,"X");
  451.     save_screen_buff();
  452.     i = 0;
  453.     moushow();
  454.     for(;;)
  455.     {
  456.         choice = 0;
  457.         if(mouposition(&mousex,&mousey))
  458.         {
  459.             if(mousey == 4)
  460.             {
  461.                 if((mousex > 5) & (mousex < 11))
  462.                 {
  463.                     i = 0;
  464.                 }
  465.                 else if((mousex > 17) & (mousex < 24))
  466.                 {
  467.                     i = 1;
  468.                 }
  469.                 else if((mousex > 30) & (mousex < 39))
  470.                 {
  471.                     i = 2;
  472.                 }
  473.                 else if((mousex > 44) & (mousex < 50))
  474.                 {
  475.                     i = 3;
  476.                 }
  477.             }
  478.         }
  479.         if(old_i != i)
  480.         {
  481.             mouhide();
  482.             old_i = i;
  483.             load_screen_buff();
  484.             switch(i)
  485.             {
  486.                 case 0 : simp_window(6,4,11,4,o_data.data[7][0],
  487.                      o_data.data[7][1],o_data.data[7][2],o_data.data[7][3],
  488.                      o_data.data[7][4],o_data.data[7][5],o_data.data[7][6],
  489.                      o_data.data[7][7],0); break;
  490.                 case 1 : simp_window(18,4,24,4,o_data.data[7][0],o_data.data[7][1],
  491.                      o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  492.                      o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0); break;
  493.                 case 2 : simp_window(31,4,39,4,o_data.data[7][0],o_data.data[7][1],
  494.                      o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  495.                      o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0); break;
  496.                 case 3 : simp_window(45,4,50,4,o_data.data[7][0],o_data.data[7][1],
  497.                      o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  498.                      o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0); break;
  499.             }
  500.             write_window(2,1,"%s",lable[i]);
  501.             moushow();
  502.         }
  503.         if(bioskey(1) | (mou_switch == 0))
  504.         {
  505.             switch(bioskey(0))
  506.             {
  507.                 case ESC : choice = 6; break;
  508.                 case CURSOR_RIGHT : i = i + 1; break;
  509.                 case CURSOR_LEFT : i = i - 1; break;
  510.                 case ENTER : choice = 1; break;
  511.                 case ALT_D : choice = 2; break;
  512.                 case ALT_T : choice = 3; break;
  513.                 case ALT_X : choice = 5; break;
  514.                 case ALT_O : choice = 4; break;
  515.             }
  516.         }
  517.         if(i < 0)
  518.         {
  519.             i = 0;
  520.         }
  521.         if(i > 3)
  522.         {
  523.             i = 3;
  524.         }
  525.         if(moubuttonpressed(LEFTBUTTON))
  526.         {
  527.             if(mousey == 4)
  528.             {
  529.                 if(((mousex > 5) & (mousex < 11)) |
  530.                     ((mousex > 17) & (mousex < 24)) |
  531.                     ((mousex > 30) & (mousex < 39)) |
  532.                     ((mousex > 44) & (mousex < 50)))
  533.                 {
  534.                     choice = 1;
  535.                 }
  536.             }
  537.         }
  538.         if(choice != 0)
  539.         {
  540.             break;
  541.         }
  542.     }
  543.     mouhide();
  544.     load_screen_buff();
  545.     if(choice == 1)
  546.     {
  547.         choice = i + 2;
  548.     }
  549.     pick = 1;
  550.     switch(choice)
  551.     {
  552.         case 2 : while(demo_menu()){} break;
  553.         case 3 : while(tutor_menu()){} break;
  554.         case 4 : while(o_menu()){} break;
  555.         case 6 :
  556.         case 5 : pick = quit(); break;
  557.     }
  558.     return(pick);
  559. }
  560.  
  561. /*************************************************************************
  562.  
  563.     this modual ask if you are shure you wish to quit
  564.  
  565. ************************************************************************/
  566.  
  567. int quit(void)
  568. {
  569.     int pick = 1;
  570.  
  571.     show_cursor();
  572.     call_window(QUIT_WIN);
  573.     write_window(3,2,"Quit Y/N ?");
  574.     if(get_choice(14,2,"N"))
  575.     {
  576.         pick = 0;
  577.     }
  578.     uncall_window(QUIT_WIN);
  579.     hide_cursor();
  580.     return(pick);
  581. }
  582.  
  583. int demo_menu(void)
  584. {
  585.     int pick,choice,i = 0,old_i = 9,mousex = 0,mousey = 0;
  586.     char lable[6][13] = {"Capacity","Shadow","Boarder","Form",
  587.         "Music","Enteries"};
  588.  
  589.     if(display_switch)
  590.     {
  591.         load_screen(2);
  592.         call_window(DEMO_WIN);
  593.         call_menu(DEMO_MENU,3,2);
  594.         save_screen(3);
  595.     }
  596.     else
  597.     {
  598.         load_screen(3);
  599.     }
  600.     display_switch = 1;
  601.     textcolor(o_data.hk_color);
  602.     write_window(3,2,"C");
  603.     write_window(3,3,"S");
  604.     write_window(3,4,"B");
  605.     write_window(3,5,"F");
  606.     write_window(3,6,"M");
  607.     write_window(3,7,"E");
  608.     save_screen_buff();
  609.     i = 0;
  610.     moushow();
  611.     for(;;)
  612.     {
  613.         choice = 0;
  614.         if(mouposition(&mousex,&mousey))
  615.         {
  616.             if((mousex > 7) & (mousex < 19))
  617.             {
  618.                 i = mousey - 5;
  619.             }
  620.         }
  621.         if(bioskey(1) | (mou_switch == 0))
  622.         {
  623.             switch(bioskey(0))
  624.             {
  625.                 case ESC : choice = 9; break;
  626.                 case CURSOR_DN : i = i + 1; break;
  627.                 case CURSOR_UP : i = i - 1; break;
  628.                 case ENTER : choice = 1; break;
  629.                 case ALT_C : choice = 2; break;
  630.                 case ALT_S : choice = 3; break;
  631.                 case ALT_B : choice = 4; break;
  632.                 case ALT_F : choice = 5; break;
  633.                 case ALT_M : choice = 6; break;
  634.                 case ALT_E : choice = 7; break;
  635.             }
  636.         }
  637.         if(i < 0)
  638.         {
  639.             i = 0;
  640.         }
  641.         if(i > 5)
  642.         {
  643.             i = 5;
  644.         }
  645.         if(old_i != i)
  646.         {
  647.             old_i = i;
  648.             mouhide();
  649.             load_screen_buff();
  650.             simp_window(8,5 + i,18,5 + i,o_data.data[7][0],o_data.data[7][1],
  651.             o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  652.             o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  653.             write_window(2,1,"%s",lable[i]);
  654.             moushow();
  655.         }
  656.         if(moubuttonpressed(LEFTBUTTON))
  657.         {
  658.             if((mousex > 7) & (mousex < 19) & (mousey > 4) & (mousey < 11))
  659.             {
  660.                 choice = 1;
  661.             }
  662.             else
  663.             {
  664.                 choice = 9;
  665.             }
  666.         }
  667.         if(choice != 0)
  668.         {
  669.             break;
  670.         }
  671.     }
  672.     mouhide();
  673.     load_screen_buff();
  674.     pick = 1;
  675.     if(choice == 1)
  676.     {
  677.         choice = i + 2;
  678.     }
  679.     switch(choice)
  680.     {
  681.         case 2 : while(demo_popup()){} break;
  682.         case 3 : while(shad_demo()){} break;
  683.         case 4 : while(boarder_demo()){} break;
  684.         case 5 : while(scr_form()){} break;
  685.         case 6 : while(song_demo()){} break;
  686.         case 7 : while(enter_demo()){} break;
  687.         case 9 : pick = 0; break;
  688.     }
  689.     display_switch = 0;
  690.     return(pick);
  691. }
  692.  
  693. int tutor_menu(void)
  694. {
  695.     int pick,choice,i = 0,old_i = 12,mousex = 0,mousey = 0;
  696.     char lable[10][13] = {"Genral Info","Registration","Disclaimer",
  697.         "Fungtions","Later","Support","Quarks","Mouse21","dEfines","maKefile"};
  698.  
  699.     if(display_switch)
  700.     {
  701.         load_screen(2);
  702.         call_window(TEXT_WIN);
  703.         call_menu(TEXT_MENU,3,2);
  704.         save_screen(3);
  705.     }
  706.     else
  707.     {
  708.         load_screen(3);
  709.     }
  710.     display_switch = 1;
  711.     textcolor(o_data.hk_color);
  712.     write_window(3,2,"G");
  713.     write_window(3,3,"R");
  714.     write_window(3,4,"D");
  715.     write_window(3,5,"F");
  716.     write_window(3,6,"L");
  717.     write_window(3,7,"S");
  718.     write_window(3,8,"Q");
  719.     write_window(3,9,"M");
  720.     write_window(4,10,"E");
  721.     write_window(5,11,"K");
  722.     save_screen_buff();
  723.     moushow();
  724.     for(;;)
  725.     {
  726.         choice = 0;
  727.         if(mouposition(&mousex,&mousey))
  728.         {
  729.             if((mousex > 17) & (mousex < 32))
  730.             {
  731.                 i = mousey - 5;
  732.             }
  733.         }
  734.         if(bioskey(1) | (mou_switch == 0))
  735.         {
  736.             switch(bioskey(0))
  737.             {
  738.                 case ESC : choice = 12; break;
  739.                 case CURSOR_DN : i = i + 1; break;
  740.                 case CURSOR_UP : i = i - 1; break;
  741.                 case ENTER : choice = 1; break;
  742.                 case ALT_G : choice = 2; break;
  743.                 case ALT_R : choice = 3; break;
  744.                 case ALT_D : choice = 4; break;
  745.                 case ALT_F : choice = 5; break;
  746.                 case ALT_L : choice = 6; break;
  747.                 case ALT_S : choice = 7; break;
  748.                 case ALT_Q : choice = 8; break;
  749.                 case ALT_M : choice = 9; break;
  750.                 case ALT_E : choice = 10; break;
  751.                 case ALT_K : choice = 11; break;
  752.             }
  753.         }
  754.         if(i < 0)
  755.         {
  756.             i = 0;
  757.         }
  758.         if(i > 9)
  759.         {
  760.             i = 9;
  761.         }
  762.         if(old_i != i)
  763.         {
  764.             old_i = i;
  765.             mouhide();
  766.             load_screen_buff();
  767.             simp_window(18,5 + i,31,5 + i,o_data.data[7][0],o_data.data[7][1],
  768.             o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  769.             o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  770.             write_window(2,1,"%s",lable[i]);
  771.             moushow();
  772.         }
  773.         if(moubuttonpressed(LEFTBUTTON))
  774.         {
  775.             if((mousex > 17) & (mousex < 32) & (mousey > 4) & (mousey < 15))
  776.             {
  777.                 choice = 1;
  778.             }
  779.             else
  780.             {
  781.                 choice = 12;
  782.             }
  783.         }
  784.         if(choice != 0)
  785.         {
  786.             break;
  787.         }
  788.     }
  789.     mouhide();
  790.     load_screen_buff();
  791.     pick = 1;
  792.     if(choice == 1)
  793.     {
  794.         choice = i + 2;
  795.     }
  796.     switch(choice)
  797.     {
  798.         case 2 : view_text(0); break;
  799.         case 3 : reg_form(); break;
  800.         case 4 : reed_text("disclam.doc"); break;
  801.         case 5 : while(tut_menu()){} break;
  802.         case 6 : view_text(1); break;
  803.         case 7 : view_text(2); break;
  804.         case 8 : view_text(3); break;
  805.         case 9 : while(mou_menu()){} break;
  806.         case 10 : reed_text("defines.txt"); break;
  807.         case 11 : reed_text("makefile.txt"); break;
  808.         case 12 : pick = 0; break;
  809.     }
  810.     display_switch = 0;
  811.     unpopup_window(3);
  812.     return(pick);
  813. }
  814.  
  815. /**************************************************************************
  816.  
  817.     this is a complex menuing system with cursor and mouse
  818.  
  819. **************************************************************************/
  820.  
  821. int tut_menu(void)
  822. {
  823.     int pick,choice,i,j,old_i = 100,old_j = 4;
  824.     int mousex = 0,mousey = 0;
  825.         char lable[3][21][25] = {"simp_window\(\)","popup_window\(\)","make_window\(\)","call_window\(\)",
  826.         "uncall_window\(\)","unpopup_window\(\)","load_win_data\(\)","","",
  827.         "make_menu\(\)","load_menu_text\(\)","call_menu\(\)","load_text\(\)","","",
  828.         "get_choice\(\)","get_int_date\(\)","edit_string\(\)","get_string\(\)",
  829.         "get_int\(\)","get_long\(\)","print_printf\(\)","print_putch\(\)",
  830.         "print_horizontal_line\(\)","print_vertical_line\(\)","print_window\(\)",
  831.         "clear_print_buff\(\)","print_buff\(\)","load_form\(\)","print_char\(\)","","",
  832.         "draw_horizontal_line\(\)","draw_vertical_line\(\)","clear_window\(\)",
  833.         "move_window\(\)","show_cursor\(\)","hide_cursor\(\)","move_cursor\(\)",
  834.         "load_screen_form\(\)","write_window\(\)","read_text\(\)","set_tempo\(\)",
  835.         "tone\(\)","cord\(\)","playsong\(\)","","","read_file\(\)",
  836.         "write_file\(\)","file_to_file\(\)","copy_file\(\)","creat_file\(\)","read_directory\(\)",
  837.         "","","save_screen\(\)","load_screen\(\)","save_screen_buff\(\)",
  838.         "load_screen_buff\(\)","","init_window\(\)","uninit_window\(\)"};
  839.  
  840.     if(display_switch)
  841.     {
  842.         call_window(FUNG_WIN);
  843.         call_menu(FUNG_MENU,5,3);
  844.         write_window((80 - strlen("FUNCTION MENU ")) / 2,1," FUNGTION MENU ");
  845.         write_window((80 - strlen(" ESC to exit ")) / 2,25," ESC to exit ");
  846.         save_screen(4);
  847.     }
  848.     else
  849.     {
  850.         load_screen(4);
  851.     }
  852.     save_screen_buff();
  853.     i = 0;
  854.     j = 0;
  855.     moushow();
  856.     for(;;)
  857.     {
  858.         choice = 0;
  859.         if(mouposition(&mousex,&mousey))
  860.         {
  861.             if((mousex > 3) & (mousex < 25))
  862.             {
  863.                 i = mousey - 4;
  864.                 if((mousey > 2) & (mousey < 23))
  865.                 {
  866.                     j = 0;
  867.                 }
  868.             }
  869.             else if((mousex > 27) & (mousex < 56))
  870.             {
  871.                 i = mousey - 4;
  872.                 if((mousey > 3) & (mousey < 23))
  873.                 {
  874.                     j = 1;
  875.                 }
  876.             }
  877.             else if((mousex > 58) & (mousex < 80))
  878.             {
  879.                 i = mousey - 4;
  880.                 if((mousey > 3) & (mousey < 25))
  881.                 {
  882.                     j = 2;
  883.                 }
  884.             }
  885.  
  886.         }
  887.         if(bioskey(1) | (mou_switch == 0))
  888.         {
  889.             switch(bioskey(0))
  890.             {
  891.                 case ESC : choice = 100; break;
  892.                 case ENTER : choice = 1; break;
  893.                 case CURSOR_UP : i = i - 1; break;
  894.                 case CURSOR_DN : i = i + 1; break;
  895.                 case CURSOR_RIGHT : j = j + 1; break;
  896.                 case CURSOR_LEFT : j = j - 1; break;
  897.             }
  898.         }
  899.         switch(j)
  900.         {
  901.             case 0 : switch(i)
  902.                  {
  903.                     case 7 : i = 9; break;
  904.                     case 8 : i = 6; break;
  905.                     case 13 : i = 15; break;
  906.                     case 14 : i = 12; break;
  907.                  }
  908.                  if(i < 0)
  909.                  {
  910.                     i = 0;
  911.                  }
  912.                  if(i > 20)
  913.                  {
  914.                     i = 0;
  915.                     j = 1;
  916.                  }
  917.                  break;
  918.             case 1 : switch(i)
  919.                  {
  920.                     case 9 : i = 11; break;
  921.                     case 10 : i = 8; break;
  922.                  }
  923.                  if(i < 0)
  924.                  {
  925.                     i = 20;
  926.                     j = 0;
  927.                  }
  928.                  else if(i > 20)
  929.                  {
  930.                     i = 0;
  931.                     j = 2;
  932.                  }
  933.                  break;
  934.             case 2 : switch(i)
  935.                  {
  936.                     case 4 : i = 6; break;
  937.                     case 5 : i = 3; break;
  938.                     case 12 : i = 14; break;
  939.                     case 13 : i = 11; break;
  940.                  }
  941.                  if((old_i < i) & (i == 18))
  942.                  {
  943.                     i = 19;
  944.                  }
  945.                  if((old_i > i) & (i == 18))
  946.                  {
  947.                     i = 17;
  948.                  }
  949.                  if(i < 0)
  950.                  {
  951.                     i = 20;
  952.                     j = 1;
  953.                  }
  954.                  else if(i > 20)
  955.                  {
  956.                     i = 20;
  957.                  }
  958.                  break;
  959.         }
  960.         if(j < 0)
  961.         {
  962.             j = 0;
  963.         }
  964.         if(j > 2)
  965.         {
  966.             j = 2;
  967.         }
  968.         if((old_i != i) | (old_j != j))
  969.         {
  970.             mouhide();
  971.             old_i = i;
  972.             old_j = j;
  973.             load_screen_buff();
  974.             switch(j)
  975.             {
  976.                 case 0 : simp_window(4,4 + i,4 + strlen(lable[j][i]) + 1,4 + i,
  977.                         o_data.data[7][0],o_data.data[7][1],o_data.data[7][2],
  978.                         o_data.data[7][3],o_data.data[7][4],o_data.data[7][5],
  979.                         o_data.data[7][6],o_data.data[7][7],0); break;
  980.                 case 1 : simp_window(28,4 + i,28 + strlen(lable[j][i]) + 1,4 + i,
  981.                         o_data.data[7][0],o_data.data[7][1],o_data.data[7][2],
  982.                         o_data.data[7][3],o_data.data[7][4],o_data.data[7][5],
  983.                         o_data.data[7][6],o_data.data[7][7],0); break;
  984.                 case 2 : simp_window(59,4 + i,59 + strlen(lable[j][i]) + 1,4 + i,
  985.                         o_data.data[7][0],o_data.data[7][1],o_data.data[7][2],
  986.                         o_data.data[7][3],o_data.data[7][4],o_data.data[7][5],
  987.                         o_data.data[7][6],o_data.data[7][7],0); break;
  988.             }
  989.             write_window(2,1,"%s",lable[j][i]);
  990.             moushow();
  991.         }
  992.         if(moubuttonrelease(LEFTBUTTON))
  993.         {
  994.             if(((mousex > 3) & (mousex < strlen(lable[0][i]) + 5)) |
  995.                 ((mousex > 27) & (mousex < strlen(lable[1][i]) + 31)) |
  996.                 ((mousex > 58) & (mousex < strlen(lable[2][i]) + 62)))
  997.             {
  998.                 choice = 1;
  999.             }
  1000.         }
  1001.         if(choice != 0)
  1002.         {
  1003.             break;
  1004.         }
  1005.     }
  1006.     mouhide();
  1007.     load_screen_buff();
  1008.     pick = 1;
  1009.     if(choice == 1)
  1010.     {
  1011.         switch(j)
  1012.         {
  1013.             case 0 : switch(i)
  1014.                  {
  1015.                     case 0 : choice = 0; break;
  1016.                     case 1 : choice = 1; break;
  1017.                     case 2 : choice = 2; break;
  1018.                     case 3 : choice = 3; break;
  1019.                     case 4 : choice = 4; break;
  1020.                     case 5 : choice = 5; break;
  1021.                     case 6 : choice = 6; break;
  1022.                     case 9 : choice = 7; break;
  1023.                     case 10 : choice = 8; break;
  1024.                     case 11 : choice = 9; break;
  1025.                     case 12 : choice = 10; break;
  1026.                     case 15 : choice = 11; break;
  1027.                     case 16 : choice = 12; break;
  1028.                     case 17 : choice = 13; break;
  1029.                     case 18 : choice = 15; break;
  1030.                     case 19 : choice = 16; break;
  1031.                     case 20 : choice = 17; break;
  1032.                  }
  1033.                  break;
  1034.             case 1 : switch(i)
  1035.                  {
  1036.                     case 0 : choice = 18; break;
  1037.                     case 1 : choice = 19; break;
  1038.                     case 2 : choice = 20; break;
  1039.                     case 3 : choice = 21; break;
  1040.                     case 4 : choice = 22; break;
  1041.                     case 5 : choice = 23; break;
  1042.                     case 6 : choice = 24; break;
  1043.                     case 7 : choice = 25; break;
  1044.                     case 8 : choice = 52; break;
  1045.                     case 11 : choice = 26; break;
  1046.                     case 12 : choice = 27; break;
  1047.                     case 13 : choice = 28; break;
  1048.                     case 14 : choice = 29; break;
  1049.                     case 15 : choice = 30; break;
  1050.                     case 16 : choice = 31; break;
  1051.                     case 17 : choice = 32; break;
  1052.                     case 18 : choice = 33; break;
  1053.                     case 19 : choice = 34; break;
  1054.                     case 20 : choice = 35; break;
  1055.                  }
  1056.                  break;
  1057.             case 2 : switch(i)
  1058.                  {
  1059.                     case 0 : choice = 36; break;
  1060.                     case 1 : choice = 37; break;
  1061.                     case 2 : choice = 38; break;
  1062.                     case 3 : choice = 39; break;
  1063.                     case 6 : choice = 40; break;
  1064.                     case 7 : choice = 41; break;
  1065.                     case 8 : choice = 42; break;
  1066.                     case 9 : choice = 43; break;
  1067.                     case 10 : choice = 44; break;
  1068.                     case 11 : choice = 45; break;
  1069.                     case 14 : choice = 46; break;
  1070.                     case 15 : choice = 47; break;
  1071.                     case 16 : choice = 48; break;
  1072.                     case 17 : choice = 49; break;
  1073.                     case 19 : choice = 50; break;
  1074.                     case 20 : choice = 51; break;
  1075.                  }
  1076.         }
  1077.         view_tut(choice,lable[j][i]);
  1078.         switch(choice)
  1079.         {
  1080.             case 13 : view_tut(14,lable[j][i]); break;
  1081.         }
  1082.     }
  1083.     pick = 1;
  1084.     if(choice == 100)
  1085.     {
  1086.         pick = 0;
  1087.     }
  1088.     display_switch = 0;
  1089.     return(pick);
  1090. }
  1091.  
  1092. int demo_popup(void)
  1093. {
  1094.     long int free_space,block = 4056L,convert = 1;
  1095.     struct dfree space;
  1096.     char drive[3] = "C";
  1097.     unsigned char drive_num;
  1098.     int i,x,y,fore,back,num_file,done = 0;
  1099.     unsigned temp_num;
  1100.  
  1101.     call_window(DEMO_TEXT);
  1102.     call_menu(CAP_MENU,3,2);
  1103.     write_window(25,16," HIT ANY KEY ");
  1104.     bioskey(0);
  1105.  
  1106. /*************************************************************************
  1107.  
  1108.     this code asks for a drive letter and selects that drive
  1109.     for the utilitie files checking to see if there is enough
  1110.     memory
  1111.  
  1112. *************************************************************************/
  1113.  
  1114.     call_window(ENTER_WIN);
  1115.     write_window(3,2,"Enter drive letter :");
  1116.     show_cursor();
  1117.     if(get_string(drive," ","u",24,2,1,1) == 27)
  1118.     {
  1119.         hide_cursor();
  1120.         uncall_window(ENTER_WIN);
  1121.         uncall_window(DEMO_TEXT);
  1122.         return(0);
  1123.     }
  1124.     hide_cursor();
  1125.     switch(drive[0])
  1126.     {
  1127.         case 'A' : drive_num = 1; break;
  1128.         case 'B' : drive_num = 2; break;
  1129.         case 'C' : drive_num = 3; break;
  1130.         case 'D' : drive_num = 4; break;
  1131.         case 'E' : drive_num = 5; break;
  1132.         case 'F' : drive_num = 6; break;
  1133.         case 'G' : drive_num = 7; break;
  1134.         default : drive_num = 0; break;
  1135.     }
  1136.     getdfree(drive_num,&space);
  1137.     if(space.df_sclus == 0xffff)
  1138.     {
  1139.         popup_window(0,1,25,80,25,0,0,14,4,1,0,0,0,0);
  1140.         write_window(3,2,"No such drive or drive error!");
  1141.         bioskey(0);
  1142.         unpopup_window(0);
  1143.         uncall_window(ENTER_WIN);
  1144.         uncall_window(DEMO_TEXT);
  1145.         return(1);
  1146.     }
  1147.     free_space = (convert * space.df_avail * space.df_bsec * space.df_sclus);
  1148.     temp_num = free_space / block - 5;
  1149.     if(temp_num < 1)
  1150.     {
  1151.         popup_window(0,1,25,80,25,0,0,14,4,1,0,0,0,0);
  1152.         write_window(3,2,"Not enough disk space !");
  1153.         bioskey(0);
  1154.         unpopup_window(0);
  1155.         uncall_window(ENTER_WIN);
  1156.         uncall_window(DEMO_TEXT);
  1157.         return(1);
  1158.     }
  1159.     if(temp_num > 10000)
  1160.     {
  1161.         temp_num = 10000;
  1162.     }
  1163. /****************************************************************************/
  1164.  
  1165.     clear_window(0);
  1166.     write_window(3,2,"Enter number of popups:");
  1167.     num_file = temp_num;
  1168.     while(done == 0)
  1169.     {
  1170.         if(get_int(&num_file,5,27,2) == 1)
  1171.         {
  1172.             unpopup_window(9);
  1173.             unpopup_window(8);
  1174.             return(0);
  1175.         }
  1176.         if(num_file < 0)
  1177.         {
  1178.             clear_window(0);
  1179.             write_window(3,2,"Can't do negitive windows !");
  1180.             bioskey(0);
  1181.             clear_window(0);
  1182.             write_window(3,2,"Enter number of popups:");
  1183.             num_file = temp_num;
  1184.         }
  1185.         else
  1186.         {
  1187.             if(num_file > temp_num)
  1188.             {
  1189.                 clear_window(0);
  1190.                 write_window(3,2,"To many popups !");
  1191.                 bioskey(0);
  1192.                 clear_window(0);
  1193.                 write_window(3,2,"Enter number of popups:");
  1194.                 num_file = temp_num;
  1195.             }
  1196.             else
  1197.             {
  1198.                 done = 1;
  1199.             }
  1200.         }
  1201.     }
  1202.     unpopup_window(9);
  1203.     unpopup_window(8);
  1204.     creat_file("wntemp.win");
  1205.     creat_file("screen.scr");
  1206.     copy_file("win.dat","wntemp.win");
  1207.     copy_file("screen.dat","screen.scr");
  1208.     uninit_window();
  1209.     if(init_window(0,0,0,drive,port_number) == 0)
  1210.     {
  1211.         for(i = 1;i < num_file;i++)
  1212.         {
  1213.             x = (random(69) + 3);
  1214.             y = (random(20) + 2);
  1215.             fore = random(16);
  1216.             back = random(8);
  1217.             popup_window(i,x,y,x + 7,y + 2,1,2,fore,back,1,8,0,0,0);
  1218.             write_window(3,2,"%d",i);
  1219.         }
  1220.         popup_window(num_file,35,10,42,12,1,2,14,12,1,8,0,0,0);
  1221.         write_window(3,2,"%d",num_file);
  1222.         done = 0;
  1223.         while(done == 0)
  1224.         {
  1225.             for(i = 500;i < 1000;i++)
  1226.             {
  1227.                 sound(i);
  1228.                 delay(5);
  1229.                 if(bioskey(1))
  1230.                 {
  1231.                     done = 1;
  1232.                     break;
  1233.                 }
  1234.             }
  1235.             if(done == 1)
  1236.             {
  1237.                 break;
  1238.             }
  1239.             for(i = 1000;i > 500;i--)
  1240.             {
  1241.                 sound(i);
  1242.                 delay(5);
  1243.                 if(bioskey(1))
  1244.                 {
  1245.                     done = 1;
  1246.                     break;
  1247.                 }
  1248.             }
  1249.         }
  1250.         nosound();
  1251.         for(i = num_file; i > 0;i--)
  1252.         {
  1253.             unpopup_window(i);
  1254.         }
  1255.         uninit_window();
  1256.     }
  1257.     init_window(20,20,5,"",port_number);
  1258.     hide_cursor();
  1259.     load_menu_text("simptut.men");
  1260.     load_win_data("wntemp.win");
  1261.     copy_file("screen.scr","screen.dat");
  1262.     remove("wntemp.win");
  1263.     remove("screen.scr");
  1264.     display_switch = 0;
  1265.     return(0);
  1266. }
  1267.  
  1268. int shad_demo(void)
  1269. {
  1270.     int fore,back,i;
  1271.  
  1272.     call_window(DEMO_TEXT);
  1273.     call_menu(SHADOW_MENU,8,5);
  1274.     write_window(25,16," HIT ANY KEY ");
  1275.     bioskey(0);
  1276.  
  1277.     for(i = 0;i < 3;i++)
  1278.     {
  1279.         popup_window(24,20,10,63,15,2,i,14,2,1,8,0,0,0);
  1280.         switch(i)
  1281.         {
  1282.             case 0 : write_window(3,3,"This is the 0 or NO_SHADOW style."); break;
  1283.             case 1 : write_window(3,3,"This is the 1 or WIDE_SHADOW style"); break;
  1284.             case 2 : write_window(3,3,"This is the 2 or NARROW_SHADOW style"); break;
  1285.         }
  1286.         write_window(15,6," HIT ANY KEY ");
  1287.         bioskey(0);
  1288.         unpopup_window(24);
  1289.     }
  1290.     for(i = 1;i < 5;i++)
  1291.     {
  1292.         popup_window(24,20,10,63,15,2,1,14,2,i,8,0,0,0);
  1293.         switch(i)
  1294.         {
  1295.             case 1 : write_window(3,3,"This is the 1 or LOWER LEFT location"); break;
  1296.             case 2 : write_window(3,3,"This is the 2 or UPPER_LEFT location"); break;
  1297.             case 3 : write_window(3,3,"This is the 3 or LOWER_RIGHT location"); break;
  1298.             case 4 : write_window(3,3,"This is the 4 or UPPER_RIGHT location"); break;
  1299.         }
  1300.         write_window(15,6," HIT ANY KEY ");
  1301.         bioskey(0);
  1302.         unpopup_window(24);
  1303.     }
  1304.     for(;;)
  1305.     {
  1306.         fore = random(16);
  1307.         back = random(8);
  1308.         popup_window(24,20,10,63,15,2,2,14,2,1,fore,back,0,0);
  1309.         write_window(15,6," HIT ANY KEY ");
  1310.         write_window(6,3,"These are the diffrent colors that");
  1311.         write_window(11,4,"you can use for shadows.");
  1312.         delay(700);
  1313.         if(bioskey(1))
  1314.         {
  1315.             bioskey(0);
  1316.             unpopup_window(24);
  1317.             break;
  1318.         }
  1319.     }
  1320.     uncall_window(DEMO_TEXT);
  1321.     display_switch = 0;
  1322.     return(0);
  1323. }
  1324.  
  1325. int boarder_demo(void)
  1326. {
  1327.     int i,char_boarder;
  1328.  
  1329.     save_screen_buff();
  1330.     strcpy(font_string,o_data.font);
  1331.     strcat(font_string," > font.tem");
  1332.     system(font_string);
  1333.     load_screen_buff();
  1334.     call_window(DEMO_TEXT);
  1335.     call_menu(BOARDER_MENU,10,5);
  1336.     write_window(25,16," HIT ANY KEY ");
  1337.     bioskey(0);
  1338.     for(i = 0;i <5;i++)
  1339.     {
  1340.         popup_window(24,20,10,60,15,i,2,14,2,1,8,0,0,0);
  1341.         switch(i)
  1342.         {
  1343.             case 0 : write_window(3,3,"This is the 0 or NO_BOARDER style."); break;
  1344.             case 1 : write_window(3,3,"This is the 1 or SINGLE_BOARDER style"); break;
  1345.             case 2 : write_window(3,3,"This is the 2 or DOUBLE_BOARDER style"); break;
  1346.             case 3 : write_window(3,3,"This is the 3 or SIG_DUB_BOARDER style"); break;
  1347.             case 4 : write_window(3,3,"This is the 4 or DUB_SIG_BOARDER style"); break;
  1348.         }
  1349.         write_window(15,6," HIT ANY KEY ");
  1350.         bioskey(0);
  1351.     }
  1352.     for(;;)
  1353.     {
  1354.         char_boarder = random(255);
  1355.         if(char_boarder < 15)
  1356.         {
  1357.             char_boarder = char_boarder + 15;
  1358.         }
  1359.         popup_window(24,20,10,60,15,5,2,14,2,1,8,0,char_boarder,0);
  1360.         write_window(15,3," HIT ANY KEY ");
  1361.         delay(700);
  1362.         if(bioskey(1))
  1363.         {
  1364.             bioskey(0);
  1365.             unpopup_window(24);
  1366.             break;
  1367.         }
  1368.     }
  1369.     uncall_window(DEMO_TEXT);
  1370.     display_switch = 0;
  1371.     return(0);
  1372. }
  1373.  
  1374. int enter_demo(void)
  1375. {
  1376.     int int_data = 0,date[3] = {4,1,94},j,i,done = 0,pick;
  1377.     long int long_data = 0;
  1378.     char enter_string[30] = "";
  1379.  
  1380.     creat_file("edit.tem");
  1381.     read_file(edit_buff,"edit.tem",(22 * 80),0L);
  1382.     call_window(DEMO_TEXT);
  1383.     call_menu(ENTER_MENU,10,5);
  1384.     write_window(25,16," HIT ANY KEY ");
  1385.     save_screen(4);
  1386.     bioskey(0);
  1387.     show_cursor();
  1388.     for(i = 0;i < 5;i++)
  1389.     {
  1390.         popup_window(24,20,10,60,15,o_data.data[6][0],o_data.data[6][1],
  1391.             o_data.data[6][2],o_data.data[6][3],o_data.data[6][4],
  1392.             o_data.data[6][5],o_data.data[6][6],o_data.data[6][7],0);
  1393.         switch(i)
  1394.         {
  1395.             case 0 : write_window(3,3,"Enter Int :");
  1396.                  get_int(&int_data,4,16,3);
  1397.                  write_window(3,4,"You entered %d",int_data);
  1398.                  break;
  1399.             case 1 : write_window(3,3,"Enter Long :");
  1400.                  get_long(&long_data,8,17,3);
  1401.                  write_window(3,4,"You entered %ld",long_data);
  1402.                  break;
  1403.             case 2 : write_window(3,3,"Enter String :");
  1404.                  get_string(enter_string,"          --        ","**********  ********",18,3,1,0);
  1405.                  write_window(3,4,"You entered %s",enter_string);
  1406.                  break;
  1407.             case 3 : write_window(3,3,"Enter date :");
  1408.                  get_int_date(date,16,3);
  1409.                  write_window(3,4,"You enterd %d %d %d",date[0],date[1],date[2]);
  1410.                  break;
  1411.             case 4 : write_window(3,3,"Chose Y/N ?");
  1412.                  if(get_choice(15,3,"Y"))
  1413.                  {
  1414.                     write_window(3,4,"You choose YES");
  1415.                  }
  1416.                  else
  1417.                  {
  1418.                     write_window(3,4,"You coose NO");
  1419.                  }
  1420.                  break;
  1421.         }
  1422.         write_window(15,5," HIT ANY KEY ");
  1423.         bioskey(0);
  1424.         clear_window(0);
  1425.     }
  1426.     load_screen(4);
  1427.     call_window(EDIT_WIN);
  1428.     call_menu(EDIT_MENU,10,8);
  1429.     write_window(33,25," HIT ANY KEY ");
  1430.     bioskey(0);
  1431.  
  1432. /*************************************************************************
  1433.  
  1434.     this code is a full screen editor with edit_string()
  1435.  
  1436. **************************************************************************/
  1437.     clear_window(0);
  1438.     for(i = 0;i < 22;i++)
  1439.     {
  1440.         write_window(3,3 + i,"%s",edit_buff + (80 * i));
  1441.     }
  1442.     i = 0;
  1443.     while(done == 0)
  1444.     {
  1445.         write_window(31,25," F1 Help F2 Quit ");
  1446.         if((bioskey(2) & 0x0080) == 128)
  1447.         {
  1448.             write_window(3,2,"Insert");
  1449.         }
  1450.         else
  1451.         {
  1452.             write_window(3,2,"      ");
  1453.         }
  1454.         pick = edit_string(edit_buff + (80 * i),
  1455.             "***************************************************************************",
  1456.             3,3 + i,"TP");
  1457.         switch(pick)
  1458.         {
  1459.             case 0 : i = i + 1; break;
  1460.             case ALT_I : for(j = 20;j > i;j--)
  1461.                      {
  1462.                     memmove(edit_buff + (80 * (j + 1)),edit_buff + (80 * j),80);
  1463.                      }
  1464.                      memset(edit_buff + (80 * (i + 1)),0,80);
  1465.                      clear_window(0);
  1466.                      for(j = 0;j < 22;j++)
  1467.                      {
  1468.                     write_window(3,3 + j,"%s",edit_buff + (80 * j));
  1469.                      }
  1470.                      i = i + 1; 
  1471.                      break;
  1472.             case ESC : clear_window(0);
  1473.                    return(0);
  1474.             case CURSOR_UP : i = i - 1; break;
  1475.             case CURSOR_DN : i = i + 1; break;
  1476.             case F2 : done = data_ok(); 
  1477.                   if(done == 0)
  1478.                   {
  1479.                     read_file(edit_buff,"edit.tem",22 * 80,0L);
  1480.                     clear_window(0);
  1481.                     for(j = 0;j < 22;j++)
  1482.                     {
  1483.                         write_window(3,3 + j,"%s",edit_buff + (80 * j));
  1484.                     }
  1485.                   }
  1486.                   break;
  1487.             case F1 : save_screen_buff();
  1488.                   clear_window(0);
  1489.                   call_menu(EDIT_MENU,10,8);
  1490.                   write_window(31,25,"   HIT ANY KEY   ");
  1491.                   bioskey(0);
  1492.                   load_screen_buff();
  1493.                   break;
  1494.             case ALT_D : for(j = i;j < 22;j++)
  1495.                      {
  1496.                     memmove(edit_buff + (80 * j),edit_buff + (80 * (j + 1)),80);
  1497.                      }
  1498.                      memset(edit_buff + (80 * 21),0,80);
  1499.                      clear_window(0);
  1500.                      for(j = 0;j < 22;j++)
  1501.                      {
  1502.                     write_window(3,3 + j,"%s",edit_buff + (80 * j));
  1503.                      }
  1504.                      break;
  1505.         }
  1506.         if(i > 21)
  1507.         {
  1508.             i = 21;
  1509.         }
  1510.         if(i < 0)
  1511.         {
  1512.             i = 0;
  1513.         }
  1514.     }
  1515.  
  1516. /**************************************************************************/
  1517.  
  1518.     write_file(edit_buff,"edit.tem",(22 * 80),0L);
  1519.     clear_window(0);
  1520.     popup_window(24,50,20,78,22,1,2,15,4,1,8,0,0,0);
  1521.     write_window(3,2,"Display Changes Y/N ?");
  1522.     if(get_choice(25,2,"Y"))
  1523.     {
  1524.         unpopup_window(24);
  1525.         for(i = 0;i < 22;i++)
  1526.         {
  1527.             write_window(3,3 + i,"%s",edit_buff + (80 * i));
  1528.         }
  1529.         write_window(31,25,"   HIT ANY KEY   ");
  1530.         bioskey(0);
  1531.     }
  1532.     hide_cursor();
  1533.     unpopup_window(24);
  1534.     uncall_window(EDIT_WIN);
  1535.     uncall_window(DEMO_TEXT);
  1536.     display_switch = 0;
  1537.     return(0);
  1538. }
  1539.  
  1540. /**************************************************************************
  1541.  
  1542.     this modual is a typical select y/n
  1543.  
  1544. ************************************************************************/
  1545.  
  1546. int data_ok(void)
  1547. {
  1548.     popup_window(24,50,20,69,22,o_data.data[5][0],o_data.data[5][1],o_data.data[5][2],
  1549.         o_data.data[5][3],o_data.data[5][4],o_data.data[5][5],o_data.data[5][6],
  1550.         o_data.data[5][7],0);
  1551.     write_window(3,2,"Data OK Y/N ?");
  1552.     if(get_choice(17,2,"Y"))
  1553.     {
  1554.         unpopup_window(24);
  1555.         return(1);
  1556.     }
  1557.     unpopup_window(24);
  1558.     return(0);
  1559. }
  1560.  
  1561. int scr_form(void)
  1562. {
  1563.     int i,data[10],j,y,total[10];
  1564.     char name[9][15] = {"Don","Ted","Sue","Mary","Bruce","Mike","Sam","Paul","John"};
  1565.  
  1566.     call_window(DEMO_TEXT);
  1567.     for(j = 0;j < 10;j++)
  1568.     {
  1569.         total[j] = 0;
  1570.     }
  1571.     call_menu(SCREEN_MENU,9,6);
  1572.     write_window(25,16," HIT ANY KEY ");
  1573.     bioskey(0);
  1574. /*********************************************************************
  1575.  
  1576.     this code draws a form on screen
  1577.  
  1578. *********************************************************************/
  1579.     call_window(EDIT_WIN);
  1580.     load_screen_form(1,"demo.scr");
  1581.     write_window(33,25," HIT ANY KEY ");
  1582.     bioskey(0);
  1583.     y = 6;
  1584.     for(i = 0;i < 9;i++)
  1585.     {
  1586.         for(j = 0;j < 10;j++)
  1587.         {
  1588.             data[j] = random(100);
  1589.         }
  1590.         write_window(4,y,"%-s",name[i]);
  1591.         write_window(17,y,"%2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d",
  1592.             data[0],data[1],data[2],data[3],data[4],data[5],data[6],
  1593.             data[7],data[8],data[9]);
  1594.         for(j = 0;j < 10;j++)
  1595.         {
  1596.             total[j] = total[j] + data[j];
  1597.         }
  1598.         y = y + 2;
  1599.     }
  1600.     write_window(16,24,"%3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d",
  1601.         total[0],total[1],total[2],total[3],total[4],total[5],total[6],total[7],
  1602.         total[8],total[9]);
  1603.     bioskey(0);
  1604.  
  1605.     call_window(DEMO_TEXT);
  1606.     call_menu(FORM_MENU,9,6);
  1607.     write_window(25,16," HIT ANY KEY ");
  1608.     bioskey(0);
  1609.  
  1610. /*************************************************************************
  1611.  
  1612.     this code loads a print form and prints it
  1613.  
  1614. **************************************************************************/
  1615.  
  1616.     load_form(0,"simptut.prn");
  1617.     y = 6;
  1618.     for(i = 0;i < 10;i++)
  1619.     {
  1620.         total[i] = 0;
  1621.     }
  1622.     for(i = 0;i < 9;i++)
  1623.     {
  1624.         for(j = 0;j < 10;j++)
  1625.         {
  1626.             data[j] = random(100);
  1627.         }
  1628.         print_printf(4,y,"%s",name[i]);
  1629.         print_printf(17,y,"%2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d",
  1630.             data[0],data[1],data[2],data[3],data[4],data[5],data[6],
  1631.             data[7],data[8],data[9]);
  1632.         for(j = 0;j < 10;j++)
  1633.         {
  1634.             total[j] = total[j] + data[j];
  1635.         }
  1636.         y = y + 2;
  1637.     }
  1638.     print_printf(16,24,"%3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d",
  1639.          total[0],total[1],total[2],total[3],total[4],total[5],total[6],
  1640.          total[7],total[8],total[9]);
  1641.     popup_window(24,30,10,55,13,o_data.data[5][0],o_data.data[5][1],o_data.data[5][2],
  1642.         o_data.data[5][3],o_data.data[5][4],o_data.data[5][5],
  1643.         o_data.data[5][6],o_data.data[5][7],0);
  1644.  
  1645.     if(print_char(0x0c) != 0)
  1646.     {
  1647.         clear_window(0);
  1648.         write_window(8,2,"Printer error !");
  1649.         bioskey(0);
  1650.         unpopup_window(24);
  1651.         uncall_window(DEMO_TEXT);
  1652.         uncall_window(EDIT_WIN);
  1653.         return(0);
  1654.     }
  1655.     write_window(5,2,"Align Paper Now !");
  1656.     write_window(8,3,"HIT ANY KEY");
  1657.     bioskey(0);
  1658.     clear_window(0);
  1659.     write_window(8,2,"PRINTING!");
  1660.     if(print_buff() != 0)
  1661.     {
  1662.         clear_window(0);
  1663.         write_window(8,2,"Printer error !");
  1664.         bioskey(0);
  1665.     }
  1666.     unpopup_window(24);
  1667.     uncall_window(DEMO_TEXT);
  1668.     uncall_window(EDIT_WIN);
  1669.     display_switch = 0;
  1670.     return(0);
  1671. }
  1672.  
  1673. int song_demo(void)
  1674. {
  1675.     call_window(DEMO_TEXT);
  1676.     call_menu(SONG_MENU,10,6);
  1677.     write_window(25,16," HIT ANY KEY ");
  1678.     bioskey(0);
  1679.     while(playsong(0,"simptut.sng") == 0)
  1680.     {}
  1681.     while(playsong(0,"little.sng") == 0)
  1682.     {}
  1683.     uncall_window(DEMO_TEXT);
  1684.     display_switch = 0;
  1685.     return(0);
  1686. }
  1687.  
  1688. /***********************************************************************
  1689.  
  1690.     this modual shows how to use load_text()
  1691.  
  1692. *************************************************************************/
  1693.  
  1694. void view_text(int file_num)
  1695. {
  1696.     char lable[4][20] = {" GENRAL INFO "," FUTURE "," SUPPORT "," QUARKS "};
  1697.  
  1698.     call_window(EDIT_WIN);
  1699.     write_window((80 - strlen(lable[file_num]) - 2) / 2,1," %s ",lable[file_num]);
  1700.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  1701.     switch(file_num)
  1702.     {
  1703.         case 0 : load_text(0,"simptext.men");
  1704.              bioskey(0);
  1705.              clear_window(0);
  1706.              load_text(1,"simptext.men");
  1707.              bioskey(0);
  1708.              break;
  1709.         case 1 : load_text(4,"simptext.men");
  1710.              bioskey(0);
  1711.              break;
  1712.         case 2 : load_text(5,"simptext.men");
  1713.              bioskey(0);
  1714.              break;
  1715.         case 3 : load_text(6,"simptext.men");
  1716.              bioskey(0);
  1717.              break;
  1718.         case 4 : load_text(7,"simptext.men");
  1719.              bioskey(0);
  1720.              break;
  1721.     }
  1722.     uncall_window(EDIT_WIN);
  1723.     display_switch = 0;
  1724. }
  1725.  
  1726. int reg_form(void)
  1727. {
  1728.     char data_string[8][30] = {"","","","","","","",""};
  1729.     int done = 0,i = 0,pick;
  1730.  
  1731.     call_window(EDIT_WIN);
  1732.     load_text(2,"simptext.men");
  1733.     bioskey(0);
  1734.     clear_window(0);
  1735.     load_text(3,"simptext.men");
  1736.     while(done == 0)
  1737.     {
  1738.         show_cursor();
  1739.         switch(i)
  1740.         {
  1741.             case 0 : pick = edit_string(data_string[0],
  1742.                     "****************************",13,4,"TAP");
  1743.                  break;
  1744.             case 1 : pick = edit_string(data_string[1],
  1745.                     "****************************",13,5,"TAP");
  1746.                  break;
  1747.             case 2 : pick = edit_string(data_string[2],
  1748.                     "****************************",13,6,"TAP");
  1749.                  break;
  1750.             case 3 : pick = edit_string(data_string[3],
  1751.                     "****************************",13,7,"TAP");
  1752.                  break;
  1753.             case 4 : pick = edit_string(data_string[4],
  1754.                     "############",13,8,"TAP");
  1755.                  break;
  1756.             case 5 : pick = edit_string(data_string[5],
  1757.                     "********************",20,10,"TAP");
  1758.                  break;
  1759.             case 6 : pick = edit_string(data_string[6],
  1760.                     "9999",12,15,"TAP");
  1761.                  break;
  1762.             case 7 : pick = edit_string(data_string[7],
  1763.                     "FFFFFFF",50,15,"TAP");
  1764.                  break;
  1765.         }
  1766.         switch(pick)
  1767.         {
  1768.             case ESC : done = 1; break;
  1769.             case CURSOR_UP : i = i - 1; break;
  1770.             case CURSOR_DN : i = i + 1; break;
  1771.             case 0 : i = i + 1; break;
  1772.         }
  1773.         if(i == 8)
  1774.         {
  1775.             if((done = data_ok()) == 0)
  1776.             {
  1777.                 i = 0;
  1778.             }
  1779.  
  1780. /**************************************************************************             
  1781.  
  1782.     this code builds and prints a form
  1783.  
  1784. ***************************************************************************/
  1785.  
  1786.             else
  1787.             {
  1788.                 clear_print_buff();
  1789.                 print_window(1,1,80,20,2,0);
  1790.                 print_printf(3,3,"Name:    %s",data_string[0]);
  1791.                 print_printf(3,5,"Address: %s",data_string[1]);
  1792.                 print_printf(12,6,"%s",data_string[2]);
  1793.                 print_printf(12,7,"%s",data_string[3]);
  1794.                 print_printf(3,9,"Phone: %s",data_string[4]);
  1795.                 print_printf(3,11,"Type of machine: %s",data_string[5]);
  1796.                 print_printf(3,13,"Type of disk: 3 1/2 hi");
  1797.                 print_printf(3,14,"(circule one) 5 1/4 hi");
  1798.                 print_printf(3,16,"Qunity: %s",data_string[6]);
  1799.                 print_printf(40,16,"Amount inclosed $%s",data_string[7]);
  1800.                 print_printf(40,18,"Sign ___________________________");
  1801.                 popup_window(24,25,10,55,12,o_data.data[5][0],
  1802.                     o_data.data[5][1],o_data.data[5][2],
  1803.                     o_data.data[5][3],o_data.data[5][4],
  1804.                     o_data.data[5][5],o_data.data[5][6],
  1805.                     o_data.data[5][7],0);
  1806.                 write_window(3,2,"Print Form Y/N ?");
  1807.                 if(get_choice(21,2,"Y"))
  1808.                 {
  1809.                     clear_window(0);
  1810.                     write_window(3,2,"Align Paper and hit key");
  1811.                     bioskey(0);
  1812.                     clear_window(0);
  1813.                     write_window(10,2,"PRINTING!");
  1814.                     print_buff();
  1815.                 }
  1816.                 unpopup_window(24);
  1817.             }
  1818.         }
  1819.     }
  1820.     hide_cursor();
  1821.     uncall_window(EDIT_WIN);
  1822.     display_switch = 0;
  1823.     return(0);
  1824. }
  1825.  
  1826. void view_tut(int file_num,char *lable)
  1827. {
  1828.     call_window(EDIT_WIN);
  1829.     textcolor(14);
  1830.     write_window((80 - strlen(lable) - 2) / 2,1," %s ",lable);
  1831.     write_window((80 - strlen(" HIT ANY KEY ")) / 2,25," HIT ANY KEY ");
  1832.     load_text(file_num,"stuttext.men");
  1833.     bioskey(0);
  1834.     uncall_window(EDIT_WIN);
  1835. }
  1836.  
  1837. /***************************************************************************
  1838.  
  1839.     this modual reads a text file and displays it on the screen
  1840.  
  1841. **************************************************************************/
  1842.  
  1843. void reed_text(char *file_name)
  1844. {
  1845.     call_window(EDIT_WIN);
  1846.     write_window((80 - strlen(file_name) - 2) / 2,1," %s ",file_name);
  1847.     write_window((80 - strlen("PGUP/PGDN ESC ")) / 2,25," PGUP/PGDN ESC ");
  1848.     read_text(file_name,0);
  1849.     uncall_window(EDIT_WIN);
  1850.     display_switch = 0;
  1851. }
  1852.  
  1853. /*************************************************************************
  1854.  
  1855.     this modual is the parameter selects for the option fungtion
  1856.  
  1857. **************************************************************************/
  1858.  
  1859. int option_menu(void)
  1860. {
  1861.     int done = 0,i = 0,j ,k,oldi = 7,choice,pick,mousex = 0,mousey = 0;
  1862.     char lable[9][15] = {" DESK TOP "," FULL TEXT "," MENU "," PULL DOWN "," TEXT ",
  1863.                 " EXIT "," ENTERY "," Highlite"," Hot key"};
  1864.  
  1865.     popup_window(25,1,1,80,25,1,0,0,7,1,0,0,0,0);
  1866.     write_window(35,1," OPTIONS ");
  1867.     for(i = 11;i < 19;i++)
  1868.     {
  1869.         call_window(i);
  1870.         if(i == 18)
  1871.         {
  1872.             write_window(2,1,"%s",lable[7]);
  1873.         }
  1874.         else
  1875.         {
  1876.             write_window(3,1,"%s",lable[i - 11]);
  1877.         }
  1878.         if(i == 14)
  1879.         {
  1880.             write_window(3,3,"%s",lable[8]);
  1881.             textcolor(o_data.hk_color);
  1882.             write_window(4,3,"H");
  1883.         }
  1884.     }
  1885.     simp_window(44,5,52,13,0,0,0,0,0,0,0,0,0);
  1886.     window(1,1,80,25);
  1887.     k = 0;
  1888.     for(i = 0;i < 9;i++)
  1889.     {
  1890.         for(j = 0;j < 9;j++)
  1891.         {
  1892.             switch(i)
  1893.             {
  1894.                 case 1 :
  1895.                 case 3 :
  1896.                 case 5 :
  1897.                 case 7 : textbackground(0);
  1898.                      textcolor(k);
  1899.                      gotoxy(j + 44,i + 5);
  1900.                      switch(j)
  1901.                      {
  1902.                         case 1 :
  1903.                         case 3 :
  1904.                         case 5 :
  1905.                         case 7 : putch(219);
  1906.                              k = k + 1;
  1907.                              break;
  1908.                      }
  1909.             }
  1910.         }
  1911.     }
  1912.     textattr(0 + (7<<4));
  1913.     write_window(44,3,"Change window:");
  1914.     call_menu(OPT_MENU_1,59,6);
  1915.     call_menu(OPT_MENU_2,42,18);
  1916.     write_window(5,22,"Load colors");
  1917.     write_window(5,23,"eXit");
  1918.     textcolor(o_data.hk_color);
  1919.     write_window(5,22,"L");
  1920.     write_window(6,23,"X");
  1921.     write_window(59,3,"%s",lable[win_num]);
  1922.     save_screen_buff();
  1923.     i = 0;
  1924.     moushow();
  1925.     while(done == 0)
  1926.     {
  1927.         choice = 0;
  1928.         if(mouposition(&mousex,&mousey))
  1929.         {
  1930.             if((mousex > 43) & (mousex < 60) & (mousey == 3))
  1931.             {
  1932.                 i = 0;
  1933.             }
  1934.             else if((mousex > 58) & (mousex < 68) & (mousey == 6))
  1935.             {
  1936.                 i = 1;
  1937.             }
  1938.             else if((mousex > 58) & (mousex < 68) & (mousey == 11))
  1939.             {
  1940.                 i = 2;
  1941.             }
  1942.             else if((mousex > 48) & (mousex < 57) & (mousey == 18))
  1943.             {
  1944.                 i = 3;
  1945.             }
  1946.             else if((mousex > 4) & (mousex < 18))
  1947.             {
  1948.                 switch(mousey)
  1949.                 {
  1950.                     case 22 : i = 4; break;
  1951.                     case 23 : i = 5; break;
  1952.                 }
  1953.             }
  1954.  
  1955.         }
  1956.         if(bioskey(1) | (mou_switch == 0))
  1957.         {
  1958.             switch(bioskey(0))
  1959.             {
  1960.                 case ESC : choice = 7; break;
  1961.                 case ENTER : choice = 1; break;
  1962.                 case ALT_L : choice = 6; break;
  1963.                 case ALT_X : choice = 7; break;
  1964.                 case CURSOR_UP : i = i - 1; break;
  1965.                 case CURSOR_DN : i = i + 1; break;
  1966.             }
  1967.         }
  1968.         if(i < 0)
  1969.         {
  1970.             i = 0;
  1971.         }
  1972.         else if(i > 5)
  1973.         {
  1974.             i = 5;
  1975.         }
  1976.         if(oldi != i)
  1977.         {
  1978.             mouhide();
  1979.             load_screen_buff();
  1980.             oldi = i;
  1981.             switch(i)
  1982.             {
  1983.                 case 0 : simp_window(43,3,58,3,0,0,14,1,1,8,0,0,0);
  1984.                      write_window(2,1,"Change window:");
  1985.                      break;
  1986.                 case 1 : simp_window(58,6,67,6,0,0,14,1,1,8,0,0,0);
  1987.                      write_window(2,1,"Boarder:");
  1988.                      break;
  1989.                 case 2 : simp_window(58,11,66,11,0,0,14,1,1,8,0,0,0);
  1990.                      write_window(2,1,"Shadow:");
  1991.                      break;
  1992.                 case 3 : simp_window(48,18,55,18,0,0,14,1,1,8,0,0,0);
  1993.                      write_window(2,1,"Colors");
  1994.                      break;
  1995.                 case 4 : simp_window(4,22,16,22,0,0,14,1,1,8,0,0,0);
  1996.                      write_window(2,1,"Load colors");
  1997.                      break;
  1998.                 case 5 : simp_window(4,23,9,23,0,0,14,1,1,8,0,0,0);
  1999.                      write_window(2,1,"eXit");
  2000.                      break;
  2001.             }
  2002.             moushow();
  2003.         }
  2004.         if(moubuttonpressed(LEFTBUTTON))
  2005.         {
  2006.             if(((mousex > 43) & (mousex < 60) & (mousey == 3)) |
  2007.                 ((mousex > 58) & (mousex < 68) & ((mousey == 6) | (mousey == 11))) |
  2008.                 ((mousex > 48) & (mousex < 57) & (mousey == 18)) |
  2009.                 ((mousex > 4) & (mousex < 18) & ((mousey == 23) | (mousey == 22))))
  2010.             {
  2011.                 choice = 1;
  2012.             }
  2013.         }
  2014.         if(choice != 0)
  2015.         {
  2016.             break;
  2017.         }
  2018.     }
  2019.     mouhide();
  2020.     load_screen_buff();
  2021.     pick = 1;
  2022.     if(choice == 1)
  2023.     {
  2024.         choice = i + 2;
  2025.     }
  2026.     switch(choice)
  2027.     {
  2028.         case 2 : win_num = change_window(lable); break;
  2029.         case 3 : while(boarder_select()){} break;
  2030.         case 4 : while(shadow_select()){} break;
  2031.         case 5 : while(get_color()){} break;
  2032.         case 6 : pick = save_option(0); break;
  2033.         case 7 : pick = 0; break;
  2034.     }
  2035.     display_switch = 0;
  2036.     unpopup_window(25);
  2037.     return(pick);
  2038. }
  2039.  
  2040. int save_option(int save_switch)
  2041. {
  2042.     char file_name[257] = "*.opt";
  2043.     char file_buff[15][13] = {"","","","","","","","","","","","","","",""};
  2044.     int i,oldi = 18,choice,count,mousex = 0,mousey = 0;
  2045.  
  2046.     if(save_switch)
  2047.     {
  2048.         load_screen(3);
  2049.     }
  2050.  
  2051. /*****************************************************************************
  2052.  
  2053.     this code reads a enter directory and displays it for selection
  2054.  
  2055. ****************************************************************************/
  2056.  
  2057.     popup_window(22,45,3,75,5,1,2,0,7,1,8,0,0,0);
  2058.     if(get_string(file_name,"                  ","******************",3,2,1,1) == 27)
  2059.     {
  2060.         unpopup_window(22);
  2061.         return(0);
  2062.     }
  2063.     if(strcmp(file_name,"*.opt") == 0)
  2064.     {
  2065.         popup_window(23,45,7,65,23,1,2,0,7,1,8,0,0,0);
  2066.         read_directory(file_buff[0],15,file_name);
  2067.         count = 0;
  2068.         for(i = 0;i < 15;i++)
  2069.         {
  2070.             if(strcmp(file_buff[0],"") == 0)
  2071.             {
  2072.                 unpopup_window(23);
  2073.                 return(0);
  2074.             }
  2075.             if(strcmp(file_buff[i],"") != 0)
  2076.             {
  2077.                 write_window(3,2 + i,"%s",file_buff[i]);
  2078.                 count = count + 1;
  2079.             }
  2080.         }
  2081.         count = count - 1;
  2082.  
  2083. /****************************************************************************        
  2084.  
  2085.     this code selects a file name
  2086.  
  2087. ****************************************************************************/
  2088.  
  2089.         save_screen_buff();
  2090.         i = 0;
  2091.         moushow();
  2092.         for(;;)
  2093.         {
  2094.             choice = 0;
  2095.             if(mouposition(&mousex,&mousey))
  2096.             {
  2097.                 if((mousex > 46) & (mousex < 65))
  2098.                 {
  2099.                     i = mousey - 8;
  2100.                 }
  2101.             }
  2102.             if(bioskey(1) | (mou_switch == 0))
  2103.             {
  2104.                 switch(bioskey(0))
  2105.                 {
  2106.                     case ESC : choice = 18; break;
  2107.                     case ENTER : choice = 1; break;
  2108.                     case CURSOR_UP : i = i - 1; break;
  2109.                     case CURSOR_DN : i = i + 1; break;
  2110.                 }
  2111.             }
  2112.             if(i < 0)
  2113.             {
  2114.                 i = 0;
  2115.             }
  2116.             if(i > count)
  2117.             {
  2118.                 i = count;
  2119.             }
  2120.             if(oldi != i)
  2121.             {
  2122.                 oldi = i;
  2123.                 mouhide();
  2124.                 load_screen_buff();
  2125.                 simp_window(46,8 + i,64,i + 8,0,2,14,1,1,8,0,0,0);
  2126.                 write_window(2,1,"%s",file_buff[i]);
  2127.                 moushow();
  2128.             }
  2129.             if(moubuttonpressed(LEFTBUTTON))
  2130.             {
  2131.                 if((mousex > 46) & (mousex < 65) & (mousey > 7) & (mousey < 23))
  2132.                 {
  2133.                     choice = 1;
  2134.                 }
  2135.                 else
  2136.                 {
  2137.                     choice = 18;
  2138.                 }
  2139.             }
  2140.             if(choice != 0)
  2141.             {
  2142.                 break;
  2143.             }
  2144.         }
  2145.         mouhide();
  2146.         load_screen_buff();
  2147.         unpopup_window(23);
  2148.         if(choice == 1)
  2149.         {
  2150.             strcpy(file_name,file_buff[i]);
  2151.         }
  2152.     }
  2153.  
  2154. /****************************************************************************/
  2155.  
  2156.     unpopup_window(22);
  2157.     if(strcmp(file_name,"") == 0)
  2158.     {
  2159.         return(0);
  2160.     }
  2161.     else
  2162.     {
  2163.         strtok(file_name,".");
  2164.         strcat(file_name,".opt");
  2165.     }
  2166.     if(save_switch == 0)
  2167.     {
  2168.         read_file(&o_data,file_name,sizeof(O_DATA),0L);
  2169.         save_data();
  2170.     }
  2171.     else
  2172.     {
  2173.         creat_file(file_name);
  2174.         creat_file("simptut.sys");
  2175.         write_file(&o_data,file_name,sizeof(O_DATA),0L);
  2176.         write_file(&o_data,"simptut.sys",sizeof(O_DATA),0L);
  2177.     }
  2178.     display_switch = 0;
  2179.     return(0);
  2180. }
  2181.  
  2182. int o_menu(void)
  2183. {
  2184.     int pick,choice,i = 0,old_i = 8,mousex = 0,mousey = 0;
  2185.     char lable[4][15] = {"Graphics","Fonts","Printer Port","Save options"};
  2186.  
  2187.     if(display_switch)
  2188.     {
  2189.         load_screen(2);
  2190.         call_window(OPT_WIN);
  2191.         call_menu(OPT_MENU,3,2);
  2192.         save_screen(3);
  2193.     }
  2194.     else
  2195.     {
  2196.         load_screen(3);
  2197.     }
  2198.     display_switch = 1;
  2199.     textcolor(o_data.hk_color);
  2200.     write_window(3,2,"G");
  2201.     write_window(3,3,"F");
  2202.     write_window(3,4,"P");
  2203.     write_window(3,5,"S");
  2204.     save_screen_buff();
  2205.     moushow();
  2206.     for(;;)
  2207.     {
  2208.         choice = 0;
  2209.         if(mouposition(&mousex,&mousey))
  2210.         {
  2211.             if((mousex > 33) & (mousex < 48))
  2212.             {
  2213.                 i = mousey - 5;
  2214.             }
  2215.         }
  2216.         if(bioskey(1) | (mou_switch == 0))
  2217.         {
  2218.             switch(bioskey(0))
  2219.             {
  2220.                 case ALT_G : choice = 2; break;
  2221.                 case ALT_F : choice = 3; break;
  2222.                 case ALT_P : choice = 4; break;
  2223.                 case ALT_S : choice = 5;
  2224.                 case ENTER : choice = 1; break;
  2225.                 case ESC : choice = 6; break;
  2226.                 case CURSOR_UP : i = i - 1; break;
  2227.                 case CURSOR_DN : i = i + 1; break;
  2228.             }
  2229.         }
  2230.         if(i < 0)
  2231.         {
  2232.             i = 0;
  2233.         }
  2234.         if(i > 3)
  2235.         {
  2236.             i = 3;
  2237.         }
  2238.         if(old_i != i)
  2239.         {
  2240.             mouhide();
  2241.             load_screen_buff();
  2242.             old_i = i;
  2243.             simp_window(33,5 + i,46,5 + i,o_data.data[7][0],o_data.data[7][1],
  2244.                 o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  2245.                 o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  2246.             write_window(2,1,"%s",lable[i]);
  2247.             moushow();
  2248.         }
  2249.         if(moubuttonpressed(LEFTBUTTON))
  2250.         {
  2251.             if((mousex > 33) & (mousex < 48) & (mousey > 4) & (mousey < 9))
  2252.             {
  2253.                 choice = 1;
  2254.             }
  2255.             else
  2256.             {
  2257.                 choice = 6;
  2258.             }
  2259.         }
  2260.         if(choice != 0)
  2261.         {
  2262.             break;
  2263.         }
  2264.     }
  2265.  
  2266.  
  2267.     mouhide();
  2268.     load_screen_buff();
  2269.     pick = 1;
  2270.     if(choice == 1)
  2271.     {
  2272.         choice = i + 2;
  2273.     }
  2274.     switch(choice)
  2275.     {
  2276.         case 2 : while(option_menu()){} break;
  2277.         case 3 : font_demo(); 
  2278.              pick = 2;
  2279.              break;
  2280.         case 4 : get_port(); 
  2281.              pick = 3;
  2282.              break;
  2283.         case 5 : save_option(1); 
  2284.              pick = 3;
  2285.              break;
  2286.         case 6 : pick = 0; break;
  2287.     }
  2288.     if((choice == 3) | (choice == 2))
  2289.     {
  2290.         if((pick == 2) | (pick == 1))
  2291.         {
  2292.             strcpy(font_string,"swloadft ");
  2293.             strcat(font_string,o_data.font);
  2294.             system(font_string);
  2295.         }
  2296.         if(pick == 1)
  2297.         {
  2298.             simp_window(1,1,80,25,o_data.data[0][0],o_data.data[0][1],o_data.data[0][2],
  2299.                 o_data.data[0][3],o_data.data[0][4],o_data.data[0][5],
  2300.                 o_data.data[0][6],o_data.data[0][7],0);
  2301.             load_screen_form(0,"simptut.scr");
  2302.             save_screen(1);
  2303.             call_window(MAIN_WIN);
  2304.             call_menu(MAIN_MENU,3,2);
  2305.             save_screen(2);
  2306.             display_switch = 1;
  2307.         }
  2308.     }
  2309.     else
  2310.     {
  2311.         display_switch = 0;
  2312.     }
  2313.     return(pick);
  2314. }
  2315.  
  2316. void get_port(void)
  2317. {
  2318.     load_screen(3);
  2319.     call_window(ENTER_WIN);
  2320.     write_window(3,2,"Enter LP port number:");
  2321.     get_int(&port_number,1,25,2);
  2322.     uncall_window(ENTER_WIN);
  2323.     if((port_number > 4) | (port_number < 1))
  2324.     {
  2325.         port_number = 0;
  2326.     }
  2327.     o_data.port = port_number;
  2328. }
  2329.  
  2330. int change_window(char lable[9][15])
  2331. {
  2332.     int i,choice,oldi = 12,mousex = 0,mousey = 0;
  2333.  
  2334.  
  2335.     call_window(20);
  2336.     for(i = 0;i < 9;i++)
  2337.     {
  2338.         write_window(3,2 + i,"%s",lable[i]);
  2339.     }
  2340.     i = 0;
  2341.     save_screen_buff();
  2342.     moushow();
  2343.     for(;;)
  2344.     {
  2345.         choice = 0;
  2346.         if(mouposition(&mousex,&mousey))
  2347.         {
  2348.             if((mousex > 40) & (mousex < 55))
  2349.             {
  2350.                 i = mousey - 6;
  2351.             }
  2352.         }
  2353.         if(bioskey(1) | (mou_switch == 0))
  2354.         {
  2355.             switch(bioskey(0))
  2356.             {
  2357.                 case ESC : choice = 9; break;
  2358.                 case ENTER : choice = 1; break;
  2359.                 case CURSOR_UP : i = i - 1; break;
  2360.                 case CURSOR_DN : i = i + 1; break;
  2361.             }
  2362.         }
  2363.         if(i < 0)
  2364.         {
  2365.             i = 0;
  2366.         }
  2367.         if(i > 8)
  2368.         {
  2369.             i = 8;
  2370.         }
  2371.         if(oldi != i)
  2372.         {
  2373.             oldi = i;
  2374.             mouhide();
  2375.             load_screen_buff();
  2376.             simp_window(41,6 + i,54,6 + i,0,2,14,1,1,8,0,0,0);
  2377.             write_window(2,1,"%s",lable[i]);
  2378.             moushow();
  2379.         }
  2380.         if(moubuttonpressed(LEFTBUTTON))
  2381.         {
  2382.             if((mousex > 40) & (mousex < 55) & (mousey > 5) & (mousey < 15))
  2383.             {
  2384.                 choice = 1;
  2385.             }
  2386.         }
  2387.         if(choice != 0)
  2388.         {
  2389.             break;
  2390.         }
  2391.     }
  2392.     mouhide();
  2393.     load_screen_buff();
  2394.     uncall_window(20);
  2395.     if(choice == 1)
  2396.     {
  2397.         choice = i;
  2398.     }
  2399.     if(choice == 9)
  2400.     {
  2401.         choice = 0;
  2402.     }
  2403.     return(choice);
  2404. }
  2405.  
  2406. int boarder_select(void)
  2407. {
  2408.     int i = 0,choice,oldi = 4,mousex = 0,mousey = 0;
  2409.     char lable[4][20] = {"No boarser","Single boarder","Double boarder","Any boarder"};
  2410.  
  2411.     moushow();
  2412.     for(;;)
  2413.     {
  2414.         choice = 0;
  2415.         if(mouposition(&mousex,&mousey))
  2416.         {
  2417.             if((mousex > 61) & (mousex < 79))
  2418.             {
  2419.                 i = mousey - 7;
  2420.             }
  2421.         }
  2422.         if(bioskey(1) | (mou_switch == 0))
  2423.         {
  2424.             switch(bioskey(0))
  2425.             {
  2426.                 case ESC : choice = 6; break;
  2427.                 case ENTER : choice = 1; break;
  2428.                 case CURSOR_UP : i = i - 1; break;
  2429.                 case CURSOR_DN : i = i + 1; break;
  2430.             }
  2431.         }
  2432.         if(i < 0)
  2433.         {
  2434.             i = 0;
  2435.         }
  2436.         if(i > 3)
  2437.         {
  2438.             i = 3;
  2439.         }
  2440.         if(oldi != i)
  2441.         {
  2442.             mouhide();
  2443.             load_screen_buff();
  2444.             oldi = i;
  2445.             simp_window(61,7 + i,77,7 + i,0,2,14,1,1,8,0,0,0);
  2446.             write_window(2,1,"%s",lable[i]);
  2447.             moushow();
  2448.         }
  2449.         if(moubuttonpressed(LEFTBUTTON))
  2450.         {
  2451.             if((mousex > 61) & (mousex < 79) & (mousey > 6) & (mousey < 11))
  2452.             {
  2453.                 choice = 1;
  2454.             }
  2455.             else
  2456.             {
  2457.                 choice = 6;
  2458.             }
  2459.         }
  2460.         if(choice != 0)
  2461.         {
  2462.             break;
  2463.         }
  2464.     }
  2465.     mouhide();
  2466.     load_screen_buff();
  2467.     if(choice == 1)
  2468.     {
  2469.         choice = i + 2;
  2470.     }
  2471.     switch(choice)
  2472.     {
  2473.         case 2 : o_data.data[win_num][0] = 0; break;
  2474.         case 3 : o_data.data[win_num][0] = 1; break;
  2475.         case 4 : o_data.data[win_num][0] = 2; break;
  2476.         case 5 : o_data.data[win_num][0] = 5;
  2477.              popup_window(26,30,10,57,12,1,2,0,7,1,8,0,0,0);
  2478.              write_window(3,2,"Enter ASCII code:");
  2479.              show_cursor();
  2480.              if(get_int(&o_data.data[win_num][7],3,22,2) == 1)
  2481.              {
  2482.                 o_data.data[win_num][7] = 0;
  2483.              }
  2484.              hide_cursor();
  2485.              unpopup_window(26);
  2486.              break;
  2487.         case 6 : return(0);
  2488.  
  2489.     }
  2490.     save_data();
  2491.     return(0);
  2492. }
  2493.  
  2494. /****************************************************************************
  2495.  
  2496.     this modual save the program system file
  2497.  
  2498. *******************************************************************************/
  2499.  
  2500. void save_data(void)
  2501. {
  2502.     int i,temp;
  2503.  
  2504.     temp = win_num;
  2505.     for(i = 0;i < 8;i++)
  2506.     {
  2507.         win_num = i;
  2508.         switch(win_num)
  2509.         {
  2510.             case 0 : write_data(11); break;
  2511.             case 1 : write_data(7);
  2512.                  write_data(10);
  2513.                  write_data(12);
  2514.                  break;
  2515.             case 2 : write_data(1);
  2516.                  write_data(13);
  2517.                  break;
  2518.             case 3 : write_data(2);
  2519.                  write_data(3);
  2520.                  write_data(4);
  2521.                  write_data(5);
  2522.                  write_data(19);
  2523.                  write_data(14);
  2524.                  write_data(21);
  2525.                  break;
  2526.             case 4 : write_data(8);
  2527.                  write_data(15);
  2528.                  break;
  2529.             case 5 : write_data(6);
  2530.                  write_data(16);
  2531.                  break;
  2532.             case 6 : write_data(9);
  2533.                  write_data(17);
  2534.                  break;
  2535.             case 7 : write_data(18); break;
  2536.         }
  2537.     }
  2538.     win_num = temp;
  2539. }
  2540.  
  2541. int shadow_select(void)
  2542. {
  2543.     int choice,oldi = 10,i = 0,mousex = 0,mousey = 0;
  2544.     char lable[8][20] = {"No shadow","Wide shadow","Narrow shadow","",
  2545.                 "Upper left","Lower left","Upper right","Lower right"};
  2546.  
  2547.     moushow();
  2548.     for(;;)
  2549.     {
  2550.         choice = 0;
  2551.         if(mouposition(&mousex,&mousey))
  2552.         {
  2553.             if((mousex > 61) & (mousex < 76))
  2554.             {
  2555.                 i = mousey - 12;
  2556.             }
  2557.         }
  2558.         if(bioskey(1) | (mou_switch == 0))
  2559.         {
  2560.             switch(bioskey(0))
  2561.             {
  2562.                 case ESC : choice = 10; break;
  2563.                 case ENTER : choice = 1; break;
  2564.                 case CURSOR_UP : i = i - 1; break;
  2565.                 case CURSOR_DN : i = i + 1; break;
  2566.             }
  2567.         }
  2568.         if(i < 0)
  2569.         {
  2570.             i = 0;
  2571.         }
  2572.         if((i == 3) & (oldi < 3))
  2573.         {
  2574.             i = 4;
  2575.         }
  2576.         if((i == 3) & (oldi > 3))
  2577.         {
  2578.             i = 2;
  2579.         }
  2580.         if(i > 7)
  2581.         {
  2582.             i = 7;
  2583.         }
  2584.         if(oldi != i)
  2585.         {
  2586.             mouhide();
  2587.             load_screen_buff();
  2588.             oldi = i;
  2589.             switch(i)
  2590.             {
  2591.                 case 0 :
  2592.                 case 1 :
  2593.                 case 2 : simp_window(61,12 + i,77,12 + i,0,2,14,1,1,8,0,0,0);
  2594.                      write_window(2,1,"%s",lable[i]);
  2595.                      break;
  2596.                 case 4 :
  2597.                 case 5 :
  2598.                 case 6 :
  2599.                 case 7 : simp_window(64,12 + i,77,12 + i,0,2,14,1,1,8,0,0,0);
  2600.                      write_window(2,1,"%s",lable[i]);
  2601.                      break;
  2602.             }
  2603.             moushow();
  2604.         }
  2605.         if(moubuttonpressed(LEFTBUTTON))
  2606.         {
  2607.             switch(i)
  2608.             {
  2609.                 case 0 :
  2610.                 case 1 :
  2611.                 case 2 : if((mousex > 61) & (mousex < 79))
  2612.                      {
  2613.                         choice = 1;
  2614.                      }
  2615.                 case 4 :
  2616.                 case 5 :
  2617.                 case 6 :
  2618.                 case 7 : if((mousex > 64) & (mousex < 79))
  2619.                      {
  2620.                         choice = 1;
  2621.                      }
  2622.             }
  2623.         }
  2624.         if(choice != 0)
  2625.         {
  2626.             break;
  2627.         }
  2628.     }
  2629.     mouhide();
  2630.     load_screen_buff();
  2631.     if(choice == 1)
  2632.     {
  2633.         choice = i + 2;
  2634.     }
  2635.     switch(choice)
  2636.     {
  2637.         case 2 : o_data.data[win_num][1] = 0; break;
  2638.         case 3 : o_data.data[win_num][1] = 1; break;
  2639.         case 4 : o_data.data[win_num][1] = 2; break;
  2640.         case 6 : o_data.data[win_num][4] = 2; break;
  2641.         case 7 : o_data.data[win_num][4] = 1; break;
  2642.         case 8 : o_data.data[win_num][4] = 4; break;
  2643.         case 9 : o_data.data[win_num][4] = 3; break;
  2644.         case 10 : return(0);
  2645.     }
  2646.     save_data();
  2647.     return(0);
  2648. }
  2649.  
  2650. int color_select(void)
  2651. {
  2652.     int choice,i = 0,oldi = 18,mousex = 0,mousey = 0;
  2653.  
  2654.     moushow();
  2655.     for(;;)
  2656.     {
  2657.         choice = 0;
  2658.         if(mouposition(&mousex,&mousey))
  2659.         {
  2660.             switch(mousex)
  2661.             {
  2662.                 case 45 : switch(mousey)
  2663.                       {
  2664.                         case 6 : i = 0; break;
  2665.                         case 8 : i = 4; break;
  2666.                         case 10 : i = 8; break;
  2667.                         case 12 : i = 12; break;
  2668.                       }
  2669.                       break;
  2670.                 case 47 : switch(mousey)
  2671.                       {
  2672.                         case 6 : i = 1; break;
  2673.                         case 8 : i = 5; break;
  2674.                         case 10 : i = 9; break;
  2675.                         case 12 : i = 13; break;
  2676.                       }
  2677.                       break;
  2678.                 case 49 : switch(mousey)
  2679.                       {
  2680.                         case 6 : i = 2; break;
  2681.                         case 8 : i = 6; break;
  2682.                         case 10 : i = 10; break;
  2683.                         case 12 : i = 14; break;
  2684.                       }
  2685.                       break;
  2686.                 case 51 : switch(mousey)
  2687.                       {
  2688.                         case 6 : i = 3; break;
  2689.                         case 8 : i = 7; break;
  2690.                         case 10 : i = 11; break;
  2691.                         case 12 : i = 15; break;
  2692.                       }
  2693.             }
  2694.         }
  2695.         if(bioskey(1) | (mou_switch == 0))
  2696.         {
  2697.             switch(bioskey(0))
  2698.             {
  2699.                 case ESC : choice = 18; break;
  2700.                 case ENTER : choice = 1; break;
  2701.                 case CURSOR_UP : i = i - 4; break;
  2702.                 case CURSOR_DN : i = i + 4; break;
  2703.                 case CURSOR_LEFT : i = i - 1; break;
  2704.                 case CURSOR_RIGHT : i = i + 1; break;
  2705.             }
  2706.         }
  2707.         if(i < 0)
  2708.         {
  2709.             i = 0;
  2710.         }
  2711.         if(i > 15)
  2712.         {
  2713.             i = 15;
  2714.         }
  2715.         if(oldi != i)
  2716.         {
  2717.             mouhide();
  2718.             load_screen_buff();
  2719.             oldi = i;
  2720.             switch(i)
  2721.             {
  2722.                 case 0 : simp_window(44,5,46,7,0,0,0,15,0,0,0,0,0); break;
  2723.                 case 1 : simp_window(46,5,48,7,0,0,1,8,0,0,0,0,0); break;
  2724.                 case 2 : simp_window(48,5,50,7,0,0,2,8,0,0,0,0,0); break;
  2725.                 case 3 : simp_window(50,5,52,7,0,0,3,8,0,0,0,0,0); break;
  2726.                 case 4 : simp_window(44,7,46,9,0,0,4,8,0,0,0,0,0); break;
  2727.                 case 5 : simp_window(46,7,48,9,0,0,5,8,0,0,0,0,0); break;
  2728.                 case 6 : simp_window(48,7,50,9,0,0,6,8,0,0,0,0,0); break;
  2729.                 case 7 : simp_window(50,7,52,9,0,0,7,8,0,0,0,0,0); break;
  2730.                 case 8 : simp_window(44,9,46,11,0,0,8,8,0,0,0,0,0); break;
  2731.                 case 9 : simp_window(46,9,48,11,0,0,9,8,0,0,0,0,0); break;
  2732.                 case 10 : simp_window(48,9,50,11,0,0,10,8,0,0,0,0,0); break;
  2733.                 case 11 : simp_window(50,9,52,11,0,0,11,8,0,0,0,0,0); break;
  2734.                 case 12 : simp_window(44,11,46,13,0,0,12,8,0,0,0,0,0); break;
  2735.                 case 13 : simp_window(46,11,48,13,0,0,13,8,0,0,0,0,0); break;
  2736.                 case 14 : simp_window(48,11,50,13,0,0,14,8,0,0,0,0,0); break;
  2737.                 case 15 : simp_window(50,11,52,13,0,0,15,8,0,0,0,0,0); break;
  2738.             }
  2739.             gotoxy(2,2);
  2740.             putch(219);
  2741.             moushow();
  2742.         }
  2743.         if(moubuttonpressed(LEFTBUTTON))
  2744.         {
  2745.             if((mousex > 44) & (mousex < 52) & (mousey > 5) & (mousey < 13))
  2746.             {
  2747.                 choice = 1;
  2748.             }
  2749.             else
  2750.             {
  2751.                 choice = 18;
  2752.             }
  2753.         }
  2754.         if(choice != 0)
  2755.         {
  2756.             break;
  2757.         }
  2758.     }
  2759.     mouhide();
  2760.     load_screen_buff();
  2761.     if(choice == 1)
  2762.     {
  2763.         color_code = i;
  2764.     }
  2765.     return(0);
  2766. }
  2767.  
  2768. /***************************************************************************
  2769.  
  2770.     this code changes the window parameters with option
  2771.  
  2772. ***************************************************************************/
  2773.  
  2774. void write_data(int record)
  2775. {
  2776.     write_file(o_data.data[win_num],"win.dat",16,(4056L * record) + 4036);
  2777. }
  2778.  
  2779. int get_color(void)
  2780. {
  2781.     int choice,i = 0,oldi = 7,mousex = 0,mousey = 0;
  2782.     char lable[5][20] = {"Foreground","Background","","Foreground","Background"};
  2783.  
  2784.     moushow();
  2785.     for(;;)
  2786.     {
  2787.         choice = 0;
  2788.         if(mouposition(&mousex,&mousey))
  2789.         {
  2790.             if((mousex > 43) & (mousex < 54))
  2791.             {
  2792.                 i = mousey - 20;
  2793.             }
  2794.         }
  2795.         if(bioskey(1) | (mou_switch == 0))
  2796.         {
  2797.             switch(bioskey(0))
  2798.             {
  2799.                 case ESC : choice = 7; break;
  2800.                 case ENTER : choice = 1; break;
  2801.                 case CURSOR_UP : i = i - 1; break;
  2802.                 case CURSOR_DN : i = i + 1; break;
  2803.             }
  2804.         }
  2805.         if(i < 0)
  2806.         {
  2807.             i = 0;
  2808.         }
  2809.         if(i > 4)
  2810.         {
  2811.             i = 4;
  2812.         }
  2813.         if((oldi > i) & (i == 2))
  2814.         {
  2815.             i = 1;
  2816.         }
  2817.         if((oldi < i) & (i == 2))
  2818.         {
  2819.             i = 3;
  2820.         }
  2821.         if(oldi != i)
  2822.         {
  2823.             mouhide();
  2824.             load_screen_buff();
  2825.             oldi = i;
  2826.             if(i != 2)
  2827.             {
  2828.                 simp_window(46,i + 20,59,i + 20,0,2,14,1,1,8,0,0,0);
  2829.                 write_window(2,1,"%s",lable[i]);
  2830.             }
  2831.             moushow();
  2832.         }
  2833.         if(moubuttonpressed(LEFTBUTTON))
  2834.         {
  2835.             if((mousex > 43) & (mousex < 54))
  2836.             {
  2837.                 switch(mousey)
  2838.                 {
  2839.                     case 20 :
  2840.                     case 21 :
  2841.                     case 22 :
  2842.                     case 23 : choice = 1; break;
  2843.                     default : choice = 7; break;
  2844.                 }
  2845.             }
  2846.             else
  2847.             {
  2848.                 choice = 7;
  2849.             }
  2850.         }
  2851.         if(choice != 0)
  2852.         {
  2853.             break;
  2854.         }
  2855.     }
  2856.     mouhide();
  2857.     load_screen_buff();
  2858.     if(choice == 1)
  2859.     {
  2860.         choice = i + 2;
  2861.     }
  2862.     switch(choice)
  2863.     {
  2864.         case 2 :
  2865.         case 3 :
  2866.         case 5 :
  2867.         case 6 : color_select();
  2868.              o_data.data[win_num][choice] = color_code;
  2869.              if(win_num == 8)
  2870.              {
  2871.                 o_data.hk_color = color_code;
  2872.              }
  2873.              break;
  2874.         case 7 : return(0);
  2875.     }
  2876.     save_data();
  2877.     return(1);
  2878. }
  2879.  
  2880.  
  2881. int mou_menu(void)
  2882. {
  2883.     int pick,choice,i = 0,old_i = 18,mousex = 0,mousey = 0;
  2884.     char lable[11][22] = {"mouinstalled\(\)","moureset\(\)","moubuttonpressed\(\)",
  2885.         "moushow\(\)","mouhide\(\)","moucursortype\(\)",
  2886.         "mousetposition\(\)","mousetmaxposition\(\)","moubuttonreleased\(\)",
  2887.         "loadcurs\(\)","mouposition\(\)"};
  2888.  
  2889.     if(display_switch)
  2890.     {
  2891.         load_screen(3);
  2892.         call_window(21);
  2893.         call_menu(17,3,2);
  2894.         save_screen(4);
  2895.     }
  2896.     else
  2897.     {
  2898.         load_screen(4);
  2899.     }
  2900.     display_switch = 1;
  2901.     save_screen_buff();
  2902.     moushow();
  2903.     for(;;)
  2904.     {
  2905.         choice = 0;
  2906.         if(mouposition(&mousex,&mousey))
  2907.         {
  2908.             if((mousex > 19) & (mousex < 46))
  2909.             {
  2910.                 i = mousey - 6;
  2911.             }
  2912.         }
  2913.         if(bioskey(1) | (mou_switch == 0))
  2914.         {
  2915.             switch(bioskey(0))
  2916.             {
  2917.                 case ESC : choice = 14; break;
  2918.                 case CURSOR_DN : i = i + 1; break;
  2919.                 case CURSOR_UP : i = i - 1; break;
  2920.                 case ENTER : choice = 1; break;
  2921.             }
  2922.         }
  2923.         if(i < 0)
  2924.         {
  2925.             i = 0;
  2926.         }
  2927.         if(i > 10)
  2928.         {
  2929.             i = 10;
  2930.         }
  2931.         if(old_i != i)
  2932.         {
  2933.             old_i = i;
  2934.             mouhide();
  2935.             load_screen_buff();
  2936.             simp_window(20,6 + i,42,6 + i,o_data.data[7][0],o_data.data[7][1],
  2937.             o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  2938.             o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  2939.             write_window(2,1,"%s",lable[i]);
  2940.             moushow();
  2941.         }
  2942.         if(moubuttonpressed(LEFTBUTTON))
  2943.         {
  2944.             if((mousex > 19) & (mousex < 46) & (mousey > 5) & (mousey < 18))
  2945.             {
  2946.                 choice = 1;
  2947.             }
  2948.             else
  2949.             {
  2950.                 choice = 14;
  2951.             }
  2952.         }
  2953.         if(choice != 0)
  2954.         {
  2955.             break;
  2956.         }
  2957.     }
  2958.     mouhide();
  2959.     load_screen_buff();
  2960.     pick = 1;
  2961.     if(choice == 1)
  2962.     {
  2963.         choice = i + 2;
  2964.     }
  2965.     switch(choice)
  2966.     {
  2967.         case 2 :
  2968.         case 3 :
  2969.         case 4 :
  2970.         case 5 :
  2971.         case 6 :
  2972.         case 7 :
  2973.         case 8 :
  2974.         case 9 :
  2975.         case 10 :
  2976.         case 11 :
  2977.         case 12 : view_tut(i + 53,lable[i]);break;
  2978.         case 14 : pick = 0; break;
  2979.     }
  2980.     display_switch = 0;
  2981.     unpopup_window(21);
  2982.     return(pick);
  2983.  
  2984.  
  2985. }
  2986.