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: ┃ T V ┃
Length: 7803 (0x1e7b) Types: TextFile Names: »V«
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3 └─ ⟦fc9b38f02⟧ »DATA« └─⟦9b46a407a⟧ └─⟦12c68c704⟧ └─⟦this⟧ └─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS └─ ⟦91c658230⟧ »DATA« └─⟦458657fb6⟧ └─⟦220843204⟧ └─⟦this⟧
with Device_Independent_Io; with System; package Terminal_Specific is -- This package supports operations that are specific to -- "terminals". For this purpose, a terminal is an object of -- type Terminal. These objects are in !Machine.Devices. -- -- Normal Text_IO-style IO to the terminal is done through: -- !USERS.user.session Standard_Output -- !MACHINE.USERS.user Standard_Error -- -- Window_IO provides quarter-plane, addressable display and key input -- -- Access to the terminal for Standard_Output, Standard_Error and -- Window_IO is handled by the job controlling the session, so there may -- be multiple, simultaneously-active windows. -- -- Opening a terminal directly provides the application complete control -- of the terminal. In this case, the terminal is controlled by the job -- that opens it, NOT the session job. -- -- More than one job can have a terminal open at the same time, but -- only one of them will actually receive input or transmit output. -- Any others will be blocked on both input and output. A job that -- references the terminal directly and simultaneously uses one of the -- session-controlled forms of terminal interaction will not work well and -- may deadlock. -- -- Attempts to open an enabled terminal other than the one for -- current session will fail. Control over enabled/disabled status -- of terminals is available in the Operator package. -- -- The determination of which of the various jobs dealing with the -- terminal actually have the right to transmit/receive is done on -- the basis of which job is "connected". There is at most one -- connected job at any time. If a job that has the terminal open -- is currently connected, it has the terminal. If it disconnects -- or is terminated, control of the terminal reverts to the session. -- The user can return control of the terminal to the application -- by doing a Job.Connect with the appropriate job number. -- -- Transfers of terminal ownership are detectable as part of the -- status of the Read and Write operations. This allows -- applications that support disconnect to detect when to redraw -- their version of the screen. -- -- The following device-specific Form options are supported: -- -- Option Explanation Default -- -- Echo whether to echo input True -- Edit Line editing or None Line -- CRLF map LF to CRLF True -- -- Note: the CRLF option is ignored by the Write procedures in this -- package to reduce confusion over whether the CR was transferred for a -- particular count. CRLF is honored by device_independent write/put -- operations. -- subtype File_Type is Device_Independent_Io.File_Type; subtype Byte_String is Device_Independent_Io.Byte_String; package Status is type Code is new Integer; function Image (Value : Code) return String; -- -- Status.Code Standard reaction -- -- Normal none -- Break raise End_Error -- Disconnect raise End_Error -- Timed_Out 0 data bytes transferred -- Data_Error raise Data_Error -- Data_Overrun raise Device_Error -- Lost_Ownership ignored -- Gained_Ownership ignored -- Too_Many_Clients raise Device_Error -- -- Standard Read/Write routines in Device_Independent_IO use: -- Duration'Last for Wait parameters -- "Standard Reaction" for Result parameters -- Normal : constant Code := 0; Break : constant Code := 1; Disconnect : constant Code := 2; Not_Open : constant Code := 3; Timed_Out : constant Code := 4; Data_Error : constant Code := 5; Data_Overrun : constant Code := 6; Lost_Ownership : constant Code := 7; Gained_Ownership : constant Code := 8; Too_Many_Clients : constant Code := 9; end Status; package Output is procedure Map_Lf_To_Crlf (File : File_Type; Value : Boolean := True); -- Equivalent of CRLF Form option; default True procedure Transmit_Break (File : File_Type); procedure Transmit_Break (File : File_Type; Wait : Duration; Result : out Status.Code); procedure Disconnect (File : File_Type); procedure Disconnect (File : File_Type; Wait : Duration; Result : out Status.Code); procedure Wait_For_Transmission (File : File_Type); -- Wait for all previously written data to be transmitted. procedure Set_Rts (File : File_Type; On : Boolean); -- Set the current state of the RTS (pin 4) RS-232 -- modem control output. True => ON, False => OFF. procedure Set_Dtr (File : File_Type; On : Boolean); -- Set the current state of the DTR (pin 20) RS-232 -- modem control output. True => ON, False => OFF. end Output; package Input is procedure Flush (File : File_Type); procedure Set_Echo (File : File_Type; Echo : Boolean := True); -- Equivalent to Echo Form option; default True function Get_Echo (File : File_Type) return Boolean; procedure Set_Editing (File : File_Type; Mode : String := "Line"); -- Equivalent to the Edit Form option; default Edit => Line -- Disabled with value None. function Get_Editing (File : File_Type) return String; end Input; procedure Read (File : File_Type; Item : out Byte_String; Count : out Natural; Wait : Duration); procedure Read (File : File_Type; Item : out String; Count : out Natural; Wait : Duration); procedure Read (File : File_Type; Item : out Byte_String; Count : out Natural; Wait : Duration; Result : out Status.Code); procedure Read (File : File_Type; Item : out String; Count : out Natural; Wait : Duration; Result : out Status.Code); procedure Write (File : File_Type; Item : Byte_String; Count : out Natural; Wait : Duration); procedure Write (File : File_Type; Item : String; Count : out Natural; Wait : Duration); procedure Write (File : File_Type; Item : Byte_String; Count : out Natural; Wait : Duration; Result : out Status.Code); procedure Write (File : File_Type; Item : String; Count : out Natural; Wait : Duration; Result : out Status.Code); pragma Subsystem (Input_Output); pragma Module_Name (4, 3215); end Terminal_Specific;