DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦081dbbaad⟧ Ada Source

    Length: 10240 (0x2800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Terminal_Specific, pragma Module_Name 4 3215, pragma Subsystem Input_Output, seg_02847a

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



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;

E3 Meta Data

    nblk1=9
    nid=0
    hdr6=12
        [0x00] rec0=19 rec1=00 rec2=01 rec3=030
        [0x01] rec0=10 rec1=00 rec2=02 rec3=052
        [0x02] rec0=13 rec1=00 rec2=03 rec3=092
        [0x03] rec0=19 rec1=00 rec2=04 rec3=012
        [0x04] rec0=19 rec1=00 rec2=09 rec3=054
        [0x05] rec0=02 rec1=00 rec2=05 rec3=040
        [0x06] rec0=1b rec1=00 rec2=06 rec3=024
        [0x07] rec0=1b rec1=00 rec2=07 rec3=034
        [0x08] rec0=1b rec1=00 rec2=08 rec3=000
    tail 0x21520f95283c173967b4e 0x42a00088462065003