diff --git a/src/sillymachine.adb b/src/sillymachine.adb index 45a7242..5d9da1a 100644 --- a/src/sillymachine.adb +++ b/src/sillymachine.adb @@ -16,6 +16,23 @@ procedure sillymachine is Value : Byte; begin + + ValidHeader (0) := 6; + ValidHeader (1) := 148; + ValidHeader (2) := 32; + ValidHeader (3) := 118; + ValidHeader (4) := 101; + ValidHeader (5) := 114; + ValidHeader (6) := 121; + ValidHeader (7) := 95; + ValidHeader (8) := 115; + ValidHeader (9) := 105; + ValidHeader (10) := 108; + ValidHeader (11) := 108; + ValidHeader (12) := 121; + ValidHeader (13) := 0; + ValidHeader (14) := 0; + ValidHeader (15) := 0; if Argument_Count = 0 then New_Line(1); @@ -27,15 +44,22 @@ begin FileNameLength := Argument (1)'Length; FileName(1 .. FileNameLength) := Argument (1); - --Bin_IO.Open(F, Bin_IO.In_File, FileName); - --while not Bin_IO.End_Of_File (F) loop - -- Bin_IO.Read(F, Value); - -- Arr (I) := Value; - -- I := I + 1; - --end loop; - --for i in 0 .. 15 loop - -- Put_Line(Byte'Image(Arr (i))); - --end loop; + Bin_IO.Open(F, Bin_IO.In_File, FileName); + while not Bin_IO.End_Of_File (F) loop + Bin_IO.Read(F, Value); + + if ValidHeader (I) = Value then + Value := Value; -- useless line so compiler does not complain + else + New_Line(1); + Put_Line("Error: Please use a valid sm binary file"); + New_Line(1); + goto THE_END; + end if; + I := I + 1; + + end loop; + Put_Line("Header passed"); << THE_END >> end sillymachine;