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

⟦658127a7a⟧ Ada Source

    Length: 4096 (0x1000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Chrono, seg_03121e

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

E3 Meta Data

    nblk1=3
    nid=3
    hdr6=4
        [0x00] rec0=25 rec1=00 rec2=01 rec3=006
        [0x01] rec0=1f rec1=00 rec2=02 rec3=001
        [0x02] rec0=0b rec1=00 rec2=00 rec3=004
    tail 0x2172b017684ba8619733f 0x42a00088462060003
Free Block Chain:
  0x3: 0000  00 00 00 1b 80 07 74 28 74 69 6d 65 29 07 00 0b  ┆      t(time)   ┆