|
|
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: 5120 (0x1400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Acia_Out, seg_02799a, seg_027d90, seg_027e54
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Octet, Text_Io, Acia_Pack;
with Xterm;
use Text_Io;
package body Acia_Out is
task type Acia_Tty is
pragma Os_Task (0);
entry Init (Identifier : Natural);
entry Close;
end Acia_Tty;
type T_Tache_Ptr is access Acia_Tty;
type Tty is
record
Tache_Ptr : T_Tache_Ptr;
Tty_Present : Boolean := False;
end record;
Tab_Tache : array (1 .. 10) of Tty;
------------------------------ exports -------------------------------------
procedure Transmit_Byte (Value : Octet.T_Octet;
Identifier : Natural;
Seven_Bits : Boolean;
Trans_Parity : Parity;
Two_Stop : Boolean) is
Carac1, Carac2 : Character;
begin
-- Octet.Convert_Octet_Ascii (Value, Carac1, Carac2);
-- Put_Line (" Je transmet le caractere de valeur =>" & Carac1 & Carac2);
-- Put (" sur ");
-- if Seven_Bits then
-- Put (" 7 bits");
-- else
-- Put (" 8 bits");
-- end if;
-- case Trans_Parity is
-- when Even =>
-- Put (" ,parite paire");
-- when Odd =>
-- Put (" ,parite impaire");
-- when None =>
-- Put (" ,sans parite");
-- end case;
-- if Two_Stop then
-- Put_Line (",2 stop bits.");
-- else
-- Put_Line (",1 stop bit.");
-- end if;
if Tab_Tache (Identifier).Tty_Present then
Xterm.Put (Identifier, Value);
end if;
end Transmit_Byte;
procedure Creer (Identifier : Natural) is
begin
if Xterm.Open (Identifier) /= 0 then
Tab_Tache (Identifier).Tty_Present := True;
Tab_Tache (Identifier).Tache_Ptr := new Acia_Tty;
Tab_Tache (Identifier).Tache_Ptr.Init (Identifier);
else
Tab_Tache (Identifier).Tty_Present := False;
end if;
end Creer;
procedure Detruire (Identifier : Natural) is
begin
if Tab_Tache (Identifier).Tty_Present then
Tab_Tache (Identifier).Tty_Present := False;
Tab_Tache (Identifier).Tache_Ptr.Close;
end if;
end Detruire;
task body Acia_Tty is
Id : Natural;
Val : Integer;
begin
select
accept Init (Identifier : Natural) do
Id := Identifier;
end Init;
end select;
loop
select
accept Close do
Xterm.Close (Id);
end Close;
exit;
else
Val := Xterm.Get (Id);
case Val is
when 1000 =>
null;
when 2000 =>
Text_Io.Put_Line ("error read pipe");
when others =>
Acia_Pack.Receive (Val, Id);
end case;
--delay (Duration'Small);
end select;
end loop;
end Acia_Tty;
end Acia_Out;
nblk1=4
nid=0
hdr6=8
[0x00] rec0=21 rec1=00 rec2=01 rec3=086
[0x01] rec0=1e rec1=00 rec2=02 rec3=028
[0x02] rec0=22 rec1=00 rec2=04 rec3=03a
[0x03] rec0=0b rec1=00 rec2=03 rec3=000
tail 0x21721bf1083ac726a2e07 0x42a00088462060003