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

⟦a9afaa9b5⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Calculate_Speed, seg_005397, separate Puz_Main

Derivation

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

E3 Source Code



--/ if R1000 then
with System_Utilities;
--/ elsif TeleGen2 and then Unix then
--// with Unix_Time;
--/ elsif Cdf_Hpux then
--// with C_Library_Interface;
--// with Unix_Base_Types;
--/ else
--//  with something;
--/ end if;

separate (Puz_Main)  
procedure Calculate_Speed is
--/ if R1000 then
    Tv1           : Duration;  
    Tv2           : Duration;  
    Time_Per_Tile : Duration;
--/ elsif TeleGen2 and then Unix then
--//     Tv1           : S_Long;
--//     Tv2           : S_Long;
--//     Time_Per_Tile : S_Long;
--/ elsif Cdf_Hpux then
--//     Tv1           : Unix_Base_Types.Long;
--//     Tv2           : Unix_Base_Types.Long;
--//     Time_Per_Tile : Unix_Base_Types.Long;
--/ else
--//     Something : Here;
--/ end if;
    X : S_Long;  
    Y : S_Long;

begin

    if not First_Call then  
        return;  
    end if;  
    First_Call := False;

    X := Space_X * Tile_Width;  
    Y := Space_Y * Tile_Height;-/ if R1000 then   Time_Per_Tile := Duration (Duration (1.0) / -- 1 second
                               Duration (Tiles_Per_Second));

    X_Sync (Dpy, False);  
    Tv1 := System_Utilities.Elapsed;
--/ elsif TeleGen2 and then Unix then
--//     Time_Per_Tile := S_Long (1_000_000) / -- 1 second
--//                         Tiles_Per_Second;
--//
--//     X_Sync (Dpy, False);
--//     Tv1 := S_Long (Unix_Time.Clock);
--/ elsif Cdf_Hpux then
--//     Time_Per_Tile := Unix_Base_Types.Long (1_000_000) /
--//                         Unix_Base_Types.Long (Tiles_Per_Second);
--//
--//     X_Sync (Dpy, False);
--//     Tv1 := C_Library_Interface.Time.Clock;
--/ else
--//  Something;
--/ end if;
    Tv2 := Tv1;

    Move_Steps := 0;  
    while (Tv2 - Tv1) < Time_Per_Tile loop  
        Move_Area (Tile_Window, X, Y, X + 1, Y, Tile_Width, Tile_Height);  
        Rect_Set (Tile_Window, X, Y, 1, Tile_Height, Fg_Pixel);  
        Move_Steps := Move_Steps + 1;  
        X_Sync (Dpy, False);
--/ if R1000 then
        Tv2 := System_Utilities.Elapsed;
--/ elsif TeleGen2 and then Unix then
--//         Tv2 := S_Long (Unix_Time.Clock);
--/ elsif Cdf_Hpux then
--//         Tv2 := C_Library_Interface.Time.Clock;
--/ else
--//         Something;
--/ end if;
    end loop;

-- now, see how long this takes without all the extra b.s.
-- and compensate;

    X_Sync (Dpy, False);
--/ if R1000 then
    Tv1 := System_Utilities.Elapsed;
--/ elsif TeleGen2 and then Unix then
--//     Tv1 := S_Long (Unix_Time.Clock);
--/ elsif Cdf_Hpux then
--//     Tv1 := C_Library_Interface.Time.Clock;
--/ else
--//     Something;
--/ end if;
    for I in 0 .. Move_Steps - 1 loop  
        Move_Area (Tile_Window, X, Y, X + 1, Y, Tile_Width, Tile_Height);  
        Rect_Set (Tile_Window, X, Y, 1, Tile_Height, Fg_Pixel);  
    end loop;  
    X_Sync (Dpy, False);
--/ if R1000 then
    Tv2 := System_Utilities.Elapsed;
--/ elsif TeleGen2 and then Unix then
--//     Tv2 := S_Long (Unix_Time.Clock);
--/ elsif Cdf_Hpux then
--//     Tv2 := C_Library_Interface.Time.Clock;
--/ else
--//     Something;
--/ end if;
    if Tv2 = Tv1 then  
        Move_Steps := 1;  
    else
--/ if R1000 then
        Move_Steps := S_Natural (Duration (Duration (Move_Steps) *  
                                           Duration (Time_Per_Tile)) /  
                                 Duration (Tv2 - Tv1));
--/ elsif TeleGen2 and then Unix then
--//         Move_Steps := S_Natural ((Move_Steps * Time_Per_Tile) / (Tv2 - Tv1));
--/ elsif Cdf_Hpux then
--//         Move_Steps :=
--//            S_Natural ((Unix_Base_Types.Long (Move_Steps) * Time_Per_Tile) /
--//                       (Tv2 - Tv1));
--/ else
--//     Move_Steps := Something;
--/ end if;
    end if;  
    if Move_Steps = 0 then  
        Move_Steps := 1;  
    end if;

end Calculate_Speed;  

E3 Meta Data

    nblk1=5
    nid=0
    hdr6=a
        [0x00] rec0=2a rec1=00 rec2=01 rec3=002
        [0x01] rec0=01 rec1=00 rec2=05 rec3=002
        [0x02] rec0=1b rec1=00 rec2=02 rec3=01c
        [0x03] rec0=20 rec1=00 rec2=03 rec3=03a
        [0x04] rec0=1d rec1=00 rec2=04 rec3=000
    tail 0x21500a0068197894ee6fc 0x42a00088462063203