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

⟦0cbbe747b⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Terminal, seg_05a602

Derivation

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

E3 Source Code



with Text_Io;
with Device_Independent_Io;
with System;
with Terminal_Specific;
with Tampon;
with Coordonnees;
package body Terminal is  
    package Dio renames Device_Independent_Io;
    package Ts renames Terminal_Specific;
    package Tio renames Text_Io;
    subtype Bs is System.Byte_String;

    F_Out : Ts.File_Type;
    F_In : Ts.File_Type;

    B : System.Byte;

    use Coordonnees;
    subtype No_Terminal is Integer range 1 .. 8;

    type Object is
        record  
            No : No_Terminal;
            Lin : Tcoordonnees;
            Col : Tcoordonnees;
        end record;

    function Creer (Col : in Tcoordonnees := Max_Col;
                    Lin : in Tcoordonnees := Max_Lin;
                    No : in Integer) return Handle is
        Mon_Handle : Handle;
    begin
        Mon_Handle := new Object'(No, Lin, Col);
        Tampon.Init_Port (No);
        return Mon_Handle;  
    end Creer;


    procedure Ecrire (Terminal : in Handle;
                      C : in Character;
                      X, Y : in Tcoordonnees;
                      Blink : in Boolean := False) is
    begin
        Tampon.Envoi.Ecrire_Car (Terminal.No, X, Y, C, Blink);
    end Ecrire;

    task body Recoit is  
        No : Integer;
        C : Character;
    begin
        select
            accept Nouveau_Caractere
                      (No_Rdv : in Integer; C_Rdv : in Character) do
                Text_Io.Put_Line ("je suis passe!");
                for I in 1 .. 1000 loop
                    Dio.Read (F_In, B);
                    Text_Io.Put_Line ("cnt =>" & Natural'Image (Natural (B)));
                end loop;
                No := 1;
                C := 'B';
            end Nouveau_Caractere;
        or
            terminate;
        end select;
        Envoyer_Caractere (C, No);
    end Recoit;


    procedure Fermer (Terminal : in out Handle) is
    begin
        Tampon.Efface_Ecran (Terminal.No);  
        Terminal := null;  
    end Fermer;

end Terminal;

E3 Meta Data

    nblk1=4
    nid=2
    hdr6=6
        [0x00] rec0=28 rec1=00 rec2=01 rec3=022
        [0x01] rec0=20 rec1=00 rec2=03 rec3=004
        [0x02] rec0=06 rec1=00 rec2=04 rec3=000
        [0x03] rec0=04 rec1=00 rec2=03 rec3=000
    tail 0x21769dce8892c6f18969e 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 00 19 00 00 00 00 0d 65 6e 64 20 54 65 72  ┆         end Ter┆