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 - metrics - download
Index: B T

⟦a9427db4f⟧ TextFile

    Length: 22998 (0x59d6)
    Types: TextFile
    Names: »B«

Derivation

└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
    └─⟦5cb1d1d7f⟧ »DATA« 
        └─⟦3b1ee7bd8⟧ 
            └─⟦this⟧ 

TextFile

WITH Access_List;
WITH Ada;
WITH Cmvc;
WITH Command;
WITH Common;
WITH Compilation;
WITH Debug;
WITH Editor;
WITH Facit_Key_Names;
WITH Job;
WITH Library;
WITH Queue;
WITH Text;
WITH What;

PROCEDURE Facit_Commands IS

   USE Facit_Key_Names;

   TYPE Intent IS (Prompt, Execute, Interrupt);

   Action : Intent;

   Key_1 : Key_Names;
   Key_2 : Key_Names;
   Key_3 : Key_Names;

BEGIN

   -- OBJECTIVE:
   --
   -- PROVIDE A KEYMAP WHICH MAKES THE TRANSITION FROM A RATIONAL TO A FACIT
   -- TERMINAL AS EASY AS POSSIBLE FOR CURRENT RATIONAL TERMINAL USERS.
   --
   -- METHOD:
   --
   -- PROVIDE A SET OF KEY BINDINGS WHEREIN THE GENERAL MODEL IS TO USE [ESC]
   -- AS A WHEREVER [META] IS USED AS A MODIFIER ON THE RATIONAL TERMINAL.
   -- UNFORTUNATELY, THE [ESC] KEY IS A SEPARATE KEYSTROKE.
   --
   -- SUPPORT A KEYMAP WHICH CLOSELY RESEMBLES THE RATIONAL KEYMAP -- INCLUDING
   -- THE HORIZONTAL AND VERTICAL PLACEMENT OF ENTRIES -- GIVEN THE LIMITATIONS
   -- WITH RESPECT TO THE NUMBER OF ENTRIES POSSIBLE, THE FUNCTIONING OF THE
   -- [CTRL] AND [SHIFT] KEY MODIFIERS, AND THE [ESC]/[META] KEY EQUIVALENCE.
   --
   -- SUPPORT A CURSOR/ITEM KEY-BASED TRAVERSAL MODEL WHICH PROVIDES A COMMON
   -- SET OF BROWSING OPERATIONS AND DOES NOT REQUIRE THE HANDS TO BE
   -- REPOSITIONED WHILE PERFORMING THIS SET OF OPERATIONS.

   CASE Action IS

      -- OVERRIDE/ADD BINDINGS TO BE PROCESSED AS INTERRUPTS
      --
      WHEN Interrupt =>
         CASE Key_1 IS

            WHEN F11 =>  
               Job.Disable (The_Job => 0, The_Session => "");

            WHEN OTHERS =>
               NULL;
         END CASE;

         -- OVERRIDE/ADD BINDINGS WHICH ARE TO BE PROMPTED FOR
         --
      WHEN Prompt =>
         CASE Key_1 IS

            WHEN Esc_C_F8 =>  
               Text.Create (Image_Name => ">>IMAGE_NAME<<", Kind => Text.File);
            WHEN C_F8 =>  
               Library.Create_World (Name => ">>WORLD NAME<<",
                                     Kind => Library.World,
                                     Vol => Library.Nil,
                                     Model => "!Model.R1000",
                                     Response => "<PROFILE>");


            WHEN Esc_F9 =>  
               Ada.Show_Unused (In_Unit => "<IMAGE>",
                                Check_Other_Units => False);
            WHEN C_F9 =>  
               Ada.Show_Usage (Name => "<CURSOR>",
                               Global => False,
                               Limit => "<WORLDS>",
                               Closure => False);

            WHEN Esc_F10 =>  
               Cmvc.Check_In (What_Object => "<CURSOR>",
                              Comments => "",
                              Work_Order => "<DEFAULT>",
                              Response => "<PROFILE>");
            WHEN C_F10 =>  
               Cmvc.Check_Out (What_Object => "<CURSOR>",
                               Comments => "",
                               Allow_Demotion => False,
                               Allow_Implicit_Accept_Changes => True,
                               Expected_Check_In_Time => "<TOMORROW>",
                               Work_Order => "<DEFAULT>",
                               Response => "<PROFILE>");

            WHEN Pf1 =>
               CASE Key_2 IS
                  WHEN '=' | '+' | '/' | '?' =>
                     Editor.Image.Find (Name => ">>NAME OR NAME FRAGMENT<<");
                  WHEN OTHERS =>
                     NULL;
               END CASE;

            WHEN OTHERS =>
               NULL;
         END CASE;

         -- OVERRIDE/ADD BINDINGS TO BE EXECUTED WITHOUT PROMPTING
         --
      WHEN Execute =>

         -- NON-ITEM, NON-FUNCTION KEYS
         --
         CASE Key_1 IS

            -- SUPPORT A BEGIN_OF/END_OF MODEL USING TAB/BACK_TAB KEYS
            -- (SIMILAR TO THAT USED WITH THE RATIONAL TERMINAL)
            --
            WHEN Tab =>                       -- [TAB] := [END OF]
               Editor.Line.End_Of (Offset => 0);
            WHEN Esc_Tab =>                   -- [ESC]-[TAB] := [TAB]
               Editor.Char.Tab_Forward (Repeat => 1);

            WHEN Back_Tab =>                  -- [BACK_TAB] := [BEGIN OF]
               Editor.Line.Beginning_Of (Offset => 0);
            WHEN Esc_Back_Tab =>              -- [ESC]-[BACK_TAB] := [BACK_TAB]
               Editor.Char.Tab_Backward (Repeat => 1);

               -- SUPPORT COMMON BROWSING OPERATIONS WITHOUT REPOSTIONING HANDS
               --
               -- OPERATIONS INCLUDE:
               --    - A CURSOR KEY TRAVERSAL MODEL USING ESC_<ARROW> KEYS
               --      (SIMILAR TO USING C_M_<ARROW> ON THE RATIONAL TERMINAL)
               --    - IMAGE UP/DOWN USING S_<ARROW> KEYS
               --    - WORD LEFT/RIGHT USING [ESC]-[OBJECT] AND [ESC]-[WINDOW]
               --
               -- NOTE: THE SHIFT KEY DOES NOT MODIFY THE LEFT AND RIGHT ARROWS
               --
            WHEN Esc_Up =>
               Editor.Window.Previous (Repeat => 1);
            WHEN Esc_Down =>
               Editor.Window.Next (Repeat => 1);
            WHEN Esc_Left =>
               Common.Enclosing (In_Place => False, Library => False);
            WHEN Esc_Right =>
               Common.Definition
                  (Name => "<CURSOR>", In_Place => False, Visible => True);

               -- IMAGE UP/DOWN
               --
            WHEN S_Up =>
               Editor.Image.Up (Repeat => 0);
            WHEN S_Down =>
               Editor.Image.Down (Repeat => 0);

               -- WORD LEFT/RIGHT
               --
            WHEN Esc_X3 =>
               Editor.Word.Next (Repeat => 1);
            WHEN Esc_X1 =>
               Editor.Word.Previous (Repeat => 1);

               -- SUPPORT ADA CHARACTERS
               --
               -- NOTE: [CTRL] ONLY MODIFIES ALPHABETIC, '\', & FUNCTION KEYS
               --
            WHEN Esc_Equal =>
               Editor.Char.Insert_String (Value => " => ");
            WHEN Esc_Colon | Esc_Semicolon =>
               Editor.Char.Insert_String (Value => " := ");

               -- SUPPORT C_M_<ALPHABETIC> SEQUENCES WITH
               -- [ESC]-C_<ALPHABETIC> SEQUENCES FOR CONSISTENCY
               -- (GENERALLY, NOT REAL USEFUL!)
               --
            WHEN Esc_C_F =>
               Editor.Cursor.Right (8);
            WHEN Esc_C_G =>
               Editor.Cursor.Right (8);
            WHEN Esc_C_K =>
               Ada.Delete_Blank_Line;
            WHEN Esc_C_M =>
               NULL;             -- REGULAR ENTRY "DELETED"
            WHEN Esc_C_R =>
               Editor.Search.Replace_Previous (Repeat => -1);
            WHEN Esc_C_S =>
               Editor.Search.Replace_Next (Repeat => -1);

               -- MIMIC THE CONTROL KEY SEQUENCES USED WITH THE RATIONAL
               -- TERMINAL (AND LEAVE THE "EXTRAS" ADDED FOR THE FACIT)
               --
            WHEN C_B =>
               Editor.Cursor.Backward;
            WHEN C_F =>
               Editor.Cursor.Forward;
            WHEN C_Q =>
               Editor.Key.Name;

               -- IMPLEMENT ESCAPE KEY SEQUENCES FOR LASER PRINTS:
               --
               -- [ESC]-[P]-[1] := PRINT USING A 1-UP PAGE FORMAT
               -- [ESC]-[P]-[2] := PRINT USING A 2-UP PAGE FORMAT
               --
            WHEN Esc_P =>
               CASE Key_3 IS
                  WHEN '1' | '!' =>
                     Queue.Print
                        (Name => "<IMAGE>",
                         Options =>
                            "POSTSCRIPT => ( TWOUP => False, BORDER => False, FILENAME => False, DATE => False, PAGES => 1..1000 ), COPIES => 1, CLASS => Laser",
                         Banner => "",
                         Header => "",
                         Footer => "");
                  WHEN '2' | '@' =>
                     Queue.Print
                        (Name => "<IMAGE>",
                         Options =>
                            "POSTSCRIPT => ( TWOUP => True, BORDER => True, FILENAME => True, DATE => True, PAGES => 1..1000 ), COPIES => 1, CLASS => Laser",
                         Banner => "",
                         Header => "",
                         Footer => "");
                  WHEN OTHERS =>
                     NULL;
               END CASE;

               -- ITEM KEY SEQUENCES
               -- (MOSTLY ADDING EQUIVALENCE FOR [ESC]-[TAB] AS [TAB])
               --
            WHEN X1 =>
               CASE Key_2 IS
                  WHEN Esc_Tab =>
                     Editor.Char.Tab_To_Comment;
                  WHEN OTHERS =>
                     NULL;
               END CASE;

            WHEN X2 =>
               CASE Key_2 IS
                  WHEN Esc_Tab =>
                     Editor.Region.End_Of;
                  WHEN OTHERS =>
                     NULL;
               END CASE;

            WHEN X3 =>
               CASE Key_2 IS
                  WHEN Esc_Tab =>
                     Editor.Window.End_Of;

                     -- SUPPORT [WINDOW]-[<NUMBER>] => MAX. # OF FRAMES
                     --
                  WHEN '2' | '@' =>
                     Editor.Window.Frames (Maximum => 2);
                  WHEN '3' | '#' =>
                     Editor.Window.Frames (Maximum => 3);
                  WHEN '4' | '$' =>
                     Editor.Window.Frames (Maximum => 4);
                  WHEN '5' | '%' =>
                     Editor.Window.Frames (Maximum => 5);
                  WHEN '6' | '^' =>
                     Editor.Window.Frames (Maximum => 6);
                  WHEN '7' | '&' =>
                     Editor.Window.Frames (Maximum => 7);
                  WHEN '8' | '*' =>
                     Editor.Window.Frames (Maximum => 8);
                  WHEN '9' | '(' =>
                     Editor.Window.Frames (Maximum => 9);
                  WHEN OTHERS =>
                     NULL;
               END CASE;

            WHEN Pf1 =>
               CASE Key_2 IS
                  WHEN Esc_Tab =>
                     Editor.Image.End_Of (Offset => 0);
                  WHEN OTHERS =>
                     NULL;
               END CASE;

            WHEN Pf2 =>
               CASE Key_2 IS
                  WHEN Esc_Tab =>
                     Editor.Line.End_Of (Offset => 0);
                  WHEN OTHERS =>
                     NULL;
               END CASE;

            WHEN Pf3 =>
               CASE Key_2 IS
                  WHEN Esc_Tab =>
                     Editor.Word.End_Of;
                  WHEN OTHERS =>
                     NULL;
               END CASE;

            WHEN Pf4 =>
               CASE Key_2 IS
                  WHEN C_M =>
                     Editor.Macro.Execute (Repeat => 1, Prior => 0);
                  WHEN OTHERS =>
                     NULL;
               END CASE;

               -- ESCAPE ITEM KEY SEQUENCES
               --
            WHEN Esc_X4 =>
               Command.Debug;

               -- FUCTION KEY SEQUENCES
               --
               -- ENTRY OF:
               --    "-- SAME" INDICATES IT IS SAME IN STANDARD BINDING
               --    "-- PROMPT SECTION" => ENTRY IS IN "Prompt" SECTION ABOVE
               --    "-- SAME (PROMPT)" => SAME AS STND BINDING & IS PROMPTED
               --
            WHEN Esc_S_F1 =>
               Debug.Task_Display (For_Task => "",
                                   Task_Set => Debug.All_Tasks);
            WHEN Esc_C_F1 =>
               Debug.Stop (Name => "");
            WHEN Esc_F1 =>
               Debug.Run (Stop_At => Debug.Returned,
                          Count => 1,
                          In_Task => "");
            WHEN C_F1 =>  
               Debug.Run (Stop_At => Debug.Local_Statement,
                          Count => 1,
                          In_Task => "");
--          WHEN S_F1 =>                                 -- SAME
--             Debug.Execute (Name => "");
--          WHEN S_F1 =>                                 -- SAME
--             Debug.Run (Stop_At => Debug.Statement,
--                        Count => 1,
--                        In_Task => "");

            WHEN Esc_S_F2 =>
               Debug.Show (Values_For => Debug.Breakpoints);
            WHEN Esc_C_F2 =>  
               Debug.Remove (Breakpoint => 0, Delete => False);
--          WHEN Esc_F2 =>                               -- SAME
--             Debug.Activate (Breakpoint => 0);
            WHEN C_F2 =>  
               Debug.Break (Location => "<SELECTION>",
                            Stack_Frame => 0,
                            Count => 1,
                            In_Task => "",
                            Default_Lifetime => True);
            WHEN S_F2 =>
               Debug.Break (Location => "<SELECTION>",
                            Stack_Frame => 0,
                            Count => 1,
                            In_Task => "",
                            Default_Lifetime => False);
--          WHEN F2 =>                                   -- SAME
--             Debug.Source (Location => "<SELECTION>", Stack_Frame => 0);

            WHEN Esc_S_F3 =>
               Debug.Current_Debugger (Target => "");
--          WHEN Esc_C_F3 =>                             -- SAME (PROMPT)
--             Debug.Modify (New_Value => "",
--                           Variable => "<SELECTION>",
--                           Stack_Frame => 0);
--          WHEN Esc_F3 =>                               -- SAME
--             Debug.Propagate
--                (Name => "<SELECTION>", In_Task => "", At_Location => "");
            WHEN C_F3 =>
               Debug.Catch (Name => "<SELECTION>",
                            In_Task => "",
                            At_Location => "");
            WHEN S_F3 =>
               Debug.Stack (For_Task => "", Start => 0, Count => 0);
--          WHEN F3 =>                                   -- SAME
--             Debug.Put (Variable => "<SELECTION>", Stack_Frame => 0);

            WHEN Esc_S_F4 =>
               What.Home_Library;
--          WHEN Esc_C_F4 =>                             -- SAME
--             Common.Enclosing (In_Place => True, Library => False);
            WHEN Esc_F4 =>
               Common.Enclosing (In_Place => False, Library => False);
            WHEN C_F4 =>
               Ada.Other_Part (Name => "<IMAGE>", In_Place => False);
--          WHEN S_F4 =>                                 -- SAME
--             Common.Definition
--                (Name => "<CURSOR>", In_Place => True, Visible => False);
--          WHEN F4 =>                                   -- SAME
--             Common.Definition (Name => "<CURSOR>",
--                                In_Place => False,
--                                Visible => False);

            WHEN Esc_S_F5 =>
               What.Does (Name => "Help_On_Help");
            WHEN Esc_C_F5 =>
               Queue.Print (Name => "<IMAGE>",
                            Options => "<DEFAULT>",
                            Banner => "<DEFAULT>",
                            Header => "<DEFAULT>",
                            Footer => "<DEFAULT>");

            WHEN Esc_F5 =>
               Editor.Key.Name (Key_Code => "");
            WHEN C_F5 =>
               Editor.Image.Find (Name => "Help Window");
--          WHEN S_F5 =>                                 -- SAME (PROMPT)
--             What.Does (Name => "<CURSOR>");
            WHEN F5 =>  
               Editor.Key.Prompt (Key_Code => "");

            WHEN Esc_S_F6 =>
               Compilation.Make (Unit => "<IMAGE>",
                                 Scope => Compilation.Load_Views,
                                 Goal => Compilation.Coded,
                                 Limit => "<ALL_WORLDS>",
                                 Effort_Only => False,
                                 Response => "<PROFILE>");
            WHEN Esc_C_F6 =>
               Compilation.Make (Unit => "<IMAGE>",
                                 Scope => Compilation.All_Parts,
                                 Goal => Compilation.Coded,
                                 Limit => "<WORLDS>",
                                 Effort_Only => False,
                                 Response => "<PROFILE>");
--          WHEN Esc_F6 =>                               -- SAME
--             Compilation.Promote (Unit => "<IMAGE>",
--                                  Scope => Compilation.All_Parts,
--                                  Goal => Compilation.Installed,
--                                  Limit => "<WORLDS>",
--                                  Effort_Only => False,
--                                  Response => "<PROFILE>");
            WHEN C_F6 =>
               Ada.Code_Unit;
            WHEN S_F6 =>
               Ada.Install_Stub;
--          WHEN F6 =>                                   -- SAME
--             Ada.Install_Unit;

            WHEN Esc_S_F7 =>
               Compilation.Demote (Unit => "<SELECTION>",
                                   Goal => Compilation.Installed,
                                   Limit => "<WORLDS>",
                                   Effort_Only => False,
                                   Response => "<PROFILE>");
            WHEN Esc_C_F7 =>
               Compilation.Demote (Unit => "<SELECTION>",
                                   Goal => Compilation.Source,
                                   Limit => "<WORLDS>",
                                   Effort_Only => False,
                                   Response => "<PROFILE>");
            WHEN Esc_F7 =>
               Ada.Withdraw (Name => "<IMAGE>");
--          WHEN C_F7 =>                                 -- SAME
--             Ada.Source_Unit;
--          WHEN S_F7 =>                                 -- SAME
--             Common.Demote;
--          WHEN F7 =>                                   -- SAME
--             Common.Edit (Name => "<IMAGE>",
--                          In_Place => False,
--                          Visible => True);

            WHEN Esc_S_F8 =>
               Ada.Create_Private (Name => "<IMAGE>");
--          WHEN Esc_C_F8 =>                             -- PROMPT SECTION
--             Text.Create (Image_Name => ">>IMAGE_NAME<<", Kind => Text.File);
--          WHEN Esc_F8 =>                               -- SAME (PROMPT)
--             Library.Create_Directory (Name => ">>DIRECTORY NAME<<",
--                                       Kind => Library.Directory,
--                                       Vol => Library.Nil,
--                                       Model => "",
--                                       Response => "<PROFILE>");
--          WHEN C_F8 =>                                 -- PROMPT SECTION
--             Library.Create_World (Name => ">>WORLD NAME<<",
--                                   Kind => Library.World,
--                                   Vol => Library.Nil,
--                                   Model => "!Model.R1000",
--                                   Response => "<PROFILE>");
--          WHEN S_F8 =>                                 -- SAME
--             Ada.Create_Body (Name => "<IMAGE>");
--          WHEN F8 =>                                   -- SAME
--             Common.Create_Command;

            WHEN Esc_S_F9 =>
               Ada.Get_Errors;
            WHEN Esc_C_F9 =>
               Cmvc.Show (Objects => "<CURSOR>", Response => "<PROFILE>");
--          WHEN Esc_F9 =>                               -- PROMPT SECTION
--             Ada.Show_Unused (In_Unit => "<IMAGE>",
--                              Check_Other_Units => False);
--          WHEN C_F9 =>                                 -- PROMPT SECTION
--             Ada.Show_Usage (Name => "<CURSOR>",
--                             Global => False,
--                             Limit => "<WORLDS>",
--                             Closure => False);
            WHEN S_F9 =>
               Common.Semanticize;
            WHEN F9 =>
               Common.Explain;

            WHEN Esc_S_F10 =>
               Common.Clear_Underlining;
            WHEN Esc_C_F10 =>
               NULL;                                     -- ENTRY "DELETED"
--          WHEN Esc_F10 =>                              -- PROMPT SECTION
--             Cmvc.Check_In (What_Object => "<CURSOR>",
--                            Comments => "",
--                            Work_Order => "<DEFAULT>",
--                            Response => "<PROFILE>");
--          WHEN C_F10 =>                                -- PROMPT SECTION
--             Cmvc.Check_Out (What_Object => "<CURSOR>",
--                             Comments => "",
--                             Allow_Demotion => False,
--                             Allow_Implicit_Accept_Changes => True,
--                             Expected_Check_In_Time => "<TOMORROW>",
--                             Work_Order => "<DEFAULT>",
--                             Response => "<PROFILE>");
            WHEN S_F10 =>
               Editor.Cursor.Previous
                  (Repeat => 1, Prompt => True, Underline => True);
            WHEN F10 =>
               Editor.Cursor.Next
                  (Repeat => 1, Prompt => True, Underline => True);

            WHEN Esc_S_F11 =>
               What.Jobs (Interval => 5,
                          User_Jobs_Only => True,
                          My_Jobs_Only => True,
                          Running_Jobs_Only => False);
            WHEN Esc_C_F11 =>
               NULL;                                     -- ENTRY "DELETED"
--          WHEN Esc_F11 =>                              -- SAME (INTERRUPT)
--             Job.Connect (The_Job => 0);
--          WHEN C_F11 =>                                -- SAME (INTERRUPT)
--             Job.Kill (The_Job => 0, The_Session => "");
--          WHEN S_F11 =>                                -- SAME (INTERRUPT)
--             Job.Enable (The_Job => 0, The_Session => "");
--          WHEN F11 =>                                  -- INTERRUPT SECTION
--             Job.Disable (The_Job => 0, The_Session => "");

            WHEN Esc_Numeric_Comma =>                    -- TEMPORARY BUG PATCH
               What.Load (Verbose => True);
            WHEN Esc_S_F12 =>
               What.Load (Verbose => True);
            WHEN Esc_C_F12 =>
               What.Object (Name => "<IMAGE>");
            WHEN Esc_F12 =>
               What.Locks (Name => "<IMAGE>");
            WHEN C_F12 =>
               What.Users (All_Users => True);
            WHEN Numeric_Comma =>                        -- TEMPORARY BUG PATCH
               Access_List.Default_Display (For_World => "<CURSOR>");
            WHEN S_F12 =>
               Access_List.Default_Display (For_World => "<CURSOR>");
            WHEN F12 =>
               Access_List.Display (For_Object => "<CURSOR>");

            WHEN OTHERS =>
               NULL;

         END CASE;

   END CASE;


END Facit_Commands;