[31m-- tmenu is tiny menu on 80x25[m
[31m-- Tmenu is Copyright (C) 2025 Manuel De Girardi ; [m
[31m--[m
[31m--   This program is free software; you can redistribute it and/or modify[m
[31m--   it under the terms of the GNU General Public License as published by[m
[31m--   the Free Software Foundation; either version 2 of the License, or[m
[31m--   (at your option) any later version.[m
[31m--[m
[31m--   This program is distributed in the hope that it will be useful,[m
[31m--   but WITHOUT ANY WARRANTY; without even the implied warranty of[m
[31m--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the[m
[31m--   GNU General Public License for more details.[m
[31m--[m
[31m--   You should have received a copy of the GNU General Public License[m
[31m--   along with this program; if not, write to the Free Software[m
[31m--   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA[m
[31m--[m
[31m-- Date := "2025-11-21 19:07:47"[m
[31m-- Version := "0.0.0r"[m
[01;34mwith[m T [31m;[m 
[01;34mwith[m Ada[31m.[mWide_Text_Io [31m;[m
[01;34mwith[m Ada[31m.[mText_Io [31m;[m
[01;34muse[m Ada [31m;[m
[01;34mwith[m Gnat[31m.[mOs_Lib [31m;[m
[01;34muse[m Gnat [31m;[m
[01;34muse[m Gnat[31m.[mOs_Lib[31m;[m
[01;34mwith[m Ada[31m.[mDirectories [31m;[m
[01;34mwith[m Ada[31m.[mCharacters[31m.[mHandling [31m;[m
[01;34muse[m Ada[31m.[mCharacters [31m;[m
[01;34mwith[m Ada[31m.[mWide_Characters[31m.[mHandling [31m;[m
[01;34muse[m Ada[31m.[mWide_Characters[31m.[mHandling [31m;[m

[01;34mwith[m Ada[31m.[mStrings[31m.[mFixed [31m;[m
[01;34muse[m Ada[31m.[mStrings [31m;[m
[01;34mwith[m PragmARC[31m.[mAnsi_TTY_Control [31m;[m
[01;34muse[m PragmARC [31m;[m

[01;34mprocedure[m Tmenu [01;34mis[m

   [01;34mpackage[m W_Io [01;34mrenames[m Ada[31m.[mWide_Text_Io[31m;[m
   [01;34muse[m Text_Io[31m;[m
   
   Target        [31m:[m [32mWide_String[m[31m([m[35m1[m[31m..[m[35m57[m[31m)[m [31m:=[m [31m([m[01;34mothers[m [31m=>[m Wide_Character ' [01;30mVal[m [31m([m[35m32[m[31m))[m [31m;[m
   Last          [31m:[m Natural [31m:=[m [35m0[m [31m;[m
   Args          [31m:[m Os_Lib[31m.[mArgument_List_Access[31m;[m
   Cmd_Name      [31m:[m String_Access[31m;[m
   Arg_Top       [31m:[m Natural [31m:=[m [35m0[m[31m;[m
   Errno         [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m
   Menu_Filename [31m:[m [01;34mconstant[m [32mString[m [31m:=[m [31m"main_menu.txt"[m[31m;[m
   Top_Col       [31m:[m Positive [31m:=[m [35m20[m[31m;[m
   Entry_Line    [31m:[m Positive [31m:=[m [35m23[m[31m;[m
   Top_Line      [31m:[m [01;34mconstant[m Positive [31m:=[m [35m4[m[31m;[m
   Menu_File     [31m:[m W_Io[31m.[mFile_Type[31m;[m
   Program_Name  [31m:[m String_Access[31m;[m
   Input_Line    [31m:[m String_Access[31m;[m
   Top_Name      [31m:[m [01;34mconstant[m Positive [31m:=[m [35m32[m[31m;[m
   Name_Index    [31m:[m Natural [31m:=[m [35m0[m[31m;[m
   File_Index    [31m:[m Natural [31m:=[m [35m0[m[31m;[m
   [01;34mtype[m Action_Array [01;34mis[m [01;34marray[m [31m([mPositive [01;34mrange[m [31m<>)[m [01;34mof[m String_Access[31m;[m
   Done          [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
   Success       [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
   Args_Index    [31m:[m Natural [31m:=[m [35m0[m[31m;[m
   Menu_24 [31m:[m [01;30mAction_Array[m[31m([m[35m1[m[31m..[m[35m18[m[31m)[m [31m:=[m 
     
     [31m([m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m)),[m
      [01;34mnew[m [32mString[m ' [31m([mHandling[31m.[m[01;30mTo_String[m[31m([m[31m""[m[31m))[m
      [31m);[m
[01;34mbegin[m
   [01;34mloop[m
      [01;30mPut[m[31m([mAnsi_TTY_Control[31m.[mClear_Screen[31m);[m
      [01;34mif[m Os_Lib[31m.[m[01;30mIs_Regular_File[m[31m([mMenu_Filename[31m)[m [01;34mthen[m
	 W_Io[31m.[m[01;30mOpen[m[31m([mMenu_File[31m,[m W_Io[31m.[mIn_File[31m,[m Menu_Filename[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
      [01;34melse[m
	 [01;34mreturn[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      [01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
	 [01;34mbegin[m
	    Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
	    [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
	    Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
	    Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
	    [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
	    Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
	    Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
	    [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
	    Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
	 [01;34mexception[m
	    [01;34mwhen[m [01;34mothers[m [31m=>[m
	       [01;30mPut_Line[m[31m([m[31m"Error during reading menu file."[m[31m);[m
	       [01;34mreturn[m[31m;[m
	 [01;34mend[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      [01;34mfor[m Item [01;34min[m Menu_24 ' [01;34mRange[m [01;34mloop[m
	 [01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
	    Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
	    [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
	    Os_Lib[31m.[m[01;30mFree[m[31m([m[01;30mMenu_24[m[31m([mItem[31m));[m
	    Name_Index [31m:=[m Fixed[31m.[m[01;30mIndex[m[31m([mInput_Line[31m.[m[01;34mall[m[31m,[m [32mCharacter[m'[01;30mVal[m[31m([m[35m27[m[31m)[m [31m&[m [31m""[m[31m,[m Top_Name[31m);[m
	    [01;30mMenu_24[m[31m([mItem[31m)[m [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[01;30mInput_Line[m[31m([mTop_Name[31m..[mName_Index[31m-[m[35m1[m[31m));[m
	    Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
	    File_Index [31m:=[m File_Index [31m+[m [35m1[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
	 [01;34mbegin[m
	    Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
	    [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
	    Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
	    Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
	    [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
	    Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
	    Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
	    [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
	    Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
	 [01;34mexception[m
	    [01;34mwhen[m [01;34mothers[m [31m=>[m
	       [01;30mPut_Line[m[31m([m[31m"Error during reading menu file."[m[31m);[m
	       [01;30mNew_Line[m[31m([m[35m2[m[31m);[m
	       [01;34mreturn[m[31m;[m
	 [01;34mend[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      W_Io[31m.[m[01;30mClose[m[31m([mMenu_File[31m);[m
      
      
      
      
  Main [31m:[m
      [01;34mloop[m
	 [01;34mdeclare[m
	    
	    Wchar [31m:[m Wide_Character [31m:=[m Wide_Character ' [01;30mVal[m [31m([m[35m32[m[31m);[m
	 [01;34mbegin[m
	Menu [31m:[m
	    [01;34mloop[m
	       [01;30mPut[m[31m([mAnsi_TTY_Control[31m.[m[01;30mPosition[m[31m([mEntry_Line[31m,[m Top_Col[31m)[m [31m&[m Handling[31m.[m[01;30mTo_String[m[31m([m[01;30mTarget[m[31m([mTarget'First [31m..[m Last[31m)));[m
	       W_Io[31m.[m[01;30mGet_immediate[m[31m([mWchar[31m);[m
	       
	       [01;34mif[m [01;30mIs_Control[m [31m([mWchar[31m)[m [01;34mthen[m
		  [01;34mcase[m Wchar [01;34mis[m
		     [01;34mwhen[m Wide_Character [31m' Val (10) | Wide_Character '[m [01;30mVal[m [31m([m[35m13[m[31m)[m [31m=>[m
			Done [31m:=[m True[31m;[m
		     [01;34mwhen[m Wide_Character ' [01;30mVal[m [31m([m[35m27[m[31m)[m [31m=>[m
			[01;30mNew_Line[m[31m([m[35m2[m[31m);[m
			[01;34mreturn[m[31m;[m
			
		     [01;34mwhen[m Wide_Character [31m' Val (127) | Wide_Character '[m [01;30mVal[m [31m([m[35m8[m[31m)[m [31m=>[m
			
			[01;30mTarget[m[31m([mLast[31m)[m [31m:=[m Wide_Character ' [01;30mVal[m [31m([m[35m32[m[31m);[m
			Last [31m:=[m Last [31m-[m [35m1[m[31m;[m
			[01;30mPut[m[31m([mAnsi_TTY_Control[31m.[mClear_Screen[31m);[m
			[01;34mif[m Os_Lib[31m.[m[01;30mIs_Regular_File[m[31m([mMenu_Filename[31m)[m [01;34mthen[m
			   W_Io[31m.[m[01;30mOpen[m[31m([mMenu_File[31m,[m W_Io[31m.[mIn_File[31m,[m Menu_Filename[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
			[01;34melse[m
			   [01;30mNew_Line[m[31m([m[35m2[m[31m);[m
			   [01;34mreturn[m[31m;[m
			[01;34mend[m [01;34mif[m[31m;[m
			File_Index [31m:=[m [35m0[m[31m;[m
			[01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
			   [01;34mbegin[m
			      Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
			      [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
			      Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
			      Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
			      [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
			      Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
			      Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
			      [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
			      Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
			   [01;34mexception[m
			      [01;34mwhen[m [01;34mothers[m [31m=>[m
				 [01;30mPut_Line[m[31m([m[31m"Error during reading menu file."[m[31m);[m
				 [01;30mNew_Line[m[31m([m[35m2[m[31m);[m
				 [01;34mreturn[m[31m;[m
			   [01;34mend[m[31m;[m
			[01;34mend[m [01;34mif[m[31m;[m
			[01;34mfor[m Item [01;34min[m Menu_24 ' [01;34mRange[m [01;34mloop[m
			   [01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
			      Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
			      [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
			      Os_Lib[31m.[m[01;30mFree[m[31m([m[01;30mMenu_24[m[31m([mItem[31m));[m
			      Name_Index [31m:=[m Fixed[31m.[m[01;30mIndex[m[31m([mInput_Line[31m.[m[01;34mall[m[31m,[m [32mCharacter[m'[01;30mVal[m[31m([m[35m27[m[31m)[m [31m&[m [31m""[m[31m,[m Top_Name[31m);[m
			      [01;30mMenu_24[m[31m([mItem[31m)[m [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[01;30mInput_Line[m[31m([mTop_Name[31m..[mName_Index[31m-[m[35m1[m[31m));[m
			      Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
			      File_Index [31m:=[m File_Index [31m+[m [35m1[m[31m;[m
			   [01;34mend[m [01;34mif[m[31m;[m
			[01;34mend[m [01;34mloop[m[31m;[m
			[01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
			   [01;34mbegin[m
			      Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
			      [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
			      Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
			      Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
			      [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
			      Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
			      Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
			      [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
			      Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
			   [01;34mexception[m
			      [01;34mwhen[m [01;34mothers[m [31m=>[m
				 [01;30mPut_Line[m[31m([m[31m"Error during reading menu file."[m[31m);[m
				 [01;30mNew_Line[m[31m([m[35m2[m[31m);[m
				 [01;34mreturn[m[31m;[m
			   [01;34mend[m[31m;[m
			[01;34mend[m [01;34mif[m[31m;[m
			W_Io[31m.[m[01;30mClose[m[31m([mMenu_File[31m);[m

		     [01;34mwhen[m [01;34mothers[m [31m=>[m
			[01;34mnull[m[31m;[m
		  [01;34mend[m [01;34mcase[m[31m;[m
		  
		  
	       [01;34melse[m
		  
		  [01;30mTarget[m[31m([mLast [31m+[m [35m1[m[31m)[m [31m:=[m Wchar[31m;[m
		  Last [31m:=[m Last [31m+[m [35m1[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       
	       [01;34mif[m Done [01;34mthen[m
		  [01;34mbegin[m
		     

		     
		     
		     Program_Name [31m:=[m [01;34mnew[m [32mString[m [31m' (Handling.To_String(Target(Target'[mFirst[31m..[mLast[31m)));[m

		     [01;34mif[m Program_Name [31m=[m [01;34mnull[m [01;34mor[m [01;34melse[m Program_Name'Length [31m=[m [35m0[m [01;34mthen[m
			[01;34mraise[m End_Error[31m;[m
		     [01;34melsif[m [01;30mProgram_Name[m[31m([mFixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m)..[mFixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m,[m Backward[31m))[m [31m=[m [31m"exit"[m [01;34mthen[m
			[01;30mNew_Line[m[31m([m[35m2[m[31m);[m
			[01;34mreturn[m[31m;[m
		     [01;34mend[m [01;34mif[m[31m;[m
		     Done [31m:=[m False[31m;[m


		     [01;34mfor[m Name [01;34min[m Menu_24'[01;34mRange[m [01;34mloop[m
			[01;34mif[m [01;30mMenu_24[m[31m([mName[31m).[m[01;34mall[m [31m=[m 
			  [01;30mProgram_Name[m[31m([mFixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m)..[mFixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m,[m Backward[31m))[m
			[01;34mthen[m

			   Done [31m:=[m True[31m;[m
			   [01;34mexit[m Menu[31m;[m
			[01;34melsif[m [01;30mMenu_24[m[31m([mName[31m).[m[01;34mall[m [31m=[m 
			  [01;30mProgram_Name[m[31m([mFixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m)..[mFixed[31m.[m[01;30mIndex[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m,[m [31m" "[m[31m)[m [31m-[m [35m1[m[31m)[m			   
			[01;34mthen[m

			   Args_Index [31m:=[m Fixed[31m.[m[01;30mIndex[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m,[m [31m" "[m[31m);[m
			   Done [31m:=[m True[31m;[m
			   [01;34mexit[m Menu[31m;[m
			[01;34mend[m [01;34mif[m[31m;[m
		     [01;34mend[m [01;34mloop[m[31m;[m
		  [01;34mexception[m
		     [01;34mwhen[m W_Io[31m.[mEnd_Error [31m=>[m
			Target [31m:=[m [31m([m[01;34mothers[m [31m=>[m Wide_Character ' [01;30mVal[m [31m([m[35m32[m[31m))[m [31m;[m
			Last [31m:=[m [35m0[m[31m;[m
			[01;30mPut[m[31m([mAnsi_TTY_Control[31m.[m[01;30mPosition[m[31m([mEntry_Line[31m,[m [35m4[m[31m)[m [31m&[m Fixed[31m.[m[31m"*"[m[31m([m[35m64[m[31m,[m [32mCharacter[m ' [01;30mVal[m [31m([m[35m32[m[31m)));[m
			[01;30mPut[m[31m([mAnsi_TTY_Control[31m.[m[01;30mPosition[m[31m([mEntry_Line[31m,[m [35m4[m[31m)[m [31m&[m [31m"Error : presse ENTER to continue."[m[31m);[m
			
			W_Io[31m.[m[01;30mGet_Immediate[m[31m([mWchar[31m);[m
			[01;30mPut[m[31m([mAnsi_TTY_Control[31m.[m[01;30mPosition[m[31m([mEntry_Line[31m,[m [35m4[m[31m)[m [31m&[m Fixed[31m.[m[31m"*"[m[31m([m[35m64[m[31m,[m [32mCharacter[m ' [01;30mVal[m [31m([m[35m32[m[31m)));[m
			[01;34mfor[m Old [01;34min[m Menu_24 ' [01;34mrange[m [01;34mloop[m
			   Os_Lib[31m.[m[01;30mFree[m[31m([m[01;30mMenu_24[m[31m([mOld[31m));[m
			[01;34mend[m [01;34mloop[m[31m;[m
			Done [31m:=[m False[31m;[m
			[01;34mexit[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       
	    [01;34mend[m [01;34mloop[m Menu[31m;[m

	    [01;34mif[m [01;34mnot[m Done [01;34mthen[m
	       File_Index [31m:=[m [35m0[m[31m;[m
	       [01;30mPut[m[31m([mAnsi_TTY_Control[31m.[mClear_Screen[31m);[m
	       [01;34mif[m Os_Lib[31m.[m[01;30mIs_Regular_File[m[31m([mMenu_Filename[31m)[m [01;34mthen[m
		  W_Io[31m.[m[01;30mOpen[m[31m([mMenu_File[31m,[m W_Io[31m.[mIn_File[31m,[m Menu_Filename[31m,[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m
	       [01;34melse[m
		  [01;30mNew_Line[m[31m([m[35m2[m[31m);[m
		  [01;34mreturn[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
		  [01;34mbegin[m
		     Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
		     [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
		     Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
		     Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
		     [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
		     Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
		     Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
		     [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
		     Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
		  [01;34mexception[m
		     [01;34mwhen[m [01;34mothers[m [31m=>[m
			[01;30mPut_Line[m[31m([m[31m"Error during reading menu file."[m[31m);[m
			[01;30mNew_Line[m[31m([m[35m2[m[31m);[m
			[01;34mreturn[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mfor[m Item [01;34min[m Menu_24 ' [01;34mRange[m [01;34mloop[m
		  [01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
		     Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
		     [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
		     Os_Lib[31m.[m[01;30mFree[m[31m([m[01;30mMenu_24[m[31m([mItem[31m));[m
		     Name_Index [31m:=[m Fixed[31m.[m[01;30mIndex[m[31m([mInput_Line[31m.[m[01;34mall[m[31m,[m [32mCharacter[m'[01;30mVal[m[31m([m[35m27[m[31m)[m [31m&[m [31m""[m[31m,[m Top_Name[31m);[m
		     [01;30mMenu_24[m[31m([mItem[31m)[m [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[01;30mInput_Line[m[31m([mTop_Name[31m..[mName_Index[31m-[m[35m1[m[31m));[m
		     Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
		     File_Index [31m:=[m File_Index [31m+[m [35m1[m[31m;[m
		  [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mend[m [01;34mloop[m[31m;[m
	       [01;34mif[m [01;34mnot[m W_Io[31m.[m[01;30mEnd_Of_File[m[31m([mMenu_File[31m)[m [01;34mthen[m
		  [01;34mbegin[m
		     Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
		     [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
		     Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
		     Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
		     [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
		     Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
		     Input_Line [31m:=[m [01;34mnew[m [32mString[m ' [31m([mhandling[31m.[m[01;30mTo_String[m[31m([mW_Io[31m.[m[01;30mGet_Line[m[31m([mMenu_File[31m)));[m
		     [01;30mPut_Line[m[31m([mInput_Line[31m.[m[01;34mall[m[31m);[m
		     Os_Lib[31m.[m[01;30mFree[m[31m([mInput_Line[31m);[m
		  [01;34mexception[m
		     [01;34mwhen[m [01;34mothers[m [31m=>[m
			[01;30mPut_Line[m[31m([m[31m"Error during reading menu file."[m[31m);[m
			[01;30mNew_Line[m[31m([m[35m2[m[31m);[m
			[01;34mreturn[m[31m;[m
		  [01;34mend[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       W_Io[31m.[m[01;30mClose[m[31m([mMenu_File[31m);[m
	    [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mexit[m[31m;[m
	 [01;34mexception[m
	    [01;34mwhen[m [01;34mothers[m [31m=>[m
	       [01;34mnull[m[31m;[m
	 [01;34mend[m[31m;[m
      [01;34mend[m [01;34mloop[m Main[31m;[m

      [01;34mif[m Args_Index [31m/=[m [35m0[m [01;34mthen[m

	 Args [31m:=[m 
	   [01;30mArgument_String_To_List[m[31m([m[01;30mProgram_Name[m[31m([mArgs_Index [31m+[m [35m1[m [31m..[m Fixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m,[m Backward[31m)));[m
	 [01;30mNew_Line[m[31m([m[35m2[m[31m);[m
	 [01;30mSpawn[m[31m([m[01;30mLocate_Exec_On_Path[m[31m([mHandling[31m.[m[01;30mTo_Lower[m[31m([m[01;30mProgram_Name[m[31m([mFixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m)..[mArgs_Index[31m-[m[35m1[m[31m))).[m[01;34mall[m[31m,[m Args[31m.[m[01;34mall[m[31m,[m Success[31m);[m
	 [01;30mFree[m[31m([mProgram_Name[31m);[m
	 [01;34mif[m Success [01;34mthen[m
	    Target [31m:=[m [31m([m[01;34mothers[m [31m=>[m Wide_Character ' [01;30mVal[m [31m([m[35m32[m[31m));[m
	    Last [31m:=[m [35m0[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34melsif[m Fixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m)[m [31m/=[m [35m0[m [01;34mthen[m

	 Args [31m:=[m [01;34mnew[m [01;30mArgument_List[m[31m([m[35m1[m[31m..[m[35m0[m[31m);[m       
	 [01;30mNew_Line[m[31m([m[35m2[m[31m);[m
	 [01;30mSpawn[m[31m([m[01;30mLocate_Exec_On_Path[m[31m([mHandling[31m.[m[01;30mTo_Lower[m[31m([m[01;30mProgram_Name[m[31m([mFixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m)..[mFixed[31m.[m[01;30mIndex_Non_Blank[m[31m([mProgram_Name[31m.[m[01;34mall[m[31m,[m Backward[31m)))).[m[01;34mall[m[31m,[m Args[31m.[m[01;34mall[m[31m,[m Success[31m);[m
	 [01;30mFree[m[31m([mProgram_Name[31m);[m
	 [01;34mif[m Success [01;34mthen[m
	    Target [31m:=[m [31m([m[01;34mothers[m [31m=>[m Wide_Character ' [01;30mVal[m [31m([m[35m32[m[31m));[m
	    Last [31m:=[m [35m0[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34melse[m
	 Target [31m:=[m [31m([m[01;34mothers[m [31m=>[m Wide_Character ' [01;30mVal[m [31m([m[35m32[m[31m));[m
	 [01;30mFree[m[31m([mProgram_Name[31m);[m
	 Last [31m:=[m [35m0[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m [01;34mloop[m[31m;[m

[01;34mend[m Tmenu [31m;[m 
