DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦7d11e4e07⟧ TextFile

    Length: 54918 (0xd686)
    Types: TextFile
    Names: »B«

Derivation

└─⟦bdeee703f⟧ Bits:30000538 8mm tape, Rational 1000, RWI 10_1_1
    └─ ⟦545705153⟧ »DATA« 
        └─⟦f9289093d⟧ 
└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS 
    └─ ⟦91c658230⟧ »DATA« 
        └─⟦f9289093d⟧ 
            └─⟦this⟧ 

TextFile

with Access_List;
with Ada;
with Cmvc;
with Command;
with Common;
with Compilation;
--/ if DOCUMENT_FORMATTER then
--// with COMPOSE;
--/ end if;
with Debug;
--/ if DESIGN_FACILITY then
--// with DESIGN_IMPLEMENTATION;
--/ end if;
with Editor;
with Io;
with Job;
with Library;
--/ if MAIL then
--// with MAIL;
--/ end if;
with Operator;
with Queue;
with Script;
--/ if SPELLER then
--// with SPELLER;
--/ end if;
with System_Utilities;
with Text;
with What;


with Pcbasic_Key_Names;
procedure Pcbasic_Commands is

    use Pcbasic_Key_Names;

    type Intent is (Interrupt, Prompt, Execute);

    Action : Intent;

    Key1, Key2, Key3, Key4, Key5, Key6 : Key_Names;

begin

    case Action is


        when Interrupt =>

            case Key1 is

                when C_G =>
                    Job.Interrupt;

                when M_G =>
                    Job.Kill (0);

                when others =>
                    Editor.Noop;

            end case;



        when Prompt =>

            case Key1 is

                when Cms_F2 =>
                    What.Does;

                    --   when M_F3 =>
                    --      Design.Preview (Document => "<DEFAULT>",
                    --                        In_View => "<CURSOR>",
                    --                    Options => "Build_Db=>True",
                    --                  In_Place => False,
                    --                Response => "<PROFILE>");

                when M_F4 =>
                    Library.Create_Directory
                       (Name => ">>DIRECTORY NAME<<",
                        Response => "USE_ERROR <PROFILE>");

                when Cs_F4 =>
                    Library.Create_World (Name => ">>WORLD NAME<<",
                                          Model => "",
                                          Response => "USE_ERROR <PROFILE>");

                when C_F4 =>
                    Text.Create (Image_Name => ">>IMAGE_NAME<<");


                when S_F7 =>

                    Cmvc.Check_In (What_Object => "<CURSOR>",
                                   Comments => "",
                                   Work_Order => "<DEFAULT>",
                                   Response => "<PROFILE>");

                when F9 =>

                    case Key2 is

                        when 'l' | 'L' =>
                            Common.Revert;

                        when others =>
                            Editor.Noop;

                    end case;


                when F10 =>

                    case Key2 is

                        when 'R' | 'r' =>
                            Editor.Image.Find ("");

                        when '0' | ')' =>
                            Editor.Window.Frames (Maximum => 3);

                        when others =>
                            Editor.Noop;

                    end case;

                when C_F12 =>
                    Debug.Activate (Breakpoint => 1);


                when others =>
                    Editor.Noop;

            end case;




        when Execute =>

            case Key1 is

                when S_Enter =>
                    Editor.Line.Insert (1);

                when Set_Line =>
                    Editor.Screen.Set_Lines (40);
                when Set_Column =>
                    Editor.Screen.Set_Columns (80);

                when Mouse_Cursor_Down =>
                    Editor.Cursor.Down;
                when Mouse_Cursor_Right =>
                    Editor.Cursor.Right;
                when Mouse_Screen_Down =>
                    Editor.Screen.Down;
                when Mouse_Screen_Right =>
                    Editor.Screen.Right;

                when Mouse_Button1 | S_Mouse_Button1 | Mouse_Button3 |
                     S_Mouse_Button3 | Mouse_Button1_Up | Mouse_Button3_Up |
                     Cs_Mouse_Button1_Dbl | Cs_Mouse_Button3_Dbl |
                     C_Mouse_Button1_Dbl | C_Mouse_Button3_Dbl |
                     Mouse_Button1_Move | C_Mouse_Button1_Move =>
                    Editor.Noop;
                when Cs_Mouse_Button1 =>
                    Editor.Region.Start;
                when C_Mouse_Button1 =>
                    Common.Object.Parent;
                when Cs_Mouse_Button3 | S_Mouse_Button1_Move |
                     Cs_Mouse_Button1_Move =>
                    Editor.Region.Finish;
                when C_Mouse_Button3 =>
                    Common.Object.Child;
                when Mouse_Button1_Dbl =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => False, Visible => True);
                when Mouse_Button3_Dbl =>
                    Common.Enclosing (In_Place => False, Library => False);
                when S_Mouse_Button1_Dbl =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => True, Visible => True);
                when S_Mouse_Button3_Dbl =>
                    Common.Enclosing (In_Place => True, Library => False);


                when Mouse_Minus =>
                    Editor.Set.Argument_Minus;
                when Mouse_0 =>
                    Editor.Set.Argument_Digit (Argument => 0);
                when Mouse_1 =>
                    Editor.Set.Argument_Digit (Argument => 1);
                when Mouse_2 =>
                    Editor.Set.Argument_Digit (Argument => 2);
                when Mouse_3 =>
                    Editor.Set.Argument_Digit (Argument => 3);
                when Mouse_4 =>
                    Editor.Set.Argument_Digit (Argument => 4);
                when Mouse_5 =>
                    Editor.Set.Argument_Digit (Argument => 5);
                when Mouse_6 =>
                    Editor.Set.Argument_Digit (Argument => 6);
                when Mouse_7 =>
                    Editor.Set.Argument_Digit (Argument => 7);
                when Mouse_8 =>
                    Editor.Set.Argument_Digit (Argument => 8);
                when Mouse_9 =>
                    Editor.Set.Argument_Digit (Argument => 9);



                    --[Definition]

                when F1 =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => False, Visible => True);

                when S_F1 =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => True, Visible => True);

                when C_F1 =>
                    What.Home_Library;

--/ if DESIGN_FACILITY then
--//                when M_F1 =>
--//                    Design_Implementation.Definition
--//                       (In_Place => False, Visible => True);
--/ end if;

                when Cs_F1 =>
                    Ada.Other_Part (Name => "<IMAGE>", In_Place => False);

                when Ms_F1 =>
                    Ada.Other_Part (Name => "<IMAGE>", In_Place => True);

                when Cm_F1 =>
                    Editor.Window.Directory;

                when Cms_F1 =>
                    What.Does;



                    --[Enclosing]

                when F2 =>
                    Common.Enclosing (In_Place => False, Library => False);

                when S_F2 =>
                    Common.Enclosing (In_Place => True, Library => False);

                when C_F2 =>
                    Common.Enclosing (In_Place => False, Library => True);

--/ if DESIGN_FACILITY then
--//                when M_F2 =>
--//                    Design_Implementation.Enclosing (In_Place => False);
--/ end if;

                when Cs_F2 =>
                    Editor.Noop;

                when Ms_F2 =>
                    Editor.Noop;

                when Cm_F2 =>
                    Editor.Noop;

                    -- CMS_F2 is Prompt_For What.Does


                    --[Edit]

                when F3 =>
                    Common.Edit;

                when S_F3 =>
                    Common.Demote;

                when C_F3 =>
                    Compilation.Demote (Unit => "<SELECTION>",
                                        Goal => Compilation.Source,
                                        Limit => "<WORLDS>",
                                        Effort_Only => False,
                                        Response => "<PROFILE>");

                    -- M_F3 is Prompt_For Design.Preview

                when Cs_F3 =>
                    Compilation.Demote (Unit => "<SELECTION>",
                                        Goal => Compilation.Source,
                                        Limit => "<ALL_WORLDS>",
                                        Effort_Only => False,
                                        Response => "<PROFILE>");

                when Ms_F3 =>
                    Compilation.Demote (Unit => "<SELECTION>",
                                        Goal => Compilation.Installed,
                                        Limit => "<WORLDS>",
                                        Effort_Only => False,
                                        Response => "<PROFILE>");

                when Cm_F3 =>
                    Editor.Window.Demote;

                when Cms_F3 =>
                    Compilation.Demote (Unit => "<SELECTION>",
                                        Goal => Compilation.Installed,
                                        Limit => "<ALL_WORLDS>",
                                        Effort_Only => False,
                                        Response => "<PROFILE>");



                    --[Create]

                when F4 =>
                    Common.Create_Command;

                when S_F4 =>
                    Ada.Create_Body (Name => "<IMAGE>");

                    --  C_F4 is prompt_for Text.Create

                    --  M_F4 is prompt_for Lib.Create_Directory

                    -- CS_F4 is prompt_for Lib.Create_World

                when Ms_F4 =>
                    Ada.Create_Private;

                when Cm_F4 =>
                    Editor.Noop;

                when Cms_F4 =>
                    Editor.Quit;



                    --[Promote]

                when F5 =>
                    Common.Promote;

                when S_F5 =>
                    Ada.Code_Unit;

                when C_F5 =>
                    Compilation.Promote (Unit => "<IMAGE>",
                                         Scope => Compilation.Subunits_Too,
                                         Goal => Compilation.Coded,
                                         Limit => "<WORLDS>",
                                         Effort_Only => False,
                                         Response => "<PROFILE>");

                when M_F5 =>
                    Command.Debug;

                when Cs_F5 =>
                    Compilation.Promote (Unit => "<IMAGE>",
                                         Scope => Compilation.Subunits_Too,
                                         Goal => Compilation.Coded,
                                         Limit => "<ALL_WORLDS>",
                                         Effort_Only => False,
                                         Response => "<PROFILE>");

                when Ms_F5 =>
                    Compilation.Promote (Unit => "<IMAGE>",
                                         Scope => Compilation.Subunits_Too,
                                         Goal => Compilation.Installed,
                                         Limit => "<WORLDS>",
                                         Effort_Only => False,
                                         Response => "<PROFILE>");

                when Cm_F5 =>
                    Editor.Window.Promote;

                when Cms_F5 =>
                    Compilation.Promote (Unit => "<IMAGE>",
                                         Scope => Compilation.Subunits_Too,
                                         Goal => Compilation.Installed,
                                         Limit => "<ALL_WORLDS>",
                                         Effort_Only => False,
                                         Response => "<PROFILE>");



                    --[Complete]

                when F6 =>
                    Common.Complete;

                when S_F6 =>
                    Cmvc.Check_Out;

                when C_F6 =>
                    Editor.Noop;

--/ if DESIGN_FACILITY then
--//                when M_F6 =>
--//                    Design_Implementation.Complete;
--/ end if;

                when Cs_F6 =>
                    Cmvc.Make_Controlled;

                when Ms_F6 =>
                    Editor.Noop;

                when Cm_F6 =>
                    Editor.Noop;

                when Cms_F6 =>
                    Editor.Noop;




                    --[Format]

                when F7 =>
                    Common.Format;

                    -- S_F7 is Prompt_For Cmvc.Check_In

                when C_F7 =>
                    Editor.Noop;

--/ if DESIGN_FACILITY then
--//                when M_F7 =>
--//                    Design_Implementation.Format;
--/ end if;

                when Cs_F7 =>
                    Cmvc.Edit;

                when Ms_F7 =>
                    Editor.Noop;

                when Cm_F7 =>
                    Editor.Window.Focus;

                when Cms_F7 =>
                    Editor.Noop;




                    --[Semanticize]

                when F8 =>
                    Common.Semanticize;

                when S_F8 =>
                    Common.Explain;

                when C_F8 =>
                    Editor.Noop;

--/ if DESIGN_FACILITY then
--//                when M_F8 =>
--//                    Design_Implementation.Explain;
--/ end if;


                when Cs_F8 =>
                    Ada.Show_Usage (Name => "<CURSOR>",
                                    Global => True,
                                    Limit => "<WORLDS>",
                                    Closure => False);

                when Ms_F8 =>
                    Ada.Show_Usage (Name => "<CURSOR>",
                                    Global => False,
                                    Limit => "<WORLDS>",
                                    Closure => False);

                when Cm_F8 =>
                    Editor.Noop;

                when Cms_F8 =>
                    Editor.Noop;



                when F9 =>

                    --[OBJECT]

                    case Key2 is

                        when '/' | '?' =>
                            Common.Explain;

                        when 'I' | 'i' =>
                            Common.Object.Insert;

                        when 'S' | 's' =>
                            Common.Commit;
                        when 'X' | 'x' =>
                            Common.Release;


                        when Left =>
                            Common.Object.Parent;
                        when Right =>
                            Common.Object.Child;

                        when Down =>
                            Common.Object.Next;
                        when Up =>
                            Common.Object.Previous;

                        when 'C' | 'c' =>
                            Common.Object.Copy;
                        when 'M' | 'm' =>
                            Common.Object.Move;

                        when '!' | '1' =>
                            Common.Expand;
                        when '.' | '>' =>
                            Common.Elide;
                        when 'U' | 'u' =>
                            Common.Undo;
                        when 'R' | 'r' =>
                            Common.Redo;

                        when 'G' | 'g' =>
                            Common.Abandon;
                        when 'D' | 'd' =>
                            Common.Object.Delete;


                        when Home =>
                            Common.Object.First_Child;
                        when End_Key =>
                            Common.Object.Last_Child;

                        when others =>
                            Editor.Noop;

                    end case;

                    --[End OBJECT]


                when S_F9 =>

                    --[Image]

                    case Key2 is

                        when Home | 'B' | 'b' =>
                            Editor.Image.Beginning_Of;
                        when End_Key | 'E' | 'e' =>
                            Editor.Image.End_Of;

                        when 'F' | 'f' =>
                            Editor.Set.Fill_Mode (True);
                        when 'X' | 'x' =>
                            Editor.Set.Fill_Mode (False);

                        when 'I' | 'i' =>
                            Editor.Set.Insert_Mode (True);
                        when 'O' | 'o' =>
                            Editor.Set.Insert_Mode (False);

                        when Up =>
                            Editor.Image.Up;
                        when Down =>
                            Editor.Image.Down;

                        when Left =>
                            Editor.Image.Left;
                        when Right =>
                            Editor.Image.Right;

                        when others =>
                            Editor.Noop;

                    end case;

                    --[End Image]


                when C_F9 =>
                    Debug.Source;

                when M_F9 =>
                    Debug.Put;

                when Cs_F9 =>
                    Editor.Noop;

                when Ms_F9 =>
                    Editor.Noop;

                when Cm_F9 =>
                    Editor.Noop;

                when Cms_F9 =>
                    Editor.Noop;




                when F10 =>

                    --[WINDOW]

                    case Key2 is

                        when F1 =>
                            Editor.Window.Directory;
                        when 'J' | 'j' =>
                            Editor.Window.Join (1);
                        when Backspace =>
                            Editor.Window.Join (-1);

                        when Home =>
                            Editor.Window.Beginning_Of;
                        when End_Key =>
                            Editor.Window.End_Of;

                        when 'C' | 'c' =>
                            Editor.Window.Copy;
                        when 'T' | 't' =>
                            Editor.Window.Transpose;
                        when F7 =>
                            Editor.Window.Focus;

                        when F5 =>
                            Editor.Window.Promote;
                        when F3 | S_F3 =>
                            Editor.Window.Demote;

                        when '!' | '1' =>
                            Editor.Window.Expand;
                        when '.' | '>' =>
                            Editor.Window.Expand (-4);

                        when 'D' | 'd' =>
                            Editor.Window.Delete;


                        when '2' | '@' =>
                            Editor.Window.Frames (2);
                        when '3' | '#' =>
                            Editor.Window.Frames (3);
                        when '4' | '$' =>
                            Editor.Window.Frames (4);
                        when '5' | '%' =>
                            Editor.Window.Frames (5);
                        when '6' | '^' =>
                            Editor.Window.Frames (6);
                        when '7' | '&' =>
                            Editor.Window.Frames (7);


                        when Up | 'U' | 'u' | 'P' | 'p' =>
                            Editor.Window.Previous;
                        when Down | 'N' | 'n' =>
                            Editor.Window.Next;

                        when Left =>
                            Editor.Window.Parent;
                        when Right =>
                            Editor.Window.Child;

                        when others =>
                            Editor.Noop;

                    end case;

                    --[End WINDOW]


                when S_F10 =>

                    --[Word]

                    case Key2 is
                        when ',' | '<' =>
                            Editor.Word.Lower_Case;
                        when '.' | '>' =>
                            Editor.Word.Upper_Case;

                        when '6' | '^' =>
                            Editor.Word.Capitalize;

                        when Home | 'B' | 'b' =>
                            Editor.Word.Beginning_Of;

                        when 'D' | 'd' =>
                            Editor.Word.Delete;

                        when End_Key | 'E' | 'e' =>
                            Editor.Word.End_Of;

                        when 'K' | 'k' =>
                            Editor.Word.Delete_Forward;

                        when 'T' | 't' =>
                            Editor.Word.Transpose;

                        when Backspace =>
                            Editor.Word.Delete_Backward;

                        when Left =>
                            Editor.Word.Previous;

                        when Right =>
                            Editor.Word.Next;

                        when others =>
                            Editor.Noop;

                    end case;

                    --[End Word]


                when C_F10 =>
                    Debug.Execute;

                when M_F10 =>
                    Debug.Break;


                when Cs_F10 =>
                    Editor.Noop;

                when Ms_F10 =>
                    Editor.Noop;

                when Cm_F10 =>
                    Editor.Noop;

                when Cms_F10 =>
                    Editor.Noop;


                when F11 =>

                    --[REGION]

                    case Key2 is

                        when '6' | '^' =>
                            Editor.Region.Capitalize;
                        when ',' | '<' =>
                            Editor.Region.Lower_Case;
                        when '.' | '>' =>
                            Editor.Region.Upper_Case;

                        when '[' | '{' =>
                            Editor.Region.Start;
                        when ']' | '}' =>
                            Editor.Region.Finish;

                        when '+' | '=' =>
                            Editor.Region.Uncomment;
                        when '-' | '_' =>
                            Editor.Region.Comment;

                        when Home | 'B' | 'b' =>
                            Editor.Region.Beginning_Of;
                        when End_Key | 'E' | 'e' =>
                            Editor.Region.End_Of;

                        when 'C' | 'c' =>
                            Editor.Region.Copy;
                        when 'M' | 'm' =>
                            Editor.Region.Move;

                        when 'X' | 'x' =>
                            Editor.Region.Off;

                        when 'D' | 'K' | 'd' | 'k' =>
                            Editor.Region.Delete;

                        when F6 =>
                            Editor.Region.Justify;
                        when F7 | 'F' | 'f' =>
                            Editor.Region.Fill;

                        when 'R' | 'r' =>
                            Editor.Hold_Stack.Rotate;

                            Editor.Hold_Stack.Swap;
                        when Backspace =>
                            Editor.Hold_Stack.Delete_Top;

                        when Up =>
                            Editor.Hold_Stack.Top;
                        when Down =>
                            Editor.Hold_Stack.Push;
                        when Left | 'P' | 'p' =>
                            Editor.Hold_Stack.Previous;
                        when Right | 'N' | 'n' =>
                            Editor.Hold_Stack.Next;

                        when others =>
                            Editor.Noop;

                    end case;

                    --[End REGION]


                when S_F11 =>

                    --[Mark]

                    case Key2 is

                        when Backspace =>
                            Editor.Mark.Delete_Top;

                        when Up =>
                            Editor.Mark.Top;

                        when Down =>
                            Editor.Mark.Push;

                        when Left | 'P' | 'p' =>
                            Editor.Mark.Previous;

                        when Right | 'N' | 'n' =>
                            Editor.Mark.Next;

                        when others =>
                            Editor.Noop;

                    end case;

                    --[End Mark]


                when C_F11 =>
                    Debug.Run (Stop_At => Debug.Local_Statement,
                               Count => 1,
                               In_Task => "");

                when M_F11 =>
                    Debug.Run (Stop_At => Debug.Statement,
                               Count => 1,
                               In_Task => "");

                when Cs_F11 =>
                    Editor.Noop;

                when Ms_F11 =>
                    Editor.Noop;

                when Cm_F11 =>
                    Editor.Noop;

                when Cms_F11 =>
                    Editor.Noop;




                when F12 =>

                    --[LINE]

                    case Key2 is

                        when '$' | '4' =>
                            Editor.Line.Center;
                        when ',' | '<' =>
                            Editor.Line.Lower_Case;
                        when '.' | '>' =>
                            Editor.Line.Upper_Case;
                        when '6' | '^' =>
                            Editor.Line.Capitalize;

                        when '/' | '?' =>
                            What.Line;

                        when Home | 'B' | 'b' =>
                            Editor.Line.Beginning_Of;
                        when End_Key | 'E' | 'e' =>
                            Editor.Line.End_Of;

                        when 'C' | 'c' =>
                            Editor.Line.Copy;
                        when 'D' | 'd' =>
                            Editor.Line.Delete;
                        when 'I' | 'i' =>
                            Editor.Line.Insert (1);
                        when 'J' | 'j' =>
                            Editor.Line.Join;
                        when 'K' | 'k' =>
                            Editor.Line.Delete_Forward;

                        when 'O' | 'o' =>
                            Editor.Line.Open;
                        when 'T' | 't' =>
                            Editor.Line.Transpose;
                        when Backspace =>
                            Editor.Line.Delete_Backward;

                        when Up =>
                            Editor.Cursor.Up;
                        when Down =>
                            Editor.Cursor.Down;

                        when others =>
                            Editor.Noop;

                    end case;

                    --[End LINE]



                when S_F12 =>

                    --[Macro]

                    case Key2 is

                        when Home | 'b' | 'B' | '[' | '{' =>
                            Editor.Macro.Start;

                        when End_Key | 'e' | 'E' | ']' | '}' =>
                            Editor.Macro.Finish;

                        when F1 =>
                            Editor.Macro.Bind;

                        when F5 =>
                            Editor.Macro.Execute;

                        when others =>
                            Editor.Noop;

                    end case;

                    --[End Macro]


                    -- C_F12 is prompt_for Debug.Activate


                when M_F12 =>
                    Debug.Show (Values_For => Debug.Breakpoints);

                when Cs_F12 =>
                    Editor.Noop;

                when Ms_F12 =>
                    Editor.Noop;

                when Cm_F12 =>
                    Editor.Noop;

                when Cms_F12 =>
                    Editor.Noop;





                    --[Numeric_+ (key=107) on the PC]

                    -- when Window =>
                    --     Debug.Run (Stop_At => Debug.Statement,
                    --                Count => 1,
                    --                In_Task => "");
                    --
                    --     --
                    --     -- S_+ appears to send the same escape
                    --     -- sequence as an unmodified numeric +
                    --     -- so this arm cannot be reached
                    --     --
                    -- when S_Window =>
                    --     Io.Echo_Line ("Shift Window");
                    --
                    -- when C_Window =>
                    --     Debug.Run (Stop_At => Debug.Local_Statement,
                    --                Count => 1,
                    --                In_Task => "");
                    --
                    -- when M_Window =>
                    --     Io.Echo_Line ("Meta Window");
                    --
                    --
                    --
                    --
                    --
                    --
                    --     --[Virtual Keys used for menu picks]
                    --
                when Menu_Pick =>
                    case Key2 is
                        when '0' =>
                            Io.Echo ("User Menu-Pick 0" & Ascii.Lf);
                        when '1' =>
                            Io.Echo ("User Menu-Pick 1" & Ascii.Lf);
                        when '2' =>
                            Io.Echo ("User Menu-Pick 2" & Ascii.Lf);
                        when '3' =>
                            Io.Echo ("User Menu-Pick 3" & Ascii.Lf);
                        when '4' =>
                            Io.Echo ("User Menu-Pick 4" & Ascii.Lf);
                        when '5' =>
                            Io.Echo ("User Menu-Pick 5" & Ascii.Lf);
                        when '6' =>
                            Io.Echo ("User Menu-Pick 6" & Ascii.Lf);
                        when '7' =>
                            Io.Echo ("User Menu-Pick 7" & Ascii.Lf);
                        when '8' =>
                            Io.Echo ("User Menu-Pick 8" & Ascii.Lf);
                        when '9' =>
                            Io.Echo ("User Menu-Pick 9" & Ascii.Lf);
                        when others =>
                            null;
                    end case;

                    --
                    -- when F2 =>
                    --
                    --     --[Misc Commands]
                    --
                    --     case Key2 is
                    --
                    --         --[Help Commands]
                    --
                    --         when 'h' | 'H' =>
                    --
                    --             case Key3 is
                    --
                    --                 when 'g' | 'G' =>
                    --                     Common.Definition
                    --                        ("!Local.Help_System.Index");
                    --
                    --                 when 'k' | 'K' =>
                    --                     Editor.Key.Name;
                    --
                    --                 when 'a' | 'A' =>
                    --                     What.Does;
                    --
                    --                 when others =>
                    --                     Editor.Noop;
                    --
                    --             end case;
                    --
                    --
                    --
                    --         when 'k' | 'K' =>
                    --             Job.Kill (The_Job => 0, The_Session => "");
                    --
                    --
                    --         when 'i' | 'I' =>
                    --             Job.Interrupt;
                    --
                    --
                    --         when 'q' | 'Q' =>
                    --             Editor.Quit;
                    --
                    --
                    --
                    --         when 'd' | 'D' =>
                    --
                    --             -- Traversal
                    --
                    --             case Key3 is
                    --
                    --                 when 'e' | 'E' =>
                    --                     Common.Enclosing (In_Place => False,
                    --                                       Library => True);
                    --
                    --                 when 'h' | 'H' =>
                    --                     What.Home_Library;
                    --
                    --                 when 'o' | 'O' =>
                    --                     Ada.Other_Part (Name => "<IMAGE>",
                    --                                     In_Place => False);
                    --
                    --                 when 'p' | 'P' =>
                    --                     Ada.Other_Part (Name => "<IMAGE>",
                    --                                     In_Place => True);
                    --
                    --                 when others =>
                    --                     Editor.Noop;
                    --
                    --             end case;
                    --
                    --
                    --
                    --
                    --         when 'r' | 'R' =>
                    --             case Key3 is
                    --
                    --                 when 'f' | 'F' =>
                    --                     Editor.Search.Replace_Next;
                    --
                    --                 when 'b' | 'B' =>
                    --                     Editor.Search.Replace_Previous;
                    --
                    --                 when others =>
                    --                     Editor.Noop;
                    --
                    --             end case;
                    --
                    --
                    --         when 's' | 'S' =>
                    --             case Key3 is
                    --
                    --                 when 'f' | 'F' =>
                    --                     Editor.Search.Next;
                    --
                    --                 when 'b' | 'B' =>
                    --                     Editor.Search.Previous;
                    --
                    --                 when 'n' | 'N' =>
                    --                     Editor.Cursor.Next (Prompt => True,
                    --                                         Underline => True);
                    --
                    --                 when 'p' | 'P' =>
                    --                     Editor.Cursor.Previous
                    --                        (Prompt => True, Underline => True);
                    --
                    --                 when others =>
                    --                     Editor.Noop;
                    --             end case;
                    --
                    --
                    --
                    --         when others =>
                    --             Editor.Noop;
                    --
                    --     end case;
                    --
                    --
                    --
                    -- when S_F2 =>
                    --
                    --     --[Analysis Commands]
                    --
                    --     case Key2 is
                    --
                    --         when 's' | 'S' =>
                    --             Speller.Check_Image;
                    --
                    --         when 'u' | 'U' =>
                    --             Ada.Show_Usage (Name => "<CURSOR>",
                    --                             Global => True,
                    --                             Limit => "<ALL_WORLDS>",
                    --                             Closure => False);
                    --
                    --         when others =>
                    --             Editor.Noop;
                    --
                    --     end case;
                    --
                    --
                    --
                    -- when C_F2 =>
                    --
                    --     --[CMVC Commands]
                    --
                    --     case Key2 is
                    --
                    --         when 'c' | 'C' =>
                    --
                    --             case Key3 is
                    --
                    --                 when 'o' | 'O' =>
                    --                     Cmvc.Check_Out;
                    --
                    --                 when others =>
                    --                     Editor.Noop;
                    --
                    --             end case;
                    --
                    --         when 'e' | 'E' =>
                    --             Cmvc.Edit;
                    --
                    --         when 'm' | 'M' =>
                    --             Cmvc.Make_Controlled
                    --                (What_Object => "<CURSOR>",
                    --                 Reservation_Token_Name => "<AUTO_GENERATE>",
                    --                 Join_With_View => "<NONE>",
                    --                 Save_Source => True,
                    --                 Comments => "",
                    --                 Work_Order => "<DEFAULT>",
                    --                 Response => "<PROFILE>");
                    --
                    --         when others =>
                    --             Editor.Noop;
                    --
                    --     end case;
                    --
                    --
                    --     case Key2 is
                    --
                    --         when others =>
                    --             Editor.Noop;
                    --
                    --     end case;
                    --
                    --
                    --
                    -- when Cm_F2 =>
                    --
                    --     --[Mail Commands]
                    --
                    --     case Key2 is
                    --
                    --         when 'f' | 'F' =>
                    --             Mail.Forward;
                    --
                    --         when 'o' | 'O' =>
                    --             Mail.Edit;
                    --
                    --         when 'r' | 'R' =>
                    --             Mail.Reply (To_All => True);
                    --
                    --         when 's' | 'S' =>
                    --             Mail.Send;
                    --
                    --         when others =>
                    --             Editor.Noop;
                    --
                    --     end case;
                    --
                    --
                    --
                    -- when Cs_F2 =>
                    --
                    --     --[Debug Commands]
                    --
                    --     case Key2 is
                    --
                    --         when 'x' | 'X' =>
                    --             Debug.Execute;
                    --
                    --         when 'p' | 'P' =>
                    --             Debug.Put;
                    --
                    --         when 'b' | 'B' =>
                    --             Debug.Break;
                    --
                    --         when 's' | 'S' =>
                    --             Debug.Source;
                    --
                    --         when others =>
                    --             Editor.Noop;
                    --
                    --     end case;
                    --
                    --
                    --
                    --
                    --     --[Create Commands]
                    --
                    -- when Ms_F2 =>
                    --
                    --     case Key2 is
                    --
                    --         when 'p' | 'P' =>
                    --             Ada.Create_Private;
                    --
                    --         when others =>
                    --             Editor.Noop;
                    --
                    --     end case;
                    --
                    --
                    --
                    --
                    -- when Cms_F2 =>
                    --
                    --     --[Promotion/Demotion Commands]
                    --
                    --     case Key2 is
                    --
                    --         when 'c' | 'C' =>
                    --
                    --             case Key3 is
                    --
                    --                 when 'a' | 'A' =>
                    --                     Compilation.Promote
                    --                        (Unit => "<IMAGE>",
                    --                         Scope => Compilation.Subunits_Too,
                    --                         Goal => Compilation.Coded,
                    --                         Limit => "<ALL_WORLDS>",
                    --                         Effort_Only => False,
                    --                         Response => "<PROFILE>");
                    --
                    --                 when others =>
                    --                     Editor.Noop;
                    --
                    --             end case;
                    --
                    --
                    --         when 'i' | 'I' =>
                    --
                    --             case Key3 is
                    --
                    --                 when 'a' | 'A' =>
                    --                     Compilation.Promote
                    --                        (Unit => "<IMAGE>",
                    --                         Scope => Compilation.Subunits_Too,
                    --                         Goal => Compilation.Installed,
                    --                         Limit => "<ALL_WORLDS>",
                    --                         Effort_Only => False,
                    --                         Response => "<PROFILE>");
                    --
                    --                 when 'w' | 'W' =>
                    --                     Compilation.Promote
                    --                        (Unit => "<IMAGE>",
                    --                         Scope => Compilation.Subunits_Too,
                    --                         Goal => Compilation.Installed,
                    --                         Limit => "<WORLDS>",
                    --                         Effort_Only => False,
                    --                         Response => "<PROFILE>");
                    --
                    --                 when 'u' | 'U' =>
                    --                     Ada.Install_Unit;
                    --
                    --                 when others =>
                    --                     Editor.Noop;
                    --
                    --             end case;
                    --
                    --         when 's' | 'S' =>
                    --
                    --             case Key3 is
                    --
                    --                 when 'a' | 'A' =>
                    --                     Compilation.Demote
                    --                        (Unit => "<SELECTION>",
                    --                         Goal => Compilation.Source,
                    --                         Limit => "<ALL_WORLDS>",
                    --                         Effort_Only => False,
                    --                         Response => "<PROFILE>");
                    --
                    --                 when others =>
                    --                     Editor.Noop;
                    --
                    --             end case;
                    --
                    --
                    --
                    --         when others =>
                    --             Editor.Noop;
                    --
                    --     end case;
                    --
                    --
                    --     --[End Virtual Keys]
                    --




                    --[Ins (key=45) on the PC]




                when Insert =>
                    Editor.Key.Prompt;





                    --[General Cursor Movement]

                when Home =>
                    Editor.Line.Beginning_Of;
                when End_Key =>  
                    Editor.Line.End_Of;

                when Up =>  
                    Editor.Cursor.Up;
                when Down =>  
                    Editor.Cursor.Down;
                when Left =>  
                    Editor.Cursor.Left;
                when Right =>  
                    Editor.Cursor.Right;




                    --[General Editor Operations]
                when ' ' | S_Space =>
                    Editor.Char.Insert_Character (1, ' ');

                when Backspace =>
                    Editor.Char.Delete_Backward;

                when Enter =>
                    Editor.Line.Indent;

                when Delete =>
                    Editor.Char.Delete_Forward;





                    --[Search/Replace Operations]

                when C_S | C_F =>
                    Editor.Search.Next (Target => "", Wildcard => False);

                when C_R | C_B =>
                    Editor.Search.Previous (Target => "", Wildcard => False);

                when M_S | M_F =>
                    Editor.Search.Replace_Next (Target => "",
                                                Replacement => "",
                                                Repeat => 1,
                                                Wildcard => False);
                when M_R | M_B =>
                    Editor.Search.Replace_Previous (Target => "",
                                                    Replacement => "",
                                                    Repeat => 1,
                                                    Wildcard => False);

                    --[Image Operations]

                when Page_Up =>
                    Editor.Image.Up;

                when Page_Down =>
                    Editor.Image.Down;

                when S_Home | C_Home =>
                    Editor.Image.Beginning_Of;
                when S_End_Key | C_End_Key =>
                    Editor.Image.End_Of;

                when S_Up =>
                    Editor.Image.Up;
                when S_Down =>
                    Editor.Image.Down;





                    --[Accelerated Object Operations]

                when C_Up =>
                    Common.Object.Previous;
                when C_Down =>
                    Common.Object.Next;
                when C_Left =>
                    Common.Object.Parent;
                when C_Right =>
                    Common.Object.Child;
                when C_Slash =>
                    Common.Explain;


                    --[Accelerated Traversal Operations]

                when S_Left =>
                    Common.Enclosing (In_Place => True, Library => False);
                when S_Right =>
                    Common.Definition
                       (Name => "<CURSOR>", In_Place => True, Visible => False);

                when Cm_Left =>
                    Common.Enclosing (In_Place => False, Library => False);
                when Cm_Right =>
                    Common.Definition (Name => "<CURSOR>",
                                       In_Place => False,
                                       Visible => False);





                    --[Accelerated Window Operations]

                when M_V | Cm_Down =>
                    Editor.Window.Next;
                when M_Z | Cm_Up =>
                    Editor.Window.Previous;

                when Cm_Home =>
                    Editor.Window.Beginning_Of;
                when Cm_End_Key =>
                    Editor.Window.End_Of;

                when Cm_J =>
                    Editor.Window.Join;  
                when Cm_Backspace =>
                    Editor.Window.Join (-1);


                when Cm_1 =>
                    Editor.Window.Expand (4);

                when Cm_Period =>
                    Editor.Window.Expand (-4);

                when Cm_D =>
                    Editor.Window.Delete;



                    --[Accelerated Word Operations]

                when M_Home =>
                    Editor.Word.Beginning_Of;
                when M_End_Key =>
                    Editor.Word.End_Of;

                when M_Left =>
                    Editor.Word.Previous;
                when M_Right =>
                    Editor.Word.Next;

                when M_Comma | M_Less_Than =>
                    Editor.Word.Lower_Case;
                when M_Period | M_Greater_Than =>
                    Editor.Word.Upper_Case;
                when M_6 | M_Circumflex =>
                    Editor.Word.Capitalize;
                when M_C | M_Y =>
                    Editor.Hold_Stack.Next;
                when M_D =>
                    Editor.Word.Delete;
                when M_E =>
                    Editor.Word.End_Of;
                when M_K =>
                    Editor.Word.Delete_Forward;
                when M_L =>
                    Editor.Screen.Clear;
                when M_O =>
                    Editor.Line.Join;
                when M_Q =>
                    Editor.Key.Prompt (Key_Code => "");
                when M_T =>
                    Editor.Word.Transpose;
                when M_Backspace =>
                    Editor.Word.Delete_Backward;





                    --[Accelerated Macro Operations]

                when M_X =>
                    Editor.Macro.Execute;
                when M_Left_Bracket =>
                    Editor.Macro.Start;
                when M_Right_Bracket =>
                    Editor.Macro.Finish;



                    --[Accelerated Mark Operations]

                when C_M =>
                    Editor.Mark.Push;

                when M_M =>
                    Editor.Mark.Next;





                    --[Accelerated Item Operations]

                when M_Down | M_N =>
                    Editor.Cursor.Next (Prompt => True, Underline => True);

                when M_Up | M_U | M_P =>
                    Editor.Cursor.Previous (Prompt => True, Underline => True);




                    --[Accelerated RDF Commands]

                when M_Minus =>
                    Editor.Char.Insert_String ("--| ");

                when M_2 =>
                    case Key2 is
                        when 'r' | 'R' =>
                            Editor.Char.Insert_String ("--| @REQUIREMENT");
                        when 's' | 'S' =>
                            Editor.Char.Insert_String ("--| @SATISFIES ");
                        when others =>
                            Editor.Noop;
                    end case;




                    --[Numeric keypad]

                when Numeric_0 | C_0 =>
                    Editor.Set.Argument_Digit (0);
                when Numeric_1 | C_1 =>
                    Editor.Set.Argument_Digit (1);
                when Numeric_2 | C_2 =>
                    Editor.Set.Argument_Digit (2);
                when Numeric_3 | C_3 =>
                    Editor.Set.Argument_Digit (3);
                when Numeric_4 | C_4 =>
                    Editor.Set.Argument_Digit (4);
                when Numeric_5 | C_5 =>
                    Editor.Set.Argument_Digit (5);
                when Numeric_6 | C_6 =>
                    Editor.Set.Argument_Digit (6);
                when Numeric_7 | C_7 =>
                    Editor.Set.Argument_Digit (7);
                when Numeric_8 | C_8 =>
                    Editor.Set.Argument_Digit (8);
                when Numeric_9 | C_9 =>
                    Editor.Set.Argument_Digit (9);

                when Numeric_Minus | C_Minus =>
                    Editor.Set.Argument_Minus;

                when C_Equal | C_Plus =>
                    Editor.Char.Insert_String ("=>");
                when C_Semicolon | C_Colon =>
                    Editor.Char.Insert_String (":=");

                when C_Comma | C_Less_Than =>
                    Editor.Char.Lower_Case;
                when C_Period | C_Greater_Than =>
                    Editor.Char.Upper_Case;

                when C_Tick =>
                    Editor.Char.Quote;

                when C_A =>
                    Editor.Line.Beginning_Of;
                when C_C =>
                    Editor.Hold_Stack.Push;
                when C_D =>
                    Editor.Char.Delete_Forward;
                when C_H =>
                    Editor.Cursor.Left;
                when C_I =>
                    Editor.Line.Insert (-1);
                when C_J =>
                    Editor.Cursor.Right;
                when C_K =>
                    Editor.Line.Delete_Forward;
                when C_L =>
                    Editor.Screen.Redraw;
                when C_N =>
                    Editor.Cursor.Down;
                when C_O =>
                    Editor.Line.Open;
                when C_Q =>
                    Editor.Key.Name;
                when C_T =>
                    Editor.Char.Transpose;
                when C_U =>
                    Editor.Cursor.Up;
                when C_V =>
                    Editor.Image.Down;
                when C_W =>
                    Editor.Region.Delete;
                when C_X =>
                    Editor.Set.Designation_Off;
                when C_Y =>
                    Editor.Hold_Stack.Top;
                when C_Z =>
                    Editor.Image.Up;
                when C_Left_Bracket | C_Left_Brace =>
                    Editor.Region.Start;
                when C_Right_Bracket | C_Right_Brace =>
                    Editor.Region.Finish;

                when C_Backspace =>
                    Editor.Char.Delete_Spaces;

                when Tab =>
                    Editor.Char.Tab_Forward;
                when C_Tab =>
                    Editor.Char.Tab_Backward;


                when others =>
                    Editor.Noop;

            end case;

    end case;

end Pcbasic_Commands;