|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
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
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦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;
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