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