home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / ME494-6.ZIP / SRC / DEMO.SRC < prev    next >
Encoding:
Text File  |  1990-06-03  |  105.8 KB  |  4,041 lines

  1. $MACRO DEMO TRANS;
  2. {
  3. THERE IS SOMETHING STRANGE ABOUT THE DOCUMENT MODE PART.
  4. Sometimes, and I can't pin it down, it will repaint or kill a box before
  5. it finishes writing text in it.
  6.  
  7.  
  8. Subjects to possibly demo:
  9. New mouse interface
  10. New keystroke macro manager
  11. New user menu
  12. Keymap definition and multi-keymap selection
  13. Directory tree
  14. Support for TLIB and PVCS
  15.  
  16. Go over the list of new features and decide what to demo or at least mention.
  17. Also decide if there is any existing thing we should not demo or cut down on
  18. demoing.
  19.  
  20. Mention the differences between demo and real thing.
  21.  
  22. Discuss removing the print formatter from the demo.
  23. }
  24. {******************************************************************************
  25.                                                             MULTI-EDIT MACRO
  26.  
  27. Name: DEMO
  28.  
  29. Description:  A self-running demonstration of the features of Multi-Edit.
  30.  
  31.                              (C) Copyright 1989 by American Cybernetics, Inc.
  32. ******************************************************************************}
  33.  
  34.     Def_Int(Temp_Integer,W_X1,W_Y1,Write_X,Write_Y,Y_Start,Int1,Int2,Int3,
  35.         Int4,Int5,Int6,Int7,Int8,Processor_Comp,T_C_Color,T_W_C_Color,T_Eof_Color,
  36.         T_W_Eof_Color,jx,Jy,jl,c,l,w,count,Box_Color,Type_Color,Active_Window,
  37.         Win_Count,Screen_Count);
  38.     Def_Str(Temp_String,Win_List,Type_Str[2048]);
  39.  
  40. {Temporarily disable autosave}
  41.     Type_Str := Global_str('@AUTOSAVEPARMS');
  42.     Int1 := parse_int('/H1=', Type_Str );
  43.     Int2 := parse_int('/H2=', Type_Str );
  44.     IF Int1 <> 0 THEN
  45.         kill_timer_event( Int1 );
  46.     END;
  47.     IF Int2 <> 0 THEN
  48.         kill_timer_event( Int2 );
  49.     END;
  50.  
  51.     Set_Global_Int('Delay_Speed',2);
  52.     Screen_Count := Global_Int('@SCREEN_COUNT') + 1;
  53.     Messages := False;
  54.     Set_Global_Int('Demo_Speed',21);
  55.     Insert_Mode := True;
  56. {Setup screen globals}
  57.     Set_Global_Str('@SCREEN_SETA','/F=1/M=1/S=1/MACRO=');
  58.     Set_Global_Str('@SCREEN_SETB','');
  59.     Set_Global_Int('DEF_SCRN_STYLE',1);
  60.     Set_Global_Int('CUR_SCRN',1);
  61.     T_C_Color := C_Color;
  62.     T_W_C_Color := W_C_Color;
  63.     T_W_Eof_Color := W_Eof_Color;
  64.     T_Eof_Color := Eof_Color;
  65.     Undo_Stat := False;
  66.     Active_Window := Window_Id;
  67.     Win_List := '';
  68.     Win_Count := 0;
  69.     Call MAKE_WINDOW;
  70.  
  71.  
  72. {Check for file in window}
  73. {
  74.     Tof;
  75.     If Not(AT_EOF) Then
  76.         Temp_String := 'This macro cannot be run with any files loaded!';
  77.         Goto ABORT;
  78.     End;
  79. {Check for more than one window}
  80.     If (Window_Count > 1) Then
  81.         Temp_String := 'This macro cannot be run with more than one window created!';
  82.         Goto ABORT;
  83.     End;
  84. }
  85.  
  86. {
  87. {set colors for color or monochrome.}
  88.     IF ((XPos('' + Str(Video_Card) + '','13679',1) > 0)
  89.         or (Back_Color = 0) or (Back_Color = 7)) THEN
  90.         Text_Color := 7;
  91.         Stat_Color := 15;
  92.         Menu_Color := 7;
  93.         Error_Color := 0;
  94.         Back_Color := 0;
  95.         Change_Color := 7;
  96.         Shadow_Color := 7;
  97.         Shadow_Char := '░';
  98.     ELSE
  99.         Text_Color := Lightgray;
  100.         Stat_Color := White;
  101.         Menu_Color := Lightgray;
  102.         Error_Color := Red;
  103.         Back_Color := Blue;
  104.         Change_Color := Lightgray;
  105.         Shadow_Color := Black;
  106.         Shadow_Char := '█';
  107.     END;
  108. }
  109.     C_Color := T_Color;
  110.     W_C_Color := T_Color;
  111.     W_Eof_Color := (T_Color Shr 4) or ((T_Color Shr 4) Shl 4);
  112.     Eof_Color := W_Eof_Color;
  113. {This demo is setup to run best in 80 X 25 video mode and with the default
  114. screen settings}
  115.     IF (Video_Mode <> 0) THEN
  116.         RM('SETUP^TGLVID');
  117.     END;
  118.     RM('SETSCRN');
  119.     new_screen;
  120.  
  121.     Screen_Num := Screen_Count;
  122.  
  123.     Make_Message('Multi-Edit demo:  Adjusting to processor speed.....');
  124.  
  125. {Wait for clock tic to roll over}
  126.     Int2 := System_Timer + 1;
  127.     WHILE (System_Timer < Int2) DO
  128.     END;
  129. {Increment counter and write 1 character to the screen for 18 clock tics about
  130. 1 second.  Writing to the screen seems to get a more accurate picture of how
  131. fast the demo will run}
  132.     Int1 := 0;
  133.     Int2 := System_Timer + 18;
  134.     WHILE (System_Timer < Int2) DO
  135.         Write(' ',10,10,0,W_T_Color);
  136.         ++Int1;
  137.     END;
  138.  
  139.     Processor_Comp := (Int1 / 230);
  140.     IF (Processor_Comp < 0) THEN
  141.         Processor_Comp := 0;
  142.     ELSIF (Processor_Comp > 2) THEN
  143.         Processor_Comp := Processor_Comp + 2;
  144.     END;
  145.  
  146. {
  147. Call CLEAN_UP;
  148. GOTO SKIP;
  149. }
  150.     Call WRITE_HELP;
  151.     File_Name := 'MULTI-EDIT';
  152.     Refresh := False;
  153. START_DEMO:
  154.     Call CLEAN_UP;
  155.     Write_Y := 20;
  156.     Int1 := 0;
  157.         While (Int1 < 16) Do
  158.             IF (Int1 > 6) THEN
  159.                 Temp_String := Copy(
  160. '│   │   Multi-Edit   │  ││  │                │   ││   │ Welcome to the │  ││  ┌────────────────┐   ││                 │┌────────────────────────┐'
  161.                                                                                                         ,((Int1 - 7) * 26) + 1,26);
  162.             ELSE
  163.                 Temp_String := Copy(
  164. '└────────────────────────┘│                 ││  └────────────────┘   ││   │    program!    │  ││  │                │   ││   │ demonstration  │  ││  │                │   │'
  165.                                                                                                                     ,(Int1 * 26) + 1,26);
  166.             END;
  167.             IF (Int1 > 0) THEN
  168.                 Scroll_Box_Dn(28,4,53,Int1 + 4,((Back_Color and 7) shl 4));
  169.             END;
  170.             Write(Temp_String,28,4,0,M_B_Color);
  171.             ++Int1;
  172.             IF (Return_Int <> -1) THEN
  173.                 Return_Int := 1;
  174.                 Call DELAY_LOOP;
  175.             END;
  176.             IF (Return_Int = 1) THEN
  177.                 Goto SKIP_WELCOME;
  178.             END;
  179.         End;
  180.  
  181.     Int1 := 0;
  182.     While (Int1 < 10) Do
  183.         Temp_Integer := 8;
  184.         WHILE (Temp_Integer < 19) DO
  185.         Write(Copy(
  186. '                ┌────────────────┐    │ Welcome to the │  │                │    │   Multi-Edit   │  │                │    │ demonstration  │  │                │    │    program!    │  └────────────────┘                 '
  187.         ,((Temp_Integer - 8) * 22) + 1,22),30,Temp_Integer,0,M_B_Color);
  188.             ++Temp_Integer;
  189.         END;
  190.         Return_Int := 7;
  191.         Call DELAY_LOOP;
  192.         IF (Return_Int <> 0) THEN
  193.             Goto SKIP_WELCOME;
  194.         END;
  195.         Temp_Integer := 8;
  196.         WHILE (Temp_Integer < 19) DO
  197.         Write(Copy(
  198. '                 ┌────────────────┐  │ Welcome to the │    │                │  │   Multi-Edit   │    │                │  │ demonstration  │    │                │  │    program!    │    └────────────────┘                '
  199.         ,((Temp_Integer - 8) * 22) + 1,22),30,Temp_Integer,0,M_B_Color);
  200.             ++Temp_Integer;
  201.         END;
  202.         Return_Int := 7;
  203.         Call DELAY_LOOP;
  204.         IF (Return_Int <> 0) THEN
  205.             Goto SKIP_WELCOME;
  206.         END;
  207.         ++Int1;
  208.     End;
  209.  
  210. SKIP_WELCOME:
  211.     Refresh := True;
  212.     set_virtual_display;
  213.  
  214.     {build the background screen}
  215.     new_screen;
  216.     override_screen_seg;
  217.     save_box( 1, 1, screen_width, screen_length );
  218.     reset_screen_seg;
  219.     Clear_Virtual_Display;
  220.     Refresh := False;
  221.     Explosions := True;
  222.     W_X1 := 20;
  223.     W_Y1 := 10;
  224.     Return_Int := 0;
  225.     restore_box;
  226.     Put_Box(20,10,58,14,0,M_B_Color,'',True);
  227.     Write('This demo was written completely',22,11,0,M_B_Color);
  228.     Write('in the Multi-Edit Macro Language!',22,12,0,M_B_Color);
  229.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  230.     Return_Int := 75;
  231.     Call DELAY_LOOP;
  232.     IF (Return_Int = 1) THEN
  233.         Goto SKIP_BOXES;
  234.     END;
  235.  
  236.     Kill_Box;
  237.     Explosions := False;
  238.     While (W_X1 > 1) Do
  239.         --W_X1;
  240.         If (W_X1 > 1) Then
  241.             --W_X1;
  242.         End;
  243.         restore_box;
  244.         Put_Box(W_X1,10,W_X1 + 38,14,0,M_B_Color,'',True);
  245.         Write('This demo was written completely',W_X1 + 2,11,0,M_B_Color);
  246.         Write('in the Multi-Edit Macro Language!',W_X1 + 2,12,0,M_B_Color);
  247.         UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  248.         IF (Return_Int <> -1) THEN
  249.             Return_Int := 2;
  250.             Call DELAY_LOOP;
  251.         END;
  252.         IF (Return_Int = 1) THEN
  253.             Goto SKIP_BOXES;
  254.         END;
  255.  
  256.         Kill_Box;
  257.     End;
  258.  
  259. BOX_1:
  260.     W_Y1 := W_Y1 - 2;
  261.     If (W_Y1 = 4) Then
  262.         Kill_box;
  263.     else
  264.         restore_box;
  265.     end;
  266.     Put_Box(1,W_Y1,39,W_Y1 + 4,0,M_B_Color,'',True);
  267.     Write('This demo was written completely',3,W_Y1 + 1,0,M_B_Color);
  268.     Write('in the Multi-Edit Macro Language!',3,W_Y1 + 2,0,M_B_Color);
  269.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  270.     IF (Return_Int <> -1) THEN
  271.         Return_Int := 2;
  272.         Call DELAY_LOOP;
  273.     END;
  274.     IF (Return_Int = 1) THEN
  275.         Goto SKIP_BOXES;
  276.     END;
  277.  
  278.     If (W_Y1 = 4) Then
  279.         Goto BOX_1_EXIT;
  280.     End;
  281.     Kill_Box;
  282.     Goto BOX_1;
  283.  
  284. BOX_1_EXIT:
  285.  
  286. {get new background screen}
  287.     override_screen_seg;
  288.     save_box( 1, 1, screen_width, screen_length );
  289.     reset_screen_seg;
  290.     Clear_Virtual_Display;
  291.  
  292.     Return_Int := 0;
  293.     Explosions := True;
  294.     W_X1 := 20;
  295.     W_Y1 := 10;
  296.  
  297.     restore_box;
  298.  
  299.     Put_Box(20,10,55,13,0,M_B_Color,'',True);
  300.     Write('It is completely self running.',22,11,0,M_B_Color);
  301.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  302.     Return_Int := 50;
  303.     Call DELAY_LOOP;
  304.     IF (Return_Int = 1) THEN
  305.         Goto SKIP_BOXES;
  306.     END;
  307.  
  308.     Kill_Box;
  309.     Explosions := False;
  310.     While (W_X1 < 45) Do
  311.         ++W_X1;
  312.         If (W_X1 < 44) Then
  313.             ++W_X1;
  314.         End;
  315.         restore_box;
  316.         Put_Box(W_X1,10,W_X1 + 35,13,0,M_B_Color,'',True);
  317.         Write('It is completely self running.',W_X1 + 2,11,0,M_B_Color);
  318.         UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  319.         IF (Return_Int <> -1) THEN
  320.             Return_Int := 2;
  321.             Call DELAY_LOOP;
  322.         END;
  323.         IF (Return_Int = 1) THEN
  324.             Goto SKIP_BOXES;
  325.         END;
  326.  
  327.         Kill_Box;
  328.     End;
  329.  
  330. BOX_2:
  331.     W_Y1 := W_Y1 - 2;
  332.     If (W_Y1 = 4) Then
  333.         Kill_Box;
  334.     ELSE
  335.     restore_box;
  336.     End;
  337.     Put_Box(45,W_Y1,80,W_Y1 + 3,0,M_B_Color,'',True);
  338.     Write('It is completely self running.',47,W_Y1 + 1,0,M_B_Color);
  339.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  340.     IF (Return_Int <> -1) THEN
  341.         Return_Int := 2;
  342.         Call DELAY_LOOP;
  343.     END;
  344.     IF (Return_Int = 1) THEN
  345.         Goto SKIP_BOXES;
  346.     END;
  347.  
  348.     If (W_Y1 = 4) Then
  349.         Goto BOX_2_EXIT;
  350.     End;
  351.     Kill_Box;
  352.     Goto BOX_2;
  353.  
  354.  
  355. BOX_2_EXIT:
  356. {get new background screen}
  357.     override_screen_seg;
  358.     save_box( 1, 1, screen_width, screen_length );
  359.     reset_screen_seg;
  360.     Clear_Virtual_Display;
  361.  
  362.     Return_Int := 0;
  363.     Explosions := True;
  364.     W_X1 := 20;
  365.     W_Y1 := 10;
  366.     restore_box;
  367.     Put_Box(20,10,61,16,0,M_B_Color,'',True);
  368.     Write('Hit <SPACE> at any time to SKIP',22,11,0,M_B_Color);
  369.     Write('quickly through the current display.',22,12,0,M_B_Color);
  370.     Write('Hit <ENTER> at any time to skip to',22,13,0,M_B_Color);
  371.     Write('the NEXT subject.',22,14,0,M_B_Color);
  372.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  373.     Return_Int := 125;
  374.     Call DELAY_LOOP;
  375.     IF (Return_Int = 1) THEN
  376.         Goto SKIP_BOXES;
  377.     END;
  378.  
  379.     Kill_Box;
  380.     Explosions := False;
  381.     While (W_X1 > 1) Do
  382.         --W_X1;
  383.         If (W_X1 > 2) Then
  384.             --W_X1;
  385.         End;
  386.         restore_box;
  387.         Put_Box(W_X1,10,W_X1 + 41,16,0,M_B_Color,'',True);
  388.         Write('Hit <SPACE> at any time to SKIP',W_X1 + 2,11,0,M_B_Color);
  389.         Write('quickly through the current display.',W_X1 + 2,12,0,M_B_Color);
  390.         Write('Hit <ENTER> at any time to skip to',W_X1 + 2,13,0,M_B_Color);
  391.         Write('the NEXT subject.',W_X1 + 2,14,0,M_B_Color);
  392.         UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  393.         IF (Return_Int <> -1) THEN
  394.             Return_Int := 2;
  395.             Call DELAY_LOOP;
  396.         END;
  397.         IF (Return_Int = 1) THEN
  398.             Goto SKIP_BOXES;
  399.         END;
  400.  
  401.         Kill_Box;
  402.     End;
  403.  
  404. BOX_3:
  405.     ++W_Y1;
  406.     If (W_Y1 < 16) Then
  407.         ++W_Y1;
  408.     End;
  409.     If (W_Y1 = 18) Then
  410.         Kill_Box;
  411.     ELSE
  412.     restore_box;
  413.     End;
  414.     Put_Box(1,W_Y1,42,W_Y1 + 6,0,M_B_Color,'',True);
  415.     Write('Hit <SPACE> at any time to SKIP',3,W_Y1 + 1,0,M_B_Color);
  416.     Write('quickly through the current display.',3,W_Y1 + 2,0,M_B_Color);
  417.     Write('Hit <ENTER> at any time to skip to',3,W_Y1 + 3,0,M_B_Color);
  418.     Write('the NEXT subject.',3,W_Y1 + 4,0,M_B_Color);
  419.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  420.     IF (Return_Int <> -1) THEN
  421.         Return_Int := 2;
  422.         Call DELAY_LOOP;
  423.     END;
  424.     IF (Return_Int = 1) THEN
  425.         Goto SKIP_BOXES;
  426.     END;
  427.  
  428.     If (W_Y1 = 18) Then
  429.         Goto BOX_3_EXIT;
  430.     End;
  431.     Kill_Box;
  432.     Goto BOX_3;
  433.  
  434. BOX_3_EXIT:
  435. {get new background screen}
  436.     override_screen_seg;
  437.     save_box( 1, 1, screen_width, screen_length );
  438.     reset_screen_seg;
  439.     Clear_Virtual_Display;
  440.  
  441.     Return_Int := 0;
  442.     Explosions := True;
  443.     W_X1 := 20;
  444.     W_Y1 := 10;
  445.     restore_box;
  446.     Put_Box(20,10,46,14,0,M_B_Color,'',True);
  447.     Write('Hit <ESC> at any time',22,11,0,M_B_Color);
  448.     Write('to exit this demo.',22,12,0,M_B_Color);
  449.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  450.     Return_Int := 75;
  451.     Call DELAY_LOOP;
  452.     IF (Return_Int = 1) THEN
  453.         Goto SKIP_BOXES;
  454.     END;
  455.  
  456.     Kill_Box;
  457.     Explosions := False;
  458.  
  459.     While (W_X1 < 54) Do
  460.         W_X1 := W_X1 + 2;
  461.         restore_box;
  462.         Put_Box(W_X1,10,W_X1 + 26,14,0,M_B_Color,'',True);
  463.         Write('Hit <ESC> at any time',W_X1 + 2,11,0,M_B_Color);
  464.         Write('to exit this demo.',W_X1 + 2,12,0,M_B_Color);
  465.         UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  466.         IF (Return_Int <> -1) THEN
  467.             Return_Int := 2;
  468.             Call DELAY_LOOP;
  469.         END;
  470.         IF (Return_Int = 1) THEN
  471.             Goto SKIP_BOXES;
  472.         END;
  473.  
  474.         Kill_Box;
  475.     End;
  476.  
  477. BOX_4:
  478.     ++W_Y1;
  479.     If (W_Y1 < 18) Then
  480.         ++W_Y1;
  481.     End;
  482.  
  483.     If (W_Y1 = 19) Then
  484.         Kill_Box;
  485.     ELSE
  486.     restore_box;
  487.     End;
  488.     Put_Box(54,W_Y1,80,W_Y1 + 4,0,M_B_Color,'',True);
  489.     Write('Hit <ESC> at any time',56,W_Y1 + 1,0,M_B_Color);
  490.     Write('to exit this demo.',56,W_Y1 + 2,0,M_B_Color);
  491.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  492.     IF (Return_Int <> -1) THEN
  493.         Return_Int := 2;
  494.         Call DELAY_LOOP;
  495.     END;
  496.     IF (Return_Int = 1) THEN
  497.         Goto SKIP_BOXES;
  498.     END;
  499.  
  500.     If (W_Y1 = 19) Then
  501.         Goto BOX_4_EXIT;
  502.     End;
  503.     Kill_Box;
  504.     Goto BOX_4;
  505.  
  506. BOX_4_EXIT:
  507. {get new background screen}
  508.     override_screen_seg;
  509.     save_box( 1, 1, screen_width, screen_length );
  510.     reset_screen_seg;
  511.     Clear_Virtual_Display;
  512.  
  513.     Return_Int := 0;
  514.     Explosions := True;
  515.     Restore_Box;
  516.     Put_Box(20,10,59,16,0,M_B_Color,'',True);
  517.     Write('This demo will last approximately',22,11,0,M_B_Color);
  518.     Write('15 minutes.',22,12,0,M_B_Color);
  519.     Write('Press any key to begin...',26,14,0,M_B_Color);
  520.     GotoXY(51,14);
  521.     UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH );
  522.     Temp_Integer := 200;
  523.     While ((Temp_Integer > 0) and (Check_Key = 0)) Do
  524.         Return_Int := 1;
  525.         Call DELAY_LOOP;
  526.         IF (Return_Int < 0) THEN
  527.             Goto SKIP_BOXES;
  528.         END;
  529.  
  530.         --Temp_Integer;
  531.     End;
  532.  
  533.     If (Key1 = 27) Then
  534.         Goto EXIT;
  535.     End;
  536.  
  537.     WHILE (Box_Count) DO
  538.         Kill_Box;
  539.     END;
  540.  
  541.     reset_virtual_display;
  542.  
  543. {This code fakes the killing of the 5 boxes.}
  544.     Temp_Integer := 5;
  545.     Return_Int := 0;
  546.     While (Temp_Integer) Do
  547.         IF (Temp_Integer = 5) THEN
  548.             W_X1 := 20;
  549.             W_Y1 := 10;
  550.         ELSIF (Temp_Integer = 4) THEN
  551.             W_X1 := 1;
  552.             W_Y1 := 4;
  553.         ELSIF (Temp_Integer = 3) THEN
  554.             W_X1 := 39;
  555.             W_Y1 := 4;
  556.         ELSIF (Temp_Integer = 2) THEN
  557.             W_X1 := 1;
  558.             W_Y1 := 18;
  559.         ELSIF (Temp_Integer = 1) THEN
  560.             W_X1 := 39;
  561.             W_Y1 := 18;
  562.         END;
  563.         Jl := 0;
  564.         WHILE (Jl < 7) DO
  565.             Draw_Char(32,W_X1,W_Y1 + Jl,W_T_Color,42);
  566.             ++Jl;
  567.         END;
  568.         Return_Int := 10;
  569.         Call DELAY_LOOP;
  570.         IF (Return_Int < 0) THEN
  571.             Goto SKIP_BOXES;
  572.         END;
  573.         --Temp_Integer;
  574.     End;
  575.  
  576. SKIP_BOXES:
  577.     reset_virtual_display;
  578.     Explosions := True;
  579.     Call Clean_Up;
  580.     Refresh := True;
  581.     New_Screen;
  582.     Refresh := False;
  583.  
  584. {*OPENING STATEMENTS*}
  585.     Type_Str := 'Multi-Edit is a State-of-the-Art text editor... the first of its kind to combine the power and flexibility of the finest programmable editor with a user friendly interface.';
  586.     Return_Str := '/C=14/L=10/#=4/D=100/BCOLOR=' + Str(M_H_Color);
  587.     Call BOXWRAP;
  588. {
  589.     Set_Global_Str('ISTR1','Multi-Edit is a State-of-the-Art text editor...');
  590.     Set_Global_Str('ISTR2','the first of its kind to combine the power and');
  591.     Set_Global_Str('ISTR3','flexibility of the finest programmable editor');
  592.     Set_Global_Str('ISTR4','with a user friendly interface.');
  593.  
  594.     Return_Str := '/C=14/L=10/#=4/D=100/BCOLOR=' + Str(M_H_Color);
  595.     Call BOXTEXT;
  596. }
  597.     IF (Return_Int = 1) THEN
  598.         Goto SKIP_OPENING;
  599.     END;
  600.     IF (Return_Int = 2) THEN
  601.         Goto EXIT;
  602.     END;
  603.     Type_Str := 'Multi-Edit is an ASCII text editor, suitable for programming in any major/nlanguage AS WELL AS meeting all your documentation needs:/n- Edit files up to 32 megabytes, 2 billion lines, and 2048 columns/n' +
  604.         '- Edit up to 100 files simultaneously/n' + 
  605.       '- On-line, context sensitive HYPERTEXT help/n' + 
  606.         '- Intuitive pull-down menu system, with history lists on most prompts/n' + 
  607.         '- Windows style mouse support throughout/n' +
  608.         '- FULL UNDO of ANY editing operation with REDO/n' +
  609.         '- Powerful regular expression search and replace and multi-file search/n' + 
  610.         '- Complete multi-directory DOS shell/n' + 
  611.         '- Pop-up ASCII table and programmer''s calculator/n' + 
  612.         '- Language specific template, matching, and smart indent macros/n' +
  613.         '- Powerful Condensed mode display for high level languages/n' + 
  614.         '- Automatic processing of compiler errors/n' + 
  615.         '- Extensive word processing features for documentation/n' + 
  616.         '- Full Expanded Memory support:  Edit large files without disk swapping!/n' + 
  617.         '- Optional Multi-Edit Professional package featuring a communications/n' + 
  618.         '  module, spell checker, complete macro source and macro debugger/n';
  619.         Return_Str := '/C=1/L=4/#=18/D=300/T=MAJOR FEATURES/NK=1';
  620.         Call BOXWRAP;
  621. {
  622.     Set_Global_Str('ISTR1','Multi-Edit is an ASCII text editor, suitable for programming in any major');
  623.     Set_Global_Str('ISTR2','language AS WELL AS meeting all your documentation needs:');
  624.     Set_Global_Str('ISTR3','- Edit files up to 32 megabytes, 2 billion lines, and 2048 columns');
  625.     Set_Global_Str('ISTR4','- Edit up to 100 files simultaneously');
  626.     Set_Global_Str('ISTR5','- On-line, context sensitive HYPERTEXT help');
  627.     Set_Global_Str('ISTR6','- Intuitive pull-down menu system, with history lists on most prompts');
  628.     Set_Global_Str('ISTR7','- FULL UNDO of ANY editing operation with REDO');
  629.     Set_Global_Str('ISTR8','- Powerful regular expression search and replace and multi-file search');
  630.     Set_Global_Str('ISTR9','- Complete multi-directory DOS shell');
  631.     Set_Global_Str('ISTR10','- Pop-up ASCII table and programmer''s calculator');
  632.     Set_Global_Str('ISTR11','- Language specific template, matching, and smart indent macros');
  633.     Set_Global_Str('ISTR12','- Powerful Condensed mode display for high level languages');
  634.     Set_Global_Str('ISTR13','- Automatic processing of compiler errors');
  635.     Set_Global_Str('ISTR14','- All Word processing features needed for documentation:');
  636.     Set_Global_Str('ISTR15','  word-wrap, centering, bold, underline, pagination, justification,');
  637.     Set_Global_Str('ISTR16','  headers/footers, and table of contents generator');
  638.     Set_Global_Str('ISTR17','- Optional Multi-Edit Professional package featuring a communications');
  639.     Set_Global_Str('ISTR18','  module, spell checker, complete macro source and macro debugger');
  640.  
  641.     Return_Str := '/C=1/L=4/#=18/D=300/T=MAJOR FEATURES/NK=1';
  642.     Call BOXTEXT;
  643. }
  644.     IF (Return_Int = 1) THEN
  645.         Goto SKIP_OPENING;
  646.     END;
  647.     IF (Return_Int = 2) THEN
  648.         Goto EXIT;
  649.     END;
  650.  
  651.     Type_Str := 'Multi-Edit is the ONLY editor on the market today with this combination of features, enabling new users to quickly begin productive editing without having to read a manual.';
  652.     Return_Str := '/C=6/L=6/#=3/D=100/BCOLOR=' + Str(M_H_Color);
  653.     Call BOXWRAP;
  654.  
  655. {
  656.     Set_Global_Str('ISTR1','Multi-Edit is the ONLY editor on the market today with this');
  657.     Set_Global_Str('ISTR2','combination of features, enabling new users to quickly begin');
  658.     Set_Global_Str('ISTR3','productive editing without having to read a manual.');
  659.  
  660.     Return_Str := '/C=6/L=6/#=3/D=100/BCOLOR=' + Str(M_H_Color);
  661.     Call BOXTEXT;
  662. }
  663.     IF (Return_Int = 2) THEN
  664.         Goto EXIT;
  665.     END;
  666. SKIP_OPENING:
  667.     Call Clean_Up;
  668.  
  669.  
  670. {*MULTI-EDIT COMMAND EXECUTION*}
  671.     Type_Str := 'There are two ways of executing Multi-Edit commands:';
  672.     Return_Str := '/C=6/L=10/#=1/D=50/NK=1';
  673.     Call BOXWRAP;
  674. {
  675.     Set_Global_Str('ISTR1','There are two ways of executing Multi-Edit commands:');
  676.  
  677.     Return_Str := '/C=6/L=10/#=1/D=50/NK=1';
  678.     Call BOXTEXT;
  679. }
  680.     IF (Return_Int = 1) THEN
  681.         Goto SKIP_COMMAND;
  682.     END;
  683.     IF (Return_Int = 2) THEN
  684.         Goto EXIT;
  685.     END;
  686.  
  687.     Type_Str := '1. Using the function keys, which are always labelled on screen.';
  688.     Return_Str := '/C=8/L=12/#=1/NK=1';
  689.     Call BOXWRAP;
  690. {
  691.     Set_Global_Str('ISTR1','1. Using the function keys, which are always labelled on screen.');
  692.     Return_Str := '/C=8/L=12/#=1/NK=1';
  693.     Call BOXTEXT;
  694. }
  695.     IF (Return_Int = 1) THEN
  696.         Goto SKIP_COMMAND;
  697.     END;
  698.     IF (Return_Int = 2) THEN
  699.         Goto EXIT;
  700.     END;
  701.     Write('┌─',6,13,0,T_Color);
  702.     Return_Int := 2;
  703.     Call DELAY_LOOP;
  704.     IF (Return_Int = 1) THEN
  705.         Goto SKIP_COMMAND;
  706.     END;
  707.  
  708.     Temp_Integer := 14;
  709.     WHILE (Temp_Integer < 24) DO
  710.         Write('│',6,Temp_Integer,0,T_Color);
  711.         Return_Int := 2;
  712.         Call DELAY_LOOP;
  713.         IF (Return_Int = 1) THEN
  714.             Goto SKIP_COMMAND;
  715.         END;
  716.  
  717.         ++Temp_Integer;
  718.     END;
  719.     Write('',6,24,0,T_Color);
  720.  
  721.     Return_Int := 5;
  722.     Call DELAY_LOOP;
  723.     IF (Return_Int = 1) THEN
  724.         Goto SKIP_COMMAND;
  725.     END;
  726.     Temp_Integer := 6;
  727.     While (Temp_Integer < 79) do
  728.         Write(' ',Temp_Integer,24,0,T_Color);
  729.         ++Temp_Integer;
  730.         Int1 := (Processor_Comp / 2) + 1;
  731.         WHILE (Int1 > 0) DO
  732.             Return_Int := 0;
  733.             Call DELAY_LOOP;
  734.             IF (Return_Int = 1) THEN
  735.                 Goto SKIP_COMMAND;
  736.             END;
  737.             --Int1;
  738.         END;
  739.     End;
  740.  
  741.     While (Temp_Integer > 5) do
  742.         Write(' ',Temp_Integer,24,0,T_Color);
  743.         --Temp_Integer;
  744.         Int1 := (Processor_Comp / 2) + 1;
  745.         WHILE (Int1 > 0) DO
  746.             Return_Int := 0;
  747.             Call DELAY_LOOP;
  748.             IF (Return_Int = 1) THEN
  749.                 Goto SKIP_COMMAND;
  750.             END;
  751.             --Int1;
  752.         END;
  753.     End;
  754.  
  755.     Return_Int := 5;
  756.     Call DELAY_LOOP;
  757.     IF (Return_Int = 1) THEN
  758.         Goto SKIP_COMMAND;
  759.     END;
  760.  
  761.     Temp_Integer := 24;
  762.     WHILE (Temp_Integer > 12) DO
  763.         Write('  ',6,Temp_Integer,0,T_Color);
  764.         Return_Int := 2;
  765.         Call DELAY_LOOP;
  766.         IF (Return_Int = 1) THEN
  767.             Goto SKIP_COMMAND;
  768.         END;
  769.  
  770.         --Temp_Integer;
  771.     END;
  772.  
  773.     Type_Str := '2. Using the intuitive pull-down menu system.';
  774.     Return_Str := '/C=10/L=14/#=1/D=2/NK=1';
  775.     Call BOXWRAP;
  776.  
  777. {
  778.     Set_Global_Str('ISTR1','2. Using the intuitive pull-down menu system.');
  779.     Return_Str := '/C=10/L=14/#=1/D=2/NK=1';
  780.     Call BOXTEXT;
  781. }
  782.     IF (Return_Int = 1) THEN
  783.         Goto SKIP_COMMAND;
  784.     END;
  785.     IF (Return_Int = 2) THEN
  786.         Goto EXIT;
  787.     END;
  788.     Write('└─────',4,15,0,T_Color);
  789.     Return_Int := 2;
  790.     Call DELAY_LOOP;
  791.     IF (Return_Int = 1) THEN
  792.         Goto SKIP_COMMAND;
  793.     END;
  794.  
  795.     Temp_Integer := 14;
  796.     WHILE (Temp_Integer > 8) DO
  797.         Write('│',4,Temp_Integer,0,T_Color);
  798.         Return_Int := 2;
  799.         Call DELAY_LOOP;
  800.         IF (Return_Int = 1) THEN
  801.             Goto SKIP_COMMAND;
  802.         END;
  803.  
  804.         --Temp_Integer;
  805.     END;
  806.  
  807.     Write('',4,8,0,T_Color);
  808.  
  809.     Key_In(<F2><PS1000>f<PS500><RT><PS500><RT><PS500><RT><PS500><RT><PS500><RT>
  810. <PS500><RT><PS500><RT><PS500><RT><PS500><RT><PS500><RT><PS500>
  811. <RT><PS500><RT><PS1000><ESC>);
  812.  
  813.     WHILE (Temp_Integer < 15) DO
  814.         Return_Int := 2;
  815.         Call DELAY_LOOP;
  816.         IF (Return_Int = 1) THEN
  817.             Goto SKIP_COMMAND;
  818.         END;
  819.  
  820.         Write(' ',4,Temp_Integer,0,T_Color);
  821.         ++Temp_Integer;
  822.     END;
  823.     Return_Int := 2;
  824.     Call DELAY_LOOP;
  825.     IF (Return_Int = 1) THEN
  826.         Goto SKIP_COMMAND;
  827.     END;
  828.  
  829.     Write('      ',4,15,0,T_Color);
  830.  
  831.     Type_Str := 'The keyboard layout is completely user definable, and you can define multiple key layouts which can be switched between on the fly!';
  832.     Return_Str := '/C=7/L=5/#=3/D=100/BCOLOR=' + Str(M_H_Color);
  833.     Call BOXWRAP;
  834.  
  835. {
  836.     Set_Global_Str('ISTR1','The keyboard layout is completely user definable!');
  837.     Return_Str := '/C=7/L=5/#=1/D=100/BCOLOR=' + Str(M_H_Color);
  838.     Call BOXTEXT;
  839. }
  840.     IF (Return_Int = 1) THEN
  841.         Goto SKIP_COMMAND;
  842.     END;
  843.     IF (Return_Int = 2) THEN
  844.         Goto EXIT;
  845.     END;
  846.  
  847.     Call Clean_Up;
  848.     Type_Str := 'If you have a mouse, you can use it for a third method of command execution with our windows style mouse interface!';
  849.     Return_Str := '/T=MOUSE INTERFACE/C=7/L=5/#=2/D=100';
  850.     Call BOXWRAP;
  851.  
  852.     IF (Return_Int = 1) THEN
  853.         Goto SKIP_COMMAND;
  854.     END;
  855.     IF (Return_Int = 2) THEN
  856.         Goto EXIT;
  857.     END;
  858.  
  859.  
  860. SKIP_COMMAND:
  861.     Call Clean_Up;
  862.  
  863. {*HELP SCREENS*}
  864.     Type_Str := 'Multi-Edit''s Hypertext Help Screens...';
  865.     Return_Str := '/C=1/L=4/#=1/D=50/NK=1';
  866.     Call BOXWRAP;
  867.  
  868. {
  869.     Set_Global_Str('ISTR1','Multi-Edit''s Hypertext Help Screens...');
  870.     Return_Str := '/C=1/L=4/#=1/D=50/NK=1';
  871.     Call BOXTEXT;
  872. }
  873.     IF (Return_Int = 1) THEN
  874.         Goto SKIP_HELP;
  875.     END;
  876.     IF (Return_Int = 2) THEN
  877.         Goto EXIT;
  878.     END;
  879.  
  880.     Type_Str := 'Are available any time by pressing <F1>';
  881.     Return_Str := '/C=4/L=6/#=1/D=50/NK=1/BCOLOR=' + Str(M_H_Color);
  882.     Call BOXWRAP;
  883.  
  884. {
  885.     Set_Global_Str('ISTR1','Are available any time by pressing <F1>');
  886.     Return_Str := '/C=4/L=6/#=1/D=50/NK=1/BCOLOR=' + Str(M_H_Color);
  887.     Call BOXTEXT;
  888. }
  889.     IF (Return_Int = 1) THEN
  890.         Goto SKIP_HELP;
  891.     END;
  892.     IF (Return_Int = 2) THEN
  893.         Goto EXIT;
  894.     END;
  895.  
  896.     Type_Str := 'Are context sensitive according to the current menu choice';
  897.     Return_Str := '/C=7/L=8/#=1/D=50/NK=1';
  898.     Call BOXWRAP;
  899.  
  900. {
  901.     Set_Global_Str('ISTR1','Are context sensitive according to the current menu choice');
  902.     Return_Str := '/C=7/L=8/#=1/D=50/NK=1';
  903.     Call BOXTEXT;
  904. }
  905.     IF (Return_Int = 1) THEN
  906.         Goto SKIP_HELP;
  907.     END;
  908.     IF (Return_Int = 2) THEN
  909.         Goto EXIT;
  910.     END;
  911.  
  912.     Type_Str := 'You can even create your own hypertext documents!/nWatch!!!';
  913.     Return_Str := '/C=10/L=10/#=2/D=100/NK=1/BCOLOR=' + Str(M_H_Color);
  914.     Call BOXWRAP;
  915.  
  916. {
  917.     Set_Global_Str('ISTR1','Are completely user modifiable!');
  918.     Return_Str := '/C=10/L=10/#=1/D=200/NK=1/BCOLOR=' + Str(M_H_Color);
  919.     Call BOXTEXT;
  920. }
  921.     IF (Return_Int = 1) THEN
  922.         Goto SKIP_HELP;
  923.     END;
  924.     IF (Return_Int = 2) THEN
  925.         Goto EXIT;
  926.     END;
  927. Key_In(<F1><PS1000><DN><PS500><DN><PS1000><ENTER><PS1000><PS500><BS><PS1000><UP><PS500>
  928. <ENTER><PS1000><DN><PS500><ENTER><PS1000><DN><PS500><ENTER><PS1000><PS1000><BS><PS500><BS>
  929. <BS><PS1000><UP><PS500><ENTER><PS500><DN><PS500><DN><PS500><DN><PS500><DN><DN><DN><DN><DN><DN><DN><DN><DN><DN><DN>
  930. <DN><DN><DN><DN><DN><DN><DN><DN><PS500><BS><PS1000><ESC>);
  931.     Return_Int := 100;
  932.     Call DELAY_LOOP;
  933.  
  934. SKIP_HELP:
  935.     Call Clean_Up;
  936.  
  937. {*WINDOWS*}
  938.     Type_Str := 'Multi-Edit''s window capabilities are VERY VERSATILE!';
  939.     Return_Str := '/C=22/L=12/#=2/D=100';
  940.     Call BOXWRAP;
  941. {
  942.     Set_Global_Str('ISTR1','Multi-Edit''s window capabilities');
  943.     Set_Global_Str('ISTR2','are VERY VERSATILE!');
  944.     Return_Str := '/C=22/L=12/#=2/D=100';
  945.     Call BOXTEXT;
  946. }
  947.     IF (Return_Int = 1) THEN
  948.         Goto SKIP_WINDOW;
  949.     END;
  950.     IF (Return_Int = 2) THEN
  951.         Goto EXIT;
  952.     END;
  953.     Explosions := False;
  954.     Tof;
  955.     Refresh := True;
  956.     Redraw;
  957.     Return_Int := 0;
  958.     Temp_String := 'Windows can be resized to';
  959.     Call Type_Text;
  960.     IF (Return_Int = 1) THEN
  961.         Goto SKIP_WINDOW;
  962.     END;
  963.     Temp_String := 'practically any size!';
  964.     Call Type_Text;
  965.     IF (Return_Int = 1) THEN
  966.         Goto SKIP_WINDOW;
  967.     END;
  968.     Tof;
  969.     Return_Int := 50;
  970.     Call DELAY_LOOP;
  971.     IF (Return_Int = 1) THEN
  972.         Goto SKIP_WINDOW;
  973.     END;
  974.  
  975. {The "x" caracters are there to prevent the discarding of keystrokes due to
  976. keys repeating too fast.}
  977.     Key_In(<F2><PS>W<PS>M<PS><ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x
  978. <ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<PS500><ShftUP>x
  979. <ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<PS500><RT>x<RT>x<RT>x<RT>x<RT>x
  980. <RT>x<PS500><DN>x<DN>x<DN>x<DN>x<PS500><ENTER>);
  981.  
  982.     Refresh := True;
  983.     New_Screen;
  984.  
  985.     Return_Int := 50;
  986.     Call DELAY_LOOP;
  987.     IF (Return_Int = 1) THEN
  988.         Goto SKIP_WINDOW;
  989.     END;
  990.  
  991.     Size_Window(10,15,52,22);
  992.     New_Screen;
  993.     Return_Int := 50;
  994.     Call DELAY_LOOP;
  995.     IF (Return_Int = 1) THEN
  996.         Goto SKIP_WINDOW;
  997.     END;
  998.  
  999.     Size_Window(60,5,79,9);
  1000.     New_Screen;
  1001.     Return_Int := 50;
  1002.     Call DELAY_LOOP;
  1003.     IF (Return_Int = 1) THEN
  1004.         Goto SKIP_WINDOW;
  1005.     END;
  1006.  
  1007.     Size_Window(1,3,27,6);
  1008.     New_Screen;
  1009.     Return_Int := 50;
  1010.     Call DELAY_LOOP;
  1011.     IF (Return_Int = 1) THEN
  1012.         Goto SKIP_WINDOW;
  1013.     END;
  1014. {
  1015.     Call WRITE_HELP;
  1016. }
  1017.     Erase_Window;
  1018.  
  1019.     Size_Window(1,4,30,10);
  1020.     File_Name := 'MULTI-EDIT';
  1021.     Refresh := True;
  1022.     New_Screen;
  1023.     Call WRITE_HELP;
  1024.     Temp_String := 'You can';
  1025.     Return_Int := 0;
  1026.     Call TYPE_TEXT;
  1027.     IF (Return_Int = 1) THEN
  1028.         Goto SKIP_WINDOW;
  1029.     END;
  1030.     Return_Int := 25;
  1031.     Call DELAY_LOOP;
  1032.     IF (Return_Int = 1) THEN
  1033.         Goto SKIP_WINDOW;
  1034.     END;
  1035.  
  1036.     Refresh := False;
  1037.     Int1 := Window_Id;
  1038.     Call MAKE_WINDOW;
  1039.     Int2 := Window_Id;
  1040.     Screen_Num := Screen_Count + 1;
  1041.  
  1042.     Size_Window(28,4,75,15);
  1043.     File_Name := 'MULTI-EDIT';
  1044.     Switch_Win_Id(Int1);
  1045.     Refresh := True;
  1046.     Switch_Win_Id(Int2);
  1047.     Temp_String := 'create';
  1048.     Return_Int := 0;
  1049.     Call TYPE_TEXT;
  1050.  
  1051.     IF (Return_Int = 1) THEN
  1052.         Goto SKIP_WINDOW;
  1053.     END;
  1054.     Return_Int := 25;
  1055.     Call DELAY_LOOP;
  1056.     IF (Return_Int = 1) THEN
  1057.         Goto SKIP_WINDOW;
  1058.     END;
  1059.  
  1060.     Refresh := False;
  1061.     Int1 := Window_Id;
  1062.     Call MAKE_WINDOW;
  1063.     Int2 := Window_Id;
  1064.     Screen_Num := Screen_Count + 2;
  1065.  
  1066.     Size_Window(5,10,50,21);
  1067.     File_Name := 'MULTI-EDIT';
  1068.     Refresh := True;
  1069.     Switch_Win_Id(Int1);
  1070.     Refresh := True;
  1071.     Switch_Win_Id(Int2);
  1072.     Temp_String := 'up to';
  1073.     Return_Int := 0;
  1074.     Call TYPE_TEXT;
  1075.     IF (Return_Int = 1) THEN
  1076.         Goto SKIP_WINDOW;
  1077.     END;
  1078.     Return_Int := 25;
  1079.     Call DELAY_LOOP;
  1080.     IF (Return_Int = 1) THEN
  1081.         Goto SKIP_WINDOW;
  1082.     END;
  1083.  
  1084.     Refresh := False;
  1085.     Int1 := Window_Id;
  1086.     Call MAKE_WINDOW;
  1087.     Int2 := Window_Id;
  1088.     Screen_Num := Screen_Count + 3;
  1089.  
  1090.     Size_Window(30,10,79,23);
  1091.     File_Name := 'MULTI-EDIT';
  1092.     Refresh := True;
  1093.     Switch_Win_Id(Int1);
  1094.     Refresh := True;
  1095.     Switch_Win_Id(Int2);
  1096.     Temp_String := '100 windows!';
  1097.     Return_Int := 0;
  1098.     Call TYPE_TEXT;
  1099.     IF (Return_Int = 1) THEN
  1100.         Goto SKIP_WINDOW;
  1101.     END;
  1102.     Return_Int := 50;
  1103.     Call DELAY_LOOP;
  1104.     IF (Return_Int = 1) THEN
  1105.         Goto SKIP_WINDOW;
  1106.     END;
  1107.  
  1108.     Type_Str := 'You can switch between windows sequentially...';
  1109.     Return_Str := '/C=26/L=12/#=2/D=100';
  1110.     Call BOXWRAP;
  1111.  
  1112. {
  1113.     Set_Global_Str('ISTR1','You can switch between');
  1114.     Set_Global_Str('ISTR2','windows sequentially...');
  1115.     Return_Str := '/C=26/L=12/#=2/D=100';
  1116.     Call BOXTEXT;
  1117. }
  1118.     IF (Return_Int = 1) THEN
  1119.         Goto SKIP_WINDOW;
  1120.     END;
  1121.     IF (Return_Int = 2) THEN
  1122.         Goto EXIT;
  1123.     END;
  1124.  
  1125.     Int1 := 0;
  1126.     WHILE (Int1 < Win_Count) DO
  1127.         ++Int1
  1128.         Refresh := True;
  1129.         Switch_Win_Id(Parse_Int('/' + Str(Int1) + '=',Win_List));
  1130.         Redraw;
  1131.         Return_Int := 25;
  1132.         Screen_Num := Screen_Count;
  1133.         Call DELAY_LOOP;
  1134.         IF (Return_Int = 1) THEN
  1135.             Goto SKIP_WINDOW;
  1136.         END;
  1137.     END;
  1138.  
  1139.     Type_Str := 'or randomly via our VERSATILE WINDOW LIST!';
  1140.     Return_Str := '/C=16/L=12/#=1/D=100';
  1141.     Call BOXWRAP;
  1142.  
  1143. {
  1144.     Set_Global_Str('ISTR1','or randomly via our VERSATILE WINDOW LIST!');
  1145.     Return_Str := '/C=16/L=12/#=1/D=100';
  1146.     Call BOXTEXT;
  1147. }
  1148.     IF (Return_Int = 1) THEN
  1149.         Goto SKIP_WINDOW;
  1150.     END;
  1151.     IF (Return_Int = 2) THEN
  1152.         Goto EXIT;
  1153.     END;
  1154.  
  1155.     Key_In(<F2><PS500>W<PS500>L<PS500><UP><PS500><UP><PS500><UP><PS500><DN>
  1156. <PS500><DN><PS500><PS><PS><F4><PS1000><PS500><F4><PS1000><PS1000><ESC>);
  1157.  
  1158.     Kill_Box;
  1159.     Refresh := True;
  1160.     Page_Down;
  1161.     Up;
  1162.     Temp_String := 'You can ZOOM a window to full size...';
  1163.     Return_Int := 0;
  1164.     Call TYPE_TEXT;
  1165.     IF (Return_Int = 1) THEN
  1166.         Goto SKIP_WINDOW;
  1167.     END;
  1168.     Return_Int := 50;
  1169.     Call DELAY_LOOP;
  1170.     IF (Return_Int = 1) THEN
  1171.         Goto SKIP_WINDOW;
  1172.     END;
  1173.  
  1174.     Explosions := True;
  1175.     RM('WINDOW^ZOOM');
  1176.     Refresh := True;
  1177.     New_Screen;
  1178.     Explosions := False;
  1179.     Return_Int := 50;
  1180.     Call DELAY_LOOP;
  1181.     IF (Return_Int = 1) THEN
  1182.         Goto SKIP_WINDOW;
  1183.     END;
  1184.  
  1185.     Temp_String := 'and ZOOM back!';
  1186.     Return_Int := 0;
  1187.     Call TYPE_TEXT;
  1188.     IF (Return_Int = 1) THEN
  1189.         Goto SKIP_WINDOW;
  1190.     END;
  1191.     Return_Int := 50;
  1192.     Call DELAY_LOOP;
  1193.     IF (Return_Int = 1) THEN
  1194.         Goto SKIP_WINDOW;
  1195.     END;
  1196.  
  1197.     RM('WINDOW^ZOOM');
  1198.     Refresh := True;
  1199.     New_Screen;
  1200.  
  1201.     Return_Int := 50;
  1202.     Call DELAY_LOOP;
  1203.     IF (Return_Int = 1) THEN
  1204.         Goto SKIP_WINDOW;
  1205.     END;
  1206.  
  1207.     Refresh := False;
  1208.  
  1209.     Type_Str := 'Windows can contain separate files, or can be linked together in order to view/edit different parts of the same file at the same time!';
  1210.     Return_Str := '/C=21/L=11/#=4/D=100';
  1211.     Call BOXWRAP;
  1212.  
  1213. {
  1214.     Set_Global_Str('ISTR1','Windows can contain separate files,');
  1215.     Set_Global_Str('ISTR2','or can be linked together in order');
  1216.     Set_Global_Str('ISTR3','to view/edit different parts of the');
  1217.     Set_Global_Str('ISTR4','same file at the same time!');
  1218.     Return_Str := '/C=21/L=11/#=4/D=100';
  1219.     Call BOXTEXT;
  1220. }
  1221.     IF (Return_Int = 2) THEN
  1222.         Goto EXIT;
  1223.     END;
  1224. SKIP_WINDOW:
  1225.     Call Clean_Up;
  1226.  
  1227.  
  1228. {*UNDO*}
  1229.     Refresh := True;
  1230.     Redraw;
  1231.     Undo_Stat := True;
  1232. {
  1233.     Set_Global_Str('ISTR1','In the UNLIKELY event of a user making');
  1234.     Set_Global_Str('ISTR2','a mistake while editing, Multi-Edit''s');
  1235.     Set_Global_Str('ISTR3','POWERFUL UNDO feature could save hours');
  1236.     Set_Global_Str('ISTR4','of time!  Observe...');
  1237. }
  1238.  
  1239.     Type_Str := 'In the UNLIKELY event of a user making/na mistake while editing, Multi-Edit''s/nPOWERFUL UNDO feature could save hours/nof time!';
  1240.     Return_Str := '/C=19/L=4/#=4/D=50/T=FULL UNDO/NK=1';
  1241.     Call BOXWRAP;
  1242.  
  1243. {
  1244.     Set_Global_Str('ISTR1','In the UNLIKELY event of a user');
  1245.     Set_Global_Str('ISTR2','making a mistake while editing,');
  1246.     Set_Global_Str('ISTR3','Multi-Edit''s POWERFUL UNDO feature');
  1247.     Set_Global_Str('ISTR4','could save hours of time!');
  1248.     Return_Str := '/C=19/L=4/#=4/D=50/T=FULL UNDO/NK=1';
  1249.     Call BOXTEXT;
  1250. }
  1251.     IF (Return_Int = 1) THEN
  1252.         Goto SKIP_UNDO;
  1253.     END;
  1254.     IF (Return_Int = 2) THEN
  1255.         Goto EXIT;
  1256.     END;
  1257. {
  1258. GOTO BYPASS_UNDO;
  1259.  
  1260.     Explosions := False;
  1261.     Size_Window(2,11,78,23);
  1262.     File_Name := 'FAMOUS.PAS';
  1263.     Redraw;
  1264.     Explosions := True;
  1265.     Set_Global_Int('Delay_Speed',0);
  1266.     Temp_String := '{My soon to be famous do everything algorithm}';
  1267.     Return_Int := 0;
  1268.     Call Type_Text;
  1269.     IF (Return_Int = 1) THEN
  1270.         Goto SKIP_UNDO;
  1271.     END;
  1272.     Temp_String := '  While ((X <= Y) or (A < B + (C * T)) and (J <> Q / 3 - Trunc(X * T))) Do';
  1273.     Call Type_Text;
  1274.     IF (Return_Int = 1) THEN
  1275.         Goto SKIP_UNDO;
  1276.     END;
  1277.     Temp_String := '    BEGIN';
  1278.     Call Type_Text;
  1279.     IF (Return_Int = 1) THEN
  1280.         Goto SKIP_UNDO;
  1281.     END;
  1282.     Temp_String := '      Writeln(''I''''m working on it...'');';
  1283.     Call Type_Text;
  1284.     IF (Return_Int = 1) THEN
  1285.         Goto SKIP_UNDO;
  1286.     END;
  1287.     Temp_String := '      A := X * T + (Rnd(Y) / 2.5555643) - (3 * Z);';
  1288.     Call Type_Text;
  1289.     IF (Return_Int = 1) THEN
  1290.         Goto SKIP_UNDO;
  1291.     END;
  1292.     Temp_String := '      Q := (Y + 13.33) * (A - (C * J) / 40);';
  1293.     Call Type_Text;
  1294.     IF (Return_Int = 1) THEN
  1295.         Goto SKIP_UNDO;
  1296.     END;
  1297.     Temp_String := '      Long_String := Concat(What_Strung';
  1298.     Call Type_Text;
  1299.     IF (Return_Int = 1) THEN
  1300.         Goto SKIP_UNDO;
  1301.     END;
  1302.     Up;
  1303.     Eol;
  1304.  
  1305.     Kill_Box;
  1306.     Redraw;
  1307.     Set_Global_Str('ISTR1','If you misspell a word...');
  1308.  
  1309.     Return_Str := '/C=1/L=7/#=1/D=0/T=/NK=1/W=43';
  1310.     Call BOXTEXT;
  1311.  
  1312.     IF (Return_Int = 1) THEN
  1313.         Goto SKIP_UNDO;
  1314.     END;
  1315.     IF (Return_Int = 2) THEN
  1316.         Goto EXIT;
  1317.     END;
  1318.     Put_Box(30,13,41,17,0,M_B_Color,'',False);
  1319.     Write('OH NO!',33,15,0,M_B_Color);
  1320.     Return_Int := 100;
  1321.     Call DELAY_LOOP;
  1322.     IF (Return_Int = 1) THEN
  1323.         Goto SKIP_UNDO;
  1324.     END;
  1325.  
  1326.     Word_Left;
  1327.     Del_Chars(11);
  1328.     Write('Undo deletes it!',30,8,0,M_B_Color or $80);
  1329.  
  1330.     Kill_Box;
  1331.     Return_Int := 50;
  1332.     Call DELAY_LOOP;
  1333.     IF (Return_Int = 1) THEN
  1334.         Goto SKIP_UNDO;
  1335.     END;
  1336.  
  1337.     Temp_String := 'Short_String[Q],Shorter_String[Z]);';
  1338.     Return_Int := 0;
  1339.     Call Type_Text;
  1340.     IF (Return_Int = 1) THEN
  1341.         Goto SKIP_UNDO;
  1342.     END;
  1343.     Temp_String := '    END;';
  1344.     Call Type_Text;
  1345.     IF (Return_Int = 1) THEN
  1346.         Goto SKIP_UNDO;
  1347.     END;
  1348.     Set_Global_Int('Delay_Speed',2);
  1349.  
  1350.     Up; Up; Up; Up; Up; Up;
  1351.  
  1352.     Return_Int := 50;
  1353.     Call DELAY_LOOP;
  1354.  
  1355.     Block_Begin;
  1356.     Kill_Box;
  1357.  
  1358.     Set_Global_Str('ISTR1','If you accidentally move or copy a block...');
  1359.  
  1360.     Return_Str := '/C=1/L=7/#=1/D=0/T=/NK=1/W=63';
  1361.     Call BOXTEXT;
  1362.  
  1363.     IF (Return_Int = 1) THEN
  1364.         Goto SKIP_UNDO;
  1365.     END;
  1366.     IF (Return_Int = 2) THEN
  1367.         Goto EXIT;
  1368.     END;
  1369.  
  1370.     Int1 := 0;
  1371.     WHILE (Int1 < 3) DO
  1372.         Down;
  1373.         Return_Int := 10;
  1374.         Call DELAY_LOOP;
  1375.         IF (Return_Int = 1) THEN
  1376.             Goto SKIP_UNDO;
  1377.         END;
  1378.         ++Int1
  1379.     END;
  1380. {
  1381.     Down;
  1382.     Return_Int := 10;
  1383.     Call DELAY_LOOP;
  1384.     IF (Return_Int = 1) THEN
  1385.         Goto SKIP_UNDO;
  1386.     END;
  1387.  
  1388.     Down;
  1389.     Return_Int := 10;
  1390.     Call DELAY_LOOP;
  1391.     IF (Return_Int = 1) THEN
  1392.         Goto SKIP_UNDO;
  1393.     END;
  1394.  
  1395.     Down;
  1396.     Return_Int := 10;
  1397.     Call DELAY_LOOP;
  1398.     IF (Return_Int = 1) THEN
  1399.         Goto SKIP_UNDO;
  1400.     END;
  1401. }
  1402.     Down;
  1403.     Block_End;
  1404.     Return_Int := 50;
  1405.     Call DELAY_LOOP;
  1406.     IF (Return_Int = 1) THEN
  1407.         Goto SKIP_UNDO;
  1408.     END;
  1409.  
  1410.     Up; Up; Up; Up; Up; Up; Up;
  1411.  
  1412.     Return_Int := 25;
  1413.     Call DELAY_LOOP;
  1414.     IF (Return_Int = 1) THEN
  1415.         Goto SKIP_UNDO;
  1416.     END;
  1417.  
  1418.     Copy_Block;
  1419.     Return_Int := 50;
  1420.     Call DELAY_LOOP;
  1421.     IF (Return_Int = 1) THEN
  1422.         Goto SKIP_UNDO;
  1423.     END;
  1424.  
  1425.     Undo;
  1426.     Write('UNDO can handle it!',47,8,0,M_B_Color or $80);
  1427.     Explosions := True;
  1428.     Return_Int := 100;
  1429.     Call DELAY_LOOP;
  1430.     IF (Return_Int = 1) THEN
  1431.         Goto SKIP_UNDO;
  1432.     END;
  1433.  
  1434.     Down;
  1435.     Return_Int := 50;
  1436.     Call DELAY_LOOP;
  1437.     IF (Return_Int = 1) THEN
  1438.         Goto SKIP_UNDO;
  1439.     END;
  1440.  
  1441.     Block_Begin;
  1442.     Kill_Box;
  1443.  
  1444.     Set_Global_Str('ISTR1','If you accidentally delete a block...');
  1445.  
  1446.     Return_Str := '/C=1/L=7/#=1/D=0/T=/NK=1/W=44';
  1447.     Call BOXTEXT;
  1448.  
  1449.     IF (Return_Int = 1) THEN
  1450.         Goto SKIP_UNDO;
  1451.     END;
  1452.     IF (Return_Int = 2) THEN
  1453.         Goto EXIT;
  1454.     END;
  1455.  
  1456.     Int1 := 0;
  1457.     WHILE (Int1 < 5) DO
  1458.         Down;
  1459.         Return_Int := 10;
  1460.         Call DELAY_LOOP;
  1461.         IF (Return_Int = 1) THEN
  1462.             Goto SKIP_UNDO;
  1463.         END;
  1464.         ++Int1
  1465.     END;
  1466. {
  1467.     Down;
  1468.     Return_Int := 10;
  1469.     Call DELAY_LOOP;
  1470.     IF (Return_Int = 1) THEN
  1471.         Goto SKIP_UNDO;
  1472.     END;
  1473.  
  1474.     Down;
  1475.     Return_Int := 10;
  1476.     Call DELAY_LOOP;
  1477.     IF (Return_Int = 1) THEN
  1478.         Goto SKIP_UNDO;
  1479.     END;
  1480.  
  1481.     Down;
  1482.     Return_Int := 10;
  1483.     Call DELAY_LOOP;
  1484.     IF (Return_Int = 1) THEN
  1485.         Goto SKIP_UNDO;
  1486.     END;
  1487.  
  1488.     Down;
  1489.     Return_Int := 10;
  1490.     Call DELAY_LOOP;
  1491.     IF (Return_Int = 1) THEN
  1492.         Goto SKIP_UNDO;
  1493.     END;
  1494.  
  1495.     Down;
  1496.     Return_Int := 10;
  1497.     Call DELAY_LOOP;
  1498.     IF (Return_Int = 1) THEN
  1499.         Goto SKIP_UNDO;
  1500.     END;
  1501. }
  1502.     Down;
  1503.     Block_End;
  1504.     Return_Int := 50;
  1505.     Call DELAY_LOOP;
  1506.     IF (Return_Int = 1) THEN
  1507.         Goto SKIP_UNDO;
  1508.     END;
  1509.  
  1510.     Delete_Block;
  1511.     Return_Int := 50;
  1512.     Call DELAY_LOOP;
  1513.     IF (Return_Int = 1) THEN
  1514.         Goto SKIP_UNDO;
  1515.     END;
  1516.  
  1517.     Undo;
  1518.     Write('Voila!',41,8,0,M_B_Color or $80);
  1519.     Return_Int := 50;
  1520.     Call DELAY_LOOP;
  1521.     IF (Return_Int = 1) THEN
  1522.         Goto SKIP_UNDO;
  1523.     END;
  1524.  
  1525.     IF (Return_Int = 1) THEN
  1526.         Call CLEAN_UP;
  1527.     END;
  1528.  
  1529.     Write('Voila!',41,8,0,M_B_Color);
  1530. }
  1531. BYPASS_UNDO:
  1532.  
  1533.     Type_Str := 'UNDO can reverse almost any editing operation, up to your last 65,535 changes!';
  1534.     Return_Str := '/C=10/L=9/#=3/D=100/T=/BCOLOR=' + Str(M_H_Color);
  1535.     Call BOXWRAP;
  1536.  
  1537. {
  1538.     Set_Global_Str('ISTR1','UNDO can reverse almost any');
  1539.     Set_Global_Str('ISTR2','editing operation, up to your');
  1540.     Set_Global_Str('ISTR3','last 65,535 changes!');
  1541.     Return_Str := '/C=10/L=9/#=3/D=100/T=/BCOLOR=' + Str(M_H_Color);
  1542.     Call BOXTEXT;
  1543. }
  1544.     IF (Return_Int = 2) THEN
  1545.         Goto EXIT;
  1546.     END;
  1547. SKIP_UNDO:
  1548.     Undo_Stat := False;
  1549.     Set_Global_Int('Delay_Speed',2);
  1550.     Call Clean_Up;
  1551.     Redraw;
  1552.     Refresh := False;
  1553.  
  1554. {*AUTO SAVE*}
  1555.  
  1556.     Type_Str := 'In addition to Undo, another time saving feature is AUTO SAVE.  Files can be automatically saved at a user definable time interval to guard against power outages, system crashes, etc.';
  1557.     Return_Str := '/C=1/L=5/#=3/D=100/T=AUTO SAVE/NK=1';
  1558.     Call BOXWRAP;
  1559.  
  1560. {
  1561.     Set_Global_Str('ISTR1' ,'In addition to Undo, another time saving feature is AUTO SAVE.');
  1562.     Set_Global_Str('ISTR2' ,'Files can be automatically saved at a user definable time');
  1563.     Set_Global_Str('ISTR3' ,'interval to guard against power outages, system crashes, etc.');
  1564.     Return_Str := '/C=1/L=5/#=3/D=100/T=AUTO SAVE/NK=1';
  1565.     Call BOXTEXT;
  1566. }
  1567.     IF (Return_Int = 1) THEN
  1568.         Goto SKIP_KEYSTROKE;
  1569.     END;
  1570.     IF (Return_Int = 2) THEN
  1571.         Goto EXIT;
  1572.     END;
  1573.  
  1574.  
  1575. {*VIRTUAL MEMORY*}
  1576.  
  1577.     Type_Str := 'Users needn''t be concerned about file size with Multi-Edit!  With virtual memory, files are only limited by disk space.  Files can have up to 2 Billion lines.  And it''s all automatic!';
  1578.     Return_Str := '/C=4/L=9/#=3/D=100/T=VIRTUAL MEMORY/NK=1/BCOLOR=' + Str(M_H_Color);
  1579.     Call BOXWRAP;
  1580.  
  1581. {
  1582.     Set_Global_Str('ISTR1' ,'Users needn''t be concerned about file size with Multi-Edit!');
  1583.     Set_Global_Str('ISTR2' ,'With virtual memory, files are only limited by disk space.');
  1584.     Set_Global_Str('ISTR3' ,'Files can have up to 2 Billion lines.  And it''s all automatic!');
  1585.     Return_Str := '/C=4/L=9/#=3/D=100/T=VIRTUAL MEMORY/NK=1/BCOLOR=' + Str(M_H_Color);
  1586.     Call BOXTEXT;
  1587. }
  1588.     IF (Return_Int = 1) THEN
  1589.         Goto SKIP_KEYSTROKE;
  1590.     END;
  1591.     IF (Return_Int = 2) THEN
  1592.         Goto EXIT;
  1593.     END;
  1594.  
  1595. {*KEYSTROKE MACROS*}
  1596.  
  1597.     Type_Str := 'With Multi-Edit''s keystroke macro feature, you can record many keystrokes, then repeat them with a single keystroke!  Keystroke macros may be assigned to any key, saved to disk, and you can create as many as you need.';
  1598.     Return_Str := '/C=7/L=13/#=4/D=100/T=KEYSTROKE MACROS/NK=1';
  1599.     Call BOXWRAP;
  1600.  
  1601. {
  1602.     Set_Global_Str('ISTR1' ,'With Multi-Edit''s keystroke macro feature, you can record');
  1603.     Set_Global_Str('ISTR2' ,'many keystrokes, then repeat them with a single keystroke!');
  1604.     Set_Global_Str('ISTR3' ,'Keystroke macros may be assigned to any key, saved to disk,');
  1605.     Set_Global_Str('ISTR4' ,'and you can create as many as you need.');
  1606.     Return_Str := '/C=7/L=13/#=4/D=100/T=KEYSTROKE MACROS/NK=1';
  1607.     Call BOXTEXT;
  1608. }
  1609.     IF (Return_Int = 1) THEN
  1610.         Goto SKIP_KEYSTROKE;
  1611.     END;
  1612.     IF (Return_Int = 2) THEN
  1613.         Goto EXIT;
  1614.     END;
  1615. SKIP_KEYSTROKE:
  1616.     Call Clean_Up;
  1617.  
  1618.  
  1619. {*BLOCK OPERATIONS*}
  1620.  
  1621.     Int1 := Cur_Window;
  1622.  
  1623.     Size_Window(1,3,40,13);
  1624.     Call MAKE_WINDOW;
  1625. {
  1626.     Create_Window;
  1627.     Screen_Num := 1;
  1628. }
  1629.     Screen_Num := Screen_Count;
  1630.  
  1631.     Int2 := Cur_Window;
  1632.     Size_Window(41,3,80,13);
  1633.     File_Name := 'MULTI-EDIT';
  1634.     Call MAKE_WINDOW;
  1635. {
  1636.     Create_Window;
  1637.     Screen_Num := 1;
  1638. }
  1639.     Screen_Num := Screen_Count;
  1640.  
  1641.     Format_Line := '               ';
  1642. {
  1643.     RM('EXTSETUP');
  1644. }
  1645.     Int3 := Cur_Window;
  1646.     Size_Window(1,14,40,24);
  1647.     File_Name := 'MULTI-EDIT';
  1648.     Call MAKE_WINDOW;
  1649. {
  1650.     Create_Window;
  1651.     Screen_Num := 1;
  1652. }
  1653.     Screen_Num := Screen_Count;
  1654.  
  1655.     Int4 := Cur_Window;
  1656.     Size_Window(41,14,80,24);
  1657.     File_Name := 'MULTI-EDIT';
  1658.     Switch_Window(Int1);
  1659.     Refresh := True;
  1660.     New_Screen;
  1661.     Call WRITE_HELP;
  1662.     Tof;
  1663.     Temp_String := 'With Multi-Edit, blocks of text can';
  1664.     Return_Int := 0;
  1665.     Call Type_Text;
  1666.     IF (Return_Int = 1) THEN
  1667.         Goto SKIP_BLOCK;
  1668.     END;
  1669.     Temp_String := 'be marked for cut and paste by line,';
  1670.     Call Type_Text;
  1671.     IF (Return_Int = 1) THEN
  1672.         Goto SKIP_BLOCK;
  1673.     END;
  1674.     Up; Up;
  1675.  
  1676.     Block_Begin;
  1677.     Down;
  1678.     Block_End;
  1679.     Return_Int := 50;
  1680.     Call DELAY_LOOP;
  1681.     IF (Return_Int = 1) THEN
  1682.         Goto SKIP_BLOCK;
  1683.     END;
  1684.  
  1685.     Down;
  1686.     Temp_String := 'column,';
  1687.     Return_Int := 0;
  1688.     Call Type_Text;
  1689.     IF (Return_Int = 1) THEN
  1690.         Goto SKIP_BLOCK;
  1691.     END;
  1692.     Return_Int := 50;
  1693.     Call DELAY_LOOP;
  1694.     IF (Return_Int = 1) THEN
  1695.         Goto SKIP_BLOCK;
  1696.     END;
  1697.  
  1698.     Up; Up; Up;
  1699.     Goto_Col(5);
  1700.     Col_Block_Begin;
  1701.     Right; Right; Right; Right; Right;
  1702.     Down; Down;
  1703.     Block_End;
  1704.     Return_Int := 50;
  1705.     Call DELAY_LOOP;
  1706.     IF (Return_Int = 1) THEN
  1707.         Goto SKIP_BLOCK;
  1708.     END;
  1709.  
  1710.     Left;
  1711.     Temp_String := 'and stream of text!';
  1712.     Return_Int := 0;
  1713.     Call Type_Text;
  1714.     IF (Return_Int = 1) THEN
  1715.         Goto SKIP_BLOCK;
  1716.     END;
  1717.     Return_Int := 50;
  1718.     Call DELAY_LOOP;
  1719.     IF (Return_Int = 1) THEN
  1720.         Goto SKIP_BLOCK;
  1721.     END;
  1722.  
  1723.     Up; Up;
  1724.     Goto_Col(4);
  1725.     Str_Block_Begin;
  1726.     Down;
  1727.     Temp_Integer := 24;
  1728.     WHILE (Temp_Integer > 0) DO
  1729.         Right;
  1730.         --Temp_Integer;
  1731.     END;
  1732.     Block_End;
  1733.     Return_Int := 50;
  1734.     Call DELAY_LOOP;
  1735.     IF (Return_Int = 1) THEN
  1736.         Goto SKIP_BLOCK;
  1737.     END;
  1738.  
  1739.     Down;
  1740.     Down;
  1741.     Goto_Col(1);
  1742.     Temp_String := 'The blocks can be copied and moved';
  1743.     Return_Int := 0;
  1744.     Call Type_Text;
  1745.     IF (Return_Int = 1) THEN
  1746.         Goto SKIP_BLOCK;
  1747.     END;
  1748.     Temp_String := 'within a window and between windows!';
  1749.     Call Type_Text;
  1750.     IF (Return_Int = 1) THEN
  1751.         Goto SKIP_BLOCK;
  1752.     END;
  1753.     Up;
  1754.     Goto_Col(1);
  1755.     Block_Begin;
  1756.     Up;
  1757.     Block_End;
  1758.     Return_Int := 50;
  1759.     Call DELAY_LOOP;
  1760.     IF (Return_Int = 1) THEN
  1761.         Goto SKIP_BLOCK;
  1762.     END;
  1763.  
  1764.     Down;
  1765.     Down;
  1766.     Down;
  1767.     Down;
  1768.     Copy_Block;
  1769.     Return_Int := 50;
  1770.     Call DELAY_LOOP;
  1771.     IF (Return_Int = 1) THEN
  1772.         Goto SKIP_BLOCK;
  1773.     END;
  1774.  
  1775.     Tof;
  1776.     Goto_Col(7);
  1777.     Col_Block_Begin;
  1778.  
  1779.     Right; Right; Right; Right; Right; Right;
  1780.     Down; Down;
  1781.     Block_End;
  1782.     Return_Int := 50;
  1783.     Call DELAY_LOOP;
  1784.     IF (Return_Int = 1) THEN
  1785.         Goto SKIP_BLOCK;
  1786.     END;
  1787.  
  1788.     Down;
  1789.     Goto_Col(10);
  1790.     Copy_Block;
  1791.     Return_Int := 50;
  1792.     Call DELAY_LOOP;
  1793.     IF (Return_Int = 1) THEN
  1794.         Goto SKIP_BLOCK;
  1795.     END;
  1796.  
  1797.     Block_Begin;
  1798.     Down;
  1799.     Down;
  1800.     Down;
  1801.     Block_End;
  1802.  
  1803.     Return_Int := 50;
  1804.     Call DELAY_LOOP;
  1805.     IF (Return_Int = 1) THEN
  1806.         Goto SKIP_BLOCK;
  1807.     END;
  1808.  
  1809.     Switch_Window(Int2);
  1810.     Window_Move(Int1);
  1811.     Switch_Window(Int1);
  1812.     Redraw;
  1813.     Switch_Window(Int2);
  1814.     Redraw;
  1815.     Return_Int := 50;
  1816.     Call DELAY_LOOP;
  1817.     IF (Return_Int = 1) THEN
  1818.         Goto SKIP_BLOCK;
  1819.     END;
  1820.  
  1821.     Down;
  1822.     Down;
  1823.     Block_Begin;
  1824.     Block_End;
  1825.     Return_Int := 50;
  1826.     Call DELAY_LOOP;
  1827.     IF (Return_Int = 1) THEN
  1828.         Goto SKIP_BLOCK;
  1829.     END;
  1830.  
  1831.     Copy_Block;
  1832.     Return_Int := 50;
  1833.     Call DELAY_LOOP;
  1834.     IF (Return_Int = 1) THEN
  1835.         Goto SKIP_BLOCK;
  1836.     END;
  1837.  
  1838.     Copy_Block;
  1839.     Return_Int := 50;
  1840.     Call DELAY_LOOP;
  1841.     IF (Return_Int = 1) THEN
  1842.         Goto SKIP_BLOCK;
  1843.     END;
  1844.  
  1845.     Block_Begin;
  1846.     Down;
  1847.     Down;
  1848.     Block_End;
  1849.     Return_Int := 50;
  1850.     Call DELAY_LOOP;
  1851.     IF (Return_Int = 1) THEN
  1852.         Goto SKIP_BLOCK;
  1853.     END;
  1854.  
  1855.     Switch_Window(Int3);
  1856.     Return_Int := 50;
  1857.     Call DELAY_LOOP;
  1858.     IF (Return_Int = 1) THEN
  1859.         Goto SKIP_BLOCK;
  1860.     END;
  1861.  
  1862.     Window_Move(Int2);
  1863.     Switch_Window(Int2);
  1864.     Redraw;
  1865.     Switch_Window(Int3);
  1866.     Redraw;
  1867.     Temp_String := 'Blocks can be indented...';
  1868.     Up;
  1869.     Goto_Col(1);
  1870.     Cr;
  1871.     Up;
  1872.     Return_Int := 0;
  1873.     Call Type_Text;
  1874.     IF (Return_Int = 1) THEN
  1875.         Goto SKIP_BLOCK;
  1876.     END;
  1877.     Return_Int := 50;
  1878.     Call DELAY_LOOP;
  1879.     IF (Return_Int = 1) THEN
  1880.         Goto SKIP_BLOCK;
  1881.     END;
  1882.  
  1883.     RM('MEUTIL2^INDBLK');
  1884.     Return_Int := 100;
  1885.     Call DELAY_LOOP;
  1886.     IF (Return_Int = 1) THEN
  1887.         Goto SKIP_BLOCK;
  1888.     END;
  1889.     Temp_String := 'and undented!';
  1890.     Return_Int := 0;
  1891.     Call Type_Text;
  1892.     IF (Return_Int = 1) THEN
  1893.         Goto SKIP_BLOCK;
  1894.     END;
  1895.     Return_Int := 50;
  1896.     Call DELAY_LOOP;
  1897.     IF (Return_Int = 1) THEN
  1898.         Goto SKIP_BLOCK;
  1899.     END;
  1900.  
  1901.     RM('MEUTIL2^UNDBLK');
  1902.     Return_Int := 100;
  1903.     Call DELAY_LOOP;
  1904.     IF (Return_Int = 1) THEN
  1905.         Goto SKIP_BLOCK;
  1906.     END;
  1907.  
  1908.     Switch_Window(Int4);
  1909.     Down;
  1910.     Return_Int := 50;
  1911.     Call DELAY_LOOP;
  1912.     IF (Return_Int = 1) THEN
  1913.         Goto SKIP_BLOCK;
  1914.     END;
  1915.  
  1916.     Window_Copy(Int3);
  1917.     Return_Int := 50;
  1918.     Call DELAY_LOOP;
  1919.     IF (Return_Int = 1) THEN
  1920.         Goto SKIP_BLOCK;
  1921.     END;
  1922.  
  1923.     Temp_String := 'They can also be deleted.';
  1924.     Up;
  1925.     Return_Int := 0;
  1926.     Call Type_TEXT;
  1927.     IF (Return_Int = 1) THEN
  1928.         Goto SKIP_BLOCK;
  1929.     END;
  1930.     Return_Int := 50;
  1931.     Call DELAY_LOOP;
  1932.     IF (Return_Int = 1) THEN
  1933.         Goto SKIP_BLOCK;
  1934.     END;
  1935.  
  1936.     Delete_Block;
  1937.     Redraw;
  1938.     Return_Int := 100;
  1939.     Call DELAY_LOOP;
  1940.  
  1941. SKIP_BLOCK:
  1942.     Refresh := False;
  1943.     Call SPIRAL_WIPE;
  1944.     Call Clean_Up;
  1945.     Refresh := True;
  1946.     Redraw;
  1947.     Refresh := False;
  1948.  
  1949.  
  1950. {*SEARCH AND REPLACE *}
  1951.     Undo_Stat := True;
  1952.     Size_Window(3,12,60,24);
  1953.     Tof;
  1954.  
  1955.     Int1 := 0;
  1956.     WHILE (Int1 < 5) DO
  1957.         Put_Line('Multi-Edit is wonderful!');
  1958.         Down;
  1959.         Put_Line('Multi-Edit is fantastic!');
  1960.         Down;
  1961.         ++Int1;
  1962.     END;
  1963.  
  1964.     Put_Line('Multi-Edit is wonderful!');
  1965.  
  1966.     Tof;
  1967.  
  1968.     Type_Str := 'Multi-Edit has a POWERFUL Search and Replace feature including regular expressions!';
  1969.     Return_Str := '/C=1/L=4/#=2/D=50/NK=1/T=SEARCH AND REPLACE';
  1970.     Call BOXWRAP;
  1971.  
  1972. {
  1973.     Set_Global_Str('ISTR1' ,'Multi-Edit has a POWERFUL Search and Replace');
  1974.     Set_Global_Str('ISTR2' ,'feature including regular expressions!');
  1975.     Return_Str := '/C=1/L=4/#=2/D=50/NK=1/T=SEARCH AND REPLACE';
  1976.     Call BOXTEXT;
  1977. }
  1978.     IF (Return_Int = 1) THEN
  1979.         Goto SKIP_SEARCH;
  1980.     END;
  1981.     IF (Return_Int = 2) THEN
  1982.         Goto EXIT;
  1983.     END;
  1984.  
  1985.     Type_Str := 'As an example, we will search for all occurrences of "fantastic" or "wonderful", and replace them with "supercalafragilisticexpialadoshus".';
  1986.     Return_Str := '/C=4/L=7/#=3/D=100/BCOLOR=' + Str(M_H_Color);
  1987.     Call BOXWRAP;
  1988.  
  1989. {
  1990.     Set_Global_Str('ISTR1' ,'As an example, we will search for all occurrences of');
  1991.     Set_Global_Str('ISTR2' ,'"fantastic" or "wonderful", and replace them with ');
  1992.     Set_Global_Str('ISTR3' ,'"supercalafragilisticexpialadoshus".');
  1993.     Return_Str := '/C=4/L=7/#=3/D=100/BCOLOR=' + Str(M_H_Color);
  1994.     Call BOXTEXT;
  1995. }
  1996.     IF (Return_Int = 1) THEN
  1997.         Goto SKIP_SEARCH;
  1998.     END;
  1999.     IF (Return_Int = 2) THEN
  2000.         Goto EXIT;
  2001.     END;
  2002.     Refresh := True;
  2003.     Redraw;
  2004.  
  2005.     Key_In(<ShftF6><PS500>{fantastic}|{wonderful}<PS500><ENTER><PS500>supercalafr
  2006. agilisticexpialadoshus<PS500><ENTER><DN><PS500>T<PS500><DN><PS500><ENTER><PS500>
  2007. P<PS500>F<PS500><TAB><PS500>F<PS500><TAB><PS500>T<PS500><TAB><PS500>F<PS500>
  2008. <TAB><PS500>F<PS500><TAB><PS500><TAB><PS500><TAB><PS500><ENTER><PS500><ENTER>
  2009. <PS500><ENTER><PS500><ENTER><PS500><ENTER><PS500><ENTER><PS500><ENTER><PS500>
  2010. <ENTER><PS500><ENTER><PS500><ENTER><PS500><ENTER><PS500><ENTER>);
  2011.  
  2012.     Tof;
  2013.     Return_Int := 50;
  2014.     Call DELAY_LOOP;
  2015.     IF (Return_Int = 1) THEN
  2016.         Goto SKIP_SEARCH;
  2017.     END;
  2018.  
  2019.     Type_Str := 'Just in case you don''t like what you''ve changed, don''t forget UNDO!';
  2020.     Return_Str := '/C=3/L=7/#=2/D=50/NK=1';
  2021.     Call BOXWRAP;
  2022.  
  2023. {
  2024.     Set_Global_Str('ISTR1' ,'Just in case you don''t like what');
  2025.     Set_Global_Str('ISTR2' ,'you''ve changed, don''t forget UNDO!');
  2026.     Return_Str := '/C=3/L=7/#=2/D=50/NK=1';
  2027.     Call BOXTEXT;
  2028. }
  2029.     IF (Return_Int = 1) THEN
  2030.         Goto SKIP_SEARCH;
  2031.     END;
  2032.     IF (Return_Int = 2) THEN
  2033.         Goto EXIT;
  2034.     END;
  2035.     Messages := False;
  2036.     Undo;
  2037.     Undo;
  2038. {
  2039.     Tof;
  2040. }
  2041.     Messages := True;
  2042.     Return_Int := 100;
  2043.     Call DELAY_LOOP;
  2044.  
  2045. SKIP_SEARCH:
  2046.     Call Clean_Up;
  2047.     Undo_Stat := False;
  2048.     Refresh := True;
  2049.     Redraw;
  2050.     Refresh := False;
  2051.  
  2052.  
  2053. {*TAB STOPS*}
  2054.  
  2055.     Type_Str := 'With Multi-Edit, you can set tab stops for high level language indenting as well as for documentation with our FULLY EDITABLE format lines!';
  2056.     Return_Str := '/C=19/L=8/#=4/D=20/T=TAB STOPS/NK=1';
  2057.     Call BOXWRAP;
  2058. {
  2059.     Set_Global_Str('ISTR1' ,'With Multi-Edit, you can set tab stops');
  2060.     Set_Global_Str('ISTR2' ,'for high level language indenting as');
  2061.     Set_Global_Str('ISTR3' ,'well as for documentation with our');
  2062.     Set_Global_Str('ISTR4' ,'FULLY EDITABLE format lines!');
  2063.     Return_Str := '/C=19/L=8/#=4/D=20/T=TAB STOPS/NK=1';
  2064.     Call BOXTEXT;
  2065. }
  2066.     IF (Return_Int = 1) THEN
  2067.         Goto SKIP_TAB;
  2068.     END;
  2069.     IF (Return_Int = 2) THEN
  2070.         Goto EXIT;
  2071.     END;
  2072. {
  2073.     Key_In(<F2><PS500>l<PS500>f<PS500> <PS50> <PS50> <PS50> <PS><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><TAB><PS>
  2074. <RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><DEL><PS50><DEL><PS50>
  2075. <DEL><PS><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50> <PS50> <PS><RT><PS50><RT><PS50><RT><PS50>
  2076. <RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50>R<PS1000><PS1000><ESC>);
  2077.  
  2078.     Set_Global_Str('ISTR1' ,'Tabs can be expanded to spaces');
  2079.     Set_Global_Str('ISTR2' ,'to be saved as space characters');
  2080.     Set_Global_Str('ISTR3' ,'or as virtual spaces to be');
  2081.     Set_Global_Str('ISTR4' ,'retained as tab characters!');
  2082.     RM('BOXTEXT /C=22/L=13/#=4/D=100/BCOLOR=' + Str(M_H_Color));
  2083.     IF (Return_Int = 2) THEN
  2084.         Goto EXIT;
  2085.     END;
  2086. }
  2087. SKIP_TAB:
  2088.     Call Clean_Up;
  2089. {
  2090.     New_Screen;
  2091. }
  2092.     Call WRITE_HELP;
  2093.     Refresh := False;
  2094.  
  2095.  
  2096. {*DOCUMENT MODE*}
  2097.     Size_Window(10,15,70,24);
  2098.     Doc_Mode := True;
  2099.     Wrap_Stat := True;
  2100.     Right_Margin := 50;
  2101.     Page_Down;
  2102.     Page_Down;
  2103.     Down;
  2104.     Put_Line('|12');
  2105.     Page_Down;
  2106.     Page_Down;
  2107.     Put_Line('|12');
  2108.     Page_Down;
  2109.     Page_Down;
  2110.     Put_Line('|12');
  2111.     Tof;
  2112.     Indent;
  2113.  
  2114.     Refresh := True;
  2115.     New_Screen;
  2116.  
  2117.     Type_Str := 'Multi-Edit has the most complete set of documentation features available in a text editor.';
  2118.     Return_Str := '/C=1/L=4/#=2/D=50/T=DOCUMENTATION/NK=1';
  2119.     Call BOXWRAP;
  2120.  
  2121.     IF (Return_Int = 1) THEN
  2122.         Goto SKIP_DOCUMENT;
  2123.     END;
  2124.     IF (Return_Int = 2) THEN
  2125.         Goto EXIT;
  2126.     END;
  2127.  
  2128.     Type_Str := 'A Document Display Mode with:';
  2129.     Return_Str := '/C=4/L=7/#=1/D=50/NK=1/H=5/W=42/BCOLOR=' + Str(M_H_Color);
  2130.     Call BOXWRAP;
  2131.  
  2132. {
  2133.     Set_Global_Str('ISTR1' ,'A Document Display Mode with:');
  2134.     Return_Str := '/C=4/L=7/#=1/D=50/NK=1/H=5/W=42/BCOLOR=' + Str(M_H_Color);
  2135.     Call BOXTEXT;
  2136. }
  2137.     IF (Return_Int = 1) THEN
  2138.         Goto SKIP_DOCUMENT;
  2139.     END;
  2140.     IF (Return_Int = 2) THEN
  2141.         Goto EXIT;
  2142.     END;
  2143.  
  2144.     Type_Str := '-Automatic Page Counting';
  2145.     Return_Str := '/C=4/L=8/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2146.     Call BOXWRAP;
  2147.  
  2148. {
  2149.     Set_Global_Str('ISTR1' ,'-Automatic Page Counting');
  2150.     Return_Str := '/C=4/L=8/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2151.     Call BOXTEXT;
  2152. }
  2153.     IF (Return_Int = 1) THEN
  2154.         Goto SKIP_DOCUMENT;
  2155.     END;
  2156.     IF (Return_Int = 2) THEN
  2157.         Goto EXIT;
  2158.     END;
  2159.  
  2160.     TOF;
  2161.     Temp_Integer := 1;
  2162.  
  2163.     While Temp_Integer < 50 DO
  2164.         Down;
  2165.         ++Temp_integer;
  2166.         Return_Int := 2;
  2167.         Call DELAY_LOOP;
  2168.         IF (Return_Int = 1) THEN
  2169.             Goto SKIP_DOCUMENT;
  2170.         END;
  2171.  
  2172.     END;
  2173.  
  2174.     Up; Up; Up; Up; Up;
  2175.     RM('Home');
  2176.     indent;
  2177.  
  2178.     Type_Str := '-Automatic Smart Word Wrap';
  2179.     Return_Str := '/C=4/L=9/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2180.     Call BOXWRAP;
  2181.  
  2182. {
  2183.     Set_Global_Str('ISTR1' ,'-Automatic Smart Word Wrap');
  2184.     Return_Str := '/C=4/L=9/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2185.     Call BOXTEXT;
  2186. }
  2187.     IF (Return_Int = 1) THEN
  2188.         Goto SKIP_DOCUMENT;
  2189.     END;
  2190.     IF (Return_Int = 2) THEN
  2191.         Goto EXIT;
  2192.     END;
  2193.  
  2194.     Temp_String := 'Multi-Edit has the most intelligent word wrap of any text editor on the market today!';
  2195.     Call FUN_WRAP;
  2196.  
  2197.  Key_In(<PS1000><UP><UP><HOME>);
  2198.  Temp_String := 'Wraps even when inserting text! ';
  2199.  Call Fun_wrap;
  2200.  
  2201.     Up;
  2202.     Return_Int := 50;
  2203.     Call DELAY_LOOP;
  2204.     IF (Return_Int = 1) THEN
  2205.         Goto SKIP_DOCUMENT;
  2206.     END;
  2207.  
  2208.     Right_Margin := 40;
  2209.  
  2210.     Type_Str := '-Paragraph Re-formatting';
  2211.     Return_Str := '/C=4/L=10/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2212.     Call BOXWRAP;
  2213.  
  2214. {
  2215.     Set_Global_Str('ISTR1' ,'-Paragraph Re-formatting');
  2216.     Return_Str := '/C=4/L=10/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2217.     Call BOXTEXT;
  2218. }
  2219.     IF (Return_Int = 1) THEN
  2220.         Goto SKIP_DOCUMENT;
  2221.     END;
  2222.     IF (Return_Int = 2) THEN
  2223.         Goto EXIT;
  2224.     END;
  2225.  
  2226.     Mark_Pos;
  2227.     RM('TEXT^REFORMAT');
  2228.     Goto_Mark;
  2229.     Return_Int := 50;
  2230.     Call DELAY_LOOP;
  2231.     IF (Return_Int = 1) THEN
  2232.         Goto SKIP_DOCUMENT;
  2233.     END;
  2234.  
  2235.     Type_Str := 'and Justification';
  2236.     Return_Str := '/C=29/L=10/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2237.     Call BOXWRAP;
  2238.  
  2239. {
  2240.     Set_Global_Str('ISTR1' ,'and Justification');
  2241.     Return_Str := '/C=29/L=10/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2242.     Call BOXTEXT;
  2243. }
  2244.     IF (Return_Int = 1) THEN
  2245.         Goto SKIP_DOCUMENT;
  2246.     END;
  2247.     IF (Return_Int = 2) THEN
  2248.         Goto EXIT;
  2249.     END;
  2250.  
  2251.     RM('TEXT^JUSTIFY');
  2252.     Return_Int := 50;
  2253.     Call DELAY_LOOP;
  2254.     IF (Return_Int = 1) THEN
  2255.         Goto SKIP_DOCUMENT;
  2256.     END;
  2257.  
  2258.     Type_Str := '-Adjustable Margins and Tab Stops';
  2259.     Return_Str := '/C=4/L=11/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2260.     Call BOXWRAP;
  2261.  
  2262. {
  2263.     Set_Global_Str('ISTR1' ,'-Adjustable Margins and Tab Stops');
  2264.     Return_Str := '/C=4/L=11/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color);
  2265.     Call BOXTEXT;
  2266. }
  2267.     IF (Return_Int = 1) THEN
  2268.         Goto SKIP_DOCUMENT;
  2269.     END;
  2270.     IF (Return_Int = 2) THEN
  2271.         Goto EXIT;
  2272.     END;
  2273.  
  2274.     Type_Str := 'A Print Formatter with:/n-Automatic Pagination/n-Automatic Table of Contents generator/n-Bold, Underline, Italics, and Double width/n-Headers/Footers/n-Centering/n-User definable printer drivers/n-and much, much more!';
  2275.     Return_Str := '/C=7/L=13/#=8/D=100';
  2276.     Call BOXWRAP;
  2277.  
  2278. {
  2279.     Set_Global_Str('ISTR1' ,'A Print Formatter with:');
  2280.     Set_Global_Str('ISTR2' ,'-Automatic Pagination');
  2281.     Set_Global_Str('ISTR3' ,'-Automatic Table of Contents generator');
  2282.     Set_Global_Str('ISTR4' ,'-Bold, Underline, Italics, and Double width');
  2283.     Set_Global_Str('ISTR5' ,'-Headers/Footers');
  2284.     Set_Global_Str('ISTR6' ,'-Centering');
  2285.     Set_Global_Str('ISTR7' ,'-User definable printer drivers');
  2286.     Set_Global_Str('ISTR8' ,'-and much, much more!');
  2287.     Return_Str := '/C=7/L=13/#=8/D=100';
  2288.     Call BOXTEXT;
  2289. }
  2290.     IF (Return_Int = 2) THEN
  2291.         Goto EXIT;
  2292.     END;
  2293. SKIP_DOCUMENT:
  2294.     Doc_Mode := False;
  2295.     Call Clean_Up;
  2296.     New_Screen;
  2297.     Call WRITE_HELP;
  2298.     Refresh := False;
  2299.  
  2300.  
  2301. {*LANGUAGE SPECIFIC MACROS*}
  2302.     Type_Str := 'Multi-Edit has language support macros for most of the major programming languages.';
  2303.     Return_Str := '/C=20/L=4/#=2/D=100/T=LANGUAGE SPECIFIC MACROS';
  2304.     Call BOXWRAP;
  2305.  
  2306. {
  2307.     Set_Global_Str('ISTR1' ,'Multi-Edit has language support macros for');
  2308.     Set_Global_Str('ISTR2' ,'most of the major programming languages.');
  2309.     Return_Str := '/C=20/L=4/#=2/D=100/T=LANGUAGE SPECIFIC MACROS';
  2310.     Call BOXTEXT;
  2311. }
  2312.     IF (Return_Int = 1) THEN
  2313.         Goto SKIP_LANGUAGE;
  2314.     END;
  2315.     IF (Return_Int = 2) THEN
  2316.         Goto EXIT;
  2317.     END;
  2318.  
  2319.     Type_Str := 'With Multi-Edit''s template editing macros, you can create common language constructs with a single keystroke!';
  2320.     Return_Str := '/C=9/L=4/#=2/T=TEMPLATE EDITING/NK=1/H=18';
  2321.     Call BOXWRAP;
  2322.  
  2323. {
  2324.     Set_Global_Str('ISTR1' ,'With Multi-Edit''s template editing macros, you can create');
  2325.     Set_Global_Str('ISTR2' ,'common language constructs with a single keystroke!');
  2326.     Return_Str := '/C=9/L=4/#=2/T=TEMPLATE EDITING/NK=1/H=18';
  2327.     Call BOXTEXT;
  2328. }
  2329.  
  2330.  
  2331.     IF (Return_Int = 1) THEN
  2332.         Goto SKIP_LANGUAGE;
  2333.     END;
  2334.     IF (Return_Int = 2) THEN
  2335.         Goto EXIT;
  2336.     END;
  2337.  
  2338.     Set_Global_Int('Delay_Speed',1);
  2339.  
  2340.     Type_Str := '{ PASCAL }/nWhile () Do/n  BEGIN/n/n  END;/n/n/* C *//nwhile () {/n/n}/n/n100 ''BASIC/n110 WHILE/n120/n130 WEND';
  2341.     Return_Str := '/C=18/L=7/#=15/NK=1/NB=1';
  2342.     Call BOXWRAP;
  2343.  
  2344. {
  2345.     Set_Global_Str('ISTR1' ,'{ PASCAL }');
  2346.     Set_Global_Str('ISTR2' ,'While () Do');
  2347.     Set_Global_Str('ISTR3' ,'  BEGIN');
  2348.     Set_Global_Str('ISTR4' ,'');
  2349.     Set_Global_Str('ISTR5' ,'  END;');
  2350.     Set_Global_Str('ISTR6' ,'');
  2351.     Set_Global_Str('ISTR7' ,'/* C */');
  2352.     Set_Global_Str('ISTR8' ,'while () {');
  2353.     Set_Global_Str('ISTR9' ,'');
  2354.     Set_Global_Str('ISTR10','}');
  2355.     Set_Global_Str('ISTR11','');
  2356.     Set_Global_Str('ISTR12','100 ''BASIC');
  2357.     Set_Global_Str('ISTR13','110 WHILE');
  2358.     Set_Global_Str('ISTR14','120');
  2359.     Set_Global_Str('ISTR15','130 WEND');
  2360.     Return_Str := '/C=18/L=7/#=15/NK=1/NB=1';
  2361.     Call BOXTEXT;
  2362. }
  2363.     IF (Return_Int = 1) THEN
  2364.         Goto SKIP_LANGUAGE;
  2365.     END;
  2366.     IF (Return_Int = 2) THEN
  2367.         Goto EXIT;
  2368.     END;
  2369.  
  2370.     Type_Str := '(* Modula-2 *)/nWHILE () DO/n/nEND;/n/n/n* DBase/nDO/n/nEndDO/n/n{ Multi-Edit macro }/nWHILE () DO/n/nEND;';
  2371.     Return_Str := '/C=40/L=7/#=15/NK=1/NB=1/D=300';
  2372.     Call BOXWRAP;
  2373.  
  2374. {
  2375.     Set_Global_Str('ISTR1' ,'(* Modula-2 *)');
  2376.     Set_Global_Str('ISTR2' ,'WHILE () DO');
  2377.     Set_Global_Str('ISTR3' ,'');
  2378.     Set_Global_Str('ISTR4' ,'END;');
  2379.     Set_Global_Str('ISTR5' ,'');
  2380.     Set_Global_Str('ISTR6' ,'');
  2381.     Set_Global_Str('ISTR7' ,'* DBase');
  2382.     Set_Global_Str('ISTR8' ,'DO');
  2383.     Set_Global_Str('ISTR9' ,'');
  2384.     Set_Global_Str('ISTR10','EndDO');
  2385.     Set_Global_Str('ISTR11','');
  2386.     Set_Global_Str('ISTR12','{ Multi-Edit macro }');
  2387.     Set_Global_Str('ISTR13','WHILE () DO');
  2388.     Set_Global_Str('ISTR14','');
  2389.     Set_Global_Str('ISTR15','END;');
  2390.     Return_Str := '/C=40/L=7/#=15/NK=1/NB=1/D=300';
  2391.     Call BOXTEXT;
  2392. }
  2393.     IF (Return_Int = 1) THEN
  2394.         Goto SKIP_LANGUAGE;
  2395.     END;
  2396.     IF (Return_Int = 2) THEN
  2397.         Goto EXIT;
  2398.     END;
  2399.  
  2400.     Set_Global_Int('Delay_Speed',2);
  2401.  
  2402.     Type_Str := 'Template editing macros are completely user definable to fit ANY programming language!';
  2403.     Return_Str := '/C=16/L=10/#=2/D=100/BCOLOR=' + Str(M_H_Color);
  2404.     Call BOXWRAP;
  2405.  
  2406.     IF (Return_Int = 1) THEN
  2407.         Goto SKIP_LANGUAGE;
  2408.     END;
  2409.     IF (Return_Int = 2) THEN
  2410.         Goto EXIT;
  2411.     END;
  2412. {
  2413.     Set_Global_Str('ISTR1' ,'Template editing macros are completely user');
  2414.     Set_Global_Str('ISTR2' ,'definable to fit ANY programming language!');
  2415.     Return_Str := '/C=16/L=10/#=2/D=100/BCOLOR=' + Str(M_H_Color);
  2416.     Call BOXTEXT;
  2417. }
  2418.  
  2419.     Kill_Box;
  2420.  
  2421.     Type_Str := 'With Multi-Edit''s Language Specific Smart Indenting, programmers seldom need to "readjust" the cursor or indent level after a carriage return!';
  2422.     Return_Str := '/C=5/L=6/#=3/D=100/NK=1/T=SMART INDENT';
  2423.     Call BOXWRAP;
  2424.  
  2425.     IF (Return_Int = 1) THEN
  2426.         Goto SKIP_LANGUAGE;
  2427.     END;
  2428.     IF (Return_Int = 2) THEN
  2429.         Goto EXIT;
  2430.     END;
  2431. {
  2432.     Set_Global_Str('ISTR1' ,'With Multi-Edit''s Language Specific Smart Indenting,');
  2433.     Set_Global_Str('ISTR2' ,'programmers seldom need to "readjust" the cursor');
  2434.     Set_Global_Str('ISTR3' ,'or indent level after a carriage return!');
  2435.     Return_Str := '/C=5/L=6/#=3/D=100/NK=1/T=SMART INDENT';
  2436.     Call BOXTEXT;
  2437. }
  2438.  
  2439.     Type_Str := 'Finding the beginning or end of a language construct is easy with our Brace/Construct Matching!';
  2440.     Return_Str := '/C=8/L=10/#=2/D=200/T=BRACE-CONSTRUCT MATCHING/BCOLOR=' + Str(M_H_Color);
  2441.     Call BOXWRAP;
  2442.  
  2443. {
  2444.     Set_Global_Str('ISTR1' ,'Finding the beginning or end of a language construct');
  2445.     Set_Global_Str('ISTR2' ,'is easy with our Brace/Construct Matching!');
  2446.     Return_Str := '/C=8/L=10/#=2/D=200/T=BRACE-CONSTRUCT MATCHING/BCOLOR=' + Str(M_H_Color);
  2447.     Call BOXTEXT;
  2448. }
  2449.     IF (Return_Int = 1) THEN
  2450.         Goto SKIP_LANGUAGE;
  2451.     END;
  2452.     IF (Return_Int = 2) THEN
  2453.         Goto EXIT;
  2454.     END;
  2455.     Kill_Box;
  2456.  
  2457.     Type_Str := 'If you have either the PVCS or TLIB version control systems, Multi-Edit will interface perfectly to either one!';
  2458.     Return_Str := '/C=5/L=6/#=3/D=100/NK=1/T=VERSION CONTROL';
  2459.     Call BOXWRAP;
  2460.     IF (Return_Int = 1) THEN
  2461.         Goto SKIP_LANGUAGE;
  2462.     END;
  2463.     IF (Return_Int = 2) THEN
  2464.         Goto EXIT;
  2465.     END;
  2466.  
  2467. SKIP_LANGUAGE:
  2468.     Call CLEAN_UP;
  2469.     Set_Global_Int('Delay_Speed',2);
  2470.  
  2471. {*CONDENSED MODE*}
  2472.     Size_Window(0,11,81,24);
  2473.     File_Name := 'WHATZIT.C';
  2474.  
  2475.     Type_Str := 'Multi-Edit''s Condensed mode display can turn this...';
  2476.     Return_Str := '/C=11/L=4/#=1/T=CONDENSED MODE/NK=1/H=4';
  2477.     Call BOXWRAP;
  2478. {
  2479.     Set_Global_Str('ISTR1' ,'Multi-Edit''s Condensed mode display can turn this...');
  2480.     Return_Str := '/C=11/L=4/#=1/T=CONDENSED MODE/NK=1/H=4';
  2481.     Call BOXTEXT;
  2482. }
  2483.     IF (Return_Int = 1) THEN
  2484.         Goto SKIP_CONDENSE;
  2485.     END;
  2486.     IF (Return_Int = 2) THEN
  2487.         Goto EXIT;
  2488.     END;
  2489.  
  2490.     Tof;
  2491.     Put_Line('void calc_tot()');
  2492.     Down;
  2493.     Put_Line('{');
  2494.     Down;
  2495.     Put_Line('  int fail_flag, i, j, k, fl, pri, t_cause;');
  2496.     Down;
  2497.     Put_Line('  for (i=0; i<21; i++) {                     /*perform summations if any defined');
  2498.     Down;
  2499.     Put_Line('    strcopy(tmpbuf,paramtrc[i],title);       /*is selected by a title of sum=xxx');
  2500.     Down;
  2501.     Put_Line('    if (strncmp(tmpbuf,"SUM=",4) == 0 {');
  2502.     Down;
  2503.     Put_Line('      prm[i]=0;');
  2504.     Down;
  2505.     Put_Line('      j=4;');
  2506.     Down;
  2507.     Put_Line('      while ((k=tmpbuf[j]) != ''\0'') {        /*parse out rows to add*/');
  2508.     Down;
  2509.     Put_Line('        if ((k != ''+'') && (k != '' '')) {      /*ignore any + signs and blanks*/');
  2510.     Down;
  2511.     Put_Line('          k=toupper(k) - ''0'';                /*convert row number from ASCII*/');
  2512.     Down;
  2513.     Put_Line('        if ((k > 9)');
  2514.     Tof;
  2515.     Refresh := True;
  2516.     Redraw;
  2517.     Return_Int := 150;
  2518.     Call DELAY_LOOP;
  2519.     IF (Return_Int = 1) THEN
  2520.         Goto SKIP_CONDENSE;
  2521.     END;
  2522.  
  2523.     Refresh := False;
  2524.     Write('into this!!',  13,6,0,M_B_Color);
  2525. {
  2526.     Write('L[      ]──────────────────────────CONDENSED',  2,11,0,W_B_Color);
  2527.     Write('000001',4,11,0,W_S_Color);
  2528. }
  2529.     Write('void main( arg1, arg2 )                                                         ',1,12,0,Text_Color);
  2530.     Write('{                                                                               ',1,13,0,Text_Color);
  2531.     Write('}                                                                               ',1,14,0,Text_Color);
  2532.     Write('void Calc_tot()                                                                 ',1,15,0,Text_Color);
  2533.     Write('{                                                                               ',1,16,0,Text_Color);
  2534.     Write('}                                                                               ',1,17,0,Text_Color);
  2535.     Write('int load_file( filename )                                                       ',1,18,0,Text_Color);
  2536.     Write('{                                                                               ',1,19,0,Text_Color);
  2537.     Write('}                                                                               ',1,20,0,Text_Color);
  2538.     Write('int save_file( filename )                                                       ',1,21,0,Text_Color);
  2539.     Write('{                                                                               ',1,22,0,Text_Color);
  2540.     Write('}                                                                               ',1,23,0,Text_Color);
  2541.     Return_Int := 50;
  2542.     Call DELAY_LOOP;
  2543.     IF (Return_Int = 1) THEN
  2544.         Goto SKIP_CONDENSE;
  2545.     END;
  2546.  
  2547.     Type_Str := 'You can then quickly move the cursor through the/nfile.';
  2548.     Return_Str := '/C=11/L=6/#=2/NK=1/NB=1';
  2549.     Call BOXWRAP;
  2550.  
  2551. {
  2552.     Set_Global_Str('ISTR1' ,'You can then quickly move the cursor through the');
  2553.     Set_Global_Str('ISTR2' ,'file.');
  2554.     Return_Str := '/C=11/L=6/#=2/NK=1/NB=1';
  2555.     Call BOXTEXT;
  2556. }
  2557.     IF (Return_Int = 1) THEN
  2558.         Goto SKIP_CONDENSE;
  2559.     END;
  2560.     IF (Return_Int = 2) THEN
  2561.         Goto EXIT;
  2562.     END;
  2563.     GotoXY(1,12);
  2564.     Temp_Integer := 0;
  2565.     WHILE (Temp_Integer < 6) DO
  2566.         Return_Int := 20;
  2567.         Call DELAY_LOOP;
  2568.         IF (Return_Int = 1) THEN
  2569.             Goto SKIP_CONDENSE;
  2570.         END;
  2571.  
  2572.         GotoXY(1,Temp_Integer + 12);
  2573.         Val(Int1,Copy('000100050123055115335749',(Temp_Integer * 4) + 1,4));
  2574.         Put_Line_Num(Int1);
  2575. {
  2576.         Write(Copy('000100050123055115335749',(Temp_Integer * 4) + 1,4),6,11,0,W_S_Color);
  2577. }
  2578.         ++Temp_Integer;
  2579.     END;
  2580.     Return_Int := 100;
  2581.     Call DELAY_LOOP;
  2582.  
  2583. SKIP_CONDENSE:
  2584.     Call CLEAN_UP;
  2585.     Refresh := True;
  2586.     Redraw;
  2587.     Refresh := False;
  2588.  
  2589. {*COMPILATION*}
  2590.  
  2591.     Type_Str := 'Compiling of programs is no problem with Multi-Edit!';
  2592.     Return_Str := '/C=12/L=6/#=1/D=50/T=COMPILATION/NK=1';
  2593.     Call BOXWRAP;
  2594.  
  2595. {
  2596.     Set_Global_Str('ISTR1' ,'Compiling of programs is no problem with Multi-Edit!');
  2597.     Return_Str := '/C=12/L=6/#=1/D=50/T=COMPILATION/NK=1';
  2598.     Call BOXTEXT;
  2599. }
  2600.     IF (Return_Int = 1) THEN
  2601.         Goto SKIP_COMPILE;
  2602.     END;
  2603.     IF (Return_Int = 2) THEN
  2604.         Goto EXIT;
  2605.     END;
  2606.  
  2607.     Type_Str := 'You can compile within the editor... and Multi-Edit will interface to most common compilers for automatic error location in the source!';
  2608.     Return_Str := '/C=19/L=8/#=4/D=100/NK=1/BCOLOR=' + Str(M_H_Color);
  2609.     Call BOXWRAP;
  2610.  
  2611. {
  2612.     Set_Global_Str('ISTR1' ,'You can compile within the editor...');
  2613.     Set_Global_Str('ISTR2' ,'and Multi-Edit will interface to most');
  2614.     Set_Global_Str('ISTR3' ,'common compilers for automatic error');
  2615.     Set_Global_Str('ISTR4' ,'location in the source!');
  2616.     Return_Str := '/C=19/L=8/#=4/D=100/NK=1/BCOLOR=' + Str(M_H_Color);
  2617.     Call BOXTEXT;
  2618. }
  2619.     IF (Return_Int = 1) THEN
  2620.         Goto SKIP_COMPILE;
  2621.     END;
  2622.     IF (Return_Int = 2) THEN
  2623.         Goto EXIT;
  2624.     END;
  2625.  
  2626. SKIP_COMPILE:
  2627.     Call CLEAN_UP;
  2628.  
  2629. {*ASCII TABLE*}
  2630.  
  2631.     Type_Str := 'Three VERY convenient features not found on most other editors are...';
  2632.     Return_Str := '/C=3/L=7/#=1/D=50';
  2633.     Call BOXWRAP;
  2634.  
  2635. {
  2636.     Set_Global_Str('ISTR1' ,'Three VERY convenient features not found on most other editors are...');
  2637.     Return_Str := '/C=3/L=7/#=1/D=50';
  2638.     Call BOXTEXT;
  2639. }
  2640.     IF (Return_Int = 1) THEN
  2641.         Goto SKIP_FEATURES;
  2642.     END;
  2643.     IF (Return_Int = 2) THEN
  2644.         Goto EXIT;
  2645.     END;
  2646.  
  2647.     Type_Str := 'A pop-up ASCII table...';
  2648.     Return_Str := '/C=28/L=9/#=1/D=50';
  2649.     Call BOXWRAP;
  2650.  
  2651. {
  2652.     Set_Global_Str('ISTR1' ,'A pop-up ASCII table...');
  2653.     Return_Str := '/C=28/L=9/#=1/D=50';
  2654.     Call BOXTEXT;
  2655. }
  2656.     IF (Return_Int = 1) THEN
  2657.         Goto SKIP_FEATURES;
  2658.     END;
  2659.     IF (Return_Int = 2) THEN
  2660.         Goto EXIT;
  2661.     END;
  2662.     Key_In(<ALTA><PS1000><DN><PS1000><DN><PS1000><DN><PS1000><ESC>);
  2663.  
  2664. {*LINEDRAW*}
  2665.  
  2666.     Type_Str := 'A LINE/BOX drawing facility...';
  2667.     Return_Str := '/C=28/L=9/#=1/D=50';
  2668.     Call BOXWRAP;
  2669.  
  2670. {
  2671.     Set_Global_Str('ISTR1' ,'A LINE/BOX drawing facility...');
  2672.     Return_Str := '/C=28/L=9/#=1/D=50';
  2673.     Call BOXTEXT;
  2674. }
  2675.     IF (Return_Int = 1) THEN
  2676.         Goto SKIP_FEATURES;
  2677.     END;
  2678.     IF (Return_Int = 2) THEN
  2679.         Goto EXIT;
  2680.     END;
  2681. {
  2682.     Int1 := 29;
  2683.     Int2 := 8;
  2684.     WHILE (Int1 < 50) DO
  2685.         ++Int1;
  2686.         Draw_Char(196,Int1,Int2,W_C_Color,1);
  2687.         GotoXY(Int1,Int2);
  2688.         Return_Int := 1;
  2689.         Call DELAY_LOOP;
  2690.     END;
  2691.     Draw_Char(183,Int1,Int2,W_C_Color,1);
  2692.     WHILE (Int2 < 16) DO
  2693.         ++Int2;
  2694.         Draw_Char(186,Int1,Int2,W_C_Color,1);
  2695.         GotoXY(Int1,Int2);
  2696.         Return_Int := 1;
  2697.         Call DELAY_LOOP;
  2698.     END;
  2699.     Draw_Char(189,Int1,Int2,W_C_Color,1);
  2700.     WHILE (Int1 > 30) DO
  2701.         --Int1;
  2702.         Draw_Char(196,Int1,Int2,W_C_Color,1);
  2703.         GotoXY(Int1,Int2);
  2704.         Return_Int := 1;
  2705.         Call DELAY_LOOP;
  2706.     END;
  2707.     Draw_Char(211,Int1,Int2,W_C_Color,1);
  2708.     WHILE (Int2 > 9) DO
  2709.         --Int2;
  2710.         Draw_Char(186,Int1,Int2,W_C_Color,1);
  2711.         GotoXY(Int1,Int2);
  2712.         Return_Int := 1;
  2713.         Call DELAY_LOOP;
  2714.     END;
  2715.     --int2;
  2716.     Draw_Char(214,Int1,Int2,W_C_Color,1);
  2717.     GotoXY(Int1,Int2);
  2718.     Int1 := 40;
  2719.     Int2 := 8;
  2720.     Draw_Char(194,Int1,Int2,W_C_Color,1);
  2721.     WHILE (Int2 < 15) DO
  2722.         ++Int2;
  2723.         Draw_Char(179,Int1,Int2,W_C_Color,1);
  2724.         GotoXY(Int1,Int2);
  2725.         Return_Int := 1;
  2726.         Call DELAY_LOOP;
  2727.     END;
  2728.     ++Int2;
  2729.     Draw_Char(193,Int1,Int2,W_C_Color,1);
  2730.     GotoXY(Int1,Int2);
  2731.     Int1 := 30;
  2732.     Int2 := 12;
  2733.     Draw_Char(204,Int1,Int2,W_C_Color,1);
  2734.     WHILE (Int1 < 39) DO
  2735.         ++Int1;
  2736.         Draw_Char(205,Int1,Int2,W_C_Color,1);
  2737.         GotoXY(Int1,Int2);
  2738.         Return_Int := 1;
  2739.         Call DELAY_LOOP;
  2740.     END;
  2741.     ++Int1;
  2742.     Draw_Char(216,Int1,Int2,W_C_Color,1);
  2743.     WHILE (Int1 < 49) DO
  2744.         ++Int1;
  2745.         Draw_Char(205,Int1,Int2,W_C_Color,1);
  2746.         GotoXY(Int1,Int2);
  2747.         Return_Int := 1;
  2748.         Call DELAY_LOOP;
  2749.     END;
  2750.     ++Int1;
  2751.     Draw_Char(185,Int1,Int2,W_C_Color,1);
  2752.     GotoXY(Int1,Int2);
  2753. }
  2754.  
  2755. {Because of the mod we made to LINDRAW that prevents keystroke buffer overload,
  2756. this key_in statement will not work unless you put an ignored keystroke in
  2757. between every keystroke.}
  2758.  
  2759.     Key_In(<DN><DN><DN><DN><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT>
  2760. <RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><F2>ol<ShftRT>x
  2761. <ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x
  2762. <ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x
  2763. <F2>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<F2>x
  2764. <F2>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x
  2765. <ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x
  2766. <ShftLF>x<ShftLF>x<F2>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x
  2767. <ShftUP>x<ShftUP>x<RT>x<RT>x<RT>x<RT>x<RT>x<RT>x<RT>x<RT>x<RT>x<RT>x<F2>x<F2>x<ShftDN>x<ShftDN>x
  2768. <ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<LF>x<LF>x<LF>x<LF>x<LF>x<LF>x
  2769. <LF>x<LF>x<LF>x<LF>x<UP>x<UP>x<UP>x<UP>x<F2>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x
  2770. <ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x
  2771. <ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ESC>);
  2772. {
  2773.                              ╓─────────┬─────────╖
  2774.                              ║         │         ║
  2775.                              ║         │         ║
  2776.                              ║         │         ║
  2777.                              ╠═════════╪═════════╣
  2778.                              ║         │         ║
  2779.                              ║         │         ║
  2780.                              ║         │         ║
  2781.                              ╙─────────┴─────────╜
  2782.  
  2783. }
  2784.     Return_Int := 150;
  2785.     Call DELAY_LOOP;
  2786.     IF (Return_Int = 1) THEN
  2787.         Goto SKIP_FEATURES;
  2788.     END;
  2789.     Refresh := True;
  2790.     Erase_Window;
  2791.     Refresh := False;
  2792.  
  2793.  
  2794. {*CALCULATOR*}
  2795.     Set_Global_Str('Calc_Params','/X=20/Y=14/WO=0/LK=0/BASE=10/DPL=0/DPO=0/FS1=/FS2=/FP=0/MEM=0.0000000000/ACC=0.0000000000/ENT=0.0000000000');
  2796.     Temp_Integer := 10;
  2797.     WHILE (Temp_Integer) DO
  2798.         Set_Global_Str('Calc_Tape' + Str(Temp_Integer),'');
  2799.         --Temp_Integer;
  2800.     END;
  2801.  
  2802.     Type_Str := 'And a pop-up Programmer''s Calculator!/nWith all standard math functions.../nincluding memory, and running tape./nWith floating point decimal.../nBinary.../nOctal.../nand Hex!!!';
  2803.     Return_Str := '/C=21/L=4/#=7/D=100';
  2804.     Call BOXWRAP;
  2805.  
  2806. {
  2807.     Set_Global_Str('ISTR1' ,'And a pop-up Programmer''s Calculator!');
  2808.     Set_Global_Str('ISTR2' ,'With all standard math functions...');
  2809.     Set_Global_Str('ISTR3' ,'including memory, and running tape.');
  2810.     Set_Global_Str('ISTR4' ,'With floating point decimal...');
  2811.     Set_Global_Str('ISTR5' ,'Binary...');
  2812.     Set_Global_Str('ISTR6' ,'Octal...');
  2813.     Set_Global_Str('ISTR7' ,'and Hex!!!');
  2814.     Return_Str := '/C=21/L=4/#=7/D=100';
  2815.     Call BOXTEXT;
  2816. }
  2817.     IF (Return_Int = 1) THEN
  2818.         Goto SKIP_FEATURES;
  2819.     END;
  2820.     IF (Return_Int = 2) THEN
  2821.         Goto EXIT;
  2822.     END;
  2823.  
  2824.     Key_In(<AltF2><3><2><7><6><7><PS1000><F7><PS1000><F7><PS1000><F7><PS500>
  2825. <PS1000><F7><PS>+<PS>300.23<PS>=<PS1000><PS1000><PS1000><ESC>);
  2826.  
  2827.     Return_Int := 50;
  2828.     Call DELAY_LOOP;
  2829.  
  2830. SKIP_FEATURES:
  2831.     Call CLEAN_UP;
  2832.  
  2833. SKIP:
  2834. {*INSTALL SCREEN*}
  2835.     Int1 := B_Color;
  2836.     Int2 := T_Color;
  2837.     Int3 := S_Color;
  2838.     Int4 := Stat1_Color;
  2839.     Int5 := Stat2_Color;
  2840.     Int6 := FKey_Color;
  2841.     Int7 := FNum_Color;
  2842.     Int8 := Message_Color;
  2843.  
  2844.     Type_Str := 'With our easy to use install menu, you can quickly change most of the setup parameters of the editor.  For example, you can completely change the foreground and background colors for virtually everything displayed on the screen.';
  2845.     Return_Str := '/C=2/L=4/#=4/D=200/T=INSTALLATION AND SETUP';
  2846.     Call BOXWRAP;
  2847.  
  2848. {
  2849.     Set_Global_Str('ISTR1' ,'With our easy to use install menu, you can quickly change');
  2850.     Set_Global_Str('ISTR2' ,'most of the setup parameters of the editor.  For example,');
  2851.     Set_Global_Str('ISTR3' ,'you can completely change the foreground and background');
  2852.     Set_Global_Str('ISTR4' ,'colors for virtually everything displayed on the screen.');
  2853.     Return_Str := '/C=2/L=4/#=4/D=200/T=INSTALLATION AND SETUP';
  2854.     Call BOXTEXT;
  2855. }
  2856.     IF (Return_Int = 1) THEN
  2857.         Goto SKIP_SETUP;
  2858.     END;
  2859.     IF (Return_Int = 2) THEN
  2860.         Goto EXIT;
  2861.     END;
  2862.  
  2863.     B_Color := 112;
  2864.     T_Color := 112;
  2865.     Stat1_Color := 112;
  2866.     Stat2_Color := 112;
  2867.     FKey_Color := 7;
  2868.     FNum_Color := 112;
  2869.     Message_Color := 112;
  2870.     S_Color := 112;
  2871.     Eof_Color := 112;
  2872.  
  2873.     Refresh := True;
  2874.     New_Screen;
  2875.     Return_Int := 50;
  2876.     Call DELAY_LOOP;
  2877.  
  2878.  
  2879. {
  2880.     Int1 := B_Color;
  2881.     Int2 := S_Color;
  2882.     Int3 := EOF_Color;
  2883.     Int4 := Stat1_Color;
  2884.     Int5 := Stat2_Color;
  2885.     Int6 := FKey_Color;
  2886.     Int7 := FNum_Color;
  2887.     Int8 := Message_Color;
  2888.     Set_Global_Str('ISTR1' ,'With our easy to use install menu, you can quickly change most of the');
  2889.     Set_Global_Str('ISTR2' ,'setup parameters of the editor.  As an example, we look at the color');
  2890.     Set_Global_Str('ISTR3' ,'installation screen, and see the tremendous configurability of both');
  2891.     Set_Global_Str('ISTR4' ,'foreground and background colors for virtually everything on the screen.');
  2892.  
  2893.     Return_Str := '/C=2/L=4/#=4/D=200/T=INSTALLATION AND SETUP/NK=1';
  2894.     Call BOXTEXT;
  2895.  
  2896.     IF (Return_Int = 1) THEN
  2897.         Goto SKIP_SETUP;
  2898.     END;
  2899.     IF (Return_Int = 2) THEN
  2900.         Goto EXIT;
  2901.     END;
  2902.  
  2903.     Key_In(<F2><PS500>i<PS500>c<PS500>w<PS500>
  2904. t<PS500><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><PS500><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT>
  2905. <PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><PS500><ESC><PS500>
  2906. <ESC><PS500>h<PS500>
  2907. o<PS500><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><DN><PS250><PS500><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT>
  2908. <PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><PS500><ESC><PS500>
  2909. <ESC><ESC><ESC>y);
  2910. }
  2911.  
  2912.     Type_Str := 'The changes you make can be effective for the current editing session only, or can be saved permanently!';
  2913.     Return_Str := '/C=18/L=10/#=3/D=100/NK=1/BCOLOR=' + Str(M_H_Color);
  2914.     Call BOXWRAP;
  2915.  
  2916. {
  2917.     Set_Global_Str('ISTR1' ,'The changes you make can be effective');
  2918.     Set_Global_Str('ISTR2' ,'for the current editing session only,');
  2919.     Set_Global_Str('ISTR3' ,'or can be saved permanently!');
  2920.     Return_Str := '/C=18/L=10/#=3/D=100/NK=1/BCOLOR=' + Str(M_H_Color);
  2921.     Call BOXTEXT;
  2922. }
  2923.     IF (Return_Int = 1) THEN
  2924.         Goto SKIP_SETUP;
  2925.     END;
  2926.     IF (Return_Int = 2) THEN
  2927.         Goto EXIT;
  2928.     END;
  2929.     B_Color :=  Int1;
  2930.     T_Color := Int2;
  2931.     S_Color := Int3;
  2932.     Stat1_Color := Int4;
  2933.     Stat2_Color := Int5;
  2934.     FKey_Color := Int6;
  2935.     FNum_Color := Int7;
  2936.     Message_Color := Int8;
  2937.     Eof_Color := T_Eof_Color;
  2938.     T_Color := W_C_Color;
  2939.     W_T_Color := T_Color;
  2940.     W_B_Color := B_Color;
  2941.     W_S_Color := S_Color;
  2942.     D_T_Color := T_Color;
  2943.     D_B_Color := B_Color;
  2944.     D_S_Color := S_Color;
  2945.     H_T_Color := T_Color;
  2946.     H_B_Color := B_Color;
  2947.     H_S_Color := S_Color;
  2948.     H_R_Color := S_Color;
  2949.     Refresh := True;
  2950.     Call CLEAN_UP;
  2951.  
  2952.     New_Screen;
  2953.     Call WRITE_HELP;
  2954.     Refresh := False;
  2955.  
  2956.     Type_Str := 'You can set up two alternate screen configurations, and toggle between the two with a single keystroke!';
  2957.     Return_Str := '/C=4/L=10/#=2/D=100/T=SCREEN SETUP';
  2958.     Call BOXWRAP;
  2959.  
  2960. {
  2961.     Set_Global_Str('ISTR1' ,'You can set up two alternate screen configurations, ');
  2962.     Set_Global_Str('ISTR2' ,'and toggle between the two with a single keystroke!');
  2963.     Return_Str := '/C=4/L=10/#=2/D=100/T=SCREEN SETUP';
  2964.     Call BOXTEXT;
  2965. }
  2966.     IF (Return_Int = 1) THEN
  2967.         Goto SKIP_SETUP;
  2968.     END;
  2969.     IF (Return_Int = 2) THEN
  2970.         Goto EXIT;
  2971.     END;
  2972.  
  2973.     Refresh := True;
  2974.     RM('XZOOM');
  2975.  
  2976.     Type_Str := 'One screen could be configured to display the maximum amount of text lines.';
  2977.     Return_Str := '/C=23/L=10/#=2/D=50';
  2978.     Call BOXWRAP;
  2979.  
  2980. {
  2981.     Set_Global_Str('ISTR1' ,'One screen could be configured to display');
  2982.     Set_Global_Str('ISTR2' ,'the maximum amount of text lines.');
  2983.     Return_Str := '/C=23/L=10/#=2/D=50';
  2984.     Call BOXTEXT;
  2985. }
  2986.     IF (Return_Int = 1) THEN
  2987.         Goto SKIP_SETUP;
  2988.     END;
  2989.     IF (Return_Int = 2) THEN
  2990.         Goto EXIT;
  2991.     END;
  2992.     RM('XZOOM');
  2993.  
  2994.     Type_Str := 'The other could be configured to display all the status lines and function key labels.';
  2995.     Return_Str := '/C=20/L=10/#=2/D=75';
  2996.     Call BOXWRAP;
  2997.  
  2998. {
  2999.     Set_Global_Str('ISTR1' ,'The other could be configured to display all');
  3000.     Set_Global_Str('ISTR2' ,'the status lines and function key labels.');
  3001.     Return_Str := '/C=20/L=10/#=2/D=75';
  3002.     Call BOXTEXT;
  3003. }
  3004.     IF (Return_Int = 1) THEN
  3005.         Goto SKIP_SETUP;
  3006.     END;
  3007.     IF (Return_Int = 2) THEN
  3008.         Goto EXIT;
  3009.     END;
  3010.  
  3011.     Type_Str := 'One of the most VERSATILE and POWERFUL features of the installation menu is the Filename Extension Specific Setup.';
  3012.     Return_Str := '/C=3/L=4/#=3/D=100/T=FILENAME EXTENSION SETUP/NK=1';
  3013.     Call BOXWRAP;
  3014.  
  3015. {
  3016.     Set_Global_Str('ISTR1' ,'One of the most VERSATILE and POWERFUL');
  3017.     Set_Global_Str('ISTR2' ,'features of the installation menu is');
  3018.     Set_Global_Str('ISTR3' ,'the Filename Extension Specific Setup.');
  3019.     Return_Str := '/C=3/L=4/#=3/D=100/T=FILENAME EXTENSION SETUP/NK=1';
  3020.     Call BOXTEXT;
  3021. }
  3022.     IF (Return_Int = 1) THEN
  3023.         Goto SKIP_SETUP;
  3024.     END;
  3025.     IF (Return_Int = 2) THEN
  3026.         Goto EXIT;
  3027.     END;
  3028.  
  3029.     Type_Str := 'For each extension, you can setup many powerful/nparameters, including tab spacing, language,/ncompiler, word wrap; even a special macro to/nautomatically run immediately after file/nloading!';
  3030.     Return_Str := '/C=28/L=8/#=5/D=100/NK=1/BCOLOR=' + Str(M_H_Color);
  3031.     Call BOXWRAP;
  3032.  
  3033. {
  3034.     Set_Global_Str('ISTR1' ,'For each extension, you can setup many powerful');
  3035.     Set_Global_Str('ISTR2' ,'parameters, including tab spacing, language,');
  3036.     Set_Global_Str('ISTR3' ,'compiler, word wrap; even a special macro to');
  3037.     Set_Global_Str('ISTR4' ,'automatically run immediately after file');
  3038.     Set_Global_Str('ISTR5' ,'loading!');
  3039.     Return_Str := '/C=28/L=8/#=5/D=100/NK=1/BCOLOR=' + Str(M_H_Color);
  3040.     Call BOXTEXT;
  3041. }
  3042.     IF (Return_Int = 1) THEN
  3043.         Goto SKIP_SETUP;
  3044.     END;
  3045.     IF (Return_Int = 2) THEN
  3046.         Goto EXIT;
  3047.     END;
  3048.  
  3049.     Key_In(<F2><PS500>i<PS500>f<PS1000><INS><PS500>XXX<PS1000><ENTER><PS500><DN>
  3050. <PS500><ENTER><PS500><ENTER><PS500><DN><PS500><ENTER><PS500><ENTER><PS500><DN>
  3051. <PS500><ENTER><PS500><DN><PS500><DN><PS500><ENTER><PS500><ENTER><PS500><ENTER>
  3052. <PS500><DN><PS500><ENTER><PS500><RT><PS500><RT><PS500><TAB><PS><RT><PS><RT><PS>
  3053. <TAB><PS500><RT><PS><RT><PS><TAB><PS500><RT><PS><RT><PS><RT><PS><RT><PS><RT>
  3054. <PS><TAB><PS1000><ESC><PS500><2><PS500><ENTER><PS500><8><PS500><0><PS500>
  3055. <ENTER><PS500><ENTER><PS500>c<PS1000><ENTER><PS500>PROCESS C<PS1000><ENTER>
  3056. <PS500>C:\PROJECT\CCODE<PS1000><ENTER><PS500>C:\HELP\TURBO_C<.>HLP<PS1000>
  3057. <ENTER><PS500><ENTER><PS500><INS><PS500>TURBO C MAKE<PS1000><ENTER><PS500>
  3058. MAKE <<>FILE<>><.><<>EXT<>><PS1000><ENTER><PS500><ENTER><PS500><ENTER><PS500>
  3059. <DN><PS500><ENTER>turbo c<PS1000><ENTER>
  3060. <PS500><DN><PS500><ENTER><PS500><DN><PS500><ENTER><PS500><DN><PS500><DN><PS500>
  3061. <ESC><PS500><DEL>y<ESC><PS1000><ESC><DEL>y<PS1000><ESC><PS1000><ESC>);
  3062.  
  3063. SKIP_SETUP:
  3064. {
  3065.     B_Color := Int1;
  3066.     S_Color := Int2;
  3067.     EOF_Color := Int3;
  3068.     Stat1_Color := Int4;
  3069.     Stat2_Color := Int5;
  3070.     FKey_Color := Int6;
  3071.     FNum_Color := Int7;
  3072.     Message_Color := Int8;
  3073.     T_Color := W_C_Color;
  3074.     W_T_Color := T_Color;
  3075.     W_B_Color := B_Color;
  3076.     W_S_Color := S_Color;
  3077. }
  3078.  
  3079.     B_Color :=  Int1;
  3080.     T_Color := Int2;
  3081.     S_Color := Int3;
  3082.     Stat1_Color := Int4;
  3083.     Stat2_Color := Int5;
  3084.     FKey_Color := Int6;
  3085.     FNum_Color := Int7;
  3086.     Message_Color := Int8;
  3087.     Eof_Color := T_Eof_Color;
  3088.     Refresh := True;
  3089.     Call CLEAN_UP;
  3090.     Set_Global_Int('CUR_SCRN',Global_Int('DEF_SCRN_STYLE'));
  3091.     RM('SETSCRN');
  3092.     New_Screen;
  3093.     Call WRITE_HELP;
  3094.     Refresh := False;
  3095.     Refresh := False;
  3096.  
  3097. {*DOS SHELL*}
  3098.     Refresh := True;
  3099.     Explosions := True;
  3100.  
  3101.     Type_Str := 'With Multi-Edit, you can access DOS.../nTWO different ways!';
  3102.     Return_Str := '/C=20/L=4/#=2/D=50/NK=1';
  3103.     Call BOXWRAP;
  3104.  
  3105.     IF (Return_Int = 1) THEN
  3106.         Goto SKIP_DOS_SHELL;
  3107.     END;
  3108.     IF (Return_Int = 2) THEN
  3109.         Goto EXIT;
  3110.     END;
  3111.  
  3112.     Type_Str := '1. Run DOS from the editor via <Alt-F3>';
  3113.     Return_Str := '/C=23/L=7/#=1/D=50/NK=1/BCOLOR=' + Str(M_H_Color);
  3114.     Call BOXWRAP;
  3115.  
  3116.     IF (Return_Int = 1) THEN
  3117.         Goto SKIP_DOS_SHELL;
  3118.     END;
  3119.     IF (Return_Int = 2) THEN
  3120.         Goto EXIT;
  3121.     END;
  3122.  
  3123.     Save_Box(1,1,Screen_Width,Screen_Length);
  3124.     Int1 := Status_Row;
  3125.     Int2 := FKey_Row;
  3126.     Status_Row := 0;
  3127.     FKey_Row := 0;
  3128.     Refresh := False;
  3129.     Rest_Dos_Screen;
  3130.     Shell_To_Dos('DIR',True);
  3131.     Delay(3000 + Processor_Comp);
  3132.     Status_Row := Int1;
  3133.     FKey_Row := Int2;
  3134.     Refresh := True;
  3135.  
  3136.     Kill_Box;
  3137.  
  3138. {
  3139.     Kill_Box;
  3140.     Kill_Box;
  3141.     New_Screen;
  3142.  
  3143.     Explosions := False;
  3144.     Put_Box(20,4,63,8,0,M_B_Color,'',True);
  3145.     Write('With Multi-Edit, you can access DOS...',22,5,0,M_B_Color);
  3146.     Write('TWO different ways!',22,6,0,M_B_Color);
  3147.     Put_Box(23,7,67,10,0,M_H_Color,'',True);
  3148.     Write('1. Run DOS from the editor via <Alt-F3>',25,8,0,M_H_Color);
  3149.     Explosions := True;
  3150. }
  3151.     Return_Int := 30;
  3152.     Call DELAY_LOOP;
  3153.     IF (Return_Int = 1) THEN
  3154.         Goto SKIP_DOS_SHELL;
  3155.     END;
  3156.  
  3157.     Type_Str := '2. Use our POWERFUL DOS SHELL';
  3158.     Return_Str := '/C=26/L=9/#=1/D=150/NK=1';
  3159.     Call BOXWRAP;
  3160.  
  3161.     IF (Return_Int = 1) THEN
  3162.         Goto SKIP_DOS_SHELL;
  3163.     END;
  3164.     IF (Return_Int = 2) THEN
  3165.         Goto EXIT;
  3166.     END;
  3167.  
  3168.     Kill_Box;
  3169.     Kill_Box;
  3170.     Kill_Box;
  3171.  
  3172.     mode := dos_shell;
  3173.  
  3174. Refresh := True;
  3175.  
  3176.     RM('DIRSHELL^INITDIRSHELL');
  3177.     set_global_int('@DIR_CUR_DIR@', 1);
  3178.  
  3179.     IF (Dir_Active(1)) THEN
  3180.         Switch_Dir(1);
  3181.     ELSE
  3182.         open_dir(1);
  3183.     END;
  3184.     Dir_Mode := 1;
  3185.  
  3186.  
  3187.     Temp_Integer := 1;
  3188.     WHILE (Temp_Integer < 20) DO
  3189.         FLABEL(Copy('Help  ChDir DeleteCopy  RenameDir OfCMD   Print Load  Sort              MrkDelMrkCpy                  MrkPrt            '
  3190.         ,((Temp_Integer - 1) * 6) + 1,6),Temp_Integer,Dos_Shell);
  3191.         ++ Temp_Integer;
  3192.     END;
  3193.  
  3194.     size_dir(1,3,47,12,1);
  3195.     open_dir(2);
  3196.     size_dir(1,13,47,24,1);
  3197.     Dir_Mode := 0;
  3198.  
  3199.     RM('DIRSHELL^UpdateDir /M=3/NH=1');
  3200.  
  3201.     Type_Str := 'Up to 4 directories can be/ndisplayed in 2 different/nformats!';
  3202.     Return_Str := '/C=48/L=3/#=3/T=DOS SHELL/NK=1/NS=1/W=29';
  3203.     Call BOXWRAP;
  3204.  
  3205.     IF (Return_Int = 1) THEN
  3206.         Goto SKIP_DOS_SHELL;
  3207.     END;
  3208.     IF (Return_Int = 2) THEN
  3209.         Goto EXIT;
  3210.     END;
  3211.     Temp_Integer := 18;
  3212.     WHILE (Temp_Integer > 5) DO
  3213.      {    Make_message('First=' + Str(Cur_Dir));}
  3214.         DOS_RIGHT;
  3215.         Return_Int := 10;
  3216.         call DELAY_LOOP;
  3217.         IF (Return_Int = 1) THEN
  3218.             Goto SKIP_DOS_SHELL;
  3219.         END;
  3220.         --Temp_Integer;
  3221.     END;
  3222.     WHILE (Temp_Integer > 0) DO
  3223.      {    Make_message('First=' + Str(Cur_Dir)); }
  3224.         DOS_Up;
  3225.         Return_Int := 10;
  3226.         Call DELAY_LOOP;
  3227.         IF (Return_Int = 1) THEN
  3228.             Goto SKIP_DOS_SHELL;
  3229.         END;
  3230.         --Temp_Integer;
  3231.     END;
  3232.  
  3233.     RM('DIRSHELL^DIRWINDOW');
  3234.  
  3235.  
  3236.     Temp_Integer := 15;
  3237.     WHILE (Temp_Integer > 5) DO
  3238.       {    Make_message('Second=' + Str(Cur_Dir)); }
  3239.         DOS_Down;
  3240.         Return_Int := 10;
  3241.         Call DELAY_LOOP;
  3242.         IF (Return_Int = 1) THEN
  3243.             Goto SKIP_DOS_SHELL;
  3244.         END;
  3245.         --Temp_Integer;
  3246.     END;
  3247.     WHILE (Temp_Integer > 0) DO
  3248.       {    Make_message('Second=' + Str(Cur_Dir)); }
  3249.         DOS_Up;
  3250.         Return_Int := 10;
  3251.         Call DELAY_LOOP;
  3252.         IF (Return_Int = 1) THEN
  3253.             Goto SKIP_DOS_SHELL;
  3254.         END;
  3255.         --Temp_Integer;
  3256.     END;
  3257.  
  3258.     Type_Str := 'Directory listings can be/nsorted by.../n    -Name/n    -Extension/n    -Size/n    -Date/n    -Time/nor any combination of the/nabove, in ascending, or/ndescending order!';
  3259.     Return_Str := '/C=48/L=8/#=10/NK=1/NS=1/D=50/W=29/BCOLOR=' + Str(M_H_Color);
  3260.     Call BOXWRAP;
  3261.  
  3262. {
  3263.     Set_Global_Str('ISTR1' ,'Directory listings can be');
  3264.     Set_Global_Str('ISTR2' ,'sorted by...');
  3265.     Set_Global_Str('ISTR3' ,'    -Name');
  3266.     Set_Global_Str('ISTR4' ,'    -Extension');
  3267.     Set_Global_Str('ISTR5' ,'    -Size');
  3268.     Set_Global_Str('ISTR6' ,'    -Date');
  3269.     Set_Global_Str('ISTR7' ,'    -Time');
  3270.     Set_Global_Str('ISTR8' ,'or any combination of the');
  3271.     Set_Global_Str('ISTR9' ,'above, in ascending, or');
  3272.     Set_Global_Str('ISTR10','descending order!');
  3273.     Return_Str := '/C=48/L=8/#=10/NK=1/NS=1/D=50/W=29/BCOLOR=' + Str(M_H_Color);
  3274.     Call BOXTEXT;
  3275. }
  3276.     IF (Return_Int = 1) THEN
  3277.         Goto SKIP_DOS_SHELL;
  3278.     END;
  3279.     IF (Return_Int = 2) THEN
  3280.         Goto EXIT;
  3281.     END;
  3282.  
  3283.     Dir_Sort_Str := 'N';
  3284.     Set_Global_Str('DIR_SORT_STR', Dir_Sort_Str );
  3285.  
  3286.     Dir( dir_mask );
  3287.  
  3288.     RM('DIRSHELL^UpdateDir /M=0');
  3289.     dos_home;
  3290.     Return_Int := 50;
  3291.     Call DELAY_LOOP;
  3292.     IF (Return_Int = 1) THEN
  3293.         Goto SKIP_DOS_SHELL;
  3294.     END;
  3295.  
  3296.     Type_Str := 'Files can be marked for load, copy, print, or delete!';
  3297.     Return_Str := '/C=48/L=20/#=2/NK=1/NS=1';
  3298.     Call BOXWRAP;
  3299.  
  3300. {
  3301.     Set_Global_Str('ISTR1' ,'Files can be marked for load,');
  3302.     Set_Global_Str('ISTR2' ,'copy, print, or delete!');
  3303.     Return_Str := '/C=48/L=20/#=2/NK=1/NS=1';
  3304.     Call BOXTEXT;
  3305. }
  3306.     IF (Return_Int = 1) THEN
  3307.         Goto SKIP_DOS_SHELL;
  3308.     END;
  3309.     IF (Return_Int = 2) THEN
  3310.         Goto EXIT;
  3311.     END;
  3312.  
  3313.     Dos_Down;
  3314.     Int1 := 0;
  3315.     WHILE (Int1 < 4) DO
  3316.         Return_Int := 15;
  3317.         Call DELAY_LOOP;
  3318.         IF (Return_Int = 1) THEN
  3319.             Goto SKIP_DOS_SHELL;
  3320.         END;
  3321.         Mark_File;
  3322.         Dos_Down;
  3323.         ++Int1;
  3324.     END;
  3325.     Int1 := 0;
  3326.     WHILE (Int1 < 3) DO
  3327.         Dos_Up;
  3328.         Return_Int := 15;
  3329.         Call DELAY_LOOP;
  3330.         IF (Return_Int = 1) THEN
  3331.             Goto SKIP_DOS_SHELL;
  3332.         END;
  3333.         ++Int1;
  3334.     END;
  3335.     Mark_File;
  3336.     Dos_Down;
  3337.     Return_Int := 25;
  3338.     Call DELAY_LOOP;
  3339.     IF (Return_Int = 1) THEN
  3340.         Goto SKIP_DOS_SHELL;
  3341.     END;
  3342.     Mark_File;
  3343.     Return_Int := 50;
  3344.     Call DELAY_LOOP;
  3345.     IF (Return_Int = 1) THEN
  3346.         Goto SKIP_DOS_SHELL;
  3347.     END;
  3348.  
  3349.     Kill_Box;
  3350.     Kill_Box;
  3351.     Kill_Box;
  3352.  
  3353.     Type_Str := 'With just a few keystrokes,/nyou can.../n    -Load multiple files/n    -Copy multiple files/n    -Delete multiple files/n    -Print multiple files/n    -Display any directory/n    -Change directories/n    -Rename a file/n' +
  3354.                             '    -Run any DOS command/n    -Run any program';
  3355.     Return_Str := '/C=48/L=3/#=11/D=50/T=DOS SHELL/NK=1/NS=1/W=29';
  3356.     Call BOXWRAP;
  3357.  
  3358. {
  3359.     Set_Global_Str('ISTR1' ,'With just a few keystrokes,');
  3360.     Set_Global_Str('ISTR2' ,'you can...');
  3361.     Set_Global_Str('ISTR3' ,'    -Load multiple files');
  3362.     Set_Global_Str('ISTR4' ,'    -Copy multiple files');
  3363.     Set_Global_Str('ISTR5' ,'    -Delete multiple files');
  3364.     Set_Global_Str('ISTR6' ,'    -Print multiple files');
  3365.     Set_Global_Str('ISTR7' ,'    -Display any directory');
  3366.     Set_Global_Str('ISTR8' ,'    -Change directories');
  3367.     Set_Global_Str('ISTR9' ,'    -Rename a file');
  3368.     Set_Global_Str('ISTR10','    -Run any DOS command');
  3369.     Set_Global_Str('ISTR11','    -Run any program');
  3370.     Return_Str := '/C=48/L=3/#=11/D=50/T=DOS SHELL/NK=1/NS=1/W=29';
  3371.     Call BOXTEXT;
  3372.  }
  3373.     IF (Return_Int = 1) THEN
  3374.         Goto SKIP_DOS_SHELL;
  3375.     END;
  3376.     IF (Return_Int = 2) THEN
  3377.         Goto EXIT;
  3378.     END;
  3379.  
  3380.     Type_Str := 'While running DOS, if EMS memory is available, Multi-Edit will swap to it to free up maximum space to run programs!';
  3381.     Return_Str := '/C=20/L=10/#=3/D=150/NK=1/BCOLOR=' + Str(M_H_Color);
  3382.     Call BOXWRAP;
  3383.  
  3384. {
  3385.     Set_Global_Str('ISTR1' ,'While running DOS, if EMS memory is');
  3386.     Set_Global_Str('ISTR2' ,'available, Multi-Edit will swap to it to');
  3387.     Set_Global_Str('ISTR3' ,'free up maximum space to run programs!');
  3388.     Return_Str := '/C=20/L=10/#=3/D=150/NK=1/BCOLOR=' + Str(M_H_Color);
  3389.     Call BOXTEXT;
  3390. }
  3391.     IF (Return_Int = 2) THEN
  3392.         Goto EXIT;
  3393.     END;
  3394.  
  3395. SKIP_DOS_SHELL:
  3396.     Call CLEAN_UP;
  3397.     If (Mode = Dos_Shell) Then
  3398.         IF (Dir_Active(2)) THEN
  3399.             RM('DIRSHELL^DIRWINDOW');
  3400.         END;
  3401.         close_dir(2);
  3402.         close_dir(1);
  3403.         Mode := EDIT;
  3404.     End;
  3405.     Refresh := True;
  3406.     Redraw;
  3407.     Refresh := False;
  3408.  
  3409.  
  3410. {*MACRO LANGUAGE*}
  3411.  
  3412.     Type_Str := 'Probably the most important feature of Multi-Edit is its extensibility.  With the Multi-Edit macro language, you can create virtually any function you need!';
  3413.     Return_Str := '/C=2/L=3/#=3/T=MULTI-EDIT MACRO LANGUAGE/NS=1/H=20/W=74/NK=1';
  3414.     Call BOXWRAP;
  3415.  
  3416. {
  3417.     Set_Global_Str('ISTR1' ,'Probably the most important feature of Multi-Edit is its extensibility.');
  3418.     Set_Global_Str('ISTR2' ,'With the Multi-Edit macro language, you can create virtually any function');
  3419.     Set_Global_Str('ISTR3' ,'you need!');
  3420.     Return_Str := '/C=2/L=3/#=3/T=MULTI-EDIT MACRO LANGUAGE/NS=1/H=20/W=74/NK=1';
  3421.     Call BOXTEXT;
  3422. }
  3423.     IF (Return_Int = 1) THEN
  3424.         Goto SKIP_MACRO;
  3425.     END;
  3426.     IF (Return_Int = 2) THEN
  3427.         Goto EXIT;
  3428.     END;
  3429.  
  3430.     Type_Str := '  $Macro Bracecnt;/n    Def_Int(Count);                           { Declare integer variable }/n/n    While Search_Fwd(''[{}]'',0) DO                { Look for ''{'' or ''}'' }/n' +
  3431.                             '      If Cur_Char = ''{'' THEN                { Determine which char found }/n        ++Count;                        { Increment count if char is ''{'' }/n      ELSE/n' +
  3432.                             '        --Count;                        { Decrement count if char is ''}'' }/n      END;/n      Right;/n    END;/n    Make_Message(''Excess { Count = '' + Str(Count));     { Display result }/n  End_Macro;';
  3433.     Set_Global_Int('Delay_Speed',0);
  3434.     Return_Str := '/C=2/L=7/#=13/NB=1/NK=1';
  3435.     Call BOXWRAP;
  3436.  
  3437. {
  3438.     Set_Global_Str('ISTR1' ,'  $Macro Bracecnt;');
  3439.     Set_Global_Str('ISTR2' ,'    Def_Int(Count);                           { Declare integer variable }');
  3440.     Set_Global_Str('ISTR3' ,'');
  3441.     Set_Global_Str('ISTR4' ,'    While Search_Fwd(''[{}]'',0) DO                { Look for ''{'' or ''}'' }');
  3442.     Set_Global_Str('ISTR5' ,'      If Cur_Char = ''{'' THEN                { Determine which char found }');
  3443.     Set_Global_Str('ISTR6' ,'        ++Count;                        { Increment count if char is ''{'' }');
  3444.     Set_Global_Str('ISTR7' ,'      ELSE');
  3445.     Set_Global_Str('ISTR8' ,'        --Count;                        { Decrement count if char is ''}'' }');
  3446.     Set_Global_Str('ISTR9' ,'      END;');
  3447.     Set_Global_Str('ISTR10','      Right;');
  3448.     Set_Global_Str('ISTR11','    END;');
  3449.     Set_Global_Str('ISTR12','    Make_Message(''Excess { Count = '' + Str(Count));     { Display result }');
  3450.     Set_Global_Str('ISTR13','  End_Macro;');
  3451.     Set_Global_Int('Delay_Speed',0);
  3452.     Return_Str := '/C=2/L=7/#=13/NB=1/NK=1';
  3453.     Call BOXTEXT;
  3454.  }
  3455.     IF (Return_Int = 1) THEN
  3456.         Goto SKIP_MACRO;
  3457.     END;
  3458.     IF (Return_Int = 2) THEN
  3459.         Goto EXIT;
  3460.     END;
  3461.  
  3462.     Type_Str := 'Virtually all editor functions can be accessed through the macro language.  Not only is this demo written in it, but so is the ENTIRE USER INTERFACE!';
  3463.     Set_Global_Int('Delay_Speed',2);
  3464.     Return_Str := '/C=2/L=21/#=2/NB=1/D=100';
  3465.     Call BOXWRAP;
  3466.  
  3467. {
  3468.     Set_Global_Str('ISTR1' ,'Virtually all editor functions can be accessed through the macro language.');
  3469.     Set_Global_Str('ISTR2' ,'Not only is this demo written in it, but so is the ENTIRE USER INTERFACE!');
  3470.     Set_Global_Int('Delay_Speed',2);
  3471.     Return_Str := '/C=2/L=21/#=2/NB=1/D=100';
  3472.     Call BOXTEXT;
  3473. }
  3474.     IF (Return_Int = 2) THEN
  3475.         Goto EXIT;
  3476.     END;
  3477.  
  3478. SKIP_MACRO:
  3479.     Call CLEAN_UP;
  3480.     Set_Global_Int('Delay_Speed',2);
  3481.  
  3482. {*MULTI-EDIT PROFESSIONAL*}
  3483.  
  3484.     Type_Str := 'Multi-Edit now has an extended version package with 4 great new features.  It''s called Multi-Edit Professional.';
  3485.     Return_Str := '/C=8/L=5/#=2/D=100/T=MULTI-EDIT PROFESSIONAL';
  3486.     Call BOXWraP;
  3487.  
  3488. {
  3489.     Set_Global_Str('ISTR1','Multi-Edit now has an extended version package with 4 great');
  3490.     Set_Global_Str('ISTR2','new features.  It''s called Multi-Edit Professional.');
  3491.     Return_Str := '/C=8/L=5/#=2/D=100/T=MULTI-EDIT PROFESSIONAL';
  3492.     Call BOXTEXT;
  3493. }
  3494.     IF (Return_Int = 1) THEN
  3495.         Goto SKIP_PROFESSIONAL;
  3496.     END;
  3497.     IF (Return_Int = 2) THEN
  3498.         Goto EXIT;
  3499.     END;
  3500.  
  3501.     Type_Str := 'For those who want the ultimate in customization capability, to study the macro language "in depth" and learn all the "tricks", or are just plain curious about how the user interface works,  Multi-Edit Professional includes the full' +
  3502.                             ' source code to ALL the user interface macros!';
  3503.     Return_Str := '/C=1/L=3/#=4/D=100/T=MULTI-EDIT PROFESSIONAL MACRO SOURCE/NK=1/BCOLOR=' + Str(M_H_Color);
  3504.     Call BOXWRAP;
  3505.  
  3506. {
  3507.     Set_Global_Str('ISTR1','For those who want the ultimate in customization capability, to study');
  3508.     Set_Global_Str('ISTR2','the macro language "in depth" and learn all the "tricks", or are just');
  3509.     Set_Global_Str('ISTR3','plain curious about how the user interface works,  Multi-Edit Professional');
  3510.     Set_Global_Str('ISTR4','includes the full source code to ALL the user interface macros!');
  3511.     Return_Str := '/C=1/L=3/#=4/D=100/T=MULTI-EDIT PROFESSIONAL MACRO SOURCE/NK=1/BCOLOR=' + Str(M_H_Color);
  3512.     Call BOXTEXT;
  3513. }
  3514.     IF (Return_Int = 1) THEN
  3515.         Goto SKIP_PROFESSIONAL;
  3516.     END;
  3517.     IF (Return_Int = 2) THEN
  3518.         Goto EXIT;
  3519.     END;
  3520.  
  3521.  
  3522.     Type_Str := 'As the perfect complement to the macro source, or as a terrific aid in developing your own macros, Multi-Edit Professional includes an integrated source level Macro Debugger.';
  3523.     Return_Str := '/C=3/L=8/#=3/D=100/T=MULTI-EDIT PROFESSIONAL MACRO DEBUGGER';
  3524.     Call BOXWRAP;
  3525.  
  3526. {
  3527.     Set_Global_Str('ISTR1','As the perfect complement to the macro source, or as a terrific');
  3528.     Set_Global_Str('ISTR2','aid in developing your own macros, Multi-Edit Professional');
  3529.     Set_Global_Str('ISTR3','includes an integrated source level Macro Debugger.');
  3530.     Return_Str := '/C=3/L=8/#=3/D=100/T=MULTI-EDIT PROFESSIONAL MACRO DEBUGGER';
  3531.     Call BOXTEXT;
  3532. }
  3533.     IF (Return_Int = 1) THEN
  3534.         Goto SKIP_PROFESSIONAL;
  3535.     END;
  3536.     IF (Return_Int = 2) THEN
  3537.         Goto EXIT;
  3538.     END;
  3539.     Kill_Box;
  3540.  
  3541.     Type_Str := 'Multi-Edit Professional''s Spell Checker features a 80,000+ word main dictionary, with the capability of 2 auxiliary dictionaries.  When a non-recognized word is found, you can choose between ignoring the word, editing the word,' +
  3542.                             ' bringing up a table of suggested alternate spellings, or adding the word to one of the auxiliary dictionaries!';
  3543.     Return_Str := '/C=1/L=3/#=5/D=100/T=MULTI-EDIT PROFESSIONAL SPELL CHECKER/NK=1';
  3544.     Call BOXWRAP;
  3545.  
  3546. {
  3547.     Set_Global_Str('ISTR1','Multi-Edit Professional''s Spell Checker features a 80,000+ word main');
  3548.     Set_Global_Str('ISTR2','dictionary, with the capability of 2 auxiliary dictionaries.  When');
  3549.     Set_Global_Str('ISTR3','a non-recognized word is found, you can choose between ignoring the');
  3550.     Set_Global_Str('ISTR4','word, editing the word, bringing up a table of suggested alternate');
  3551.     Set_Global_Str('ISTR5' ,'spellings, or adding the word to one of the auxiliary dictionaries!');
  3552.     Return_Str := '/C=1/L=3/#=5/D=100/T=MULTI-EDIT PROFESSIONAL SPELL CHECKER/NK=1';
  3553.     Call BOXTEXT;
  3554. }
  3555.     IF (Return_Int = 1) THEN
  3556.         Goto SKIP_PROFESSIONAL;
  3557.     END;
  3558.     IF (Return_Int = 2) THEN
  3559.         Goto EXIT;
  3560.     END;
  3561.  
  3562.     Type_Str := 'Multi-Edit Professional''s Communications Module is a seamlessly integrated communications package.  It features terminal emulation, downloading, uploading, automatic and manual phone dialing with redial, and much more! All features ' +
  3563.                             'are written in the macro language and the source code is included.  Customization is easy with the Multi-Edit macro language, and NO other communications "script" language even comes close to its power and ease of use!';
  3564.     Return_Str := '/C=1/L=9/#=7/D=100/T=MULTI-EDIT PROFESSIONAL COMMUNICATIONS MODULE/NK=1/BCOLOR=' + Str(M_H_Color);
  3565.     Call BOXWRAP;
  3566.  
  3567. {
  3568.     Set_Global_Str('ISTR1','Multi-Edit Professional''s Communications Module is a seamlessly integrated');
  3569.     Set_Global_Str('ISTR2','communications package.  It features terminal emulation, downloading,');
  3570.     Set_Global_Str('ISTR3','uploading, automatic and manual phone dialing with redial, and much more!');
  3571.     Set_Global_Str('ISTR4','All features are written in the macro language and the source code is');
  3572.     Set_Global_Str('ISTR5','included.  Customization is easy with the Multi-Edit macro language, and');
  3573.     Set_Global_Str('ISTR6','NO other communications "script" language even comes close to its power');
  3574.     Set_Global_Str('ISTR7','and ease of use!');
  3575.     Return_Str := '/C=1/L=9/#=7/D=100/T=MULTI-EDIT PROFESSIONAL COMMUNICATIONS MODULE/NK=1/BCOLOR=' + Str(M_H_Color);
  3576.     Call BOXTEXT;
  3577. }
  3578.     IF (Return_Int = 1) THEN
  3579.         Goto SKIP_PROFESSIONAL;
  3580.     END;
  3581.     IF (Return_Int = 2) THEN
  3582.         Goto EXIT;
  3583.     END;
  3584.  
  3585. SKIP_PROFESSIONAL:
  3586.     Call CLEAN_UP;
  3587.  
  3588. {*FINAL REMARKS*}
  3589.     Put_Box(2,3,79,23,0,M_B_Color,'MULTI-EDIT',False);
  3590.     Write('Now that you''ve gotten a look at just some of the MANY powerful features of',3,4,0,M_B_Color);
  3591.     Write('Multi-Edit, you''re probably wondering how much this fantastic editor is...',3,5,0,M_B_Color);
  3592.     Write('Only $99.* for the regular version,',21,7,0,M_B_Color);
  3593.     Write('and $179.* for the professional version!',21,8,0,M_B_Color);
  3594.     Write('With both versions, you get:',3,10,0,M_B_Color);
  3595.     Write('-Complete, indexed hypertext user''s guide and macro language reference',5,11,0,M_B_Color);
  3596.     Write('-Source code to language support macros',5,12,0,M_B_Color);
  3597.     Write('-Only one entry screen (which is bypassable)',5,13,0,M_B_Color);
  3598.     Write('-Unlimited support by telephone and our bulletin board system',5,14,0,M_B_Color);
  3599.     Write('To order, call 602-968-1945 8:00-5:00 MST',20,16,0,M_B_Color);
  3600. {
  3601.     Write('To order, call 24 hours a day:  1-800-221-9280 Ext. 951',13,16,0,M_B_Color);
  3602.     Write('(in Arizona, call 602-968-1945 8:00-5:00 MST)',18,17,0,M_B_Color);
  3603. }
  3604.     Write('Or send a check or money order (*plus $5 for shipping and handling) to:',5,18,0,M_B_Color);
  3605.     Write('AMERICAN CYBERNETICS',30,20,0,M_B_Color);
  3606.     Write('455 S. 48th Street Suite 107',26,21,0,M_B_Color);
  3607.     Write('Tempe, AZ 85281',33,22,0,M_B_Color);
  3608.     Return_Int := 1000;
  3609.     Call DELAY_LOOP;
  3610.  
  3611.     Refresh := False;
  3612.     Call CLEAN_UP;
  3613.  
  3614.     Goto START_DEMO;
  3615.  
  3616.  
  3617. {*SUBROUTINES*}
  3618. BOXWRAP:
  3619.     Box_Color := M_B_Color;
  3620.     Type_Color := M_B_Color;
  3621.     IF (XPOS('/BCOLOR=',Return_Str,1)) THEN
  3622.         Box_Color := Parse_Int('/BCOLOR=',Return_Str);
  3623.         Type_Color := Box_Color;
  3624.     END;
  3625.     c := Parse_Int( '/C=', Return_Str );
  3626.     count := Parse_Int( '/#=', Return_Str );
  3627.  
  3628. {Divide string into pieces}
  3629.  
  3630.     Jx := 1;
  3631.     Jy := 1;
  3632.  
  3633.     IF (XPOS('/n',Type_Str,1)) THEN
  3634.         w := Parse_Int( '/W=', Return_Str );
  3635. NEWLINES:
  3636.         Jl := XPos('/n',Type_Str,Jy);
  3637.         IF (Jl = 0) THEN
  3638.             Set_Global_Str('ISTR' + Str(Jx),Copy(Type_Str,Jy,76));
  3639.         ELSE
  3640.             Set_Global_Str('ISTR' + Str(Jx),Copy(Type_Str,Jy,Jl - Jy));
  3641.             Jy := Jl + 2;
  3642.         END;
  3643.         IF ((Length(Global_Str('ISTR' + Str(Jx)))) > W) THEN
  3644.             W := Length(Global_Str('ISTR' + Str(Jx)));
  3645.         END;
  3646.         IF (Jl > 0) THEN
  3647.             ++Jx;
  3648.             Goto NEWLINES;
  3649.         END;
  3650.     ELSE
  3651. {Find first white space at or beyond cutoff point}
  3652.         l := (Svl(Type_Str) / Count) + ((Svl(Type_Str) mod Count) > 0);
  3653.         W := l;
  3654. WRAPPING:
  3655. {Only allow the first line in the box to exceed the "perfect" length.
  3656. This insures the first line will be the longest.  Looks much better that way.}
  3657. {
  3658.         Jl := XPos(' ',Type_Str,Jy + w - 1);
  3659. }
  3660.         Jl := XPos(' ',Type_Str,Jy + w);
  3661.         IF ((Jl - Jy) > l) THEN
  3662.             IF (Jx = 1) THEN
  3663.                 l := Jl - Jy;
  3664.             ELSE
  3665.                 Jl := Jy + W - 1;
  3666.                 WHILE (Str_Char(Type_Str,Jl) <> ' ' ) DO
  3667.                     IF (Jl <= Jy) THEN
  3668.                         Jl := XPos(' ',Type_Str,Jy + w - 1);
  3669.                         Goto NO_SPACE;
  3670.                     END;
  3671.                     --Jl;
  3672.                 END;
  3673.             END;
  3674.         END;
  3675.  
  3676. NO_SPACE:
  3677.         IF (Jl = 0) THEN
  3678.             Set_Global_Str('ISTR' + Str(Jx),Copy(Type_Str,Jy,76));
  3679.         ELSE
  3680.             Set_Global_Str('ISTR' + Str(Jx),Copy(Type_Str,Jy,Jl - Jy));
  3681.         END;
  3682. {
  3683.         IF (Length(Global_Str('ISTR' + Str(Jx))) > L) THEN
  3684.             L := Length(Global_Str('ISTR' + Str(Jx)));
  3685.         END;
  3686. }
  3687.         WHILE (Str_Char(Type_Str,Jl) = ' ') DO
  3688.             ++Jl;
  3689.         END;
  3690.         Jy := Jl;
  3691.         IF ((Jy < Svl(Type_Str)) and     (Jx < Count)) THEN
  3692.             ++Jx;
  3693.             Goto WRAPPING;
  3694.         END;
  3695.         IF (Jx > Count) THEN
  3696.             Count := jx;
  3697.         END;
  3698.         w := Parse_Int( '/W=', Return_Str );
  3699.         IF (w < l) THEN
  3700.             W := l;
  3701.         END;
  3702.     END;
  3703.  
  3704.     l := Parse_Int( '/L=', Return_Str );
  3705.  
  3706.     IF (Parse_Int('/NB=',Return_Str) = False) THEN
  3707.         Return_Int := Parse_Int('/H=',Return_Str);
  3708.         IF (Count > Return_Int) THEN
  3709.             Return_Int := Count;
  3710.         END;
  3711.         IF (Parse_Int('/NS=',Return_Str)) THEN
  3712.             Put_Box( c, l, c + w + 3, l + Return_Int + 1,0,Box_Color,
  3713.                         Parse_Str('/T=', Return_Str ),False);
  3714.         ELSE
  3715.             Put_Box( c, l, c + w + 5, l + Return_Int + 2,0,Box_Color,
  3716.                         Parse_Str('/T=', Return_Str ),True);
  3717.         END;
  3718.     END;
  3719.  
  3720.     C := C + 2;
  3721.     ++L;
  3722.     jx := 0;
  3723.     Return_Int := 0;
  3724.     while jx < count do
  3725.         ++jx;
  3726.         Temp_String := Global_Str('ISTR' + Str(jx));
  3727.         call type_out;
  3728.         IF (Return_Int = 1) THEN
  3729.             Goto BOX_WRAP_SKIP;
  3730.         END;
  3731.     end;
  3732.     Return_Int := Parse_Int('/D=',Return_Str);
  3733.     Call DELAY_LOOP;
  3734.  
  3735. BOX_WRAP_SKIP:
  3736.     IF (Parse_Int('/NK=',Return_Str) <> 1) THEN
  3737.         Kill_Box;
  3738.     END;
  3739.     RET;
  3740.  
  3741. {
  3742. BOXTEXT:
  3743.     Box_Color := M_B_Color;
  3744.     Type_Color := M_B_Color;
  3745.     IF (XPOS('/BCOLOR=',Return_Str,1)) THEN
  3746.         Box_Color := Parse_Int('/BCOLOR=',Return_Str);
  3747.         Type_Color := Box_Color;
  3748.     END;
  3749. {
  3750.     IF (XPOS('/TCOLOR=',Return_Str,1)) THEN
  3751.         Type_Color := Parse_Int('/TCOLOR=',Return_Str);
  3752.     END;
  3753. }
  3754. {Calc the box width}
  3755. {
  3756.     Processor_Comp := Global_Int('Processor_Comp');
  3757. }
  3758.     c := Parse_Int( '/C=', Return_Str );
  3759.     l := Parse_Int( '/L=', Return_Str );
  3760.     count := Parse_Int( '/#=', Return_Str );
  3761.  
  3762.     jx := 0;
  3763.     w := Parse_Int('/W=',Return_Str);
  3764.     while jx < count do
  3765.         ++jx;
  3766.         jl := length( Global_Str('ISTR' + Str(jx)) );
  3767.         if jl > w then
  3768.             w := jl;
  3769.         end;
  3770.     end;
  3771.  
  3772.     IF (Parse_Int('/NB=',Return_Str) = False) THEN
  3773.         Return_Int := Parse_Int('/H=',Return_Str);
  3774.         IF (Count > Return_Int) THEN
  3775.             Return_Int := Count;
  3776.         END;
  3777.         IF (Parse_Int('/NS=',Return_Str)) THEN
  3778.             Put_Box( c, l, c + w + 3, l + Return_Int + 1,0,Box_Color,
  3779.                         Parse_Str('/T=', Return_Str ),False);
  3780.         ELSE
  3781.             Put_Box( c, l, c + w + 5, l + Return_Int + 2,0,Box_Color,
  3782.                         Parse_Str('/T=', Return_Str ),True);
  3783.         END;
  3784. {
  3785.         IF (Box_Color <> Type_Color) THEN
  3786. {If the box color and the text inside are different, clear out the area where
  3787. the text will be in the text color}
  3788.             Jx := 0;
  3789.             while (jx < count) do
  3790.                 ++jx;
  3791.                 Draw_Char(32,C + 2,L + Jx,Type_Color,W);
  3792.             end;
  3793.         END;
  3794. }
  3795.     END;
  3796.  
  3797.     C := C + 2;
  3798.     ++L;
  3799.     jx := 0;
  3800.     Return_Int := 0;
  3801.     while jx < count do
  3802.         ++jx;
  3803.         Temp_String := Global_Str('ISTR' + Str(jx));
  3804.         call type_out;
  3805.         IF (Return_Int = 1) THEN
  3806.             Goto BOX_TEXT_SKIP;
  3807.         END;
  3808.     end;
  3809.     Return_Int := Parse_Int('/D=',Return_Str);
  3810.     Call DELAY_LOOP;
  3811.  
  3812. BOX_TEXT_SKIP:
  3813.     IF (Parse_Int('/NK=',Return_Str) <> 1) THEN
  3814.         Kill_Box;
  3815.     END;
  3816. {
  3817.     Return_Int := 0;
  3818. }
  3819.     RET;
  3820. }
  3821.  
  3822. TYPE_OUT:
  3823. {This subroutine writes out the string Temp_String one char at a time beginning
  3824. at C and L}
  3825.     Temp_Integer := 1;
  3826.     While (Temp_Integer <= Svl(Temp_String)) Do
  3827.         Write(Str_Char(Temp_String,Temp_Integer),(C + Temp_Integer) - 1,L,0,Type_Color);
  3828.         GotoXY((C + Temp_Integer),L);
  3829.         ++Temp_Integer;
  3830.  {If the guy hits the skip key, finish writing FAST!}
  3831.         IF (Return_Int = 0) THEN
  3832.             Return_Int := Global_Int('Delay_Speed');
  3833.             Call DELAY_LOOP;
  3834.             IF (Return_Int = 1) THEN
  3835.                 Goto TYPE_OUT_SKIP;
  3836.             END;
  3837.         END;
  3838.     End;
  3839. TYPE_OUT_SKIP:
  3840.     ++L;
  3841.     RET;
  3842.  
  3843. FUN_WRAP:
  3844.     Temp_Integer := 1;
  3845.     While (Temp_Integer <= Svl(Temp_String)) DO
  3846.         Text(Str_Char(Temp_String,Temp_Integer));
  3847.         Word_wrap_line(True,True);
  3848.         ++Temp_Integer;
  3849.         Delay((Global_Int('Demo_Speed') * Global_Int('Delay_Speed')) + Processor_Comp);
  3850.     END;
  3851.     RET;
  3852.  
  3853. TYPE_TEXT:
  3854. {This subroutine inserts the string Temp_String one char at a time beginning
  3855. at the current cursor position}
  3856.     Temp_Integer := 1;
  3857.     While (Temp_Integer <= Svl(Temp_String)) Do
  3858.         Text(Str_Char(Temp_String,Temp_Integer));
  3859.         ++Temp_Integer;
  3860.  {If the guy hits the skip key, finish writing FAST!}
  3861.         IF (Return_Int = 0) THEN
  3862.             Return_Int := Global_Int('Delay_Speed');
  3863.             Call DELAY_LOOP;
  3864.             IF (Return_Int = 2) THEN
  3865.                 Goto TYPE_TEXT_SKIP;
  3866.             END;
  3867.         END;
  3868.     End;
  3869. TYPE_TEXT_SKIP:
  3870.     Cr;
  3871.     RET;
  3872.  
  3873. SPIRAL_WIPE:
  3874. {The first two lines are to rewrite the top and bottom window borders}
  3875.     Draw_Char(196,1,3,W_B_Color,1);
  3876.     Draw_Char(196,18,3,W_B_Color,63);
  3877.     Draw_Char(32,1,24,T_Color,80);
  3878.  
  3879.     Write_X := 4;
  3880.     While (Write_X < 14) Do
  3881.         Draw_Char(32,1,Write_X,T_Color,80);
  3882.         Temp_Integer := 0;
  3883.         While ((Temp_Integer + Write_X) < (27 - Write_X)) Do
  3884.             Draw_Char(32,81 - (Write_X - 3),Temp_Integer + Write_X + 1,T_Color,1);
  3885.             ++Temp_Integer;
  3886.             Delay(Processor_Comp / 2);
  3887.         End;
  3888.         Draw_Char(32,1,27 - Write_X,T_Color,80);
  3889.         While (Temp_Integer >= 1) Do
  3890.             Draw_Char(32,Write_X - 3,Temp_Integer + Write_X,T_Color,1);
  3891.             --Temp_Integer;
  3892.             Delay(Processor_Comp / 2);
  3893.         End;
  3894.         ++Write_X;
  3895.         Delay(Processor_Comp / 2);
  3896.     End;
  3897.     RET;
  3898.  
  3899. MAKE_WINDOW:
  3900.     Create_Window;
  3901.     RM('WINDOW^SetWindowNames');
  3902.     ++Win_Count;
  3903.     Win_List := Win_List + '/' + Str(Win_Count) + '=' + Str(Window_Id);
  3904.     Ret;
  3905.  
  3906. KILL_WINDOW:
  3907.     IF (Win_Count > 0) THEN
  3908.         Jx := Parse_Int('/' + Str(Win_Count) + '=',Win_List);
  3909.         Switch_Win_Id(Jx);
  3910.         Delete_Window;
  3911.         Win_List := Copy(Win_List,1,Svl(Win_List) - Length(Str(Jx)) -
  3912.         Length(Str(Win_Count)) - 2);
  3913.         --Win_Count;
  3914.         Switch_Win_Id(Parse_Int('/' + Str(Win_Count) + '=',Win_List));
  3915.     END;
  3916.     Ret;
  3917.  
  3918. CLEAN_UP:
  3919.     Return_Int := 0;
  3920.     Temp_Integer := Refresh;
  3921.     WHILE (Win_Count > 1) DO
  3922.         Call KILL_WINDOW;
  3923.     END;
  3924.     Erase_Window;
  3925.     Block_Off;
  3926.  
  3927.     Screen_Num := Screen_Count;
  3928. {
  3929.     Screen_Num := 1;
  3930. }
  3931.     Size_Window(0,3,81,25);
  3932.     File_Name := 'MULTI-EDIT';
  3933.         Format_Line :=
  3934. '                                                                                                                 ';
  3935.     WHILE (Box_Count) DO
  3936.         Kill_Box;
  3937.     END;
  3938.     Refresh := Temp_Integer;
  3939.     RET;
  3940.  
  3941. DELAY_LOOP:
  3942.     Call WRITE_HELP;
  3943. DELAY_AGAIN:
  3944.     If (Check_Key) Then
  3945.         If (Key1 = 27) Then
  3946.             If (Mode = Dos_Shell) Then
  3947.                 IF (Dir_Active(2)) THEN
  3948.                     RM('DIRSHELL^DIRWINDOW');
  3949.                 END;
  3950.                 close_dir(2);
  3951.                 close_dir(1);
  3952.                 error_level := 0;
  3953.                 mode := edit;
  3954.             End;
  3955.             Goto EXIT;
  3956.         ELSIF (Key1 = 32) Then
  3957.             Return_Int := -1;
  3958.             RET;
  3959.         ELSIF (Key1 = 13) Then
  3960.             Return_Int := 1;
  3961.             RET;
  3962.         ELSIF ((Key1 = 80) or (Key1 = 112)) THEN
  3963.             Write('Demo execution suspended. Press any key to resume...                            ',1,Message_Row,0,Stat1_Color);
  3964.             Read_Key;
  3965.             Call WRITE_HELP;
  3966.         End;
  3967.         IF (Key1 = 0) THEN
  3968.             IF ((Key2 = 75) and (Global_Int('Demo_Speed') < 36)) THEN
  3969.                 Set_Global_Int('Demo_Speed',Global_Int('Demo_Speed') + 7);
  3970.                 Call WRITE_HELP;
  3971.             ELSIF ((Key2 = 77) and (Global_Int('Demo_Speed') > 6)) THEN
  3972.                 Set_Global_Int('Demo_Speed',Global_Int('Demo_Speed') - 7);
  3973.                 Call WRITE_HELP;
  3974.             END;
  3975.  
  3976.         END;
  3977.     End;
  3978.     IF (Return_Int > 0) THEN
  3979.         Return_Int := Return_Int - 1;
  3980.         Delay(Global_Int('Demo_Speed') + Processor_Comp);
  3981.         Goto DELAY_AGAIN;
  3982.     END;
  3983.     RET;
  3984.  
  3985. WRITE_HELP:
  3986.     Write('<SPACE>=skip <ENTER>=next <ESC>=quit <P>=pause   Arrow keys: Slow ░░░░░░░ Fast',
  3987.                 1,Message_Row,0,Stat1_Color);
  3988. {
  3989.     Write('<SPACE> = skip.  <ENTER> = next.  <ESC> = quit.  Arrow keys: Slow ░░░░░░░ Fast',
  3990.                                                                                     1,Message_Row,0,Stat1_Color);
  3991. }
  3992.     Write('▓',74 - (Global_Int('Demo_Speed') / 7),Message_Row,0,Stat1_Color);
  3993.     RET;
  3994.  
  3995. ABORT:
  3996.     RM('MEERROR^MESSAGEBOX /B=1/T=DEMO ERROR/M=' + Temp_String);
  3997.     Goto ABORT2;
  3998.  
  3999. EXIT:
  4000.     Call Clean_Up;
  4001. ABORT2:
  4002.     If (Mode = Dos_Shell) Then
  4003.         IF (Dir_Active(2)) THEN
  4004.             RM('DIRSHELL^DIRWINDOW');
  4005.         END;
  4006.         close_dir(2);
  4007.         close_dir(1);
  4008.         error_level := 0;
  4009.         mode := edit;
  4010.     End;
  4011.     Call KILL_WINDOW;
  4012.     Switch_Win_Id(Active_Window);
  4013.     RM('WINDOW^SetWindowNames');
  4014.     Set_Global_Int('Demo_Speed',0);
  4015. {
  4016.     Set_Global_Int('Processor_Comp',0);
  4017. }
  4018.     Int1 := 1;
  4019.     WHILE (Int1 < 19) DO
  4020.         Set_Global_Str('ISTR' + Str(Int1),'');
  4021.         ++Int1
  4022.     END;
  4023.     File_Changed := False;
  4024.     Messages := True;
  4025.     Refresh := True;
  4026.     Set_Global_Int('CUR_SCRN',Global_Int('DEF_SCRN_STYLE'));
  4027.     C_Color := T_C_Color;
  4028.     W_C_Color := T_W_C_Color;
  4029.     W_Eof_Color := T_W_Eof_Color;
  4030.     Eof_Color := T_Eof_Color;
  4031.     Undo_Stat := True;
  4032.     RM(User_Id + 'INIT');
  4033. {Enable autosave again}
  4034.     Type_Str := global_str('@AUTOSAVEPARMS');
  4035.     set_global_str('@AUTOSAVEPARMS','');
  4036.     RM('SetAutoSave ' + Type_Str);
  4037.     make_message('');
  4038.     RM('SETSCRN');
  4039.     new_screen;
  4040.  
  4041. END_MACRO;