|
|
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 - metrics - download
Length: 7168 (0x1c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Rs6000_Server, seg_03cc99
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with System_Interface;
with Text_Io;
with Transport_Interchange;
with Interchange;
with Unix_Base_Types;
with System;
package body Rs6000_Server is
procedure Write_String_C (C_Message : System.Address;
C_Tty : System.Address;
C_Length : Integer);
pragma Interface (C, Write_String_C);
pragma Interface_Information (Write_String_C, ".write_string");
procedure Write_Char_C (C_Message : Interchange.Byte;
C_Tty : System.Address);
pragma Interface (C, Write_Char_C);
pragma Interface_Information (Write_Char_C, ".write_char");
procedure Process_Call (Stream : Transport_Stream.Stream_Id;
Id : Rpc.Transaction_Id;
Version : Rpc.Version_Number;
Proc : Rpc.Procedure_Number) is
begin
case Proc is
when Rs6000_Defs.Proc_Number.Put_String =>
-- Text_Io.Put_Line (Transport_Interchange.Get_String (Stream));
-- Text_Io.Put_Line (Transport_Interchange.Get_String (Stream));
declare
C_Message : constant String :=
Transport_Interchange.Get_String (Stream);
C_Tty : constant String :=
Transport_Interchange.Get_String (Stream) & Ascii.Nul;
begin
Write_String_C (C_Message =>
C_Message (C_Message'First)'Address,
C_Tty => C_Tty (C_Tty'First)'Address,
C_Length => C_Message'Length);
end;
Rpc_Server.Begin_Response (Stream, Id);
when Rs6000_Defs.Proc_Number.Put_Byte =>
declare
C_Message : Interchange.Byte;
begin
Transport_Interchange.Get (Stream, C_Message);
Text_Io.Put_Line
("received byte => *" &
Natural'Image (Natural (C_Message)) & "*");
declare
C_Tty : constant String :=
Transport_Interchange.Get_String (Stream) &
Ascii.Nul;
begin
Write_Char_C (C_Message => C_Message,
C_Tty => C_Tty (C_Tty'First)'Address);
end;
end;
Rpc_Server.Begin_Response (Stream, Id);
when Rs6000_Defs.Proc_Number.Put_Byte_String =>
declare
C_Message : constant Interchange.Byte_String :=
Transport_Interchange.Get_Byte_String (Stream);
C_Tty : constant String :=
Transport_Interchange.Get_String (Stream) & Ascii.Nul;
begin
Write_String_C (C_Message =>
C_Message (C_Message'First)'Address,
C_Tty => C_Tty (C_Tty'First)'Address,
C_Length => C_Message'Length);
end;
Rpc_Server.Begin_Response (Stream, Id);
when others =>
raise Rpc.No_Such_Procedure;
end case;
end Process_Call;
procedure Serve_Gets is new Rpc_Server.Serve
(Program => Rs6000_Defs.Program,
Supported => (0, Rpc.Version_Number'Last),
Process_Call => Process_Call);
procedure Serve (Connection : Transport.Connection_Id) is
begin
Serve_Gets (Connection);
end Serve;
end Rs6000_Server;
nblk1=6
nid=5
hdr6=8
[0x00] rec0=1e rec1=00 rec2=01 rec3=05e
[0x01] rec0=17 rec1=00 rec2=06 rec3=022
[0x02] rec0=16 rec1=00 rec2=02 rec3=048
[0x03] rec0=1c rec1=00 rec2=04 rec3=000
[0x04] rec0=19 rec1=00 rec2=04 rec3=000
[0x05] rec0=41 rec1=89 rec2=b6 rec3=213
tail 0x2153544fc85e24e7af780 0x42a00088462060003
Free Block Chain:
0x5: 0000 00 03 03 fc 80 08 20 64 65 63 6c 61 72 65 08 00 ┆ declare ┆
0x3: 0000 00 00 00 06 80 03 20 20 20 03 61 6c 6c 3b 08 00 ┆ all; ┆