home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1990-06-03 | 105.8 KB | 4,041 lines
$MACRO DEMO TRANS; { THERE IS SOMETHING STRANGE ABOUT THE DOCUMENT MODE PART. Sometimes, and I can't pin it down, it will repaint or kill a box before it finishes writing text in it. Subjects to possibly demo: New mouse interface New keystroke macro manager New user menu Keymap definition and multi-keymap selection Directory tree Support for TLIB and PVCS Go over the list of new features and decide what to demo or at least mention. Also decide if there is any existing thing we should not demo or cut down on demoing. Mention the differences between demo and real thing. Discuss removing the print formatter from the demo. } {****************************************************************************** MULTI-EDIT MACRO Name: DEMO Description: A self-running demonstration of the features of Multi-Edit. (C) Copyright 1989 by American Cybernetics, Inc. ******************************************************************************} Def_Int(Temp_Integer,W_X1,W_Y1,Write_X,Write_Y,Y_Start,Int1,Int2,Int3, Int4,Int5,Int6,Int7,Int8,Processor_Comp,T_C_Color,T_W_C_Color,T_Eof_Color, T_W_Eof_Color,jx,Jy,jl,c,l,w,count,Box_Color,Type_Color,Active_Window, Win_Count,Screen_Count); Def_Str(Temp_String,Win_List,Type_Str[2048]); {Temporarily disable autosave} Type_Str := Global_str('@AUTOSAVEPARMS'); Int1 := parse_int('/H1=', Type_Str ); Int2 := parse_int('/H2=', Type_Str ); IF Int1 <> 0 THEN kill_timer_event( Int1 ); END; IF Int2 <> 0 THEN kill_timer_event( Int2 ); END; Set_Global_Int('Delay_Speed',2); Screen_Count := Global_Int('@SCREEN_COUNT') + 1; Messages := False; Set_Global_Int('Demo_Speed',21); Insert_Mode := True; {Setup screen globals} Set_Global_Str('@SCREEN_SETA','/F=1/M=1/S=1/MACRO='); Set_Global_Str('@SCREEN_SETB',''); Set_Global_Int('DEF_SCRN_STYLE',1); Set_Global_Int('CUR_SCRN',1); T_C_Color := C_Color; T_W_C_Color := W_C_Color; T_W_Eof_Color := W_Eof_Color; T_Eof_Color := Eof_Color; Undo_Stat := False; Active_Window := Window_Id; Win_List := ''; Win_Count := 0; Call MAKE_WINDOW; {Check for file in window} { Tof; If Not(AT_EOF) Then Temp_String := 'This macro cannot be run with any files loaded!'; Goto ABORT; End; {Check for more than one window} If (Window_Count > 1) Then Temp_String := 'This macro cannot be run with more than one window created!'; Goto ABORT; End; } { {set colors for color or monochrome.} IF ((XPos('' + Str(Video_Card) + '','13679',1) > 0) or (Back_Color = 0) or (Back_Color = 7)) THEN Text_Color := 7; Stat_Color := 15; Menu_Color := 7; Error_Color := 0; Back_Color := 0; Change_Color := 7; Shadow_Color := 7; Shadow_Char := '░'; ELSE Text_Color := Lightgray; Stat_Color := White; Menu_Color := Lightgray; Error_Color := Red; Back_Color := Blue; Change_Color := Lightgray; Shadow_Color := Black; Shadow_Char := '█'; END; } C_Color := T_Color; W_C_Color := T_Color; W_Eof_Color := (T_Color Shr 4) or ((T_Color Shr 4) Shl 4); Eof_Color := W_Eof_Color; {This demo is setup to run best in 80 X 25 video mode and with the default screen settings} IF (Video_Mode <> 0) THEN RM('SETUP^TGLVID'); END; RM('SETSCRN'); new_screen; Screen_Num := Screen_Count; Make_Message('Multi-Edit demo: Adjusting to processor speed.....'); {Wait for clock tic to roll over} Int2 := System_Timer + 1; WHILE (System_Timer < Int2) DO END; {Increment counter and write 1 character to the screen for 18 clock tics about 1 second. Writing to the screen seems to get a more accurate picture of how fast the demo will run} Int1 := 0; Int2 := System_Timer + 18; WHILE (System_Timer < Int2) DO Write(' ',10,10,0,W_T_Color); ++Int1; END; Processor_Comp := (Int1 / 230); IF (Processor_Comp < 0) THEN Processor_Comp := 0; ELSIF (Processor_Comp > 2) THEN Processor_Comp := Processor_Comp + 2; END; { Call CLEAN_UP; GOTO SKIP; } Call WRITE_HELP; File_Name := 'MULTI-EDIT'; Refresh := False; START_DEMO: Call CLEAN_UP; Write_Y := 20; Int1 := 0; While (Int1 < 16) Do IF (Int1 > 6) THEN Temp_String := Copy( '│ │ Multi-Edit │ ││ │ │ ││ │ Welcome to the │ ││ ┌────────────────┐ ││ │┌────────────────────────┐' ,((Int1 - 7) * 26) + 1,26); ELSE Temp_String := Copy( '└────────────────────────┘│ ││ └────────────────┘ ││ │ program! │ ││ │ │ ││ │ demonstration │ ││ │ │ │' ,(Int1 * 26) + 1,26); END; IF (Int1 > 0) THEN Scroll_Box_Dn(28,4,53,Int1 + 4,((Back_Color and 7) shl 4)); END; Write(Temp_String,28,4,0,M_B_Color); ++Int1; IF (Return_Int <> -1) THEN Return_Int := 1; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_WELCOME; END; End; Int1 := 0; While (Int1 < 10) Do Temp_Integer := 8; WHILE (Temp_Integer < 19) DO Write(Copy( ' ┌────────────────┐ │ Welcome to the │ │ │ │ Multi-Edit │ │ │ │ demonstration │ │ │ │ program! │ └────────────────┘ ' ,((Temp_Integer - 8) * 22) + 1,22),30,Temp_Integer,0,M_B_Color); ++Temp_Integer; END; Return_Int := 7; Call DELAY_LOOP; IF (Return_Int <> 0) THEN Goto SKIP_WELCOME; END; Temp_Integer := 8; WHILE (Temp_Integer < 19) DO Write(Copy( ' ┌────────────────┐ │ Welcome to the │ │ │ │ Multi-Edit │ │ │ │ demonstration │ │ │ │ program! │ └────────────────┘ ' ,((Temp_Integer - 8) * 22) + 1,22),30,Temp_Integer,0,M_B_Color); ++Temp_Integer; END; Return_Int := 7; Call DELAY_LOOP; IF (Return_Int <> 0) THEN Goto SKIP_WELCOME; END; ++Int1; End; SKIP_WELCOME: Refresh := True; set_virtual_display; {build the background screen} new_screen; override_screen_seg; save_box( 1, 1, screen_width, screen_length ); reset_screen_seg; Clear_Virtual_Display; Refresh := False; Explosions := True; W_X1 := 20; W_Y1 := 10; Return_Int := 0; restore_box; Put_Box(20,10,58,14,0,M_B_Color,'',True); Write('This demo was written completely',22,11,0,M_B_Color); Write('in the Multi-Edit Macro Language!',22,12,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); Return_Int := 75; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; Kill_Box; Explosions := False; While (W_X1 > 1) Do --W_X1; If (W_X1 > 1) Then --W_X1; End; restore_box; Put_Box(W_X1,10,W_X1 + 38,14,0,M_B_Color,'',True); Write('This demo was written completely',W_X1 + 2,11,0,M_B_Color); Write('in the Multi-Edit Macro Language!',W_X1 + 2,12,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); IF (Return_Int <> -1) THEN Return_Int := 2; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; Kill_Box; End; BOX_1: W_Y1 := W_Y1 - 2; If (W_Y1 = 4) Then Kill_box; else restore_box; end; Put_Box(1,W_Y1,39,W_Y1 + 4,0,M_B_Color,'',True); Write('This demo was written completely',3,W_Y1 + 1,0,M_B_Color); Write('in the Multi-Edit Macro Language!',3,W_Y1 + 2,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); IF (Return_Int <> -1) THEN Return_Int := 2; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; If (W_Y1 = 4) Then Goto BOX_1_EXIT; End; Kill_Box; Goto BOX_1; BOX_1_EXIT: {get new background screen} override_screen_seg; save_box( 1, 1, screen_width, screen_length ); reset_screen_seg; Clear_Virtual_Display; Return_Int := 0; Explosions := True; W_X1 := 20; W_Y1 := 10; restore_box; Put_Box(20,10,55,13,0,M_B_Color,'',True); Write('It is completely self running.',22,11,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; Kill_Box; Explosions := False; While (W_X1 < 45) Do ++W_X1; If (W_X1 < 44) Then ++W_X1; End; restore_box; Put_Box(W_X1,10,W_X1 + 35,13,0,M_B_Color,'',True); Write('It is completely self running.',W_X1 + 2,11,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); IF (Return_Int <> -1) THEN Return_Int := 2; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; Kill_Box; End; BOX_2: W_Y1 := W_Y1 - 2; If (W_Y1 = 4) Then Kill_Box; ELSE restore_box; End; Put_Box(45,W_Y1,80,W_Y1 + 3,0,M_B_Color,'',True); Write('It is completely self running.',47,W_Y1 + 1,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); IF (Return_Int <> -1) THEN Return_Int := 2; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; If (W_Y1 = 4) Then Goto BOX_2_EXIT; End; Kill_Box; Goto BOX_2; BOX_2_EXIT: {get new background screen} override_screen_seg; save_box( 1, 1, screen_width, screen_length ); reset_screen_seg; Clear_Virtual_Display; Return_Int := 0; Explosions := True; W_X1 := 20; W_Y1 := 10; restore_box; Put_Box(20,10,61,16,0,M_B_Color,'',True); Write('Hit <SPACE> at any time to SKIP',22,11,0,M_B_Color); Write('quickly through the current display.',22,12,0,M_B_Color); Write('Hit <ENTER> at any time to skip to',22,13,0,M_B_Color); Write('the NEXT subject.',22,14,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); Return_Int := 125; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; Kill_Box; Explosions := False; While (W_X1 > 1) Do --W_X1; If (W_X1 > 2) Then --W_X1; End; restore_box; Put_Box(W_X1,10,W_X1 + 41,16,0,M_B_Color,'',True); Write('Hit <SPACE> at any time to SKIP',W_X1 + 2,11,0,M_B_Color); Write('quickly through the current display.',W_X1 + 2,12,0,M_B_Color); Write('Hit <ENTER> at any time to skip to',W_X1 + 2,13,0,M_B_Color); Write('the NEXT subject.',W_X1 + 2,14,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); IF (Return_Int <> -1) THEN Return_Int := 2; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; Kill_Box; End; BOX_3: ++W_Y1; If (W_Y1 < 16) Then ++W_Y1; End; If (W_Y1 = 18) Then Kill_Box; ELSE restore_box; End; Put_Box(1,W_Y1,42,W_Y1 + 6,0,M_B_Color,'',True); Write('Hit <SPACE> at any time to SKIP',3,W_Y1 + 1,0,M_B_Color); Write('quickly through the current display.',3,W_Y1 + 2,0,M_B_Color); Write('Hit <ENTER> at any time to skip to',3,W_Y1 + 3,0,M_B_Color); Write('the NEXT subject.',3,W_Y1 + 4,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); IF (Return_Int <> -1) THEN Return_Int := 2; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; If (W_Y1 = 18) Then Goto BOX_3_EXIT; End; Kill_Box; Goto BOX_3; BOX_3_EXIT: {get new background screen} override_screen_seg; save_box( 1, 1, screen_width, screen_length ); reset_screen_seg; Clear_Virtual_Display; Return_Int := 0; Explosions := True; W_X1 := 20; W_Y1 := 10; restore_box; Put_Box(20,10,46,14,0,M_B_Color,'',True); Write('Hit <ESC> at any time',22,11,0,M_B_Color); Write('to exit this demo.',22,12,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); Return_Int := 75; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; Kill_Box; Explosions := False; While (W_X1 < 54) Do W_X1 := W_X1 + 2; restore_box; Put_Box(W_X1,10,W_X1 + 26,14,0,M_B_Color,'',True); Write('Hit <ESC> at any time',W_X1 + 2,11,0,M_B_Color); Write('to exit this demo.',W_X1 + 2,12,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); IF (Return_Int <> -1) THEN Return_Int := 2; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; Kill_Box; End; BOX_4: ++W_Y1; If (W_Y1 < 18) Then ++W_Y1; End; If (W_Y1 = 19) Then Kill_Box; ELSE restore_box; End; Put_Box(54,W_Y1,80,W_Y1 + 4,0,M_B_Color,'',True); Write('Hit <ESC> at any time',56,W_Y1 + 1,0,M_B_Color); Write('to exit this demo.',56,W_Y1 + 2,0,M_B_Color); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); IF (Return_Int <> -1) THEN Return_Int := 2; Call DELAY_LOOP; END; IF (Return_Int = 1) THEN Goto SKIP_BOXES; END; If (W_Y1 = 19) Then Goto BOX_4_EXIT; End; Kill_Box; Goto BOX_4; BOX_4_EXIT: {get new background screen} override_screen_seg; save_box( 1, 1, screen_width, screen_length ); reset_screen_seg; Clear_Virtual_Display; Return_Int := 0; Explosions := True; Restore_Box; Put_Box(20,10,59,16,0,M_B_Color,'',True); Write('This demo will last approximately',22,11,0,M_B_Color); Write('15 minutes.',22,12,0,M_B_Color); Write('Press any key to begin...',26,14,0,M_B_Color); GotoXY(51,14); UPDATE_VIRTUAL_WINDOW( 1, 1, SCREEN_WIDTH, SCREEN_LENGTH ); Temp_Integer := 200; While ((Temp_Integer > 0) and (Check_Key = 0)) Do Return_Int := 1; Call DELAY_LOOP; IF (Return_Int < 0) THEN Goto SKIP_BOXES; END; --Temp_Integer; End; If (Key1 = 27) Then Goto EXIT; End; WHILE (Box_Count) DO Kill_Box; END; reset_virtual_display; {This code fakes the killing of the 5 boxes.} Temp_Integer := 5; Return_Int := 0; While (Temp_Integer) Do IF (Temp_Integer = 5) THEN W_X1 := 20; W_Y1 := 10; ELSIF (Temp_Integer = 4) THEN W_X1 := 1; W_Y1 := 4; ELSIF (Temp_Integer = 3) THEN W_X1 := 39; W_Y1 := 4; ELSIF (Temp_Integer = 2) THEN W_X1 := 1; W_Y1 := 18; ELSIF (Temp_Integer = 1) THEN W_X1 := 39; W_Y1 := 18; END; Jl := 0; WHILE (Jl < 7) DO Draw_Char(32,W_X1,W_Y1 + Jl,W_T_Color,42); ++Jl; END; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int < 0) THEN Goto SKIP_BOXES; END; --Temp_Integer; End; SKIP_BOXES: reset_virtual_display; Explosions := True; Call Clean_Up; Refresh := True; New_Screen; Refresh := False; {*OPENING STATEMENTS*} 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.'; Return_Str := '/C=14/L=10/#=4/D=100/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1','Multi-Edit is a State-of-the-Art text editor...'); Set_Global_Str('ISTR2','the first of its kind to combine the power and'); Set_Global_Str('ISTR3','flexibility of the finest programmable editor'); Set_Global_Str('ISTR4','with a user friendly interface.'); Return_Str := '/C=14/L=10/#=4/D=100/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_OPENING; END; IF (Return_Int = 2) THEN Goto EXIT; END; 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' + '- Edit up to 100 files simultaneously/n' + '- On-line, context sensitive HYPERTEXT help/n' + '- Intuitive pull-down menu system, with history lists on most prompts/n' + '- Windows style mouse support throughout/n' + '- FULL UNDO of ANY editing operation with REDO/n' + '- Powerful regular expression search and replace and multi-file search/n' + '- Complete multi-directory DOS shell/n' + '- Pop-up ASCII table and programmer''s calculator/n' + '- Language specific template, matching, and smart indent macros/n' + '- Powerful Condensed mode display for high level languages/n' + '- Automatic processing of compiler errors/n' + '- Extensive word processing features for documentation/n' + '- Full Expanded Memory support: Edit large files without disk swapping!/n' + '- Optional Multi-Edit Professional package featuring a communications/n' + ' module, spell checker, complete macro source and macro debugger/n'; Return_Str := '/C=1/L=4/#=18/D=300/T=MAJOR FEATURES/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1','Multi-Edit is an ASCII text editor, suitable for programming in any major'); Set_Global_Str('ISTR2','language AS WELL AS meeting all your documentation needs:'); Set_Global_Str('ISTR3','- Edit files up to 32 megabytes, 2 billion lines, and 2048 columns'); Set_Global_Str('ISTR4','- Edit up to 100 files simultaneously'); Set_Global_Str('ISTR5','- On-line, context sensitive HYPERTEXT help'); Set_Global_Str('ISTR6','- Intuitive pull-down menu system, with history lists on most prompts'); Set_Global_Str('ISTR7','- FULL UNDO of ANY editing operation with REDO'); Set_Global_Str('ISTR8','- Powerful regular expression search and replace and multi-file search'); Set_Global_Str('ISTR9','- Complete multi-directory DOS shell'); Set_Global_Str('ISTR10','- Pop-up ASCII table and programmer''s calculator'); Set_Global_Str('ISTR11','- Language specific template, matching, and smart indent macros'); Set_Global_Str('ISTR12','- Powerful Condensed mode display for high level languages'); Set_Global_Str('ISTR13','- Automatic processing of compiler errors'); Set_Global_Str('ISTR14','- All Word processing features needed for documentation:'); Set_Global_Str('ISTR15',' word-wrap, centering, bold, underline, pagination, justification,'); Set_Global_Str('ISTR16',' headers/footers, and table of contents generator'); Set_Global_Str('ISTR17','- Optional Multi-Edit Professional package featuring a communications'); Set_Global_Str('ISTR18',' module, spell checker, complete macro source and macro debugger'); Return_Str := '/C=1/L=4/#=18/D=300/T=MAJOR FEATURES/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_OPENING; END; IF (Return_Int = 2) THEN Goto EXIT; END; 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.'; Return_Str := '/C=6/L=6/#=3/D=100/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1','Multi-Edit is the ONLY editor on the market today with this'); Set_Global_Str('ISTR2','combination of features, enabling new users to quickly begin'); Set_Global_Str('ISTR3','productive editing without having to read a manual.'); Return_Str := '/C=6/L=6/#=3/D=100/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_OPENING: Call Clean_Up; {*MULTI-EDIT COMMAND EXECUTION*} Type_Str := 'There are two ways of executing Multi-Edit commands:'; Return_Str := '/C=6/L=10/#=1/D=50/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1','There are two ways of executing Multi-Edit commands:'); Return_Str := '/C=6/L=10/#=1/D=50/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := '1. Using the function keys, which are always labelled on screen.'; Return_Str := '/C=8/L=12/#=1/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1','1. Using the function keys, which are always labelled on screen.'); Return_Str := '/C=8/L=12/#=1/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; IF (Return_Int = 2) THEN Goto EXIT; END; Write('┌─',6,13,0,T_Color); Return_Int := 2; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; Temp_Integer := 14; WHILE (Temp_Integer < 24) DO Write('│',6,Temp_Integer,0,T_Color); Return_Int := 2; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; ++Temp_Integer; END; Write('',6,24,0,T_Color); Return_Int := 5; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; Temp_Integer := 6; While (Temp_Integer < 79) do Write(' ',Temp_Integer,24,0,T_Color); ++Temp_Integer; Int1 := (Processor_Comp / 2) + 1; WHILE (Int1 > 0) DO Return_Int := 0; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; --Int1; END; End; While (Temp_Integer > 5) do Write(' ',Temp_Integer,24,0,T_Color); --Temp_Integer; Int1 := (Processor_Comp / 2) + 1; WHILE (Int1 > 0) DO Return_Int := 0; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; --Int1; END; End; Return_Int := 5; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; Temp_Integer := 24; WHILE (Temp_Integer > 12) DO Write(' ',6,Temp_Integer,0,T_Color); Return_Int := 2; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; --Temp_Integer; END; Type_Str := '2. Using the intuitive pull-down menu system.'; Return_Str := '/C=10/L=14/#=1/D=2/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1','2. Using the intuitive pull-down menu system.'); Return_Str := '/C=10/L=14/#=1/D=2/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; IF (Return_Int = 2) THEN Goto EXIT; END; Write('└─────',4,15,0,T_Color); Return_Int := 2; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; Temp_Integer := 14; WHILE (Temp_Integer > 8) DO Write('│',4,Temp_Integer,0,T_Color); Return_Int := 2; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; --Temp_Integer; END; Write('',4,8,0,T_Color); Key_In(<F2><PS1000>f<PS500><RT><PS500><RT><PS500><RT><PS500><RT><PS500><RT> <PS500><RT><PS500><RT><PS500><RT><PS500><RT><PS500><RT><PS500> <RT><PS500><RT><PS1000><ESC>); WHILE (Temp_Integer < 15) DO Return_Int := 2; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; Write(' ',4,Temp_Integer,0,T_Color); ++Temp_Integer; END; Return_Int := 2; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; Write(' ',4,15,0,T_Color); Type_Str := 'The keyboard layout is completely user definable, and you can define multiple key layouts which can be switched between on the fly!'; Return_Str := '/C=7/L=5/#=3/D=100/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1','The keyboard layout is completely user definable!'); Return_Str := '/C=7/L=5/#=1/D=100/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; IF (Return_Int = 2) THEN Goto EXIT; END; Call Clean_Up; Type_Str := 'If you have a mouse, you can use it for a third method of command execution with our windows style mouse interface!'; Return_Str := '/T=MOUSE INTERFACE/C=7/L=5/#=2/D=100'; Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_COMMAND; END; IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_COMMAND: Call Clean_Up; {*HELP SCREENS*} Type_Str := 'Multi-Edit''s Hypertext Help Screens...'; Return_Str := '/C=1/L=4/#=1/D=50/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1','Multi-Edit''s Hypertext Help Screens...'); Return_Str := '/C=1/L=4/#=1/D=50/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_HELP; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'Are available any time by pressing <F1>'; Return_Str := '/C=4/L=6/#=1/D=50/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1','Are available any time by pressing <F1>'); Return_Str := '/C=4/L=6/#=1/D=50/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_HELP; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'Are context sensitive according to the current menu choice'; Return_Str := '/C=7/L=8/#=1/D=50/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1','Are context sensitive according to the current menu choice'); Return_Str := '/C=7/L=8/#=1/D=50/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_HELP; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'You can even create your own hypertext documents!/nWatch!!!'; Return_Str := '/C=10/L=10/#=2/D=100/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1','Are completely user modifiable!'); Return_Str := '/C=10/L=10/#=1/D=200/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_HELP; END; IF (Return_Int = 2) THEN Goto EXIT; END; Key_In(<F1><PS1000><DN><PS500><DN><PS1000><ENTER><PS1000><PS500><BS><PS1000><UP><PS500> <ENTER><PS1000><DN><PS500><ENTER><PS1000><DN><PS500><ENTER><PS1000><PS1000><BS><PS500><BS> <BS><PS1000><UP><PS500><ENTER><PS500><DN><PS500><DN><PS500><DN><PS500><DN><DN><DN><DN><DN><DN><DN><DN><DN><DN><DN> <DN><DN><DN><DN><DN><DN><DN><DN><PS500><BS><PS1000><ESC>); Return_Int := 100; Call DELAY_LOOP; SKIP_HELP: Call Clean_Up; {*WINDOWS*} Type_Str := 'Multi-Edit''s window capabilities are VERY VERSATILE!'; Return_Str := '/C=22/L=12/#=2/D=100'; Call BOXWRAP; { Set_Global_Str('ISTR1','Multi-Edit''s window capabilities'); Set_Global_Str('ISTR2','are VERY VERSATILE!'); Return_Str := '/C=22/L=12/#=2/D=100'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; IF (Return_Int = 2) THEN Goto EXIT; END; Explosions := False; Tof; Refresh := True; Redraw; Return_Int := 0; Temp_String := 'Windows can be resized to'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Temp_String := 'practically any size!'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Tof; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; {The "x" caracters are there to prevent the discarding of keystrokes due to keys repeating too fast.} Key_In(<F2><PS>W<PS>M<PS><ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x <ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<PS500><ShftUP>x <ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<PS500><RT>x<RT>x<RT>x<RT>x<RT>x <RT>x<PS500><DN>x<DN>x<DN>x<DN>x<PS500><ENTER>); Refresh := True; New_Screen; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Size_Window(10,15,52,22); New_Screen; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Size_Window(60,5,79,9); New_Screen; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Size_Window(1,3,27,6); New_Screen; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; { Call WRITE_HELP; } Erase_Window; Size_Window(1,4,30,10); File_Name := 'MULTI-EDIT'; Refresh := True; New_Screen; Call WRITE_HELP; Temp_String := 'You can'; Return_Int := 0; Call TYPE_TEXT; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Return_Int := 25; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Refresh := False; Int1 := Window_Id; Call MAKE_WINDOW; Int2 := Window_Id; Screen_Num := Screen_Count + 1; Size_Window(28,4,75,15); File_Name := 'MULTI-EDIT'; Switch_Win_Id(Int1); Refresh := True; Switch_Win_Id(Int2); Temp_String := 'create'; Return_Int := 0; Call TYPE_TEXT; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Return_Int := 25; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Refresh := False; Int1 := Window_Id; Call MAKE_WINDOW; Int2 := Window_Id; Screen_Num := Screen_Count + 2; Size_Window(5,10,50,21); File_Name := 'MULTI-EDIT'; Refresh := True; Switch_Win_Id(Int1); Refresh := True; Switch_Win_Id(Int2); Temp_String := 'up to'; Return_Int := 0; Call TYPE_TEXT; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Return_Int := 25; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Refresh := False; Int1 := Window_Id; Call MAKE_WINDOW; Int2 := Window_Id; Screen_Num := Screen_Count + 3; Size_Window(30,10,79,23); File_Name := 'MULTI-EDIT'; Refresh := True; Switch_Win_Id(Int1); Refresh := True; Switch_Win_Id(Int2); Temp_String := '100 windows!'; Return_Int := 0; Call TYPE_TEXT; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Type_Str := 'You can switch between windows sequentially...'; Return_Str := '/C=26/L=12/#=2/D=100'; Call BOXWRAP; { Set_Global_Str('ISTR1','You can switch between'); Set_Global_Str('ISTR2','windows sequentially...'); Return_Str := '/C=26/L=12/#=2/D=100'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; IF (Return_Int = 2) THEN Goto EXIT; END; Int1 := 0; WHILE (Int1 < Win_Count) DO ++Int1 Refresh := True; Switch_Win_Id(Parse_Int('/' + Str(Int1) + '=',Win_List)); Redraw; Return_Int := 25; Screen_Num := Screen_Count; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; END; Type_Str := 'or randomly via our VERSATILE WINDOW LIST!'; Return_Str := '/C=16/L=12/#=1/D=100'; Call BOXWRAP; { Set_Global_Str('ISTR1','or randomly via our VERSATILE WINDOW LIST!'); Return_Str := '/C=16/L=12/#=1/D=100'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; IF (Return_Int = 2) THEN Goto EXIT; END; Key_In(<F2><PS500>W<PS500>L<PS500><UP><PS500><UP><PS500><UP><PS500><DN> <PS500><DN><PS500><PS><PS><F4><PS1000><PS500><F4><PS1000><PS1000><ESC>); Kill_Box; Refresh := True; Page_Down; Up; Temp_String := 'You can ZOOM a window to full size...'; Return_Int := 0; Call TYPE_TEXT; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Explosions := True; RM('WINDOW^ZOOM'); Refresh := True; New_Screen; Explosions := False; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Temp_String := 'and ZOOM back!'; Return_Int := 0; Call TYPE_TEXT; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; RM('WINDOW^ZOOM'); Refresh := True; New_Screen; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_WINDOW; END; Refresh := False; 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!'; Return_Str := '/C=21/L=11/#=4/D=100'; Call BOXWRAP; { Set_Global_Str('ISTR1','Windows can contain separate files,'); Set_Global_Str('ISTR2','or can be linked together in order'); Set_Global_Str('ISTR3','to view/edit different parts of the'); Set_Global_Str('ISTR4','same file at the same time!'); Return_Str := '/C=21/L=11/#=4/D=100'; Call BOXTEXT; } IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_WINDOW: Call Clean_Up; {*UNDO*} Refresh := True; Redraw; Undo_Stat := True; { Set_Global_Str('ISTR1','In the UNLIKELY event of a user making'); Set_Global_Str('ISTR2','a mistake while editing, Multi-Edit''s'); Set_Global_Str('ISTR3','POWERFUL UNDO feature could save hours'); Set_Global_Str('ISTR4','of time! Observe...'); } 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!'; Return_Str := '/C=19/L=4/#=4/D=50/T=FULL UNDO/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1','In the UNLIKELY event of a user'); Set_Global_Str('ISTR2','making a mistake while editing,'); Set_Global_Str('ISTR3','Multi-Edit''s POWERFUL UNDO feature'); Set_Global_Str('ISTR4','could save hours of time!'); Return_Str := '/C=19/L=4/#=4/D=50/T=FULL UNDO/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; IF (Return_Int = 2) THEN Goto EXIT; END; { GOTO BYPASS_UNDO; Explosions := False; Size_Window(2,11,78,23); File_Name := 'FAMOUS.PAS'; Redraw; Explosions := True; Set_Global_Int('Delay_Speed',0); Temp_String := '{My soon to be famous do everything algorithm}'; Return_Int := 0; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Temp_String := ' While ((X <= Y) or (A < B + (C * T)) and (J <> Q / 3 - Trunc(X * T))) Do'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Temp_String := ' BEGIN'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Temp_String := ' Writeln(''I''''m working on it...'');'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Temp_String := ' A := X * T + (Rnd(Y) / 2.5555643) - (3 * Z);'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Temp_String := ' Q := (Y + 13.33) * (A - (C * J) / 40);'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Temp_String := ' Long_String := Concat(What_Strung'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Up; Eol; Kill_Box; Redraw; Set_Global_Str('ISTR1','If you misspell a word...'); Return_Str := '/C=1/L=7/#=1/D=0/T=/NK=1/W=43'; Call BOXTEXT; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; IF (Return_Int = 2) THEN Goto EXIT; END; Put_Box(30,13,41,17,0,M_B_Color,'',False); Write('OH NO!',33,15,0,M_B_Color); Return_Int := 100; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Word_Left; Del_Chars(11); Write('Undo deletes it!',30,8,0,M_B_Color or $80); Kill_Box; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Temp_String := 'Short_String[Q],Shorter_String[Z]);'; Return_Int := 0; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Temp_String := ' END;'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Set_Global_Int('Delay_Speed',2); Up; Up; Up; Up; Up; Up; Return_Int := 50; Call DELAY_LOOP; Block_Begin; Kill_Box; Set_Global_Str('ISTR1','If you accidentally move or copy a block...'); Return_Str := '/C=1/L=7/#=1/D=0/T=/NK=1/W=63'; Call BOXTEXT; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; IF (Return_Int = 2) THEN Goto EXIT; END; Int1 := 0; WHILE (Int1 < 3) DO Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; ++Int1 END; { Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; } Down; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Up; Up; Up; Up; Up; Up; Up; Return_Int := 25; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Copy_Block; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Undo; Write('UNDO can handle it!',47,8,0,M_B_Color or $80); Explosions := True; Return_Int := 100; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Down; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Block_Begin; Kill_Box; Set_Global_Str('ISTR1','If you accidentally delete a block...'); Return_Str := '/C=1/L=7/#=1/D=0/T=/NK=1/W=44'; Call BOXTEXT; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; IF (Return_Int = 2) THEN Goto EXIT; END; Int1 := 0; WHILE (Int1 < 5) DO Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; ++Int1 END; { Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; } Down; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Delete_Block; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; Undo; Write('Voila!',41,8,0,M_B_Color or $80); Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_UNDO; END; IF (Return_Int = 1) THEN Call CLEAN_UP; END; Write('Voila!',41,8,0,M_B_Color); } BYPASS_UNDO: Type_Str := 'UNDO can reverse almost any editing operation, up to your last 65,535 changes!'; Return_Str := '/C=10/L=9/#=3/D=100/T=/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1','UNDO can reverse almost any'); Set_Global_Str('ISTR2','editing operation, up to your'); Set_Global_Str('ISTR3','last 65,535 changes!'); Return_Str := '/C=10/L=9/#=3/D=100/T=/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_UNDO: Undo_Stat := False; Set_Global_Int('Delay_Speed',2); Call Clean_Up; Redraw; Refresh := False; {*AUTO SAVE*} 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.'; Return_Str := '/C=1/L=5/#=3/D=100/T=AUTO SAVE/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'In addition to Undo, another time saving feature is AUTO SAVE.'); Set_Global_Str('ISTR2' ,'Files can be automatically saved at a user definable time'); Set_Global_Str('ISTR3' ,'interval to guard against power outages, system crashes, etc.'); Return_Str := '/C=1/L=5/#=3/D=100/T=AUTO SAVE/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_KEYSTROKE; END; IF (Return_Int = 2) THEN Goto EXIT; END; {*VIRTUAL MEMORY*} 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!'; Return_Str := '/C=4/L=9/#=3/D=100/T=VIRTUAL MEMORY/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Users needn''t be concerned about file size with Multi-Edit!'); Set_Global_Str('ISTR2' ,'With virtual memory, files are only limited by disk space.'); Set_Global_Str('ISTR3' ,'Files can have up to 2 Billion lines. And it''s all automatic!'); Return_Str := '/C=4/L=9/#=3/D=100/T=VIRTUAL MEMORY/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_KEYSTROKE; END; IF (Return_Int = 2) THEN Goto EXIT; END; {*KEYSTROKE MACROS*} 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.'; Return_Str := '/C=7/L=13/#=4/D=100/T=KEYSTROKE MACROS/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'With Multi-Edit''s keystroke macro feature, you can record'); Set_Global_Str('ISTR2' ,'many keystrokes, then repeat them with a single keystroke!'); Set_Global_Str('ISTR3' ,'Keystroke macros may be assigned to any key, saved to disk,'); Set_Global_Str('ISTR4' ,'and you can create as many as you need.'); Return_Str := '/C=7/L=13/#=4/D=100/T=KEYSTROKE MACROS/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_KEYSTROKE; END; IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_KEYSTROKE: Call Clean_Up; {*BLOCK OPERATIONS*} Int1 := Cur_Window; Size_Window(1,3,40,13); Call MAKE_WINDOW; { Create_Window; Screen_Num := 1; } Screen_Num := Screen_Count; Int2 := Cur_Window; Size_Window(41,3,80,13); File_Name := 'MULTI-EDIT'; Call MAKE_WINDOW; { Create_Window; Screen_Num := 1; } Screen_Num := Screen_Count; Format_Line := ' '; { RM('EXTSETUP'); } Int3 := Cur_Window; Size_Window(1,14,40,24); File_Name := 'MULTI-EDIT'; Call MAKE_WINDOW; { Create_Window; Screen_Num := 1; } Screen_Num := Screen_Count; Int4 := Cur_Window; Size_Window(41,14,80,24); File_Name := 'MULTI-EDIT'; Switch_Window(Int1); Refresh := True; New_Screen; Call WRITE_HELP; Tof; Temp_String := 'With Multi-Edit, blocks of text can'; Return_Int := 0; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Temp_String := 'be marked for cut and paste by line,'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Up; Up; Block_Begin; Down; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Down; Temp_String := 'column,'; Return_Int := 0; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Up; Up; Up; Goto_Col(5); Col_Block_Begin; Right; Right; Right; Right; Right; Down; Down; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Left; Temp_String := 'and stream of text!'; Return_Int := 0; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Up; Up; Goto_Col(4); Str_Block_Begin; Down; Temp_Integer := 24; WHILE (Temp_Integer > 0) DO Right; --Temp_Integer; END; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Down; Down; Goto_Col(1); Temp_String := 'The blocks can be copied and moved'; Return_Int := 0; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Temp_String := 'within a window and between windows!'; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Up; Goto_Col(1); Block_Begin; Up; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Down; Down; Down; Down; Copy_Block; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Tof; Goto_Col(7); Col_Block_Begin; Right; Right; Right; Right; Right; Right; Down; Down; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Down; Goto_Col(10); Copy_Block; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Block_Begin; Down; Down; Down; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Switch_Window(Int2); Window_Move(Int1); Switch_Window(Int1); Redraw; Switch_Window(Int2); Redraw; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Down; Down; Block_Begin; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Copy_Block; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Copy_Block; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Block_Begin; Down; Down; Block_End; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Switch_Window(Int3); Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Window_Move(Int2); Switch_Window(Int2); Redraw; Switch_Window(Int3); Redraw; Temp_String := 'Blocks can be indented...'; Up; Goto_Col(1); Cr; Up; Return_Int := 0; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; RM('MEUTIL2^INDBLK'); Return_Int := 100; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Temp_String := 'and undented!'; Return_Int := 0; Call Type_Text; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; RM('MEUTIL2^UNDBLK'); Return_Int := 100; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Switch_Window(Int4); Down; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Window_Copy(Int3); Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Temp_String := 'They can also be deleted.'; Up; Return_Int := 0; Call Type_TEXT; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_BLOCK; END; Delete_Block; Redraw; Return_Int := 100; Call DELAY_LOOP; SKIP_BLOCK: Refresh := False; Call SPIRAL_WIPE; Call Clean_Up; Refresh := True; Redraw; Refresh := False; {*SEARCH AND REPLACE *} Undo_Stat := True; Size_Window(3,12,60,24); Tof; Int1 := 0; WHILE (Int1 < 5) DO Put_Line('Multi-Edit is wonderful!'); Down; Put_Line('Multi-Edit is fantastic!'); Down; ++Int1; END; Put_Line('Multi-Edit is wonderful!'); Tof; Type_Str := 'Multi-Edit has a POWERFUL Search and Replace feature including regular expressions!'; Return_Str := '/C=1/L=4/#=2/D=50/NK=1/T=SEARCH AND REPLACE'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Multi-Edit has a POWERFUL Search and Replace'); Set_Global_Str('ISTR2' ,'feature including regular expressions!'); Return_Str := '/C=1/L=4/#=2/D=50/NK=1/T=SEARCH AND REPLACE'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SEARCH; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'As an example, we will search for all occurrences of "fantastic" or "wonderful", and replace them with "supercalafragilisticexpialadoshus".'; Return_Str := '/C=4/L=7/#=3/D=100/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'As an example, we will search for all occurrences of'); Set_Global_Str('ISTR2' ,'"fantastic" or "wonderful", and replace them with '); Set_Global_Str('ISTR3' ,'"supercalafragilisticexpialadoshus".'); Return_Str := '/C=4/L=7/#=3/D=100/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SEARCH; END; IF (Return_Int = 2) THEN Goto EXIT; END; Refresh := True; Redraw; Key_In(<ShftF6><PS500>{fantastic}|{wonderful}<PS500><ENTER><PS500>supercalafr agilisticexpialadoshus<PS500><ENTER><DN><PS500>T<PS500><DN><PS500><ENTER><PS500> P<PS500>F<PS500><TAB><PS500>F<PS500><TAB><PS500>T<PS500><TAB><PS500>F<PS500> <TAB><PS500>F<PS500><TAB><PS500><TAB><PS500><TAB><PS500><ENTER><PS500><ENTER> <PS500><ENTER><PS500><ENTER><PS500><ENTER><PS500><ENTER><PS500><ENTER><PS500> <ENTER><PS500><ENTER><PS500><ENTER><PS500><ENTER><PS500><ENTER>); Tof; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_SEARCH; END; Type_Str := 'Just in case you don''t like what you''ve changed, don''t forget UNDO!'; Return_Str := '/C=3/L=7/#=2/D=50/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Just in case you don''t like what'); Set_Global_Str('ISTR2' ,'you''ve changed, don''t forget UNDO!'); Return_Str := '/C=3/L=7/#=2/D=50/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SEARCH; END; IF (Return_Int = 2) THEN Goto EXIT; END; Messages := False; Undo; Undo; { Tof; } Messages := True; Return_Int := 100; Call DELAY_LOOP; SKIP_SEARCH: Call Clean_Up; Undo_Stat := False; Refresh := True; Redraw; Refresh := False; {*TAB STOPS*} 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!'; Return_Str := '/C=19/L=8/#=4/D=20/T=TAB STOPS/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'With Multi-Edit, you can set tab stops'); Set_Global_Str('ISTR2' ,'for high level language indenting as'); Set_Global_Str('ISTR3' ,'well as for documentation with our'); Set_Global_Str('ISTR4' ,'FULLY EDITABLE format lines!'); Return_Str := '/C=19/L=8/#=4/D=20/T=TAB STOPS/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_TAB; END; IF (Return_Int = 2) THEN Goto EXIT; END; { 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> <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> <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> <RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50><RT><PS50>R<PS1000><PS1000><ESC>); Set_Global_Str('ISTR1' ,'Tabs can be expanded to spaces'); Set_Global_Str('ISTR2' ,'to be saved as space characters'); Set_Global_Str('ISTR3' ,'or as virtual spaces to be'); Set_Global_Str('ISTR4' ,'retained as tab characters!'); RM('BOXTEXT /C=22/L=13/#=4/D=100/BCOLOR=' + Str(M_H_Color)); IF (Return_Int = 2) THEN Goto EXIT; END; } SKIP_TAB: Call Clean_Up; { New_Screen; } Call WRITE_HELP; Refresh := False; {*DOCUMENT MODE*} Size_Window(10,15,70,24); Doc_Mode := True; Wrap_Stat := True; Right_Margin := 50; Page_Down; Page_Down; Down; Put_Line('|12'); Page_Down; Page_Down; Put_Line('|12'); Page_Down; Page_Down; Put_Line('|12'); Tof; Indent; Refresh := True; New_Screen; Type_Str := 'Multi-Edit has the most complete set of documentation features available in a text editor.'; Return_Str := '/C=1/L=4/#=2/D=50/T=DOCUMENTATION/NK=1'; Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'A Document Display Mode with:'; Return_Str := '/C=4/L=7/#=1/D=50/NK=1/H=5/W=42/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'A Document Display Mode with:'); Return_Str := '/C=4/L=7/#=1/D=50/NK=1/H=5/W=42/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := '-Automatic Page Counting'; Return_Str := '/C=4/L=8/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'-Automatic Page Counting'); Return_Str := '/C=4/L=8/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; IF (Return_Int = 2) THEN Goto EXIT; END; TOF; Temp_Integer := 1; While Temp_Integer < 50 DO Down; ++Temp_integer; Return_Int := 2; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; END; Up; Up; Up; Up; Up; RM('Home'); indent; Type_Str := '-Automatic Smart Word Wrap'; Return_Str := '/C=4/L=9/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'-Automatic Smart Word Wrap'); Return_Str := '/C=4/L=9/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; IF (Return_Int = 2) THEN Goto EXIT; END; Temp_String := 'Multi-Edit has the most intelligent word wrap of any text editor on the market today!'; Call FUN_WRAP; Key_In(<PS1000><UP><UP><HOME>); Temp_String := 'Wraps even when inserting text! '; Call Fun_wrap; Up; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; Right_Margin := 40; Type_Str := '-Paragraph Re-formatting'; Return_Str := '/C=4/L=10/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'-Paragraph Re-formatting'); Return_Str := '/C=4/L=10/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; IF (Return_Int = 2) THEN Goto EXIT; END; Mark_Pos; RM('TEXT^REFORMAT'); Goto_Mark; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; Type_Str := 'and Justification'; Return_Str := '/C=29/L=10/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'and Justification'); Return_Str := '/C=29/L=10/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; IF (Return_Int = 2) THEN Goto EXIT; END; RM('TEXT^JUSTIFY'); Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; Type_Str := '-Adjustable Margins and Tab Stops'; Return_Str := '/C=4/L=11/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'-Adjustable Margins and Tab Stops'); Return_Str := '/C=4/L=11/#=1/D=50/NK=1/NB=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOCUMENT; END; IF (Return_Int = 2) THEN Goto EXIT; END; 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!'; Return_Str := '/C=7/L=13/#=8/D=100'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'A Print Formatter with:'); Set_Global_Str('ISTR2' ,'-Automatic Pagination'); Set_Global_Str('ISTR3' ,'-Automatic Table of Contents generator'); Set_Global_Str('ISTR4' ,'-Bold, Underline, Italics, and Double width'); Set_Global_Str('ISTR5' ,'-Headers/Footers'); Set_Global_Str('ISTR6' ,'-Centering'); Set_Global_Str('ISTR7' ,'-User definable printer drivers'); Set_Global_Str('ISTR8' ,'-and much, much more!'); Return_Str := '/C=7/L=13/#=8/D=100'; Call BOXTEXT; } IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_DOCUMENT: Doc_Mode := False; Call Clean_Up; New_Screen; Call WRITE_HELP; Refresh := False; {*LANGUAGE SPECIFIC MACROS*} Type_Str := 'Multi-Edit has language support macros for most of the major programming languages.'; Return_Str := '/C=20/L=4/#=2/D=100/T=LANGUAGE SPECIFIC MACROS'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Multi-Edit has language support macros for'); Set_Global_Str('ISTR2' ,'most of the major programming languages.'); Return_Str := '/C=20/L=4/#=2/D=100/T=LANGUAGE SPECIFIC MACROS'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_LANGUAGE; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'With Multi-Edit''s template editing macros, you can create common language constructs with a single keystroke!'; Return_Str := '/C=9/L=4/#=2/T=TEMPLATE EDITING/NK=1/H=18'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'With Multi-Edit''s template editing macros, you can create'); Set_Global_Str('ISTR2' ,'common language constructs with a single keystroke!'); Return_Str := '/C=9/L=4/#=2/T=TEMPLATE EDITING/NK=1/H=18'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_LANGUAGE; END; IF (Return_Int = 2) THEN Goto EXIT; END; Set_Global_Int('Delay_Speed',1); Type_Str := '{ PASCAL }/nWhile () Do/n BEGIN/n/n END;/n/n/* C *//nwhile () {/n/n}/n/n100 ''BASIC/n110 WHILE/n120/n130 WEND'; Return_Str := '/C=18/L=7/#=15/NK=1/NB=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'{ PASCAL }'); Set_Global_Str('ISTR2' ,'While () Do'); Set_Global_Str('ISTR3' ,' BEGIN'); Set_Global_Str('ISTR4' ,''); Set_Global_Str('ISTR5' ,' END;'); Set_Global_Str('ISTR6' ,''); Set_Global_Str('ISTR7' ,'/* C */'); Set_Global_Str('ISTR8' ,'while () {'); Set_Global_Str('ISTR9' ,''); Set_Global_Str('ISTR10','}'); Set_Global_Str('ISTR11',''); Set_Global_Str('ISTR12','100 ''BASIC'); Set_Global_Str('ISTR13','110 WHILE'); Set_Global_Str('ISTR14','120'); Set_Global_Str('ISTR15','130 WEND'); Return_Str := '/C=18/L=7/#=15/NK=1/NB=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_LANGUAGE; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := '(* Modula-2 *)/nWHILE () DO/n/nEND;/n/n/n* DBase/nDO/n/nEndDO/n/n{ Multi-Edit macro }/nWHILE () DO/n/nEND;'; Return_Str := '/C=40/L=7/#=15/NK=1/NB=1/D=300'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'(* Modula-2 *)'); Set_Global_Str('ISTR2' ,'WHILE () DO'); Set_Global_Str('ISTR3' ,''); Set_Global_Str('ISTR4' ,'END;'); Set_Global_Str('ISTR5' ,''); Set_Global_Str('ISTR6' ,''); Set_Global_Str('ISTR7' ,'* DBase'); Set_Global_Str('ISTR8' ,'DO'); Set_Global_Str('ISTR9' ,''); Set_Global_Str('ISTR10','EndDO'); Set_Global_Str('ISTR11',''); Set_Global_Str('ISTR12','{ Multi-Edit macro }'); Set_Global_Str('ISTR13','WHILE () DO'); Set_Global_Str('ISTR14',''); Set_Global_Str('ISTR15','END;'); Return_Str := '/C=40/L=7/#=15/NK=1/NB=1/D=300'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_LANGUAGE; END; IF (Return_Int = 2) THEN Goto EXIT; END; Set_Global_Int('Delay_Speed',2); Type_Str := 'Template editing macros are completely user definable to fit ANY programming language!'; Return_Str := '/C=16/L=10/#=2/D=100/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_LANGUAGE; END; IF (Return_Int = 2) THEN Goto EXIT; END; { Set_Global_Str('ISTR1' ,'Template editing macros are completely user'); Set_Global_Str('ISTR2' ,'definable to fit ANY programming language!'); Return_Str := '/C=16/L=10/#=2/D=100/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } Kill_Box; Type_Str := 'With Multi-Edit''s Language Specific Smart Indenting, programmers seldom need to "readjust" the cursor or indent level after a carriage return!'; Return_Str := '/C=5/L=6/#=3/D=100/NK=1/T=SMART INDENT'; Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_LANGUAGE; END; IF (Return_Int = 2) THEN Goto EXIT; END; { Set_Global_Str('ISTR1' ,'With Multi-Edit''s Language Specific Smart Indenting,'); Set_Global_Str('ISTR2' ,'programmers seldom need to "readjust" the cursor'); Set_Global_Str('ISTR3' ,'or indent level after a carriage return!'); Return_Str := '/C=5/L=6/#=3/D=100/NK=1/T=SMART INDENT'; Call BOXTEXT; } Type_Str := 'Finding the beginning or end of a language construct is easy with our Brace/Construct Matching!'; Return_Str := '/C=8/L=10/#=2/D=200/T=BRACE-CONSTRUCT MATCHING/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Finding the beginning or end of a language construct'); Set_Global_Str('ISTR2' ,'is easy with our Brace/Construct Matching!'); Return_Str := '/C=8/L=10/#=2/D=200/T=BRACE-CONSTRUCT MATCHING/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_LANGUAGE; END; IF (Return_Int = 2) THEN Goto EXIT; END; Kill_Box; Type_Str := 'If you have either the PVCS or TLIB version control systems, Multi-Edit will interface perfectly to either one!'; Return_Str := '/C=5/L=6/#=3/D=100/NK=1/T=VERSION CONTROL'; Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_LANGUAGE; END; IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_LANGUAGE: Call CLEAN_UP; Set_Global_Int('Delay_Speed',2); {*CONDENSED MODE*} Size_Window(0,11,81,24); File_Name := 'WHATZIT.C'; Type_Str := 'Multi-Edit''s Condensed mode display can turn this...'; Return_Str := '/C=11/L=4/#=1/T=CONDENSED MODE/NK=1/H=4'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Multi-Edit''s Condensed mode display can turn this...'); Return_Str := '/C=11/L=4/#=1/T=CONDENSED MODE/NK=1/H=4'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_CONDENSE; END; IF (Return_Int = 2) THEN Goto EXIT; END; Tof; Put_Line('void calc_tot()'); Down; Put_Line('{'); Down; Put_Line(' int fail_flag, i, j, k, fl, pri, t_cause;'); Down; Put_Line(' for (i=0; i<21; i++) { /*perform summations if any defined'); Down; Put_Line(' strcopy(tmpbuf,paramtrc[i],title); /*is selected by a title of sum=xxx'); Down; Put_Line(' if (strncmp(tmpbuf,"SUM=",4) == 0 {'); Down; Put_Line(' prm[i]=0;'); Down; Put_Line(' j=4;'); Down; Put_Line(' while ((k=tmpbuf[j]) != ''\0'') { /*parse out rows to add*/'); Down; Put_Line(' if ((k != ''+'') && (k != '' '')) { /*ignore any + signs and blanks*/'); Down; Put_Line(' k=toupper(k) - ''0''; /*convert row number from ASCII*/'); Down; Put_Line(' if ((k > 9)'); Tof; Refresh := True; Redraw; Return_Int := 150; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_CONDENSE; END; Refresh := False; Write('into this!!', 13,6,0,M_B_Color); { Write('L[ ]──────────────────────────CONDENSED', 2,11,0,W_B_Color); Write('000001',4,11,0,W_S_Color); } Write('void main( arg1, arg2 ) ',1,12,0,Text_Color); Write('{ ',1,13,0,Text_Color); Write('} ',1,14,0,Text_Color); Write('void Calc_tot() ',1,15,0,Text_Color); Write('{ ',1,16,0,Text_Color); Write('} ',1,17,0,Text_Color); Write('int load_file( filename ) ',1,18,0,Text_Color); Write('{ ',1,19,0,Text_Color); Write('} ',1,20,0,Text_Color); Write('int save_file( filename ) ',1,21,0,Text_Color); Write('{ ',1,22,0,Text_Color); Write('} ',1,23,0,Text_Color); Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_CONDENSE; END; Type_Str := 'You can then quickly move the cursor through the/nfile.'; Return_Str := '/C=11/L=6/#=2/NK=1/NB=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'You can then quickly move the cursor through the'); Set_Global_Str('ISTR2' ,'file.'); Return_Str := '/C=11/L=6/#=2/NK=1/NB=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_CONDENSE; END; IF (Return_Int = 2) THEN Goto EXIT; END; GotoXY(1,12); Temp_Integer := 0; WHILE (Temp_Integer < 6) DO Return_Int := 20; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_CONDENSE; END; GotoXY(1,Temp_Integer + 12); Val(Int1,Copy('000100050123055115335749',(Temp_Integer * 4) + 1,4)); Put_Line_Num(Int1); { Write(Copy('000100050123055115335749',(Temp_Integer * 4) + 1,4),6,11,0,W_S_Color); } ++Temp_Integer; END; Return_Int := 100; Call DELAY_LOOP; SKIP_CONDENSE: Call CLEAN_UP; Refresh := True; Redraw; Refresh := False; {*COMPILATION*} Type_Str := 'Compiling of programs is no problem with Multi-Edit!'; Return_Str := '/C=12/L=6/#=1/D=50/T=COMPILATION/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Compiling of programs is no problem with Multi-Edit!'); Return_Str := '/C=12/L=6/#=1/D=50/T=COMPILATION/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_COMPILE; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'You can compile within the editor... and Multi-Edit will interface to most common compilers for automatic error location in the source!'; Return_Str := '/C=19/L=8/#=4/D=100/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'You can compile within the editor...'); Set_Global_Str('ISTR2' ,'and Multi-Edit will interface to most'); Set_Global_Str('ISTR3' ,'common compilers for automatic error'); Set_Global_Str('ISTR4' ,'location in the source!'); Return_Str := '/C=19/L=8/#=4/D=100/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_COMPILE; END; IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_COMPILE: Call CLEAN_UP; {*ASCII TABLE*} Type_Str := 'Three VERY convenient features not found on most other editors are...'; Return_Str := '/C=3/L=7/#=1/D=50'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Three VERY convenient features not found on most other editors are...'); Return_Str := '/C=3/L=7/#=1/D=50'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_FEATURES; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'A pop-up ASCII table...'; Return_Str := '/C=28/L=9/#=1/D=50'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'A pop-up ASCII table...'); Return_Str := '/C=28/L=9/#=1/D=50'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_FEATURES; END; IF (Return_Int = 2) THEN Goto EXIT; END; Key_In(<ALTA><PS1000><DN><PS1000><DN><PS1000><DN><PS1000><ESC>); {*LINEDRAW*} Type_Str := 'A LINE/BOX drawing facility...'; Return_Str := '/C=28/L=9/#=1/D=50'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'A LINE/BOX drawing facility...'); Return_Str := '/C=28/L=9/#=1/D=50'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_FEATURES; END; IF (Return_Int = 2) THEN Goto EXIT; END; { Int1 := 29; Int2 := 8; WHILE (Int1 < 50) DO ++Int1; Draw_Char(196,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Return_Int := 1; Call DELAY_LOOP; END; Draw_Char(183,Int1,Int2,W_C_Color,1); WHILE (Int2 < 16) DO ++Int2; Draw_Char(186,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Return_Int := 1; Call DELAY_LOOP; END; Draw_Char(189,Int1,Int2,W_C_Color,1); WHILE (Int1 > 30) DO --Int1; Draw_Char(196,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Return_Int := 1; Call DELAY_LOOP; END; Draw_Char(211,Int1,Int2,W_C_Color,1); WHILE (Int2 > 9) DO --Int2; Draw_Char(186,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Return_Int := 1; Call DELAY_LOOP; END; --int2; Draw_Char(214,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Int1 := 40; Int2 := 8; Draw_Char(194,Int1,Int2,W_C_Color,1); WHILE (Int2 < 15) DO ++Int2; Draw_Char(179,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Return_Int := 1; Call DELAY_LOOP; END; ++Int2; Draw_Char(193,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Int1 := 30; Int2 := 12; Draw_Char(204,Int1,Int2,W_C_Color,1); WHILE (Int1 < 39) DO ++Int1; Draw_Char(205,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Return_Int := 1; Call DELAY_LOOP; END; ++Int1; Draw_Char(216,Int1,Int2,W_C_Color,1); WHILE (Int1 < 49) DO ++Int1; Draw_Char(205,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); Return_Int := 1; Call DELAY_LOOP; END; ++Int1; Draw_Char(185,Int1,Int2,W_C_Color,1); GotoXY(Int1,Int2); } {Because of the mod we made to LINDRAW that prevents keystroke buffer overload, this key_in statement will not work unless you put an ignored keystroke in between every keystroke.} Key_In(<DN><DN><DN><DN><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT> <RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><RT><F2>ol<ShftRT>x <ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x <ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x <F2>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<ShftDN>x<F2>x <F2>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x <ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x<ShftLF>x <ShftLF>x<ShftLF>x<F2>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x<ShftUP>x <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 <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 <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 <ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x <ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ShftRT>x<ESC>); { ╓─────────┬─────────╖ ║ │ ║ ║ │ ║ ║ │ ║ ╠═════════╪═════════╣ ║ │ ║ ║ │ ║ ║ │ ║ ╙─────────┴─────────╜ } Return_Int := 150; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_FEATURES; END; Refresh := True; Erase_Window; Refresh := False; {*CALCULATOR*} 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'); Temp_Integer := 10; WHILE (Temp_Integer) DO Set_Global_Str('Calc_Tape' + Str(Temp_Integer),''); --Temp_Integer; END; 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!!!'; Return_Str := '/C=21/L=4/#=7/D=100'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'And a pop-up Programmer''s Calculator!'); Set_Global_Str('ISTR2' ,'With all standard math functions...'); Set_Global_Str('ISTR3' ,'including memory, and running tape.'); Set_Global_Str('ISTR4' ,'With floating point decimal...'); Set_Global_Str('ISTR5' ,'Binary...'); Set_Global_Str('ISTR6' ,'Octal...'); Set_Global_Str('ISTR7' ,'and Hex!!!'); Return_Str := '/C=21/L=4/#=7/D=100'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_FEATURES; END; IF (Return_Int = 2) THEN Goto EXIT; END; Key_In(<AltF2><3><2><7><6><7><PS1000><F7><PS1000><F7><PS1000><F7><PS500> <PS1000><F7><PS>+<PS>300.23<PS>=<PS1000><PS1000><PS1000><ESC>); Return_Int := 50; Call DELAY_LOOP; SKIP_FEATURES: Call CLEAN_UP; SKIP: {*INSTALL SCREEN*} Int1 := B_Color; Int2 := T_Color; Int3 := S_Color; Int4 := Stat1_Color; Int5 := Stat2_Color; Int6 := FKey_Color; Int7 := FNum_Color; Int8 := Message_Color; 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.'; Return_Str := '/C=2/L=4/#=4/D=200/T=INSTALLATION AND SETUP'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'With our easy to use install menu, you can quickly change'); Set_Global_Str('ISTR2' ,'most of the setup parameters of the editor. For example,'); Set_Global_Str('ISTR3' ,'you can completely change the foreground and background'); Set_Global_Str('ISTR4' ,'colors for virtually everything displayed on the screen.'); Return_Str := '/C=2/L=4/#=4/D=200/T=INSTALLATION AND SETUP'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SETUP; END; IF (Return_Int = 2) THEN Goto EXIT; END; B_Color := 112; T_Color := 112; Stat1_Color := 112; Stat2_Color := 112; FKey_Color := 7; FNum_Color := 112; Message_Color := 112; S_Color := 112; Eof_Color := 112; Refresh := True; New_Screen; Return_Int := 50; Call DELAY_LOOP; { Int1 := B_Color; Int2 := S_Color; Int3 := EOF_Color; Int4 := Stat1_Color; Int5 := Stat2_Color; Int6 := FKey_Color; Int7 := FNum_Color; Int8 := Message_Color; Set_Global_Str('ISTR1' ,'With our easy to use install menu, you can quickly change most of the'); Set_Global_Str('ISTR2' ,'setup parameters of the editor. As an example, we look at the color'); Set_Global_Str('ISTR3' ,'installation screen, and see the tremendous configurability of both'); Set_Global_Str('ISTR4' ,'foreground and background colors for virtually everything on the screen.'); Return_Str := '/C=2/L=4/#=4/D=200/T=INSTALLATION AND SETUP/NK=1'; Call BOXTEXT; IF (Return_Int = 1) THEN Goto SKIP_SETUP; END; IF (Return_Int = 2) THEN Goto EXIT; END; Key_In(<F2><PS500>i<PS500>c<PS500>w<PS500> 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> <PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><PS500><ESC><PS500> <ESC><PS500>h<PS500> 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> <PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><RT><PS250><PS500><ESC><PS500> <ESC><ESC><ESC>y); } Type_Str := 'The changes you make can be effective for the current editing session only, or can be saved permanently!'; Return_Str := '/C=18/L=10/#=3/D=100/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'The changes you make can be effective'); Set_Global_Str('ISTR2' ,'for the current editing session only,'); Set_Global_Str('ISTR3' ,'or can be saved permanently!'); Return_Str := '/C=18/L=10/#=3/D=100/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SETUP; END; IF (Return_Int = 2) THEN Goto EXIT; END; B_Color := Int1; T_Color := Int2; S_Color := Int3; Stat1_Color := Int4; Stat2_Color := Int5; FKey_Color := Int6; FNum_Color := Int7; Message_Color := Int8; Eof_Color := T_Eof_Color; T_Color := W_C_Color; W_T_Color := T_Color; W_B_Color := B_Color; W_S_Color := S_Color; D_T_Color := T_Color; D_B_Color := B_Color; D_S_Color := S_Color; H_T_Color := T_Color; H_B_Color := B_Color; H_S_Color := S_Color; H_R_Color := S_Color; Refresh := True; Call CLEAN_UP; New_Screen; Call WRITE_HELP; Refresh := False; Type_Str := 'You can set up two alternate screen configurations, and toggle between the two with a single keystroke!'; Return_Str := '/C=4/L=10/#=2/D=100/T=SCREEN SETUP'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'You can set up two alternate screen configurations, '); Set_Global_Str('ISTR2' ,'and toggle between the two with a single keystroke!'); Return_Str := '/C=4/L=10/#=2/D=100/T=SCREEN SETUP'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SETUP; END; IF (Return_Int = 2) THEN Goto EXIT; END; Refresh := True; RM('XZOOM'); Type_Str := 'One screen could be configured to display the maximum amount of text lines.'; Return_Str := '/C=23/L=10/#=2/D=50'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'One screen could be configured to display'); Set_Global_Str('ISTR2' ,'the maximum amount of text lines.'); Return_Str := '/C=23/L=10/#=2/D=50'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SETUP; END; IF (Return_Int = 2) THEN Goto EXIT; END; RM('XZOOM'); Type_Str := 'The other could be configured to display all the status lines and function key labels.'; Return_Str := '/C=20/L=10/#=2/D=75'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'The other could be configured to display all'); Set_Global_Str('ISTR2' ,'the status lines and function key labels.'); Return_Str := '/C=20/L=10/#=2/D=75'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SETUP; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'One of the most VERSATILE and POWERFUL features of the installation menu is the Filename Extension Specific Setup.'; Return_Str := '/C=3/L=4/#=3/D=100/T=FILENAME EXTENSION SETUP/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'One of the most VERSATILE and POWERFUL'); Set_Global_Str('ISTR2' ,'features of the installation menu is'); Set_Global_Str('ISTR3' ,'the Filename Extension Specific Setup.'); Return_Str := '/C=3/L=4/#=3/D=100/T=FILENAME EXTENSION SETUP/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SETUP; END; IF (Return_Int = 2) THEN Goto EXIT; END; 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!'; Return_Str := '/C=28/L=8/#=5/D=100/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'For each extension, you can setup many powerful'); Set_Global_Str('ISTR2' ,'parameters, including tab spacing, language,'); Set_Global_Str('ISTR3' ,'compiler, word wrap; even a special macro to'); Set_Global_Str('ISTR4' ,'automatically run immediately after file'); Set_Global_Str('ISTR5' ,'loading!'); Return_Str := '/C=28/L=8/#=5/D=100/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_SETUP; END; IF (Return_Int = 2) THEN Goto EXIT; END; Key_In(<F2><PS500>i<PS500>f<PS1000><INS><PS500>XXX<PS1000><ENTER><PS500><DN> <PS500><ENTER><PS500><ENTER><PS500><DN><PS500><ENTER><PS500><ENTER><PS500><DN> <PS500><ENTER><PS500><DN><PS500><DN><PS500><ENTER><PS500><ENTER><PS500><ENTER> <PS500><DN><PS500><ENTER><PS500><RT><PS500><RT><PS500><TAB><PS><RT><PS><RT><PS> <TAB><PS500><RT><PS><RT><PS><TAB><PS500><RT><PS><RT><PS><RT><PS><RT><PS><RT> <PS><TAB><PS1000><ESC><PS500><2><PS500><ENTER><PS500><8><PS500><0><PS500> <ENTER><PS500><ENTER><PS500>c<PS1000><ENTER><PS500>PROCESS C<PS1000><ENTER> <PS500>C:\PROJECT\CCODE<PS1000><ENTER><PS500>C:\HELP\TURBO_C<.>HLP<PS1000> <ENTER><PS500><ENTER><PS500><INS><PS500>TURBO C MAKE<PS1000><ENTER><PS500> MAKE <<>FILE<>><.><<>EXT<>><PS1000><ENTER><PS500><ENTER><PS500><ENTER><PS500> <DN><PS500><ENTER>turbo c<PS1000><ENTER> <PS500><DN><PS500><ENTER><PS500><DN><PS500><ENTER><PS500><DN><PS500><DN><PS500> <ESC><PS500><DEL>y<ESC><PS1000><ESC><DEL>y<PS1000><ESC><PS1000><ESC>); SKIP_SETUP: { B_Color := Int1; S_Color := Int2; EOF_Color := Int3; Stat1_Color := Int4; Stat2_Color := Int5; FKey_Color := Int6; FNum_Color := Int7; Message_Color := Int8; T_Color := W_C_Color; W_T_Color := T_Color; W_B_Color := B_Color; W_S_Color := S_Color; } B_Color := Int1; T_Color := Int2; S_Color := Int3; Stat1_Color := Int4; Stat2_Color := Int5; FKey_Color := Int6; FNum_Color := Int7; Message_Color := Int8; Eof_Color := T_Eof_Color; Refresh := True; Call CLEAN_UP; Set_Global_Int('CUR_SCRN',Global_Int('DEF_SCRN_STYLE')); RM('SETSCRN'); New_Screen; Call WRITE_HELP; Refresh := False; Refresh := False; {*DOS SHELL*} Refresh := True; Explosions := True; Type_Str := 'With Multi-Edit, you can access DOS.../nTWO different ways!'; Return_Str := '/C=20/L=4/#=2/D=50/NK=1'; Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := '1. Run DOS from the editor via <Alt-F3>'; Return_Str := '/C=23/L=7/#=1/D=50/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; IF (Return_Int = 2) THEN Goto EXIT; END; Save_Box(1,1,Screen_Width,Screen_Length); Int1 := Status_Row; Int2 := FKey_Row; Status_Row := 0; FKey_Row := 0; Refresh := False; Rest_Dos_Screen; Shell_To_Dos('DIR',True); Delay(3000 + Processor_Comp); Status_Row := Int1; FKey_Row := Int2; Refresh := True; Kill_Box; { Kill_Box; Kill_Box; New_Screen; Explosions := False; Put_Box(20,4,63,8,0,M_B_Color,'',True); Write('With Multi-Edit, you can access DOS...',22,5,0,M_B_Color); Write('TWO different ways!',22,6,0,M_B_Color); Put_Box(23,7,67,10,0,M_H_Color,'',True); Write('1. Run DOS from the editor via <Alt-F3>',25,8,0,M_H_Color); Explosions := True; } Return_Int := 30; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; Type_Str := '2. Use our POWERFUL DOS SHELL'; Return_Str := '/C=26/L=9/#=1/D=150/NK=1'; Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; IF (Return_Int = 2) THEN Goto EXIT; END; Kill_Box; Kill_Box; Kill_Box; mode := dos_shell; Refresh := True; RM('DIRSHELL^INITDIRSHELL'); set_global_int('@DIR_CUR_DIR@', 1); IF (Dir_Active(1)) THEN Switch_Dir(1); ELSE open_dir(1); END; Dir_Mode := 1; Temp_Integer := 1; WHILE (Temp_Integer < 20) DO FLABEL(Copy('Help ChDir DeleteCopy RenameDir OfCMD Print Load Sort MrkDelMrkCpy MrkPrt ' ,((Temp_Integer - 1) * 6) + 1,6),Temp_Integer,Dos_Shell); ++ Temp_Integer; END; size_dir(1,3,47,12,1); open_dir(2); size_dir(1,13,47,24,1); Dir_Mode := 0; RM('DIRSHELL^UpdateDir /M=3/NH=1'); Type_Str := 'Up to 4 directories can be/ndisplayed in 2 different/nformats!'; Return_Str := '/C=48/L=3/#=3/T=DOS SHELL/NK=1/NS=1/W=29'; Call BOXWRAP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; IF (Return_Int = 2) THEN Goto EXIT; END; Temp_Integer := 18; WHILE (Temp_Integer > 5) DO { Make_message('First=' + Str(Cur_Dir));} DOS_RIGHT; Return_Int := 10; call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; --Temp_Integer; END; WHILE (Temp_Integer > 0) DO { Make_message('First=' + Str(Cur_Dir)); } DOS_Up; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; --Temp_Integer; END; RM('DIRSHELL^DIRWINDOW'); Temp_Integer := 15; WHILE (Temp_Integer > 5) DO { Make_message('Second=' + Str(Cur_Dir)); } DOS_Down; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; --Temp_Integer; END; WHILE (Temp_Integer > 0) DO { Make_message('Second=' + Str(Cur_Dir)); } DOS_Up; Return_Int := 10; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; --Temp_Integer; END; 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!'; Return_Str := '/C=48/L=8/#=10/NK=1/NS=1/D=50/W=29/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Directory listings can be'); Set_Global_Str('ISTR2' ,'sorted by...'); Set_Global_Str('ISTR3' ,' -Name'); Set_Global_Str('ISTR4' ,' -Extension'); Set_Global_Str('ISTR5' ,' -Size'); Set_Global_Str('ISTR6' ,' -Date'); Set_Global_Str('ISTR7' ,' -Time'); Set_Global_Str('ISTR8' ,'or any combination of the'); Set_Global_Str('ISTR9' ,'above, in ascending, or'); Set_Global_Str('ISTR10','descending order!'); Return_Str := '/C=48/L=8/#=10/NK=1/NS=1/D=50/W=29/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; IF (Return_Int = 2) THEN Goto EXIT; END; Dir_Sort_Str := 'N'; Set_Global_Str('DIR_SORT_STR', Dir_Sort_Str ); Dir( dir_mask ); RM('DIRSHELL^UpdateDir /M=0'); dos_home; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; Type_Str := 'Files can be marked for load, copy, print, or delete!'; Return_Str := '/C=48/L=20/#=2/NK=1/NS=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Files can be marked for load,'); Set_Global_Str('ISTR2' ,'copy, print, or delete!'); Return_Str := '/C=48/L=20/#=2/NK=1/NS=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; IF (Return_Int = 2) THEN Goto EXIT; END; Dos_Down; Int1 := 0; WHILE (Int1 < 4) DO Return_Int := 15; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; Mark_File; Dos_Down; ++Int1; END; Int1 := 0; WHILE (Int1 < 3) DO Dos_Up; Return_Int := 15; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; ++Int1; END; Mark_File; Dos_Down; Return_Int := 25; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; Mark_File; Return_Int := 50; Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; Kill_Box; Kill_Box; Kill_Box; 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' + ' -Run any DOS command/n -Run any program'; Return_Str := '/C=48/L=3/#=11/D=50/T=DOS SHELL/NK=1/NS=1/W=29'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'With just a few keystrokes,'); Set_Global_Str('ISTR2' ,'you can...'); Set_Global_Str('ISTR3' ,' -Load multiple files'); Set_Global_Str('ISTR4' ,' -Copy multiple files'); Set_Global_Str('ISTR5' ,' -Delete multiple files'); Set_Global_Str('ISTR6' ,' -Print multiple files'); Set_Global_Str('ISTR7' ,' -Display any directory'); Set_Global_Str('ISTR8' ,' -Change directories'); Set_Global_Str('ISTR9' ,' -Rename a file'); Set_Global_Str('ISTR10',' -Run any DOS command'); Set_Global_Str('ISTR11',' -Run any program'); Return_Str := '/C=48/L=3/#=11/D=50/T=DOS SHELL/NK=1/NS=1/W=29'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_DOS_SHELL; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := 'While running DOS, if EMS memory is available, Multi-Edit will swap to it to free up maximum space to run programs!'; Return_Str := '/C=20/L=10/#=3/D=150/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1' ,'While running DOS, if EMS memory is'); Set_Global_Str('ISTR2' ,'available, Multi-Edit will swap to it to'); Set_Global_Str('ISTR3' ,'free up maximum space to run programs!'); Return_Str := '/C=20/L=10/#=3/D=150/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_DOS_SHELL: Call CLEAN_UP; If (Mode = Dos_Shell) Then IF (Dir_Active(2)) THEN RM('DIRSHELL^DIRWINDOW'); END; close_dir(2); close_dir(1); Mode := EDIT; End; Refresh := True; Redraw; Refresh := False; {*MACRO LANGUAGE*} 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!'; Return_Str := '/C=2/L=3/#=3/T=MULTI-EDIT MACRO LANGUAGE/NS=1/H=20/W=74/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Probably the most important feature of Multi-Edit is its extensibility.'); Set_Global_Str('ISTR2' ,'With the Multi-Edit macro language, you can create virtually any function'); Set_Global_Str('ISTR3' ,'you need!'); Return_Str := '/C=2/L=3/#=3/T=MULTI-EDIT MACRO LANGUAGE/NS=1/H=20/W=74/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_MACRO; END; IF (Return_Int = 2) THEN Goto EXIT; END; Type_Str := ' $Macro Bracecnt;/n Def_Int(Count); { Declare integer variable }/n/n While Search_Fwd(''[{}]'',0) DO { Look for ''{'' or ''}'' }/n' + ' If Cur_Char = ''{'' THEN { Determine which char found }/n ++Count; { Increment count if char is ''{'' }/n ELSE/n' + ' --Count; { Decrement count if char is ''}'' }/n END;/n Right;/n END;/n Make_Message(''Excess { Count = '' + Str(Count)); { Display result }/n End_Macro;'; Set_Global_Int('Delay_Speed',0); Return_Str := '/C=2/L=7/#=13/NB=1/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,' $Macro Bracecnt;'); Set_Global_Str('ISTR2' ,' Def_Int(Count); { Declare integer variable }'); Set_Global_Str('ISTR3' ,''); Set_Global_Str('ISTR4' ,' While Search_Fwd(''[{}]'',0) DO { Look for ''{'' or ''}'' }'); Set_Global_Str('ISTR5' ,' If Cur_Char = ''{'' THEN { Determine which char found }'); Set_Global_Str('ISTR6' ,' ++Count; { Increment count if char is ''{'' }'); Set_Global_Str('ISTR7' ,' ELSE'); Set_Global_Str('ISTR8' ,' --Count; { Decrement count if char is ''}'' }'); Set_Global_Str('ISTR9' ,' END;'); Set_Global_Str('ISTR10',' Right;'); Set_Global_Str('ISTR11',' END;'); Set_Global_Str('ISTR12',' Make_Message(''Excess { Count = '' + Str(Count)); { Display result }'); Set_Global_Str('ISTR13',' End_Macro;'); Set_Global_Int('Delay_Speed',0); Return_Str := '/C=2/L=7/#=13/NB=1/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_MACRO; END; IF (Return_Int = 2) THEN Goto EXIT; END; 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!'; Set_Global_Int('Delay_Speed',2); Return_Str := '/C=2/L=21/#=2/NB=1/D=100'; Call BOXWRAP; { Set_Global_Str('ISTR1' ,'Virtually all editor functions can be accessed through the macro language.'); Set_Global_Str('ISTR2' ,'Not only is this demo written in it, but so is the ENTIRE USER INTERFACE!'); Set_Global_Int('Delay_Speed',2); Return_Str := '/C=2/L=21/#=2/NB=1/D=100'; Call BOXTEXT; } IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_MACRO: Call CLEAN_UP; Set_Global_Int('Delay_Speed',2); {*MULTI-EDIT PROFESSIONAL*} Type_Str := 'Multi-Edit now has an extended version package with 4 great new features. It''s called Multi-Edit Professional.'; Return_Str := '/C=8/L=5/#=2/D=100/T=MULTI-EDIT PROFESSIONAL'; Call BOXWraP; { Set_Global_Str('ISTR1','Multi-Edit now has an extended version package with 4 great'); Set_Global_Str('ISTR2','new features. It''s called Multi-Edit Professional.'); Return_Str := '/C=8/L=5/#=2/D=100/T=MULTI-EDIT PROFESSIONAL'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_PROFESSIONAL; END; IF (Return_Int = 2) THEN Goto EXIT; END; 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' + ' source code to ALL the user interface macros!'; Return_Str := '/C=1/L=3/#=4/D=100/T=MULTI-EDIT PROFESSIONAL MACRO SOURCE/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1','For those who want the ultimate in customization capability, to study'); Set_Global_Str('ISTR2','the macro language "in depth" and learn all the "tricks", or are just'); Set_Global_Str('ISTR3','plain curious about how the user interface works, Multi-Edit Professional'); Set_Global_Str('ISTR4','includes the full source code to ALL the user interface macros!'); Return_Str := '/C=1/L=3/#=4/D=100/T=MULTI-EDIT PROFESSIONAL MACRO SOURCE/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_PROFESSIONAL; END; IF (Return_Int = 2) THEN Goto EXIT; END; 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.'; Return_Str := '/C=3/L=8/#=3/D=100/T=MULTI-EDIT PROFESSIONAL MACRO DEBUGGER'; Call BOXWRAP; { Set_Global_Str('ISTR1','As the perfect complement to the macro source, or as a terrific'); Set_Global_Str('ISTR2','aid in developing your own macros, Multi-Edit Professional'); Set_Global_Str('ISTR3','includes an integrated source level Macro Debugger.'); Return_Str := '/C=3/L=8/#=3/D=100/T=MULTI-EDIT PROFESSIONAL MACRO DEBUGGER'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_PROFESSIONAL; END; IF (Return_Int = 2) THEN Goto EXIT; END; Kill_Box; 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,' + ' bringing up a table of suggested alternate spellings, or adding the word to one of the auxiliary dictionaries!'; Return_Str := '/C=1/L=3/#=5/D=100/T=MULTI-EDIT PROFESSIONAL SPELL CHECKER/NK=1'; Call BOXWRAP; { Set_Global_Str('ISTR1','Multi-Edit Professional''s Spell Checker features a 80,000+ word main'); Set_Global_Str('ISTR2','dictionary, with the capability of 2 auxiliary dictionaries. When'); Set_Global_Str('ISTR3','a non-recognized word is found, you can choose between ignoring the'); Set_Global_Str('ISTR4','word, editing the word, bringing up a table of suggested alternate'); Set_Global_Str('ISTR5' ,'spellings, or adding the word to one of the auxiliary dictionaries!'); Return_Str := '/C=1/L=3/#=5/D=100/T=MULTI-EDIT PROFESSIONAL SPELL CHECKER/NK=1'; Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_PROFESSIONAL; END; IF (Return_Int = 2) THEN Goto EXIT; END; 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 ' + '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!'; Return_Str := '/C=1/L=9/#=7/D=100/T=MULTI-EDIT PROFESSIONAL COMMUNICATIONS MODULE/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXWRAP; { Set_Global_Str('ISTR1','Multi-Edit Professional''s Communications Module is a seamlessly integrated'); Set_Global_Str('ISTR2','communications package. It features terminal emulation, downloading,'); Set_Global_Str('ISTR3','uploading, automatic and manual phone dialing with redial, and much more!'); Set_Global_Str('ISTR4','All features are written in the macro language and the source code is'); Set_Global_Str('ISTR5','included. Customization is easy with the Multi-Edit macro language, and'); Set_Global_Str('ISTR6','NO other communications "script" language even comes close to its power'); Set_Global_Str('ISTR7','and ease of use!'); Return_Str := '/C=1/L=9/#=7/D=100/T=MULTI-EDIT PROFESSIONAL COMMUNICATIONS MODULE/NK=1/BCOLOR=' + Str(M_H_Color); Call BOXTEXT; } IF (Return_Int = 1) THEN Goto SKIP_PROFESSIONAL; END; IF (Return_Int = 2) THEN Goto EXIT; END; SKIP_PROFESSIONAL: Call CLEAN_UP; {*FINAL REMARKS*} Put_Box(2,3,79,23,0,M_B_Color,'MULTI-EDIT',False); Write('Now that you''ve gotten a look at just some of the MANY powerful features of',3,4,0,M_B_Color); Write('Multi-Edit, you''re probably wondering how much this fantastic editor is...',3,5,0,M_B_Color); Write('Only $99.* for the regular version,',21,7,0,M_B_Color); Write('and $179.* for the professional version!',21,8,0,M_B_Color); Write('With both versions, you get:',3,10,0,M_B_Color); Write('-Complete, indexed hypertext user''s guide and macro language reference',5,11,0,M_B_Color); Write('-Source code to language support macros',5,12,0,M_B_Color); Write('-Only one entry screen (which is bypassable)',5,13,0,M_B_Color); Write('-Unlimited support by telephone and our bulletin board system',5,14,0,M_B_Color); Write('To order, call 602-968-1945 8:00-5:00 MST',20,16,0,M_B_Color); { Write('To order, call 24 hours a day: 1-800-221-9280 Ext. 951',13,16,0,M_B_Color); Write('(in Arizona, call 602-968-1945 8:00-5:00 MST)',18,17,0,M_B_Color); } Write('Or send a check or money order (*plus $5 for shipping and handling) to:',5,18,0,M_B_Color); Write('AMERICAN CYBERNETICS',30,20,0,M_B_Color); Write('455 S. 48th Street Suite 107',26,21,0,M_B_Color); Write('Tempe, AZ 85281',33,22,0,M_B_Color); Return_Int := 1000; Call DELAY_LOOP; Refresh := False; Call CLEAN_UP; Goto START_DEMO; {*SUBROUTINES*} BOXWRAP: Box_Color := M_B_Color; Type_Color := M_B_Color; IF (XPOS('/BCOLOR=',Return_Str,1)) THEN Box_Color := Parse_Int('/BCOLOR=',Return_Str); Type_Color := Box_Color; END; c := Parse_Int( '/C=', Return_Str ); count := Parse_Int( '/#=', Return_Str ); {Divide string into pieces} Jx := 1; Jy := 1; IF (XPOS('/n',Type_Str,1)) THEN w := Parse_Int( '/W=', Return_Str ); NEWLINES: Jl := XPos('/n',Type_Str,Jy); IF (Jl = 0) THEN Set_Global_Str('ISTR' + Str(Jx),Copy(Type_Str,Jy,76)); ELSE Set_Global_Str('ISTR' + Str(Jx),Copy(Type_Str,Jy,Jl - Jy)); Jy := Jl + 2; END; IF ((Length(Global_Str('ISTR' + Str(Jx)))) > W) THEN W := Length(Global_Str('ISTR' + Str(Jx))); END; IF (Jl > 0) THEN ++Jx; Goto NEWLINES; END; ELSE {Find first white space at or beyond cutoff point} l := (Svl(Type_Str) / Count) + ((Svl(Type_Str) mod Count) > 0); W := l; WRAPPING: {Only allow the first line in the box to exceed the "perfect" length. This insures the first line will be the longest. Looks much better that way.} { Jl := XPos(' ',Type_Str,Jy + w - 1); } Jl := XPos(' ',Type_Str,Jy + w); IF ((Jl - Jy) > l) THEN IF (Jx = 1) THEN l := Jl - Jy; ELSE Jl := Jy + W - 1; WHILE (Str_Char(Type_Str,Jl) <> ' ' ) DO IF (Jl <= Jy) THEN Jl := XPos(' ',Type_Str,Jy + w - 1); Goto NO_SPACE; END; --Jl; END; END; END; NO_SPACE: IF (Jl = 0) THEN Set_Global_Str('ISTR' + Str(Jx),Copy(Type_Str,Jy,76)); ELSE Set_Global_Str('ISTR' + Str(Jx),Copy(Type_Str,Jy,Jl - Jy)); END; { IF (Length(Global_Str('ISTR' + Str(Jx))) > L) THEN L := Length(Global_Str('ISTR' + Str(Jx))); END; } WHILE (Str_Char(Type_Str,Jl) = ' ') DO ++Jl; END; Jy := Jl; IF ((Jy < Svl(Type_Str)) and (Jx < Count)) THEN ++Jx; Goto WRAPPING; END; IF (Jx > Count) THEN Count := jx; END; w := Parse_Int( '/W=', Return_Str ); IF (w < l) THEN W := l; END; END; l := Parse_Int( '/L=', Return_Str ); IF (Parse_Int('/NB=',Return_Str) = False) THEN Return_Int := Parse_Int('/H=',Return_Str); IF (Count > Return_Int) THEN Return_Int := Count; END; IF (Parse_Int('/NS=',Return_Str)) THEN Put_Box( c, l, c + w + 3, l + Return_Int + 1,0,Box_Color, Parse_Str('/T=', Return_Str ),False); ELSE Put_Box( c, l, c + w + 5, l + Return_Int + 2,0,Box_Color, Parse_Str('/T=', Return_Str ),True); END; END; C := C + 2; ++L; jx := 0; Return_Int := 0; while jx < count do ++jx; Temp_String := Global_Str('ISTR' + Str(jx)); call type_out; IF (Return_Int = 1) THEN Goto BOX_WRAP_SKIP; END; end; Return_Int := Parse_Int('/D=',Return_Str); Call DELAY_LOOP; BOX_WRAP_SKIP: IF (Parse_Int('/NK=',Return_Str) <> 1) THEN Kill_Box; END; RET; { BOXTEXT: Box_Color := M_B_Color; Type_Color := M_B_Color; IF (XPOS('/BCOLOR=',Return_Str,1)) THEN Box_Color := Parse_Int('/BCOLOR=',Return_Str); Type_Color := Box_Color; END; { IF (XPOS('/TCOLOR=',Return_Str,1)) THEN Type_Color := Parse_Int('/TCOLOR=',Return_Str); END; } {Calc the box width} { Processor_Comp := Global_Int('Processor_Comp'); } c := Parse_Int( '/C=', Return_Str ); l := Parse_Int( '/L=', Return_Str ); count := Parse_Int( '/#=', Return_Str ); jx := 0; w := Parse_Int('/W=',Return_Str); while jx < count do ++jx; jl := length( Global_Str('ISTR' + Str(jx)) ); if jl > w then w := jl; end; end; IF (Parse_Int('/NB=',Return_Str) = False) THEN Return_Int := Parse_Int('/H=',Return_Str); IF (Count > Return_Int) THEN Return_Int := Count; END; IF (Parse_Int('/NS=',Return_Str)) THEN Put_Box( c, l, c + w + 3, l + Return_Int + 1,0,Box_Color, Parse_Str('/T=', Return_Str ),False); ELSE Put_Box( c, l, c + w + 5, l + Return_Int + 2,0,Box_Color, Parse_Str('/T=', Return_Str ),True); END; { IF (Box_Color <> Type_Color) THEN {If the box color and the text inside are different, clear out the area where the text will be in the text color} Jx := 0; while (jx < count) do ++jx; Draw_Char(32,C + 2,L + Jx,Type_Color,W); end; END; } END; C := C + 2; ++L; jx := 0; Return_Int := 0; while jx < count do ++jx; Temp_String := Global_Str('ISTR' + Str(jx)); call type_out; IF (Return_Int = 1) THEN Goto BOX_TEXT_SKIP; END; end; Return_Int := Parse_Int('/D=',Return_Str); Call DELAY_LOOP; BOX_TEXT_SKIP: IF (Parse_Int('/NK=',Return_Str) <> 1) THEN Kill_Box; END; { Return_Int := 0; } RET; } TYPE_OUT: {This subroutine writes out the string Temp_String one char at a time beginning at C and L} Temp_Integer := 1; While (Temp_Integer <= Svl(Temp_String)) Do Write(Str_Char(Temp_String,Temp_Integer),(C + Temp_Integer) - 1,L,0,Type_Color); GotoXY((C + Temp_Integer),L); ++Temp_Integer; {If the guy hits the skip key, finish writing FAST!} IF (Return_Int = 0) THEN Return_Int := Global_Int('Delay_Speed'); Call DELAY_LOOP; IF (Return_Int = 1) THEN Goto TYPE_OUT_SKIP; END; END; End; TYPE_OUT_SKIP: ++L; RET; FUN_WRAP: Temp_Integer := 1; While (Temp_Integer <= Svl(Temp_String)) DO Text(Str_Char(Temp_String,Temp_Integer)); Word_wrap_line(True,True); ++Temp_Integer; Delay((Global_Int('Demo_Speed') * Global_Int('Delay_Speed')) + Processor_Comp); END; RET; TYPE_TEXT: {This subroutine inserts the string Temp_String one char at a time beginning at the current cursor position} Temp_Integer := 1; While (Temp_Integer <= Svl(Temp_String)) Do Text(Str_Char(Temp_String,Temp_Integer)); ++Temp_Integer; {If the guy hits the skip key, finish writing FAST!} IF (Return_Int = 0) THEN Return_Int := Global_Int('Delay_Speed'); Call DELAY_LOOP; IF (Return_Int = 2) THEN Goto TYPE_TEXT_SKIP; END; END; End; TYPE_TEXT_SKIP: Cr; RET; SPIRAL_WIPE: {The first two lines are to rewrite the top and bottom window borders} Draw_Char(196,1,3,W_B_Color,1); Draw_Char(196,18,3,W_B_Color,63); Draw_Char(32,1,24,T_Color,80); Write_X := 4; While (Write_X < 14) Do Draw_Char(32,1,Write_X,T_Color,80); Temp_Integer := 0; While ((Temp_Integer + Write_X) < (27 - Write_X)) Do Draw_Char(32,81 - (Write_X - 3),Temp_Integer + Write_X + 1,T_Color,1); ++Temp_Integer; Delay(Processor_Comp / 2); End; Draw_Char(32,1,27 - Write_X,T_Color,80); While (Temp_Integer >= 1) Do Draw_Char(32,Write_X - 3,Temp_Integer + Write_X,T_Color,1); --Temp_Integer; Delay(Processor_Comp / 2); End; ++Write_X; Delay(Processor_Comp / 2); End; RET; MAKE_WINDOW: Create_Window; RM('WINDOW^SetWindowNames'); ++Win_Count; Win_List := Win_List + '/' + Str(Win_Count) + '=' + Str(Window_Id); Ret; KILL_WINDOW: IF (Win_Count > 0) THEN Jx := Parse_Int('/' + Str(Win_Count) + '=',Win_List); Switch_Win_Id(Jx); Delete_Window; Win_List := Copy(Win_List,1,Svl(Win_List) - Length(Str(Jx)) - Length(Str(Win_Count)) - 2); --Win_Count; Switch_Win_Id(Parse_Int('/' + Str(Win_Count) + '=',Win_List)); END; Ret; CLEAN_UP: Return_Int := 0; Temp_Integer := Refresh; WHILE (Win_Count > 1) DO Call KILL_WINDOW; END; Erase_Window; Block_Off; Screen_Num := Screen_Count; { Screen_Num := 1; } Size_Window(0,3,81,25); File_Name := 'MULTI-EDIT'; Format_Line := ' '; WHILE (Box_Count) DO Kill_Box; END; Refresh := Temp_Integer; RET; DELAY_LOOP: Call WRITE_HELP; DELAY_AGAIN: If (Check_Key) Then If (Key1 = 27) Then If (Mode = Dos_Shell) Then IF (Dir_Active(2)) THEN RM('DIRSHELL^DIRWINDOW'); END; close_dir(2); close_dir(1); error_level := 0; mode := edit; End; Goto EXIT; ELSIF (Key1 = 32) Then Return_Int := -1; RET; ELSIF (Key1 = 13) Then Return_Int := 1; RET; ELSIF ((Key1 = 80) or (Key1 = 112)) THEN Write('Demo execution suspended. Press any key to resume... ',1,Message_Row,0,Stat1_Color); Read_Key; Call WRITE_HELP; End; IF (Key1 = 0) THEN IF ((Key2 = 75) and (Global_Int('Demo_Speed') < 36)) THEN Set_Global_Int('Demo_Speed',Global_Int('Demo_Speed') + 7); Call WRITE_HELP; ELSIF ((Key2 = 77) and (Global_Int('Demo_Speed') > 6)) THEN Set_Global_Int('Demo_Speed',Global_Int('Demo_Speed') - 7); Call WRITE_HELP; END; END; End; IF (Return_Int > 0) THEN Return_Int := Return_Int - 1; Delay(Global_Int('Demo_Speed') + Processor_Comp); Goto DELAY_AGAIN; END; RET; WRITE_HELP: Write('<SPACE>=skip <ENTER>=next <ESC>=quit <P>=pause Arrow keys: Slow ░░░░░░░ Fast', 1,Message_Row,0,Stat1_Color); { Write('<SPACE> = skip. <ENTER> = next. <ESC> = quit. Arrow keys: Slow ░░░░░░░ Fast', 1,Message_Row,0,Stat1_Color); } Write('▓',74 - (Global_Int('Demo_Speed') / 7),Message_Row,0,Stat1_Color); RET; ABORT: RM('MEERROR^MESSAGEBOX /B=1/T=DEMO ERROR/M=' + Temp_String); Goto ABORT2; EXIT: Call Clean_Up; ABORT2: If (Mode = Dos_Shell) Then IF (Dir_Active(2)) THEN RM('DIRSHELL^DIRWINDOW'); END; close_dir(2); close_dir(1); error_level := 0; mode := edit; End; Call KILL_WINDOW; Switch_Win_Id(Active_Window); RM('WINDOW^SetWindowNames'); Set_Global_Int('Demo_Speed',0); { Set_Global_Int('Processor_Comp',0); } Int1 := 1; WHILE (Int1 < 19) DO Set_Global_Str('ISTR' + Str(Int1),''); ++Int1 END; File_Changed := False; Messages := True; Refresh := True; Set_Global_Int('CUR_SCRN',Global_Int('DEF_SCRN_STYLE')); C_Color := T_C_Color; W_C_Color := T_W_C_Color; W_Eof_Color := T_W_Eof_Color; Eof_Color := T_Eof_Color; Undo_Stat := True; RM(User_Id + 'INIT'); {Enable autosave again} Type_Str := global_str('@AUTOSAVEPARMS'); set_global_str('@AUTOSAVEPARMS',''); RM('SetAutoSave ' + Type_Str); make_message(''); RM('SETSCRN'); new_screen; END_MACRO;