DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦3da918b02⟧ TextFile

    Length: 1853 (0x73d)
    Types: TextFile
    Names: »B«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with Calendar;  
use Calendar;
with Text_Io;
procedure Chrono is
    Tps : Duration;

    task Chronometre is
        entry Reset;
        entry Start;
        entry Stop;
        entry Get (The_Time : out Duration);
    end Chronometre;

    task body Chronometre is  
        Busy : Boolean := False;
        Time_Init : Duration := 0.0;
        Current_Time : Duration := 0.0;
        Time_Start : Calendar.Time;
        Time_Stop : Calendar.Time;

    begin
        loop
            select
                when not Busy =>
                    accept Start do
                        Busy := True;
                    end Start;
                    if Current_Time /= Time_Init then
                        Time_Start := Calendar.Clock - Current_Time;
                    else
                        Time_Start := Calendar.Clock;
                    end if;
            or
                when Busy =>
                    accept Stop do
                        Busy := False;
                    end Stop;  
                    Time_Stop := Calendar.Clock;
            or
                when not Busy =>
                    accept Reset do
                        Current_Time := Time_Init;
                    end Reset;
            or
                accept Get (The_Time : out Duration) do
                    case Busy is
                        when True =>
                            The_Time := Calendar.Clock - Time_Start;
                        when False =>
                            The_Time := Calendar.Clock - Time_Stop;
                    end case;
                end Get;
            end select;
        end loop;  
    end Chronometre;

    package Chrono_Io is new Text_Io.Fixed_Io (Duration);

begin

    Chronometre.Start;
    delay 5.0;
    Chronometre.Stop;
    Chronometre.Get (Tps);
    Chrono_Io.Put (Tps);
end Chrono;