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