|
|
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: 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;