home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / wp / m_edit.zip / DEMO.SRC < prev    next >
Text File  |  1988-04-11  |  52KB  |  1,761 lines

  1. {@ME.FORMAT                                             }R
  2. $MACRO DEMO TRANS;
  3.  
  4.   Def_Int(Temp_Integer,Win_X1,Win_Y1,Write_X,Write_Y,Write_F_Color,
  5.           Write_B_Color,Y_Start,Int1,Int2,Int3,Int4,Int5,Speed);
  6.   Def_Str(Blank_Line,Temp_String);
  7.  
  8.   Speed := 50;
  9.   Insert_Mode := True;
  10. {Check for file in window}
  11.   Tof;
  12.   If Not(AT_EOF) Then
  13.     Beep;
  14.     Make_Message('This macro cannot be run with any files loaded!');
  15.     Goto ABORT;
  16.   End;
  17. {Check for more than one window}
  18.   If (Window_Count > 1) Then
  19.     Beep;
  20.     Make_Message('This macro cannot be run with more than one window created!');
  21.     Goto ABORT;
  22.   End;
  23.  
  24.   File_Name := 'MULTI-EDIT';
  25.   Blank_Line := '                                                                                ';
  26.   Refresh := False;
  27. {
  28. Goto SKIP;
  29. }
  30.  
  31. START_DEMO:
  32.  
  33.   Write_B_Color := Back_Color;
  34.   Write_F_Color := Text_Color;
  35.   Call CLEAR_TEXT_AREA;
  36.   Write_Y := 4;
  37.   While (Write_Y < 20) Do
  38.  
  39.     If ((Write_Y - 13) > 3) Then Write('                          ',28,Write_Y - 13,Back_Color,Text_Color); End;
  40.     Int1 := 12;
  41.     While (Int1 > -1) Do
  42.       IF (Int1 > 6) THEN
  43.         Temp_String := Copy(
  44.           '│   │   Multi-Edit   │  ││  │                │   ││   │ Welcome to the │  ││  ┌────────────────┐   ││                 │┌────────────────────────┐                          '
  45.                                                     ,((Int1 - 7) * 26) + 1,26);
  46.       END ELSE
  47.         Temp_String := Copy(
  48.           '└────────────────────────┘│                 ││  └────────────────┘   ││   │    program!    │  ││  │                │   ││   │ demonstration  │  ││  │                │   │'
  49.                                                           ,(Int1 * 26) + 1,26);
  50.       END;
  51.       If ((Write_Y - Int1) > 3) Then Write(Temp_String,28,Write_Y - Int1,Error_Color,Stat_Color); End;
  52.       Int1 := Int1 - 1;
  53.     End;
  54.     Call CHECK_FOR_ESC;
  55.     Delay(10);
  56.     Write_Y := Write_Y + 1;
  57.   End;
  58.  
  59.   Int1 := 0;
  60.   While (Int1 < 10) Do
  61.     Temp_Integer := 8;
  62.     WHILE (Temp_Integer < 19) DO
  63.     Write(Copy(
  64. '                ┌────────────────┐    │ Welcome to the │  │                │    │   Multi-Edit   │  │                │    │ demonstration  │  │                │    │    program!    │  └────────────────┘                 '
  65.     ,((Temp_Integer - 8) * 22) + 1,22),30,Temp_Integer,Error_Color,Stat_Color);
  66.       Temp_Integer := Temp_Integer + 1;
  67.     END;
  68.  
  69.     Delay(150);
  70.  
  71.     Temp_Integer := 8;
  72.     WHILE (Temp_Integer < 19) DO
  73.     Write(Copy(
  74. '                 ┌────────────────┐  │ Welcome to the │    │                │  │   Multi-Edit   │    │                │  │ demonstration  │    │                │  │    program!    │    └────────────────┘                '
  75.     ,((Temp_Integer - 8) * 22) + 1,22),30,Temp_Integer,Error_Color,Stat_Color);
  76.       Temp_Integer := Temp_Integer + 1;
  77.     END;
  78.  
  79.     Call CHECK_FOR_ESC;
  80.     Delay(150);
  81.     Int1 := Int1 + 1;
  82.   End;
  83.  
  84.   Refresh := True;
  85.   Redraw;
  86.   Refresh := False;
  87.   Call CHECK_FOR_ESC;
  88.  
  89.   Explosions := True;
  90.   Win_X1 := 20;
  91.   Win_Y1 := 10;
  92.   Put_Box(20,10,58,14,Stat_Color,Back_Color,'',True);
  93.   Write('This demo was written completely',22,11,Stat_Color,Back_Color);
  94.   Write('in the Multi-Edit Macro Language!',22,12,Stat_Color,Back_Color);
  95.   Delay(1000);
  96.   Kill_Box;
  97.   Explosions := False;
  98.   While (Win_X1 > 1) Do
  99.     Win_X1 := Win_X1 - 1;
  100.     If (Win_X1 > 1) Then
  101.       Win_X1 := Win_X1 - 1;
  102.     End;
  103.     Put_Box(Win_X1,10,Win_X1 + 38,14,Stat_Color,Back_Color,'',True);
  104.     Write('This demo was written completely',Win_X1 + 2,11,Stat_Color,Back_Color);
  105.     Write('in the Multi-Edit Macro Language!',Win_X1 + 2,12,Stat_Color,Back_Color);
  106.     Delay(50);
  107.     Kill_Box;
  108.   End;
  109.  
  110. BOX_1:
  111.   Win_Y1 := Win_Y1 - 2;
  112.   Put_Box(1,Win_Y1,39,Win_Y1 + 4,Stat_Color,Back_Color,'',True);
  113.   Write('This demo was written completely',3,Win_Y1 + 1,Stat_Color,Back_Color);
  114.   Write('in the Multi-Edit Macro Language!',3,Win_Y1 + 2,Stat_Color,Back_Color);
  115.   Delay(50);
  116.   If (Win_Y1 = 4) Then
  117.     Goto BOX_1_EXIT;
  118.   End;
  119.   Kill_Box;
  120.   Goto BOX_1;
  121. BOX_1_EXIT:
  122.  
  123.   Call CHECK_FOR_ESC;
  124.   Explosions := True;
  125.   Win_X1 := 20;
  126.   Win_Y1 := 10;
  127.   Put_Box(20,10,55,13,Stat_Color,Back_Color,'',True);
  128.   Write('It is completely self running.',22,11,Stat_Color,Back_Color);
  129.   Delay(1000);
  130.   Kill_Box;
  131.   Explosions := False;
  132.   While (Win_X1 < 45) Do
  133.     Win_X1 := Win_X1 + 1;
  134.     If (Win_X1 < 44) Then
  135.       Win_X1 := Win_X1 + 1;
  136.     End;
  137.     Put_Box(Win_X1,10,Win_X1 + 35,13,Stat_Color,Back_Color,'',True);
  138.     Write('It is completely self running.',Win_X1 + 2,11,Stat_Color,Back_Color);
  139.     Delay(50);
  140.     Kill_Box;
  141.   End;
  142.  
  143. BOX_2:
  144.   Win_Y1 := Win_Y1 - 2;
  145.   Put_Box(45,Win_Y1,80,Win_Y1 + 3,Stat_Color,Back_Color,'',True);
  146.   Write('It is completely self running.',47,Win_Y1 + 1,Stat_Color,Back_Color);
  147.   Delay(50);
  148.   If (Win_Y1 = 4) Then
  149.     Goto BOX_2_EXIT;
  150.   End;
  151.   Kill_Box;
  152.   Goto BOX_2;
  153. BOX_2_EXIT:
  154.  
  155.   Call CHECK_FOR_ESC;
  156.   Explosions := True;
  157.   Win_X1 := 20;
  158.   Win_Y1 := 10;
  159.   Put_Box(20,10,52,14,Stat_Color,Back_Color,'',True);
  160.   Write('Hit the space bar at any',22,11,Stat_Color,Back_Color);
  161.   Write('lengthly pause to continue.',22,12,Stat_Color,Back_Color);
  162.   Delay(1000);
  163.   Kill_Box;
  164.   Explosions := False;
  165.   While (Win_X1 > 1) Do
  166.     Win_X1 := Win_X1 - 1;
  167.     If (Win_X1 > 2) Then
  168.       Win_X1 := Win_X1 - 1;
  169.     End;
  170.     Put_Box(Win_X1,10,Win_X1 + 32,14,Stat_Color,Back_Color,'',True);
  171.     Write('Hit the space bar at any',Win_X1 + 2,11,Stat_Color,Back_Color);
  172.     Write('lengthly pause to continue.',Win_X1 + 2,12,Stat_Color,Back_Color);
  173.     Delay(50);
  174.     Kill_Box;
  175.   End;
  176.  
  177. BOX_3:
  178.   Win_Y1 := Win_Y1 + 1;
  179.   If (Win_Y1 < 18) Then
  180.     Win_Y1 := Win_Y1 + 1;
  181.   End;
  182.   Put_Box(1,Win_Y1,33,Win_Y1 + 4,Stat_Color,Back_Color,'',True);
  183.   Write('Hit the space bar at any',3,Win_Y1 + 1,Stat_Color,Back_Color);
  184.   Write('lengthly pause to continue.',3,Win_Y1 + 2,Stat_Color,Back_Color);
  185.   Delay(50);
  186.   If (Win_Y1 = 19) Then
  187.     Goto BOX_3_EXIT;
  188.   End;
  189.   Kill_Box;
  190.   Goto BOX_3;
  191. BOX_3_EXIT:
  192.  
  193.   Call CHECK_FOR_ESC;
  194.   Explosions := True;
  195.   Win_X1 := 20;
  196.   Win_Y1 := 10;
  197.   Put_Box(20,10,46,14,Stat_Color,Back_Color,'',True);
  198.   Write('Hit <ESC> at any time',22,11,Stat_Color,Back_Color);
  199.   Write('to exit this demo.',22,12,Stat_Color,Back_Color);
  200.   Delay(1000);
  201.   Kill_Box;
  202.   Explosions := False;
  203.  
  204.   While (Win_X1 < 54) Do
  205.     Win_X1 := Win_X1 + 2;
  206.     Put_Box(Win_X1,10,Win_X1 + 26,14,Stat_Color,Back_Color,'',True);
  207.     Write('Hit <ESC> at any time',Win_X1 + 2,11,Stat_Color,Back_Color);
  208.     Write('to exit this demo.',Win_X1 + 2,12,Stat_Color,Back_Color);
  209.     Delay(50);
  210.     Kill_Box;
  211.   End;
  212.  
  213. BOX_4:
  214.   Win_Y1 := Win_Y1 + 1;
  215.   If (Win_Y1 < 18) Then
  216.     Win_Y1 := Win_Y1 + 1;
  217.   End;
  218.   Put_Box(54,Win_Y1,80,Win_Y1 + 4,Stat_Color,Back_Color,'',True);
  219.   Write('Hit <ESC> at any time',56,Win_Y1 + 1,Stat_Color,Back_Color);
  220.   Write('to exit this demo.',56,Win_Y1 + 2,Stat_Color,Back_Color);
  221.   Delay(50);
  222.   If (Win_Y1 = 19) Then
  223.     Goto BOX_4_EXIT;
  224.   End;
  225.   Kill_Box;
  226.   Goto BOX_4;
  227. BOX_4_EXIT:
  228.  
  229.   Call CHECK_FOR_ESC;
  230.   Explosions := True;
  231.   Put_Box(20,10,59,16,Stat_Color,Back_Color,'',True);
  232.   Write('This demo will last approximately',22,11,Stat_Color,Back_Color);
  233.   Write('10 minutes.',22,12,Stat_Color,Back_Color);
  234.   Write('Press any key to begin...',26,14,Stat_Color,Back_Color);
  235.   GotoXY(51,14);
  236.   Temp_Integer := 400;
  237.   While ((Temp_Integer > 0) and (Check_Key = 0)) Do
  238.     Delay(50);
  239.     Temp_Integer := Temp_Integer - 1;
  240.   End;
  241.   Temp_Integer := 5;
  242.   While (Temp_Integer) Do
  243.     Kill_Box;
  244.     Delay(500);
  245.     Temp_Integer := Temp_Integer - 1;
  246.   End;
  247.  
  248. {*OPENING STATEMENTS*}
  249.   Call CHECK_FOR_ESC;
  250.   Put_Box(14,10,67,16,Stat_Color,Back_Color,'',True);
  251.  
  252.   Write_F_Color := Back_Color;
  253.   Write_B_Color := Stat_Color;
  254.   Temp_String := 'Multi-Edit is a third-generation text editor...';
  255.   Write_X := 16;
  256.   Write_Y := 11;
  257.   Call TYPE_OUT;
  258.   Temp_String := 'the first of its kind to combine the power and';
  259.   Call TYPE_OUT;
  260.   Temp_String := 'flexibility of the finest programmable editor';
  261.   Call TYPE_OUT;
  262.   Temp_String := 'with a user friendly interface.';
  263.   Call TYPE_OUT;
  264.   Temp_Integer := 2;
  265.   Call WAIT;
  266.   Kill_Box;
  267.  
  268.   Put_Box(1,5,80,23,Stat_Color,Back_Color,'MAJOR FEATURES',True);
  269.   Write('Multi-Edit is an ASCII text editor, suitible for programming in any major',3,6,Stat_Color,Back_Color);
  270.   Delay(100);
  271.   Write('language AS WELL AS meeting all your documentation needs:',3,7,Stat_Color,Back_Color);
  272.   Delay(100);
  273.   Write('- Edit files up to 32 megabytes',9,8,Stat_Color,Back_Color);
  274.   Delay(100);
  275.   Write('- Edit up to 100 files simultaneously',9,9,Stat_Color,Back_Color);
  276.   Delay(100);
  277.   Write('- On-line, context sensitive HELP',9,10,Stat_Color,Back_Color);
  278.   Delay(100);
  279.   Write('- Full menu system',9,11,Stat_Color,Back_Color);
  280.   Delay(100);
  281.   Write('- FULL UNDO of ANY editing operation',9,12,Stat_Color,Back_Color);
  282.   Delay(100);
  283.   Write('- Complete DOS shell',9,13,Stat_Color,Back_Color);
  284.   Delay(100);
  285.   Write('- Pop-up ASCII table and programmers calculator',9,14,Stat_Color,Back_Color);
  286.   Delay(100);
  287.   Write('- Language specific "construct creating" macros',9,15,Stat_Color,Back_Color);
  288.   Delay(100);
  289.   Write('- Powerful Condensed mode display for high level languages',9,16,Stat_Color,Back_Color);
  290.   Delay(100);
  291.   Write('- Automatic processing of compiler errors',9,17,Stat_Color,Back_Color);
  292.   Delay(100);
  293.   Write('- All Word processing features needed for documentation:',9,18,Stat_Color,Back_Color);
  294.   Delay(100);
  295.   Write('word-wrap, centering, bold, underline, pagination,',14,19,Stat_Color,Back_Color);
  296.   Delay(100);
  297.   Write('justification, headers/footers, and table of contents',14,20,Stat_Color,Back_Color);
  298.   Delay(100);
  299.   Write('generation!',14,21,Stat_Color,Back_Color);
  300.   GotoXY(25,21);
  301.   Temp_Integer := 12;
  302.   Call WAIT;
  303.  
  304. {*MULTI-EDIT COMMAND EXECUTION*}
  305.   Put_Box(6,6,71,11,Back_Color,Stat_Color,'',True);
  306.   Write_B_Color := Back_Color;
  307.   Write_F_Color := Stat_Color;
  308.   Write_X := 8;
  309.   Write_Y := 7;
  310.   Temp_String := 'Multi-Edit is the ONLY editor on the market today with this';
  311.   Call TYPE_OUT;
  312.   Temp_String := 'combination of features, enabling new users to quickly begin';
  313.   Call TYPE_OUT;
  314.   Temp_String := 'productive editing without having to read a manual.';
  315.   Call TYPE_OUT;
  316.   Temp_Integer := 2;
  317.   Call WAIT;
  318.   Kill_Box;
  319.   Kill_Box;
  320.  
  321.   Write_F_Color := Back_Color;
  322.   Write_B_Color := Stat_Color;
  323.   Put_Box(6,10,63,13,Stat_Color,Back_Color,'',True);
  324.   Temp_String := 'There are two ways of executing Multi-Edit commands:';
  325.   Write_X := 8;
  326.   Write_Y := 11;
  327.   Call TYPE_OUT;
  328.   Delay(1000);
  329.  
  330.   Put_Box(8,12,77,15,Stat_Color,Back_Color,'',True);
  331.   Temp_String := '1. Using the function keys, which are always labeled on screen. ';
  332.   Write_X := 10;
  333.   Write_Y := 13;
  334.   Call TYPE_OUT;
  335.   Write('┌─',6,13,Back_Color,Stat_Color);
  336.   Delay(50);
  337.   Temp_Integer := 14;
  338.   WHILE (Temp_Integer < 23) DO
  339.     Write('│',6,Temp_Integer,Back_Color,Stat_Color);
  340.     Delay(50);
  341.     Temp_Integer := Temp_Integer + 1;
  342.   END;
  343.   Write('',6,23,Back_Color,Stat_Color);
  344.   Delay(100);
  345.  
  346.   Temp_Integer := 6;
  347.   While (Temp_Integer < 79) do
  348.     Write(' ',Temp_Integer,23,Back_Color,Stat_Color);
  349.     Temp_Integer := Temp_Integer + 1;
  350.     Delay(20);
  351.   End;
  352.  
  353.   While (Temp_Integer > 5) do
  354.     Write(' ',Temp_Integer,23,Back_Color,Stat_Color);
  355.     Temp_Integer := Temp_Integer - 1;
  356.     Delay(20);
  357.   End;
  358.   Delay(100);
  359.  
  360.   Temp_Integer := 23;
  361.   WHILE (Temp_Integer > 12) DO
  362.     Write('  ',6,Temp_Integer,Back_Color,Stat_Color);
  363.     Delay(50);
  364.     Temp_Integer := Temp_Integer - 1;
  365.   END;
  366.  
  367.   Write_F_Color := Back_Color;
  368.   Write_B_Color := Stat_Color;
  369.   Put_Box(10,14,50,17,Stat_Color,Back_Color,'',True);
  370.   Temp_String := '2. Using the intuitive menu system.';
  371.   Write_X := 12;
  372.   Write_Y := 15;
  373.   Call TYPE_OUT;
  374.   Delay(50);
  375.   Write('└─────',4,15,Back_Color,Stat_Color);
  376.   Delay(50);
  377.  
  378.   Temp_Integer := 14;
  379.   WHILE (Temp_Integer > 8) DO
  380.     Write('│',4,Temp_Integer,Back_Color,Stat_Color);
  381.     Delay(50);
  382.     Temp_Integer := Temp_Integer - 1;
  383.   END;
  384.  
  385.   Write('',4,8,Back_Color,Stat_Color);
  386.  
  387.   key_In(<F2><PS><RT><PS><RT><PS><RT><PS><RT>
  388. <PS><LF><PS><LF><PS><LF><PS><LF>W<PS><RT><PS><RT><PS><RT><PS><RT>
  389. <PS><LF><PS><LF><PS><LF><PS><LF><PS><PS><PS><ESC><PS><ESC>);
  390.  
  391.   WHILE (Temp_Integer < 15) DO
  392.     Delay(50);
  393.     Write(' ',4,Temp_Integer,Back_Color,Stat_Color);
  394.     Temp_Integer := Temp_Integer + 1;
  395.   END;
  396.   Delay(50);
  397.   Write('      ',4,15,Back_Color,Stat_Color);
  398.  
  399.   Put_Box(7,5,61,8,Stat_Color,Back_Color,'',True);
  400.   Write('The keyboard layout is completely user definable!'
  401.     ,9,6,Stat_Color,Back_Color);
  402.   GotoXY(71,6);
  403.   Temp_Integer := 3;
  404.   Call WAIT;
  405.  
  406.   Write_B_Color := Error_Color;
  407.   Write_F_Color := Back_Color;
  408.   Kill_Box;
  409.   Kill_Box;
  410.   Kill_Box;
  411.   Kill_Box;
  412.   Kill_Box;
  413.  
  414. {*HELP SCREENS*}
  415.   Put_Box(1,4,32,7,Stat_Color,Back_Color,'',True);
  416.   Write('Multi-Edit Help Screens...',3,5,Stat_Color,Back_Color);
  417.   GotoXY(29,5);
  418.   Delay(2000);
  419.   Call CHECK_FOR_ESC;
  420.   Put_Box(4,6,48,9,Stat_Color,Back_Color,'',True);
  421.   Write('Are available any time by pressing <F1>',6,7,Stat_Color,Back_Color);
  422.   GotoXY(45,7);
  423.   Delay(2000);
  424.   Call CHECK_FOR_ESC;
  425.   Put_Box(7,8,70,11,Stat_Color,Back_Color,'',True);
  426.   Write('Are context sensitive according to the current menu choice',9,9,Stat_Color,Back_Color);
  427.   GotoXY(67,9);
  428.   Delay(2000);
  429.   Call CHECK_FOR_ESC;
  430.   Put_Box(10,10,46,13,Stat_Color,Back_Color,'',True);
  431.   Write('Are completely user modifiable!',12,11,Stat_Color,Back_Color);
  432.   GotoXY(43,11);
  433.   Delay(6000);
  434.  
  435.   Key_In(<F1><PS><PS><PS><PS><PS><PS><PS><PS>A<PS><PS><PS><PS><PS><PS><PS><PS>
  436. <PGDN><PS><PS><PS><PS><PS><PS><PS><PS><PGDN><ENTER><PS><PS><PS><PS>C
  437. <PS><PS><PS><PS><PS><PS><PS><PS><PS><ESC>);
  438.  
  439.   Temp_Integer := 2;
  440.   Call WAIT;
  441.   Kill_Box;
  442.   Kill_Box;
  443.   Kill_Box;
  444.   Kill_Box;
  445.   Call CHECK_FOR_ESC;
  446.  
  447. {*WINDOWS*}
  448.   Write_F_Color := Back_Color;
  449.   Write_B_Color := Stat_Color;
  450.   Put_Box(21,12,60,16,Write_B_Color,Write_F_Color,'WINDOWS',True);
  451.   Write_X := 24;
  452.   Write_Y := 13;
  453.   Temp_String := 'Multi-Edit''s window capabilities';
  454.   Call Type_Out;
  455.   Write_Y := 14;
  456.   Temp_String := 'are VERY VERSATILE!';
  457.   Call Type_Out;
  458.   Delay(2000);
  459.   Kill_Box;
  460.   Explosions := False;
  461.   Tof;
  462.   Refresh := True;
  463.   Redraw;
  464.   Temp_String := 'Windows can be resized to';
  465.   Call Type_Text;
  466.   Temp_String := 'practically any size!';
  467.   Call Type_Text;
  468.   Tof;
  469.   Delay(2000);
  470.  
  471.   Key_In(<F2><PS>W<PS>M<PS><RT><RT><PS><RT><DN><PS><DN><DN><CR><PS><LF><LF><LF>
  472. <LF><PS><LF><LF><LF><LF><PS><LF><LF><LF><LF><PS><UP><UP><PS><UP><UP><UP><UP>
  473. <PS><PS><Cr>);
  474.  
  475.   Delay(1000);
  476.   Size_Window(10,15,52,22);
  477.   New_Screen;
  478.   Delay(1000);
  479.   Size_Window(60,5,79,9);
  480.   New_Screen;
  481.   Delay(1000);
  482.   Size_Window(1,3,27,6);
  483.   New_Screen;
  484.   Erase_Window;
  485.  
  486.   Size_Window(1,4,30,10);
  487.   File_Name := 'MULTI-EDIT';
  488.   Refresh := True;
  489.   New_Screen;
  490.   Temp_String := 'You can';
  491.   Call TYPE_TEXT;
  492.   Delay(500);
  493.   Refresh := False;
  494.   Create_Window;
  495.   Size_Window(28,4,75,15);
  496.   File_Name := 'MULTI-EDIT';
  497.   Refresh := True;
  498.   Redraw;
  499.   Temp_String := 'create';
  500.   Call TYPE_TEXT;
  501.   Delay(500);
  502.   Refresh := False;
  503.   Create_Window;
  504.   Size_Window(5,10,50,21);
  505.   File_Name := 'MULTI-EDIT';
  506.   Refresh := True;
  507.   Redraw;
  508.   Temp_String := 'up to';
  509.   Call TYPE_TEXT;
  510.   Delay(500);
  511.   Refresh := False;
  512.   Create_Window;
  513.   Size_Window(30,10,79,23);
  514.   File_Name := 'MULTI-EDIT';
  515.   Refresh := True;
  516.   Redraw;
  517.   Temp_String := '100 windows!';
  518.   Call TYPE_TEXT;
  519.   Delay(2000);
  520.  
  521.   Write_F_Color := Back_Color;
  522.   Write_B_Color := Stat_Color;
  523.   Put_Box(26,12,54,16,Write_B_Color,Write_F_Color,'WINDOWS',True);
  524.   Write_X := 28;
  525.   Write_Y := 13;
  526.   Temp_String := 'You can switch between';
  527.   Call Type_Out;
  528.   Temp_String := 'windows sequentially...';
  529.   Call Type_Out;
  530.   Delay(2000);
  531.   Kill_Box;
  532.   Delay(500);
  533.   Key_In(<ShftF1>);
  534.   Delay(500);
  535.   Key_In(<ShftF1>);
  536.   Delay(500);
  537.   Key_In(<ShftF1>);
  538.   Delay(500);
  539.   Key_In(<ShftF1>);
  540.   Delay(1000);
  541.  
  542.   Write_F_Color := Back_Color;
  543.   Write_B_Color := Stat_Color;
  544.   Put_Box(16,12,63,15,Write_B_Color,Write_F_Color,'WINDOWS',True);
  545.   Write_X := 18;
  546.   Write_Y := 13;
  547.   Temp_String := 'or randomly via our VERSATILE WINDOW LIST!';
  548.   Call Type_Out;
  549.   Delay(2000);
  550.   Key_In(<F2><PS><PS><ENTER><PS><PS>S<PS><PS><UP><PS><PS><UP><PS><PS><UP><PS>
  551. <PS><DN><PS><PS><DN><PS><PS><PS><PS><F4><PS><PS><PS><PS><PS><PS><F4><PS><PS><PS>
  552. <PS><PS><PS><PS><PS><ESC>);
  553.  
  554.   Kill_Box;
  555.   Page_Down;
  556.   Temp_String := 'You can ZOOM a window to full size...';
  557.   Call TYPE_TEXT;
  558.   Delay(1000);
  559.   Explosions := True;
  560.   Zoom;
  561.   Explosions := False;
  562.   Delay(1000);
  563.   Temp_String := 'and ZOOM back!';
  564.   Call TYPE_TEXT;
  565.   Delay(1000);
  566.   Zoom;
  567.   Delay(1000);
  568.   Refresh := False;
  569.   Write_F_Color := Back_Color;
  570.   Write_B_Color := Stat_Color;
  571.   Put_Box(21,11,64,17,Write_B_Color,Write_F_Color,'WINDOWS',True);
  572.   Write_X := 23;
  573.   Write_Y := 12;
  574.   Temp_String := 'Windows can contain separate files...';
  575.   Call Type_Out;
  576.   Temp_String := 'or can be linked together in order';
  577.   Call Type_Out;
  578.   Temp_String := 'to view/edit different parts of the';
  579.   Call Type_Out;
  580.   Temp_String := 'same file at the same time!';
  581.   Call Type_Out;
  582.   Temp_Integer := 2;
  583.   Call WAIT;
  584.   Delete_Window;
  585.   Delete_Window;
  586.   Delete_Window;
  587.   Erase_Window;
  588.   File_Name := 'MULTI-EDIT';
  589.   Size_Window(0,3,81,24);
  590.   Kill_Box;
  591.  
  592. {*UNDO*}
  593.   Refresh := True;
  594.   Redraw;
  595.   Call CHECK_FOR_ESC;
  596.   Write_F_Color := Back_Color;
  597.   Write_B_Color := Stat_Color;
  598.   Put_Box(19,4,62,10,Write_B_Color,Write_F_Color,'FULL UNDO',True);
  599.   Write_X := 21;
  600.   Write_Y := 5;
  601.   Temp_String := 'In the UNLIKELY event of a user making';
  602.   Call Type_Out;
  603.   Temp_String := 'a mistake while editing, Multi-Edit''s';
  604.   Call Type_Out;
  605.   Temp_String := 'POWERFUL UNDO feature could save hours';
  606.   Call Type_Out;
  607.   Temp_String := 'of time!  Observe...';
  608.   Call Type_Out;
  609.   Delay(1000);
  610.   Explosions := False;
  611.   Size_Window(2,11,78,23);
  612.   File_Name := 'FAMOUS.PAS';
  613.   Redraw;
  614.   Explosions := True;
  615.   Speed := 5;
  616.   Temp_String := '{My soon to be famous do everything algorithm}';
  617.   Call Type_Text;
  618.   Temp_String := '  While ((X <= Y) or (A < B + (C * T)) and (J <> Q / 3 - Trunc(X * T))) Do';
  619.   Call Type_Text;
  620.   Temp_String := '    BEGIN';
  621.   Call Type_Text;
  622.   Temp_String := '      Writeln(''I''''m working on it...'');';
  623.   Call Type_Text;
  624.   Temp_String := '      A := X * T + (Rnd(Y) / 2.5555643) - (3 * Z);';
  625.   Call Type_Text;
  626.   Temp_String := '      Q := (Y + 13.33) * (A - (C * J) / 40);';
  627.   Call Type_Text;
  628.   Temp_String := '      Long_String := Concat(What_Strung';
  629.   Call Type_Text;
  630.   Up;
  631.   Eol;
  632.   Kill_Box;
  633.   Redraw;
  634.   Put_Box(1,4,50,7,Stat_Color,Back_Color,'',True);
  635.   Write('If you misspell a word...',3,5,Stat_Color,Back_Color);
  636.   Put_Box(30,13,41,17,Stat_Color,Back_Color,'',False);
  637.   Write('OH NO!',33,15,Stat_Color,Back_Color);
  638.   Delay(2000);
  639.   Word_Left;
  640.   Del_Chars(11);
  641.   Write('Undo deletes it!',30,5,Stat_Color,Back_Color);
  642.   Kill_Box;
  643.   Delay(1000);
  644.   Temp_String := 'Short_String[Q],Shorter_String[Z]);';
  645.   Call Type_Text;
  646.   Temp_String := '    END;';
  647.   Call Type_Text;
  648.   Speed := 50;
  649.   Up;
  650.   Up;
  651.   Up;
  652.   Up;
  653.   Up;
  654.   Up;
  655.   Delay(1000);
  656.   Block_Begin;
  657.   Kill_Box;
  658.   Put_Box(1,4,69,7,Stat_Color,Back_Color,'',True);
  659.   Write('If you accidentally move or copy a block...',3,5,Stat_Color,Back_Color);
  660.   Down;
  661.   Delay(200);
  662.   Down;
  663.   Delay(200);
  664.   Down;
  665.   Delay(200);
  666.   Down;
  667.   Block_End;
  668.   Delay(1000);
  669.   Up;
  670.   Up;
  671.   Up;
  672.   Up;
  673.   Up;
  674.   Up;
  675.   Up;
  676.   Delay(500);
  677.   Copy_Block;
  678.   Delay(1000);
  679.   Undo;
  680.   Write('UNDO can handle it!',47,5,Stat_Color,Back_Color);
  681.   Explosions := True;
  682.   Delay(2000);
  683.   Down;
  684.   Delay(1000);
  685.   Block_Begin;
  686.   Kill_Box;
  687.   Put_Box(1,4,50,7,Stat_Color,Back_Color,'',True);
  688.   Write('If you accidentally delete a block...',3,5,Stat_Color,Back_Color);
  689.   Down;
  690.   Delay(200);
  691.   Down;
  692.   Delay(200);
  693.   Down;
  694.   Delay(200);
  695.   Down;
  696.   Delay(200);
  697.   Down;
  698.   Delay(200);
  699.   Down;
  700.   Block_End;
  701.   Delay(1000);
  702.   Delete_Block;
  703.   Call CHECK_FOR_ESC;
  704.   Delay(1000);
  705.   Undo;
  706.   Write('Voila!',41,5,Stat_Color,Back_Color);
  707.   Delay(1000);
  708.   Put_Box(10,6,44,11,Stat_Color,Back_Color,'FULL UNDO',True);
  709.   Write_Y := 7;
  710.   Write_X := 12;
  711.   Temp_String := 'UNDO can reverse almost any';
  712.   Call Type_Out;
  713.   Temp_String := 'editing operation, up to your';
  714.   Call Type_Out;
  715.   Temp_String := 'last 100 changes!';
  716.   Call Type_Out;
  717.   Temp_Integer := 2;
  718.   Call WAIT;
  719.   Kill_Box;
  720.   Kill_Box;
  721.   Call CHECK_FOR_ESC;
  722.   Delete_Window;
  723.   File_Name := 'MULTI-EDIT';
  724.   Redraw;
  725.   Refresh := False;
  726.   Write_B_Color := Back_Color;
  727.   Write_F_Color := Text_Color;
  728.   Call CLEAR_TEXT_AREA;
  729.  
  730. {*AUTO SAVE*}
  731.   Write_X := 3;
  732.   Write_B_Color := Stat_Color;
  733.   Write_F_Color := Back_Color;
  734.   Put_Box(1,5,68,10,Write_B_Color,Write_F_Color,'AUTO SAVE',True);
  735.   Write_Y := 6;
  736.   Temp_String := 'In addition to Undo, another time saving feature is AUTO SAVE.';
  737.   Call TYPE_OUT;
  738.   Delay(1000);
  739.   Temp_String := 'Files can be automatically saved at a user definable time';
  740.   Call TYPE_OUT;
  741.   Temp_String := 'interval to guard against power outages, system crashes, etc.';
  742.   Call TYPE_OUT;
  743.   Call CHECK_FOR_ESC;
  744.   Temp_Integer := 1;
  745.   Call WAIT;
  746.  
  747. {*VIRTUAL MEMORY*}
  748.   Put_Box(3,9,66,14,Write_B_Color,Write_F_Color,'VIRTUAL MEMORY',True);
  749.   Write_X := 5;
  750.   Write_Y := 10;
  751.   Temp_String := 'Users need''t be concerned about file size with Multi-Edit!';
  752.   Call TYPE_OUT;
  753.   Delay(1000);
  754.   Temp_String := 'With virtual memory, files can be of unlimited size...';
  755.   Call TYPE_OUT;
  756.   Delay(1000);
  757.   Temp_String := 'And it''s all automatic!';
  758.   Call TYPE_OUT;
  759.   Temp_Integer := 1;
  760.   Call WAIT;
  761.  
  762. {*KEYSTROKE MACROS*}
  763.   Put_Box(5,13,70,19,Write_B_Color,Write_F_Color,'KEYSTROKE MACROS',True);
  764.   Write_X := 7;
  765.   Write_Y := 14;
  766.   Temp_String := 'With Multi-Edit''s keystroke macro feature, you can record';
  767.   Call TYPE_OUT;
  768.   Temp_String := 'many keystrokes, then repeat them with a single keystroke!';
  769.   Call TYPE_OUT;
  770.   Delay(1000);
  771.   Temp_String := 'Keystroke macros may be assigned to any key, saved to disk,';
  772.   Call TYPE_OUT;
  773.   Temp_String := 'and you can create as many as you need.';
  774.   Call TYPE_OUT;
  775.   Temp_Integer := 4;
  776.   Call WAIT;
  777.   Write_F_Color := Back_Color;
  778.   Write_B_Color := Stat_Color;
  779.   Kill_Box;
  780.   Kill_Box;
  781.   Kill_Box;
  782.   Call SPIRAL_WIPE;
  783.  
  784. {*BLOCK OPERATIONS*}
  785.   Int1 := Cur_Window;
  786.   Size_Window(1,3,40,13);
  787.   Create_Window;
  788.   Int2 := Cur_Window;
  789.   Size_Window(41,3,80,13);
  790.   File_Name := 'MULTI-EDIT';
  791.   Create_Window;
  792.   Int3 := Cur_Window;
  793.   Size_Window(1,14,40,24);
  794.   File_Name := 'MULTI-EDIT';
  795.   Create_Window;
  796.   Int4 := Cur_Window;
  797.   Size_Window(41,14,80,24);
  798.   File_Name := 'MULTI-EDIT';
  799.   Switch_Window(Int1);
  800.   Refresh := True;
  801.   New_Screen;
  802.   Tof;
  803.   Temp_String := 'With Multi-Edit, blocks of text can';
  804.   Call Type_Text;
  805.   Temp_String := 'be marked for cut and paste by line,';
  806.   Call Type_Text;
  807.   Up; Up;
  808.   Block_Begin;
  809.   Down;
  810.   Block_End;
  811.   Delay(1000);
  812.   Down;
  813.   Temp_String := 'column,';
  814.   Call Type_Text;
  815.   Delay(1000);
  816.   Up; Up; Up;
  817.   Goto_Col(5);
  818.   Key_In(<ShftF7><RT><RT><RT><RT><RT><DN><DN><ShftF7>);
  819.   Delay(1000);
  820.   Left;
  821.   Temp_String := 'and stream of text!';
  822.   Call Type_Text;
  823.   Delay(1000);
  824.   Up; Up;
  825.   Goto_Col(4);
  826.   Key_In(<AltF7><DN><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT>
  827. <RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><F7>);
  828.   Delay(1000);
  829.   Down;
  830.   Down;
  831.   Goto_Col(1);
  832.   Temp_String := 'The blocks can be copied and moved';
  833.   Call Type_Text;
  834.   Temp_String := 'within a window and between windows!';
  835.   Call Type_Text;
  836.   Up;
  837.   Goto_Col(1);
  838.   Block_Begin;
  839.   Up;
  840.   Block_End;
  841.   Delay(1000);
  842.   Down;
  843.   Down;
  844.   Down;
  845.   Down;
  846.   Key_In(<F10>);
  847.   Delay(1000);
  848.   Tof;
  849.   Goto_Col(7);
  850.   Key_In(<ShftF7><RT><RT><RT><RT><RT><RT><DN><DN><ShftF7>);
  851.   Delay(1000);
  852.   Down;
  853.   Goto_Col(10);
  854.   Copy_Block;
  855.   Delay(1000);
  856.   Block_Begin;
  857.   Down;
  858.   Down;
  859.   Down;
  860.   Block_End;
  861.   Delay(1000);
  862.   Switch_Window(Int2);
  863.   Window_Move(Int1);
  864.   Switch_Window(Int1);
  865.   Redraw;
  866.   Switch_Window(Int2);
  867.   Redraw;
  868.   Delay(1000);
  869.   Down;
  870.   Down;
  871.   Down;
  872.   Block_Begin;
  873.   Block_End;
  874.   Delay(1000);
  875.   Copy_Block;
  876.   Delay(1000);
  877.   Copy_Block;
  878.   Delay(1000);
  879.   Block_Begin;
  880.   Down;
  881.   Down;
  882.   Block_End;
  883.   Delay(1000);
  884.   Switch_Window(Int3);
  885.   Delay(1000);
  886.   Window_Move(Int2);
  887.   Switch_Window(Int2);
  888.   Redraw;
  889.   Switch_Window(Int3);
  890.   Redraw;
  891.   Temp_String := 'Blocks can be indented...';
  892.   Up;
  893.   Goto_Col(1);
  894.   Cr;
  895.   Up;
  896.   Call Type_Text;
  897.   Delay(1000);
  898.   Run_Macro('IndBlk');
  899.   Delay(2000);
  900.   Indent;
  901.   Temp_String := 'and undented!';
  902.   Call Type_Text;
  903.   Delay(1000);
  904.   Run_Macro('UndBlk');
  905.   Delay(2000);
  906.   Switch_Window(Int4);
  907.   Down;
  908.   Delay(1000);
  909.   Window_Copy(Int3);
  910.   Delay(1000);
  911.   Temp_String := 'They can also be deleted.';
  912.   Up;
  913.   Call Type_TEXT;
  914.   Delay(1000);
  915.   Delete_Block;
  916.   Redraw;
  917.   Temp_Integer := 2;
  918.   Call WAIT;
  919.   Write_F_Color := Text_Color;
  920.   Write_B_Color := Back_Color;
  921.   Refresh := False;
  922.   Call SPIRAL_WIPE;
  923.  
  924.   Delete_Window;
  925.   Delete_Window;
  926.   Delete_Window;
  927.   Erase_Window;
  928.   File_Name := 'MULTI-EDIT';
  929.   Size_WIndow(0,3,81,24);
  930.   Refresh := True;
  931.   Redraw;
  932.   Refresh := False;
  933.  
  934. {*SEARCH AND REPLACE *}
  935.   Size_Window(3,12,60,24);
  936.   Tof;
  937.   Put_Line('  Case Base of');
  938.   Down;
  939.   Put_Line('    Hexadecimal : BEGIN');
  940.   Down;
  941.   Put_Line('                  If Current_Keypress = #8 Then');
  942.   Down;
  943.   Put_Line('                    BEGIN');
  944.   Down;
  945.   Put_Line('                      Delete(Display_String,Length(Display_String),1);');
  946.   Down;
  947.   Put_Line('                      Long_String := Concat(''0'',Display_String);');
  948.   Down;
  949.   Put_Line('                    END');
  950.   Down;
  951.   Put_Line('                  Else');
  952.   Down;
  953.   Put_Line('                    BEGIN');
  954.   Down;
  955.   Put_Line('                      If Display_String[1] <> ''0'' Then');
  956.   Down;
  957.   Put_Line('                      If Display_String[1] <> ''0'' Then');
  958.   Down;
  959.   Put_Line('                        Exit;');
  960.   Down;
  961.   Put_Line('                      Delete(Display_String,1,1);');
  962.   Down;
  963.   Put_Line('                      Delete(Display_String,1,1);');
  964.   Down;
  965.   Put_Line('                      Long_String := Concat(Display_String,Current_Keypress);');
  966.   Down;
  967.   Put_Line('                    END;');
  968.   Down;
  969.   Put_Line('                  END;');
  970.   Tof;
  971.   Put_Box(1,4,50,8,Stat_Color,Back_Color,'',True);
  972.   Write('Multi-Edit has a POWERFUL Search and Replace',3,5,Stat_Color,Back_Color);
  973.   Write('feature including regular expressions!',3,6,Stat_Color,Back_Color);
  974.   GotoXY(41,6);
  975.   Delay(2000);
  976.   Put_Box(3,7,60,11,Stat_Color,Back_Color,'',True);
  977.  Write('As an example, we will search for all occurrences of',5,8,Stat_Color,Back_Color);
  978.   Write('"Display" or "Long", and replace them with "What".',5,9,Stat_Color,Back_Color);
  979.   GotoXY(55,9);
  980.   Delay(6000);
  981.   Refresh := True;
  982.   Redraw;
  983.   Key_In(<ShftF6><PS><PS>{Display}|{Long}<PS><PS><CR><PS><PS>What<PS><PS>
  984. <CR><PS><PS>IP<PS><PS><CR><PS><PS><CR><PS><PS><CR><PS><PS><CR><PS><PS>
  985. <CR><PS><PS><CR><PS><PS><CR><PS><PS><CR><PS><PS><CR><PS><PS><CR><PS><PS><CR>);
  986.   Tof;
  987.   Delay(1000);
  988.   Put_Box(3,6,43,10,Stat_Color,Back_Color,'',True);
  989.   Write('Just in case you don''t like what ',5,7,Stat_Color,Back_Color);
  990.   Write('you''ve changed, don''t forget UNDO!',5,8,Stat_Color,Back_Color);
  991.   GotoXY(40,8);
  992.   Delay(2000);
  993.   Messages := False;
  994.   Undo;
  995.   Undo;
  996.   Messages := True;
  997.   Make_Message('');
  998.   Temp_Integer := 2;
  999.   Call WAIT;
  1000.   Kill_Box;
  1001.   Kill_Box;
  1002.   Kill_Box;
  1003.   Erase_Window;
  1004.   File_Name := 'MULTI-EDIT';
  1005.   Size_Window(0,3,81,24);
  1006.   Refresh := True;
  1007.   Redraw;
  1008.   Refresh := False;
  1009.  
  1010. {*TAB STOPS*}
  1011.   Size_Window(0,3,81,7);
  1012.   Refresh := True;
  1013.   New_Screen;
  1014.   Put_Box(19,8,62,14,Stat_Color,Back_Color,'TAB STOPS',True);
  1015.   Write_F_Color := Back_Color;
  1016.   Write_B_Color := Stat_Color;
  1017.   Write_X := 21;
  1018.   Write_Y := 9;
  1019.   Temp_String := 'With Multi-Edit, you can set tab stops';
  1020.   Call TYPE_OUT;
  1021.   Delay(500);
  1022.   Temp_String := 'for high level language indenting as';
  1023.   Call TYPE_OUT;
  1024.   Delay(500);
  1025.   Temp_String := 'well as for documentation with our';
  1026.   Call TYPE_OUT;
  1027.   Delay(500);
  1028.   Temp_String := 'FULLY EDITABLE format lines!';
  1029.   Call TYPE_OUT;
  1030.   Key_In(<F2><PS><PS><PS>D<PS><PS><PS>F<PS><PS><RT><PS><RT><RT><PS><RT><RT><PS><RT>
  1031. <RT><PS><RT> <PS>  <RT><PS><RT><RT><PS><RT><RT><PS><RT><RT><PS><RT><BS><PS><BS>
  1032. <BS><PS><BS><PS><PS><RT><PS><DEL><PS><DEL><PS><RT><PS><RT><PS><RT><PS><DEL><PS>
  1033. <PS><DEL><PS><DEL><PS><RT><PS><RT><PS><RT><PS><RT><PS><RT><PS>R<PS><PS><PS><PS>
  1034. <ESC>);
  1035.   Explosions := False;
  1036.   Put_Box(19,8,62,14,Stat_Color,Back_Color,'TAB STOPS',True);
  1037.   Explosions := True;
  1038.   Write('With Multi-Edit, you can set tab stops',21,9,Stat_Color,Back_Color);
  1039.   Write('for high level language indenting as',21,10,Stat_Color,Back_Color);
  1040.   Write('well as for documentation with our',21,11,Stat_Color,Back_Color);
  1041.   Write('FULLY EDITABLE format lines!',21,12,Stat_Color,Back_Color);
  1042.   GotoXY(49,12);
  1043.   Temp_Integer := 2;
  1044.   Call WAIT;
  1045.   Tof;
  1046.   Kill_Box;
  1047.   Kill_Box;
  1048.   Size_Window(0,3,81,24);
  1049.   New_Screen;
  1050.   Refresh := False;
  1051.  
  1052. {*DOCUMENT MODE*}
  1053.   Size_Window(10,15,70,24);
  1054.   Doc_Mode := True;
  1055.   Wrap_Stat := True;
  1056.   Right_Margin := 50;
  1057.   Page_Down;
  1058.   Page_Down;
  1059.   Down;
  1060.   Put_Line('|12');
  1061.   Page_Down;
  1062.   Page_Down;
  1063.   Put_Line('|12');
  1064.   Page_Down;
  1065.   Page_Down;
  1066.   Put_Line('|12');
  1067.   Tof;
  1068.   Indent;
  1069.  
  1070.   Refresh := True;
  1071.   New_Screen;
  1072.   Put_Box(1,4,59,8,Stat_Color,Back_Color,'DOCUMENTATION',True);
  1073.   Write_B_Color := Stat_Color;
  1074.   Write_F_Color := Back_Color;
  1075.   Write_X := 3;
  1076.   Write_Y := 5;
  1077.   Temp_String := 'Multi-Edit has the most complete set of documentation';
  1078.   Call TYPE_OUT;
  1079.   Temp_String := 'features available in a text editor.';
  1080.   Call TYPE_OUT;
  1081.   Delay(1000);
  1082.  
  1083.   Put_Box(4,7,42,14,Stat_Color,Back_Color,'',True);
  1084.   Write_X := 6;
  1085.   Write_Y := 8;
  1086.   Temp_String := 'A Document Display Mode with:';
  1087.   Call TYPE_OUT;
  1088.   Delay(1000);
  1089.   Temp_String := '-Automatic Page Counting';
  1090.   Call TYPE_OUT;
  1091.   Delay(1000);
  1092.   TOF;
  1093.   Temp_Integer := 1;
  1094.  
  1095.   While Temp_Integer < 50 DO
  1096.     Down;
  1097.     Temp_integer := Temp_Integer + 1;
  1098.     delay(50);
  1099.   END;
  1100.  
  1101.   Up; Up; Up; Up; Up;
  1102.   Home;
  1103.  
  1104.   Temp_String := '-Automatic Smart Word Wrap';
  1105.   Call TYPE_OUT;
  1106.   Delay(500);
  1107.  
  1108.  
  1109.   Temp_String := 'Multi-Edit has the most intelligent word wrap of any text editor on the market today!';
  1110.   Call FUN_WRAP;
  1111.  
  1112.  Key_In(<PS><PS><PS><PS><UP><UP><HOME>);
  1113.  Temp_String := 'Wraps even when inserting text!  ';
  1114.  Call Fun_wrap;
  1115.  
  1116.   Delay(1000);
  1117.   Right_Margin := 40;
  1118.  
  1119.   Temp_String := '-Paragraph Re-formatting';
  1120.   Call TYPE_OUT;
  1121.   Delay(1000);
  1122.   Execute_Macro('REFORMAT');
  1123.   Delay(1000);
  1124.   Temp_String := '-Adjustable Margins and Tab Stops';
  1125.   Call TYPE_OUT;
  1126.   Delay(2000);
  1127.  
  1128.   Put_Box(7,13,55,23,Stat_Color,Back_Color,'',True);
  1129.   Write_X := 9;
  1130.   Write_Y := 14;
  1131.   Temp_String := 'A Print Formatter with:';
  1132.   Call TYPE_OUT;
  1133.   Delay(1000);
  1134.   Temp_String := '-Automatic Pagination';
  1135.   Call TYPE_OUT;
  1136.   Delay(1000);
  1137.   Temp_String := '-Automatic Table of Contents generator';
  1138.   Call TYPE_OUT;
  1139.   Delay(1000);
  1140.   Temp_String := '-Bold, Underline, Italics, and Double width';
  1141.   Call TYPE_OUT;
  1142.   Delay(1000);
  1143.   Temp_String := '-Headers/Footers';
  1144.   Call TYPE_OUT;
  1145.   Delay(1000);
  1146.   Temp_String := '-Centering';
  1147.   Call TYPE_OUT;
  1148.   Delay(1000);
  1149.   Temp_String := '-user definable printer drivers';
  1150.   Call TYPE_OUT;
  1151.   Delay(1000);
  1152.   Temp_String := '-and much, much more!';
  1153.   Call TYPE_OUT;
  1154.   Temp_Integer := 3;
  1155.   Call WAIT;
  1156.   Kill_Box;
  1157.   Kill_Box;
  1158.   Kill_Box;
  1159.   Right_Margin := 254;
  1160.   Size_Window(0,3,81,24);
  1161.   Page_Down;
  1162.   New_Screen;
  1163.   Refresh := False;
  1164.   Erase_Window;
  1165.  
  1166.  
  1167. {*LANGUAGE SPECIFIC MACROS*}
  1168. {*TEMPLATE*}
  1169.   Temp_String := 'With Multi-Edit''s template editing macros, you can create common';
  1170.   Y_Start := 23;
  1171.   Write_X := 10;
  1172.   Write_Y := 4;
  1173.   Write_F_Color := Text_Color;
  1174.   Write_B_Color := Back_Color;
  1175.   Call SCROLL_UP;
  1176.   Write_Y := 5;
  1177.   Temp_String := 'constructs with a single keystroke!';
  1178.   Call SCROLL_UP;
  1179.   Delay(1000);
  1180.   Write('{ PASCAL }',10,7,Back_Color,Text_Color);
  1181.   Write('While () Do',10,8,Back_Color,Text_Color);
  1182.   Write('  BEGIN',10,9,Back_Color,Text_Color);
  1183.   Write('  END;',10,11,Back_Color,Text_Color);
  1184.   Delay(1000);
  1185.   Write('/* C */',10,13,Back_Color,Text_Color);
  1186.   Write('while () {',10,14,Back_Color,Text_Color);
  1187.   Write('}',10,16,Back_Color,Text_Color);
  1188.   Delay(1000);
  1189.   Write('100 ''BASIC',10,18,Back_Color,Text_Color);
  1190.   Write('110 WHILE',10,19,Back_Color,Text_Color);
  1191.   Write('120',10,20,Back_Color,Text_Color);
  1192.   Write('130 WEND',10,21,Back_Color,Text_Color);
  1193.   Delay(1000);
  1194.   Put_Box(17,12,63,16,Stat_Color,Back_Color,'',True);
  1195.   Write_B_Color := Stat_Color;
  1196.   Write_F_Color := Back_Color;
  1197.   Write_X := 18;
  1198.   Write_Y := 13;
  1199.   Temp_String := 'Template editing macros are completely user';
  1200.   Call TYPE_OUT;
  1201.   Temp_String := 'definable to fit ANY programming language!';
  1202.   Call TYPE_OUT;
  1203.   Temp_Integer := 4;
  1204.   Call WAIT;
  1205.  
  1206. {*CONDENSED MODE*}
  1207.   Write_B_Color := Back_Color;
  1208.   Write_F_Color := Text_Color;
  1209.   Call CLEAR_TEXT_AREA;
  1210.   Size_Window(0,11,81,24);
  1211.   File_Name := 'WHATZIT.C';
  1212.   Put_Box(11,4,68,10,Stat_Color,Back_Color,'CONDENSED MODE',True);
  1213.   Write('Multi-Edit''s Condensed mode display can turn this...',
  1214.   13,5,Stat_Color,Back_Color);
  1215.   Tof;
  1216.   Put_Line('void calc_tot()');
  1217.   Down;
  1218.   Put_Line('{');
  1219.   Down;
  1220.   Put_Line('  int fail_flag, i, j, k, fl, pri, t_cause;');
  1221.   Down;
  1222.   Put_Line('  for (i=0; i<21; i++) {                     /*perform summations if any defined');
  1223.   Down;
  1224.   Put_Line('    strcopy(tmpbuf,paramtrc[i],title);       /*is selected by a title of sum=xxx');
  1225.   Down;
  1226.   Put_Line('    if (strncmp(tmpbuf,"SUM=",4) == 0 {');
  1227.   Down;
  1228.   Put_Line('      prm[i]=0;');
  1229.   Down;
  1230.   Put_Line('      j=4;');
  1231.   Down;
  1232.   Put_Line('      while ((k=tmpbuf[j]) != ''\0'') {        /*parse out rows to add*/');
  1233.   Down;
  1234.   Put_Line('        if ((k != ''+'') && (k != '' '')) {      /*ignore any + signs and blanks*/');
  1235.   Down;
  1236.   Put_Line('          k=toupper(k) - ''0'';                /*convert row number from ASCII*/');
  1237.   Down;
  1238.   Put_Line('        if ((k > 9)');
  1239.   Tof;
  1240.   Refresh := True;
  1241.   Redraw;
  1242.   Delay(3000);
  1243.   Refresh := False;
  1244.   Write('into this!!',  13,6,Stat_Color,Back_Color);
  1245.   Write('L[     ]──────────────────────────CONDENSED',  2,11,Back_Color,Text_Color);
  1246.   Write('00001',4,11,Back_Color,Stat_Color);
  1247.   Write('void main( arg1, arg2 )                                                         ',1,12,Back_Color,Text_Color);
  1248.   Write('{                                                                               ',1,13,Back_Color,Text_Color);
  1249.   Write('}                                                                               ',1,14,Back_Color,Text_Color);
  1250.   Write('void Calc_tot()                                                                 ',1,15,Back_Color,Text_Color);
  1251.   Write('{                                                                               ',1,16,Back_Color,Text_Color);
  1252.   Write('}                                                                               ',1,17,Back_Color,Text_Color);
  1253.   Write('int load_file( filename )                                                       ',1,18,Back_Color,Text_Color);
  1254.   Write('{                                                                               ',1,19,Back_Color,Text_Color);
  1255.   Write('}                                                                               ',1,20,Back_Color,Text_Color);
  1256.   Write('int save_file( filename )                                                       ',1,21,Back_Color,Text_Color);
  1257.   Write('{                                                                               ',1,22,Back_Color,Text_Color);
  1258.   Write('}                                                                               ',1,23,Back_Color,Text_Color);
  1259.   Delay(2000);
  1260.   Write_F_Color := Back_Color;
  1261.   Write_B_Color := Stat_Color;
  1262.   Write_X := 13;
  1263.   Write_Y := 7;
  1264.   Temp_String := 'You can then quickly move the cursor through the';
  1265.   Call TYPE_OUT;
  1266.   Temp_String := 'file.';
  1267.   Call TYPE_OUT;
  1268.   GotoXY(1,12);
  1269.   Temp_Integer := 0;
  1270.   WHILE (Temp_Integer < 6) DO
  1271.     Delay(1000);
  1272.     GotoXY(1,Temp_Integer + 13);
  1273.     Write(Copy('000100050523055105535749',(Temp_Integer * 4) + 1,4),5,11,Back_Color,Stat_Color);
  1274.     Temp_Integer := Temp_Integer + 1;
  1275.   END;
  1276.   Temp_Integer := 4;
  1277.   Call WAIT;
  1278.   Size_Window(0,3,81,24);
  1279.   Erase_Window;
  1280.   File_Name := 'MULTI-EDIT';
  1281.   Kill_Box;
  1282.   Kill_Box;
  1283.   Write_B_Color := Back_Color;
  1284.   Write_F_Color := Text_Color;
  1285.   Call CLEAR_TEXT_AREA;
  1286.  
  1287. {*COMPILATION*}
  1288.   Put_Box(12,6,69,9,Stat_Color,Back_Color,'COMPILATION',True);
  1289.   Write('Compiling of programs is no problem with Multi-Edit!',14,7,Stat_Color,Back_Color);
  1290.   GotoXY(66,7);
  1291.   Delay(2000);
  1292.   Win_X1 := 19;
  1293.   Win_Y1 := 8;
  1294.   Put_Box(19,8,61,14,Stat_Color,Back_Color,'',True);
  1295.   Write_F_Color := Back_Color;
  1296.   Write_B_Color := Stat_Color;
  1297.   Write_X := 21;
  1298.   Write_Y := 9;
  1299.   Temp_String := 'You can compile within the editor...';
  1300.   Call TYPE_OUT;
  1301.   Temp_String := 'and Multi-Edit will interface to most';
  1302.   Call TYPE_OUT;
  1303.   Temp_String := 'common compilers for automatic error';
  1304.   Call TYPE_OUT;
  1305.   Temp_String := 'location in the source!';
  1306.   Call TYPE_OUT;
  1307.   Temp_Integer := 2;
  1308.   Call WAIT;
  1309.   Kill_Box;
  1310.   Kill_Box;
  1311.  
  1312. {*ASCII TABLE*}
  1313.   Write_F_Color := Text_Color;
  1314.   Write_B_Color := Back_Color;
  1315.   Put_Box(2,7,78,10,Back_Color,Text_Color,'',True);
  1316.   Write_X := 5;
  1317.   Write_Y := 8;
  1318.   Temp_String := 'Three VERY convenient features not found on most other editors are... ';
  1319.   Call TYPE_OUT;
  1320.   Delay(3000);
  1321.   Kill_Box;
  1322.   Call CLEAR_TEXT_AREA;
  1323.   Put_Box(28,9,56,12,Back_Color,Text_Color,'',True);
  1324.   Write('A pop-up ASCII table...',31,10,Back_Color,Text_Color);
  1325.   GotoXY(53,10);
  1326.   Delay(3000);
  1327.   Kill_Box;
  1328.   Key_In(<ALTA><PS><PS><PS><PS><DN><PS><PS><PS><PS><DN><PS><PS><PS><PS><DN>
  1329. <PS><PS><PS><PS><ESC>);
  1330.   Kill_Box;
  1331.  
  1332. {*LINEDRAW*}
  1333.   Put_Box(28,9,63,12,Back_Color,Text_Color,'',True);
  1334.   Write('A LINE/BOX drawing facility...',31,10,Back_Color,Text_Color);
  1335.   GotoXY(60,10);
  1336.   Delay(3000);
  1337.   Kill_Box;
  1338.   Key_In(<DN><DN><DN><DN><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT>
  1339. <RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><F2>sl<ShftRT>
  1340. <ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT>
  1341. <ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT>
  1342. <F2><ShftDN><ShftDN><ShftDN><ShftDN><ShftDN><ShftDN><ShftDN><ShftDN><ShftDN><F2>
  1343. <F2><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF>
  1344. <ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF><ShftLF>
  1345. <ShftLF><ShftLF><F2><ShftUP><ShftUP><ShftUP><ShftUP><ShftUP><ShftUP><ShftUP>
  1346. <ShftUP><ShftUP><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><F2><F2><ShftDN><ShftDN>
  1347. <ShftDN><ShftDN><ShftDN><ShftDN><ShftDN><ShftDN><ShftDN><LF><LF><LF><LF><LF><LF>
  1348. <LF><LF><LF><LF><UP><UP><UP><UP><F2><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT>
  1349. <ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT>
  1350. <ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ShftRT><ESC>);
  1351.   Delay(3000);
  1352.   Erase_Window;
  1353.  
  1354. {*CALCULATOR*}
  1355.   Put_Box(21,4,62,12,Back_Color,Text_Color,'',True);
  1356.   Write_B_Color := Back_Color;
  1357.   Write_F_Color := Text_Color;
  1358.   Write_X := 23;
  1359.   Write_Y := 5;
  1360.   Temp_String := 'And a pop-up Programmers Calculator!';
  1361.   Call TYPE_OUT;
  1362.   Delay(1000);
  1363.   Temp_String := 'With all standard math functions...';
  1364.   Call TYPE_OUT;
  1365.   Delay(1000);
  1366.   Temp_String := 'including memory.';
  1367.   Call TYPE_OUT;
  1368.   Delay(1000);
  1369.   Temp_String := 'with floating point decimal...';
  1370.   Call TYPE_OUT;
  1371.   Delay(1000);
  1372.   Temp_String := 'Binary...';
  1373.   Call TYPE_OUT;
  1374.   Delay(1000);
  1375.   Temp_String := 'and Hex!!!';
  1376.   Call TYPE_OUT;
  1377.   Key_In(<AltF2><3><2><7><6><7><PS><PS><PS><PS><F7><PS><PS><PS><PS><F7><PS><PS><PS><PS><ESC>);
  1378.   Temp_Integer := 2;
  1379.   Call WAIT;
  1380.   Kill_Box;
  1381.  
  1382. {*INSTALL SCREEN*}
  1383.   Call Clear_Text_Area;
  1384.   Put_Box(40,4,80,11,Back_Color,Text_Color,'INSTALLATION AND SETUP',true);
  1385.   Write_B_Color := Back_Color;
  1386.   Write_F_Color := Text_Color;
  1387.   Write_X := 42;
  1388.   Write_Y := 5;
  1389.   Temp_String := 'With our easy to use install screen';
  1390.   Call TYPE_OUT;
  1391.   Temp_String := 'you can quickly change many of the';
  1392.   Call TYPE_OUT;
  1393.   Temp_String := 'setup parameters of the editor.';
  1394.   Call TYPE_OUT;
  1395.   Temp_String := 'As an example, we will change the';
  1396.   Call TYPE_OUT;
  1397.   Temp_String := 'Colors...';
  1398.   Call TYPE_OUT;
  1399.   Delay(4000);
  1400.   Int1 := Text_Color;
  1401.   Int2 := Stat_Color;
  1402.   Int3 := Menu_Color;
  1403.   Int4 := Error_Color;
  1404.   Int5 := Back_Color;
  1405.   Kill_Box;
  1406.   Key_In(<F2><PS><PS>I<PS><PS><Dn><PS><PS><PS><PS><CR><PS><PS><CR><PS><PS>
  1407. A<PS><PS><RT><PS><PS><CR><PS><PS>H<PS><PS><PS><PS><RT><PS><PS><CR><PS><PS>
  1408. B<PS><PS><RT><PS><PS><CR><PS><PS>I<PS><PS><RT><PS><PS><CR><PS><PS>A<PS><PS>
  1409. <ESC><PS><PS><ESC><PS><PS>Y);
  1410.   Put_Box(22,10,60,15,Int5,Int2,'',true);
  1411.   Write_F_Color := Int2;
  1412.   Write_X := 24;
  1413.   Write_Y := 11;
  1414.   Temp_String := 'The changes you make can be for';
  1415.   Call TYPE_OUT;
  1416.   Temp_String := 'the current editing session only,';
  1417.   Call TYPE_OUT;
  1418.   Temp_String := 'or can be saved permanently!';
  1419.   Call TYPE_OUT;
  1420.   Temp_Integer := 4;
  1421.   Call WAIT;
  1422.   Set_Colors(Int1,Int2,Int3,Int4,Int5);
  1423.   Refresh := True;
  1424.   Kill_Box;
  1425.   New_Screen;
  1426.   Refresh := False;
  1427.   CALL CLEAR_TEXT_AREA;
  1428.  
  1429. {*DOS SHELL*}
  1430.   Write_F_Color := Text_Color;
  1431.   Write_B_Color := Back_Color;
  1432.   Call CLEAR_TEXT_AREA;
  1433.   Explosions := True;
  1434.  
  1435.   Put_Box(20,4,63,8,Stat_Color,Back_Color,'',True);
  1436.   Write('With Multi-Edit, you can access DOS...',22,5,Stat_Color,Back_Color);
  1437.   Write('TWO different ways!',22,6,Stat_Color,Back_Color);
  1438.  
  1439. {
  1440.   Win_X1 := 20;
  1441.   Win_Y1 := 20;
  1442.   Put_Box(Win_X1,Win_Y1,Win_X1 + 43,Win_Y1 + 4,Stat_Color,Back_Color,'',True);
  1443.   Write('With Multi-Edit, you can access DOS...',Win_X1 + 2,Win_Y1 + 1,Stat_Color,Back_Color);
  1444.   Write('TWO different ways!',Win_X1 + 2,Win_Y1 + 2,Stat_Color,Back_Color);
  1445.   Delay(500);
  1446.   Kill_Box;
  1447.   Explosions := False;
  1448.   While (Win_Y1 > 4) Do
  1449.     Win_Y1 := Win_Y1 - 1;
  1450.     Put_Box(Win_X1,Win_Y1,Win_X1 + 42,Win_Y1 + 4,Stat_Color,Back_Color,'',True);
  1451.     Write('With Multi-Edit, you can access DOS...',Win_X1 + 2,Win_Y1 + 1,Stat_Color,Back_Color);
  1452.     Write('TWO different ways!',Win_X1 + 2,Win_Y1 + 2,Stat_Color,Back_Color);
  1453.     If (Win_Y1 > 4) Then Kill_Box; End;
  1454.   End;
  1455.   Explosions := True;
  1456. }
  1457.   GotoXY(41,6);
  1458.   Delay(2000);
  1459.   Write_F_Color := Back_Color;
  1460.   Write_B_Color := Stat_Color;
  1461.   Put_Box(22,7,66,10,Stat_Color,Back_Color,'',True);
  1462.   Write_X := 24;
  1463.   Write_Y := 8;
  1464.   Temp_String := '1. Run DOS from the editor via <Alt-F3>';
  1465.   Call Type_Out;
  1466.   Delay(1000);
  1467.   Put_Box(25,9,59,12,Stat_Color,Back_Color,'',True);
  1468.   Write_X := 27;
  1469.   Write_Y := 10;
  1470.   Temp_String := '2. Use our POWERFUL DOS SHELL';
  1471.   Call Type_Out;
  1472.   Delay(3000);
  1473.   Kill_Box;
  1474.   Kill_Box;
  1475.   Kill_Box;
  1476.   ENTER_DOS_SHELL;
  1477.   Put_Box(48,3,80,6,Stat_Color,Back_Color,'DOS SHELL',False);
  1478.   Write_X := 50;
  1479.   Write_Y := 4;
  1480.   Write_B_Color := Stat_Color;
  1481.   Write_F_Color := Back_Color;
  1482.   Temp_String := 'Directories are displayed in';
  1483.   Call TYPE_OUT;
  1484.   Temp_String := 'a very easy to use window!';
  1485.   Call TYPE_OUT;
  1486.   Temp_Integer := 12;
  1487.   WHILE (Temp_Integer > 5) DO
  1488.     DOS_DOWN;
  1489.     Delay(500);
  1490.     Temp_Integer := Temp_Integer - 1;
  1491.   END;
  1492.   WHILE (Temp_Integer > 0) DO
  1493.     DOS_Up;
  1494.     Delay(500);
  1495.     Temp_Integer := Temp_Integer - 1;
  1496.   END;
  1497.   Put_Box(48,6,80,9,Stat_Color,Back_Color,'',False);
  1498.   Write_Y := 7;
  1499.   Temp_String := 'Files can be marked for load,';
  1500.   Call TYPE_OUT;
  1501.   Temp_String := 'copy, or delete!';
  1502.   Call TYPE_OUT;
  1503.   Key_In( <DN><PS><PS> <DN><PS><PS> <DN><PS><PS><DN><PS><PS><DN><PS><PS>);
  1504.   Delay(1000);
  1505.   Kill_Box;
  1506.   Kill_Box;
  1507.   Put_Box(48,3,80,15,Stat_Color,Back_Color,'DOS SHELL',False);
  1508.   Write_Y := 4;
  1509.   Temp_String := 'With just a few keystrokes,';
  1510.   Call TYPE_OUT;
  1511.   Write_Y := 5;
  1512.   Temp_String := 'you can...';
  1513.   Call TYPE_OUT;
  1514.   Delay(500);
  1515.   Temp_String := '    -Load multiple files';
  1516.   Call TYPE_OUT;
  1517.   Delay(500);
  1518.   Temp_String := '    -Copy multiple files';
  1519.   Call TYPE_OUT;
  1520.   Delay(500);
  1521.   Temp_String := '    -Delete multiple files';
  1522.   Call TYPE_OUT;
  1523.   Delay(500);
  1524.   Temp_String := '    -Print a file';
  1525.   Call TYPE_OUT;
  1526.   Delay(500);
  1527.   Temp_String := '    -Display any directory';
  1528.   Call TYPE_OUT;
  1529.   Delay(500);
  1530.   Temp_String := '    -Change directories';
  1531.   Call TYPE_OUT;
  1532.   Delay(500);
  1533.   Temp_String := '    -Rename a file';
  1534.   Call TYPE_OUT;
  1535.   Temp_String := '    -Run any DOS command';
  1536.   Call TYPE_OUT;
  1537.   Delay(500);
  1538.   Temp_String := '    -Run any program';
  1539.   Call TYPE_OUT;
  1540.  
  1541.   Temp_Integer := 2;
  1542.   Call WAIT;
  1543.   Kill_Box;
  1544.   EXIT_DOS_SHELL;
  1545.   Kill_Box;
  1546.   Refresh := True;
  1547.   Redraw;
  1548.   Refresh := False;
  1549.   Write_F_Color := Text_Color;
  1550.   Write_B_Color := Back_Color;
  1551.   Call CLEAR_TEXT_AREA;
  1552.  
  1553.  
  1554. {*MACRO LANGUAGE*}
  1555.   Write_F_Color := Text_Color;
  1556.   Write_B_Color := Back_Color;
  1557.   Write_X := 1;
  1558.   Write_Y := 4;
  1559.   Temp_String := 'Probably the most important feature of Multi-Edit is it''s';
  1560.   Call TYPE_OUT;
  1561.   Temp_String := 'extensibility.  With the Multi-Edit macro language you can';
  1562.   Call TYPE_OUT;
  1563.   Temp_String := 'create virtually any function you need!';
  1564.   Call TYPE_OUT;
  1565.   Speed := 5;
  1566.   Write_Y := 8;
  1567.   Temp_String := '  $Macro Bracecnt;';
  1568.   Call TYPE_OUT;
  1569.   Temp_String := '    Def_Int(count);                { Declare integer variable }';
  1570.   Call TYPE_OUT;
  1571.   Write_Y := 11;
  1572.   Temp_String := '    While Search_Fwd(''@{||||@}'',0) DO  { Look for ''{'' or ''}''            }';
  1573.   Call TYPE_OUT;
  1574.   Temp_String := '      If Cur_Char = ''{'' THEN       { Determine which char found     }';
  1575.   Call TYPE_OUT;
  1576.   Temp_String := '        Count := Count + 1;        { Increment count if char is ''{'' }';
  1577.   Call TYPE_OUT;
  1578.   Temp_String := '      ELSE';
  1579.   Call TYPE_OUT;
  1580.   Temp_String := '        Count := Count - 1;        { Decrement count if char is ''}'' }';
  1581.   Call TYPE_OUT;
  1582.   Temp_String := '      END;';
  1583.   Call TYPE_OUT;
  1584.   Temp_String := '      Right;';
  1585.   Call TYPE_OUT;
  1586.   Temp_String := '    END;';
  1587.   Call TYPE_OUT;
  1588.   Temp_String := '    Make_Message(''Excess { count = '' + Str( Count ));  { Display result }';
  1589.   Call TYPE_OUT;
  1590.   Temp_String := '  End_Macro;';
  1591.   Call TYPE_OUT;
  1592.   Speed := 50;
  1593.   Write_Y := 22;
  1594.   Temp_String := 'Virtually all editor functions can be accessed through the macro language...';
  1595.   Call TYPE_OUT;
  1596.   Temp_String := 'In fact, the entire user interface is written in it!';
  1597.   Call TYPE_OUT;
  1598.   Temp_Integer := 2;
  1599.   Call WAIT;
  1600.   Call SPIRAL_WIPE;
  1601.  
  1602. SKIP:
  1603.   Put_Box(7,4,73,21,Stat_Color,Back_Color,'',True);
  1604.   Write('Now that you''ve gotten a look at just some of the MANY powerful',8,5,Stat_Color,Back_Color);
  1605.   Write('features of Multi_Edit, you''re probably wondering how much does',8,6,Stat_Color,Back_Color);
  1606.   Write('this fantastic editor cost?',8,7,Stat_Color,Back_Color);
  1607.   Write('The cost is just $99.00!',27,9,Stat_Color,Back_Color);
  1608.   Write('To order, call 24 hours a day:  1-800-221-9280 Ext. 951',12,11,Stat_Color,Back_Color);
  1609.   Write('(in Arizona, call 602-968-1945)',23,12,Stat_Color,Back_Color);
  1610.   Write('Or send a check or money order to:',22,14,Stat_Color,Back_Color);
  1611.   Write('AMERICAN CYBERNETICS',30,16,Stat_Color,Back_Color);
  1612.   Write('1228 N. Stadem Drive',30,17,Stat_Color,Back_Color);
  1613.   Write('Tempe, AZ 85281',30,18,Stat_Color,Back_Color);
  1614.   Temp_Integer := 15;
  1615.   Call WAIT;
  1616.   Kill_Box;
  1617.   Refresh := True;
  1618.   New_Screen;
  1619.   Refresh := False;
  1620.   Kill_Box;
  1621.   Kill_Box;
  1622.   Kill_Box;
  1623.   Kill_Box;
  1624.   Kill_Box;
  1625.   Kill_Box;
  1626.   Kill_Box;
  1627.   Kill_Box;
  1628.   Kill_Box;
  1629.   Kill_Box;
  1630.   Kill_Box;
  1631.   Goto START_DEMO;
  1632.  
  1633. TYPE_OUT:
  1634. {This subroutine writes out the string Temp_String one char at a time beginning
  1635. at Write_X and Write_Y using background color Write_B_Color and foreground
  1636. color Write_F_Color}
  1637.   Temp_Integer := 1;
  1638.   While (Temp_Integer <= Length(Temp_String)) Do
  1639.     Write(Copy(Temp_String,Temp_Integer,1),(Write_X + Temp_Integer) - 1,Write_Y,Write_B_Color,Write_F_Color);
  1640.     GotoXY((Write_X + Temp_Integer),Write_Y);
  1641.     Temp_Integer := Temp_Integer + 1;
  1642.     Delay(Speed);
  1643.     Call CHECK_FOR_ESC;
  1644.   End;
  1645.   Write_Y := Write_Y + 1;
  1646.   RET;
  1647.  
  1648. FUN_WRAP:
  1649.   Temp_Integer := 1;
  1650.   While (Temp_Integer <= Length(Temp_String)) DO
  1651.     Text(Copy(Temp_String,Temp_Integer,1));
  1652.     Word_wrap_line;
  1653.     Temp_Integer := Temp_Integer + 1;
  1654.     Delay(50);
  1655.   END;
  1656.   RET;
  1657.  
  1658. TYPE_TEXT:
  1659. {This subroutine inserts the string Temp_String one char at a time beginning
  1660. at the current cursor position}
  1661.   Temp_Integer := 1;
  1662.   While (Temp_Integer <= Length(Temp_String)) Do
  1663.     Text(Copy(Temp_String,Temp_Integer,1));
  1664.     Temp_Integer := Temp_Integer + 1;
  1665.     Delay(Speed);
  1666.     Call CHECK_FOR_ESC;
  1667.   End;
  1668.   Cr;
  1669.   RET;
  1670.  
  1671. CLEAR_TEXT_AREA:
  1672.   Temp_Integer := 4;
  1673.   While (Temp_Integer < 24) Do
  1674.     Write(Blank_Line,1,Temp_Integer,Write_B_Color,Write_F_Color);
  1675.     Temp_Integer := Temp_Integer + 1;
  1676.   End;
  1677.   RET;
  1678.  
  1679. SPIRAL_WIPE:
  1680.   Write_X := 4;
  1681.   While (Write_X < 14) Do
  1682.     Write(Blank_Line,1,Write_X,Write_B_Color,Write_F_Color);
  1683.     Temp_Integer := 0;
  1684.     While ((Temp_Integer + Write_X) < (27 - Write_X)) Do
  1685.       Write(' ',81 - (Write_X - 3),Temp_Integer + Write_X + 1,Write_B_Color,Write_F_Color);
  1686.       Temp_Integer := Temp_Integer + 1;
  1687.     End;
  1688.     Write(Blank_Line,1,27 - Write_X,Write_B_Color,Write_F_Color);
  1689.     While (Temp_Integer >= 1) Do
  1690.       Write(' ',Write_X - 3,Temp_Integer + Write_X,Write_B_Color,Write_F_Color);
  1691.       Temp_Integer := Temp_Integer - 1;
  1692.     End;
  1693.     Write_X := Write_X + 1;
  1694.   End;
  1695.   RET;
  1696.  
  1697. SCROLL_UP:
  1698.   Temp_Integer := Y_Start;
  1699.   While (Temp_Integer >= Write_Y) Do
  1700.     Write(Temp_String,Write_X,Temp_Integer,Write_B_Color,Write_F_Color);
  1701.     If ((Temp_Integer + 1) < 24) Then
  1702.       Write(Blank_Line,1,Temp_Integer + 1,Write_B_Color,Write_F_Color);
  1703.     End;
  1704.     Delay(Speed);
  1705.     Call CHECK_FOR_ESC;
  1706.     Temp_Integer := Temp_Integer - 1;
  1707.   End;
  1708.   GotoXY((Write_X + Length(Temp_String)),Write_Y);
  1709.   RET;
  1710.  
  1711. WAIT:
  1712.   Make_Message('Press the space bar to continue or <ESC> to exit.');
  1713.   Temp_Integer := Temp_Integer * 10;
  1714.   While (Temp_Integer > 0) Do
  1715.     If (Check_Key) Then
  1716.       If (Key1 = 27) Then
  1717.         If (Mode = Dos_Shell) Then
  1718.           Exit_Dos_Shell;
  1719.         End;
  1720.         Goto END_OF_MAC;
  1721.       End;
  1722.       If (Key1 = 32) Then
  1723.         Temp_Integer := 0;
  1724.       End;
  1725.     End;
  1726.     Temp_Integer := Temp_Integer - 1;
  1727.     Delay(250);
  1728.   End;
  1729.   Make_Message('');
  1730.   RET;
  1731.  
  1732. CHECK_FOR_ESC:
  1733.   If (Check_Key) Then
  1734.     If (Key1 = 27) Then
  1735.       If (Mode = Dos_Shell) Then
  1736.         Exit_Dos_Shell;
  1737.       End;
  1738.       Goto END_OF_MAC;
  1739.     End;
  1740.   End;
  1741.   RET;
  1742.  
  1743. END_OF_MAC:
  1744. {  Delete_Window;}
  1745.   Refresh := True;
  1746.   Kill_Box;
  1747.   Kill_Box;
  1748.   Kill_Box;
  1749.   Kill_Box;
  1750.   Kill_Box;
  1751.   Kill_Box;
  1752.   Kill_Box;
  1753.   Kill_Box;
  1754.   Kill_Box;
  1755.   Kill_Box;
  1756.   Kill_Box;
  1757. ABORT:
  1758.   Redraw;
  1759.  
  1760. END_MACRO;
  1761.