|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 12288 (0x3000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Lecteur_Version1, seg_041e0b
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Io;
with System;
with Terminal_Specific;
with Text_Io;
with Device_Independent_Io;
with Unchecked_Conversions;
with Constantes;
package body Lecteur_Version1 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_Version1;
nblk1=b
nid=b
hdr6=14
[0x00] rec0=25 rec1=00 rec2=01 rec3=018
[0x01] rec0=24 rec1=00 rec2=0a rec3=070
[0x02] rec0=23 rec1=00 rec2=09 rec3=006
[0x03] rec0=22 rec1=00 rec2=08 rec3=05a
[0x04] rec0=1a rec1=00 rec2=07 rec3=042
[0x05] rec0=1c rec1=00 rec2=06 rec3=046
[0x06] rec0=21 rec1=00 rec2=05 rec3=00a
[0x07] rec0=1a rec1=00 rec2=04 rec3=008
[0x08] rec0=1b rec1=00 rec2=03 rec3=03e
[0x09] rec0=1d rec1=00 rec2=02 rec3=001
[0x0a] rec0=aa rec1=4d rec2=60 rec3=000
tail 0x21742a9e686285fa2f1b4 0x42a00088462060003
Free Block Chain:
0xb: 0000 00 00 00 04 80 01 20 01 01 80 1b af 40 00 3b 09 ┆ @ ; ┆