|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 22998 (0x59d6)
Types: TextFile
Names: »B«
└─⟦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⟧
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;