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 - downloadIndex: ┃ B T ┃
Length: 8991 (0x231f) Types: TextFile Names: »B«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2 └─ ⟦77aa8350c⟧ »DATA« └─⟦f794ecd1d⟧ └─⟦24d1ddd49⟧ └─⟦this⟧
-- The use of this system is subject to the software license terms and -- conditions agreed upon between Rational and the Customer. -- -- Copyright 1988 by Rational. -- -- RESTRICTED RIGHTS LEGEND -- -- Use, duplication, or disclosure by the Government is subject to -- restrictions as set forth in subdivision (b)(3)(ii) of the Rights in -- Technical Data and Computer Software clause at 52.227-7013. -- -- -- Rational -- 3320 Scott Boulevard -- Santa Clara, California 95054-3197 -- -- PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL; -- USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION -- IS STRICTLY PROHIBITED. THIS MATERIAL IS PROTECTED AS -- AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF -- 1976. CREATED 1988. ALL RIGHTS RESERVED. -- -- with Storage_Management; separate (Task_Management) procedure Initialize is pragma Routine_Number (Runtime_Ids.Internal); pragma Suppress_All; package Sm renames Standard.Storage_Management; function Convert is new Unchecked_Conversion (System.Address, Task_Id); function Convert is new Unchecked_Conversion (System.Address, Layer_Id); function Convert is new Unchecked_Conversion (Source => System.Address, Target => Group_Ref); function Convert is new Unchecked_Conversion (Source => System.Address, Target => Address_Ref); begin Initialize_Tasking_Lock: begin Task_Serialization.Tasking_Lock.Next := null; Task_Serialization.Tasking_Lock.Key := null; end Initialize_Tasking_Lock; Create_Tasking_Collections: begin Tt.Tcb_Collection := Sm.Allocate_Collection (Units => Sm.Use_Default_Chunk_Size, Extend => True); Tt.Branch_Table_Collection := Sm.Allocate_Collection (Units => Sm.Use_Default_Chunk_Size, Extend => True); Tt.Wait_List_Collection := Sm.Allocate_Collection (Units => Sm.Use_Default_Chunk_Size, Extend => True); Tt.Buffer_Item_Collection := Sm.Allocate_Collection (Units => Sm.Use_Default_Chunk_Size, Extend => True); end Create_Tasking_Collections; Clear_Abort_Main_Flag: begin Abort_Main_Program_Flag := False; end Clear_Abort_Main_Flag; Setup_Root_Layer: begin Root_Layer.Dependent_Task_List.Next := Convert (Root_Task'Address); Root_Layer.Master_Task := null; Root_Layer.Layer_Link := null; Root_Layer.Non_Terminated := 1; Root_Layer.Non_Terminable := 1; Root_Layer.Coldness := Root; end Setup_Root_Layer; Setup_Root_Task_Id: begin Os_Base_Priority := Integer (Main_Priority); Process_Ops.Set_Priority (Process_Id => Process_Ops.Current_Process_Id, Priority => Integer (Main_Priority)); -- Root_Task.all := -- Task_Control_Block' -- (Checksum => Checksum (Root_Task), Root_Task.Checksum := Checksum (Convert (Root_Task'Address)); -- Exception_Id => Exceptions.No_Error, Root_Task.Exception_Id := null; -- Stack_Bounds => (First => Main_Low_Stack_Bound, -- Size => Main_High_Stack_Bound), -- Stack bound for the root task are setup by assembly -- Root_Task.Stack_Bounds.First := Main_Low_Stack_Bound; -- Root_Task.Stack_Bounds.Size := Main_High_Stack_Bound; -- Action_State => (Activation_Done => True, others => False), Root_Task.Action_State := Action_Set'(Activation_Done => True, others => False); -- Suspension_State => Not_Suspended, Root_Task.Suspension_State := Not_Suspended; -- Current_Priority => Main_Priority, Root_Task.Current_Priority := Main_Priority; -- Partner_Priority => Priority'First, Root_Task.Partner_Priority := Priority'First; -- Code_Start_Ref => Convert (Main_Code_Start'Address), -- Code_Start_Ref is setup by assembly code -- Root_Task.Code_Start_Ref := Convert (Main_Code_Start'Address); -- Current_Layer => null, Root_Task.Current_Layer := null; -- Queues => Storage_Manager.New_Queues (0, Current_Task => null), Root_Task.Queues := Storage_Manager.New_Queues (0, Current_Task => null); -- Master_Block => Convert (Root_Layer'Address), Root_Task.Master_Block := Convert (Root_Layer'Address); -- Layer_Link => Empty_List, Root_Task.Layer_Link.Next := null; -- Callers_Head => Empty_List, Root_Task.Callers_Head.Next := null; -- Callers_Link => Empty_List, Root_Task.Callers_Link.Next := null; -- Activations_In_Progress => 0, Root_Task.Activations_In_Progress := 0; -- Spare Root_Task.Spare_Word0 := 0; -- Process_Id => Process_Ops.Current_Process_Id, Root_Task.Process_Id := Process_Ops.Current_Process_Id; -- Ipc_Buffer_List => null); Root_Task.Ipc_Buffer_List := null; -- Value of Root_Task_Ptr is assigned by assembly code -- Root_Task_Ptr := Convert (Root_Task'Address); end Setup_Root_Task_Id; Setup_Dummy_Task_Id: begin -- NOTE: for efficiency, the only fields of Dummy_Task TCB that are -- initialized are those that may possible be used, so this -- record has fields with undefined values. -- -- Dummy_Task := Task_Control_Block' -- (Checksum => Checksum (Convert (Dummy_Task'Address)), Dummy_Task.Checksum := Checksum (Convert (Dummy_Task'Address)); -- Exception_Id => null, Dummy_Task.Exception_Id := null; -- Stack_Bounds => -- (First => Null_Address, Last => Null_Address), -- *** Stack_Bounds uninitialized -- Code_Start_Ref => null, Dummy_Task.Code_Start_Ref := null; -- Process_Id => Null_Process_Id, Dummy_Task.Process_Id := Null_Process_Id; -- Action_State => (Activation_Done | Non_Callable => True, -- others => False), Dummy_Task.Action_State := Action_Set'(Activation_Done | Non_Callable => True, others => False); -- Suspension_State => Terminated, Dummy_Task.Suspension_State := Terminated; -- Current_Priority => Priority'First, -- *** Current_Priority uninitialized -- Partner_Priority => Priority'First, -- *** Partner_Priority uninitialized -- Current_Layer => null, -- *** Current_Layer uninitialized -- Queues => (Wait_List => null, Branch_Table => null, Accept_List => null), -- *** Queues uninitialized -- Dummy_Task.Queues.Wait_List := null; -- Dummy_Task.Queues.Branch_Table := null; -- Dummy_Task.Queues.Accept_List := null; -- Master_Block => null, -- *** Master_Block uninitialized -- Layer_Link => Empty_List, -- *** Layer_Link uninitialized -- Callers_Head => Empty_List, -- *** Callers_Head uninitialized -- Callers_Link => Empty_List, -- *** Callers_Link uninitialized -- Activations_In_Progress => 0, -- *** Activations_In_Progress uninitialized -- Delay_Alternative_Duration => Duration'First, -- *** Delay_Alternative_Duration uninitialized -- Ipc_Buffer_List => null); -- *** Ipc_Buffer_List unitialized -- end Setup_Dummy_Task_Id; Initialize_Top_Layer: begin Creation_And_Activation.Initialize_Master (Convert (Top_Layer'Address)); end Initialize_Top_Layer; end Initialize; pragma Runtime_Unit (Unit_Number => Runtime_Ids.Runtime_Compunit, Elab_Routine_Number => Runtime_Ids.Internal);