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

⟦616bc58ef⟧ Ada Source

    Length: 13312 (0x3400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Lecteur, seg_041e05

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 Io;
with System;  
with Terminal_Specific;
with Text_Io;
with Device_Independent_Io;
with Unchecked_Conversions;
with Constantes;

package body Lecteur is

    package Dio renames Device_Independent_Io;  
    package Ts renames Terminal_Specific;
    package Tio renames Text_Io;  
    subtype Bs is System.Byte_String;
    F_In : Ts.File_Type;
    F_Out : Ts.File_Type;


    procedure Convert (Numero_Carte : Natural;
                       No_Carte_1 : out System.Byte;
                       No_Carte_2 : out System.Byte) is

        No_2 : Natural;
        No_1 : Natural;
    begin
        No_1 := Numero_Carte / 100;
        No_2 := Numero_Carte mod 100;
        No_Carte_1 := System.Byte'Val (No_1);
        No_Carte_2 := System.Byte'Val (No_2);

    end Convert;

    procedure Convert_3 (Code_S : Natural;
                         Code_1 : out System.Byte;
                         Code_2 : out System.Byte;
                         Code_3 : out System.Byte) is
        No_3 : Natural;
        No_2 : Natural;
        No_1 : Natural;
    begin
        No_1 := Code_S / 100;
        No_2 := No_1 / 100;
        Code_1 := System.Byte'Val (No_2);
        No_3 := No_1 mod 100;
        Code_2 := System.Byte'Val (No_3);
        No_1 := Code_S mod 100;
        Code_3 := System.Byte'Val (No_3);

    end Convert_3;

    procedure Ouvre_Fichier_Out is
    begin
        Dio.Open (File => F_Out,
                  Mode => Dio.Out_File,
                  Name => "!machine.devices.terminal_16",
                  Form => "");
        delay 0.5;
    end Ouvre_Fichier_Out;


    procedure Ferme_Fichier_Out is
    begin
        Dio.Close (File => F_Out);
        delay 0.5;
    end Ferme_Fichier_Out;


    procedure Ouvre_Fichier_In is
    begin
        Dio.Open (File => F_In,
                  Mode => Dio.In_File,
                  Name => "!machine.devices.terminal_16",
                  Form => "");  
        delay 0.5;
    end Ouvre_Fichier_In;


    procedure Ferme_Fichier_In is
    begin
        Dio.Close (File => F_In);
        delay 0.5;
    end Ferme_Fichier_In;

    procedure Code_Sit (Code_S : Natural; Numero_Lecteur : System.Byte) is
        Cod_Site : Bs (1 .. 10);
        Code_1, Code_2, Code_3 : System.Byte;
    begin
        Convert_3 (Code_S, Code_1, Code_2, Code_3);
        Cod_Site := (16#01#, Numero_Lecteur, 16#00#, 16#04#, 16#27#,
                     Code_1, Code_2, Code_3, 16#F1#, 16#F2#);

        Ouvre_Fichier_Out;

        Dio.Write (File => F_Out, Item => Cod_Site);
        delay 0.5;

        Ferme_Fichier_Out;

    end Code_Sit;

--        procedure Code_Sit (Code_S : Natural; Numero_Lecteur : System.Byte) is
--        Cod_Site : Bs (1 .. 10);
--        No_3 : Natural;
--        No_2 : Natural;
--        No_1 : Natural;
--        Code_1, Code_2, Code_3 : System.Byte;
--    begin
--        No_1 := Code_S / 100;
--        No_2 := No_1 / 100;
--        Code_1 := System.Byte'Val (No_2);
--        No_3 := No_1 mod 100;
--        Code_2 := System.Byte'Val (No_3);
--        No_1 := Code_S mod 100;
--        Code_3 := System.Byte'Val (No_3);
--        Cod_Site := (16#01#, Numero_Lecteur, 16#00#, 16#04#, 16#27#,
--                     Code_1, Code_2, Code_3, 16#F1#, 16#F2#);
--
--        Ouvre_Fichier_Out;
--
--        Dio.Write (File => F_Out, Item => Cod_Site);
    --       delay 0.5;
--
--        Ferme_Fichier_Out;

--    end Code_Sit;

    procedure Beep (Numero_Lecteur : System.Byte) is
        Beep : Bs (1 .. 7);
    begin
        Beep := (16#01#, Numero_Lecteur, 16#00#,
                 16#01#, 16#2C#, 16#F1#, 16#F2#);  
        Ouvre_Fichier_Out;

        Dio.Write (File => F_Out, Item => Beep);
        delay 1.0;

        Ferme_Fichier_Out;
    end Beep;

    procedure Valide_Carte (Numero_Lecteur : System.Byte;
                            Numero_Carte : Natural;
                            Numero_Plage : System.Byte;
                            Code_Site : Natural) is

        Valid_Carte : Bs (1 .. 10);
        Cod_Site : Bs (1 .. 10);

        No_Carte_1 : System.Byte;
        No_Carte_2 : System.Byte;
        No_3 : Natural;
        No_2 : Natural;
        No_1 : Natural;
        Code_1, Code_2, Code_3 : System.Byte;
    begin
        No_1 := Numero_Carte / 100;
        No_2 := Numero_Carte mod 100;
        No_Carte_1 := System.Byte'Val (No_1);
        No_Carte_2 := System.Byte'Val (No_2);
        Valid_Carte := (16#01#, Numero_Lecteur, 16#00#, 16#04#, 16#10#,
                        No_Carte_1, No_Carte_2, Numero_Plage, 16#F1#, 16#F2#);
        No_1 := Code_Site / 100;
        No_2 := No_1 / 100;
        Code_1 := System.Byte'Val (No_2);
        No_3 := No_1 mod 100;
        Code_2 := System.Byte'Val (No_3);
        No_1 := Code_Site mod 100;
        Code_3 := System.Byte'Val (No_3);
        Cod_Site := (16#01#, Numero_Lecteur, 16#00#, 16#04#, 16#27#,
                     Code_1, Code_2, Code_3, 16#F1#, 16#F2#);
        Ouvre_Fichier_Out;

        Dio.Write (File => F_Out, Item => Cod_Site);
        delay 0.5;
        Dio.Write (File => F_Out, Item => Valid_Carte);
        delay 0.5;

        Ferme_Fichier_Out;
    end Valide_Carte;


    procedure Valide_Groupe_Carte (Numero_Lecteur : System.Byte;
                                   No_Premiere_Carte : Natural;
                                   No_Derniere_Carte : Natural;
                                   Numero_Plage : System.Byte;
                                   Code_Site : Natural) is  
        Valid_Groupe_Carte : Bs (1 .. 12);

        No_Carte_P_1 : System.Byte;
        No_Carte_P_2 : System.Byte;
        No_P_1 : Natural;
        No_P_2 : Natural;

        No_Carte_D_1 : System.Byte;
        No_Carte_D_2 : System.Byte;
        No_D_1 : Natural;
        No_D_2 : Natural;

    begin
        No_P_1 := No_Premiere_Carte / 100;
        No_P_2 := No_Premiere_Carte mod 100;

        No_D_1 := No_Derniere_Carte / 100;
        No_D_2 := No_Derniere_Carte mod 100;


        No_Carte_P_1 := System.Byte'Val (No_P_1);
        No_Carte_P_2 := System.Byte'Val (No_P_2);

        No_Carte_D_1 := System.Byte'Val (No_D_1);
        No_Carte_D_2 := System.Byte'Val (No_D_2);
        Code_Sit (Code_Site, Numero_Lecteur);

        Valid_Groupe_Carte := (16#01#, Numero_Lecteur, 16#00#, 16#04#, 16#11#,
                               No_Carte_P_1, No_Carte_P_2, No_Carte_D_1,
                               No_Carte_D_2, Numero_Plage, 16#F1#, 16#F2#);

        Ouvre_Fichier_Out;

        Dio.Write (File => F_Out, Item => Valid_Groupe_Carte);
        delay 1.0;

        Ferme_Fichier_Out;
    end Valide_Groupe_Carte;


    procedure Invalide_Carte (Numero_Lecteur : System.Byte;
                              Numero_Carte : Natural;
                              Numero_Plage : System.Byte;
                              Code_Site : Natural) is

        Invalid_Carte : Bs (1 .. 10);
        Cod_Site : Bs (1 .. 10);

        No_Carte_1 : System.Byte;
        No_Carte_2 : System.Byte;
        No_3 : Natural;
        No_2 : Natural;
        No_1 : Natural;
        Code_1, Code_2, Code_3 : System.Byte;
    begin
        No_1 := Numero_Carte / 100;
        No_2 := Numero_Carte mod 100;
        No_Carte_1 := System.Byte'Val (No_1);
        No_Carte_2 := System.Byte'Val (No_2);
        Invalid_Carte := (16#01#, Numero_Lecteur, 16#00#, 16#04#, 16#12#,
                          No_Carte_1, No_Carte_2, Numero_Plage, 16#F1#, 16#F2#);
        No_1 := Code_Site / 100;
        No_2 := No_1 / 100;
        Code_1 := System.Byte'Val (No_2);
        No_3 := No_1 mod 100;
        Code_2 := System.Byte'Val (No_3);
        No_1 := Code_Site mod 100;
        Code_3 := System.Byte'Val (No_3);
        Cod_Site := (16#01#, Numero_Lecteur, 16#00#, 16#04#, 16#27#,
                     Code_1, Code_2, Code_3, 16#F1#, 16#F2#);
        Ouvre_Fichier_Out;

        Dio.Write (File => F_Out, Item => Cod_Site);
        delay 0.5;
        Dio.Write (File => F_Out, Item => Invalid_Carte);
        delay 0.5;

        Ferme_Fichier_Out;
    end Invalide_Carte;


    procedure Invalide_Groupe_Carte (Numero_Lecteur : System.Byte;
                                     No_Premiere_Carte : Natural;
                                     No_Derniere_Carte : Natural;
                                     Numero_Plage : System.Byte;
                                     Code_Site : Natural) is
        Invalid_Groupe_Carte : Bs (1 .. 12);

        No_Carte_P_1 : System.Byte;
        No_Carte_P_2 : System.Byte;
        No_P_1 : Natural;
        No_P_2 : Natural;

        No_Carte_D_1 : System.Byte;
        No_Carte_D_2 : System.Byte;
        No_D_1 : Natural;
        No_D_2 : Natural;

    begin
        No_P_1 := No_Premiere_Carte / 100;
        No_P_2 := No_Premiere_Carte mod 100;

        No_D_1 := No_Derniere_Carte / 100;
        No_D_2 := No_Derniere_Carte mod 100;


        No_Carte_P_1 := System.Byte'Val (No_P_1);
        No_Carte_P_2 := System.Byte'Val (No_P_2);

        No_Carte_D_1 := System.Byte'Val (No_D_1);
        No_Carte_D_2 := System.Byte'Val (No_D_2);

        Invalid_Groupe_Carte := (16#01#, Numero_Lecteur, 16#00#, 16#04#, 16#13#,
                                 No_Carte_P_1, No_Carte_P_2, No_Carte_D_1,
                                 No_Carte_D_2, Numero_Plage, 16#F1#, 16#F2#);
        Ouvre_Fichier_Out;

        Dio.Write (File => F_Out, Item => Invalid_Groupe_Carte);
        delay 1.0;

        Ferme_Fichier_Out;
    end Invalide_Groupe_Carte;
end Lecteur;

E3 Meta Data

    nblk1=c
    nid=c
    hdr6=16
        [0x00] rec0=25 rec1=00 rec2=01 rec3=02a
        [0x01] rec0=25 rec1=00 rec2=04 rec3=00a
        [0x02] rec0=20 rec1=00 rec2=08 rec3=018
        [0x03] rec0=20 rec1=00 rec2=09 rec3=034
        [0x04] rec0=03 rec1=00 rec2=0a rec3=000
        [0x05] rec0=1a rec1=00 rec2=06 rec3=040
        [0x06] rec0=1c rec1=00 rec2=0b rec3=03c
        [0x07] rec0=21 rec1=00 rec2=02 rec3=02a
        [0x08] rec0=19 rec1=00 rec2=05 rec3=04e
        [0x09] rec0=1c rec1=00 rec2=07 rec3=02e
        [0x0a] rec0=1e rec1=00 rec2=03 rec3=000
        [0x0b] rec0=1e rec1=00 rec2=03 rec3=000
    tail 0x21742a44686286730964e 0x42a00088462060003
Free Block Chain:
  0xc: 0000  00 00 00 09 80 06 20 20 20 20 4e 6f 06 00 00 00  ┆          No    ┆