Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with Ada.Text_IO; with Ada.Integer_Text_IO;
- use Ada.Text_IO; use Ada.Integer_Text_IO;
- procedure a1 is
- task type processor is
- entry reset (pNum : in Integer;
- parent : in Integer);
- entry ack;
- end processor;
- pArray : array (1..120) of processor;
- task body processor is
- beenReset : Integer := 0; --Has process been reset? Default to false (0)
- Acks : Integer := 0; --Number of Acks this process has received
- resetBool : Boolean := False;
- temp, temp2 : Integer := 0;
- begin
- while Acks < 4 loop
- select
- when beenReset = 0 =>
- accept reset (pNum : in Integer;
- parent : in Integer) do
- beenReset := 1;
- resetBool := True;
- temp := pNum;
- Put ("Task #/Acks:"); Put (temp); Put (Acks);
- New_Line;
- end reset;
- or
- when beenReset > 0 =>
- accept reset (pNum : in Integer;
- parent : in Integer) do
- temp := pNum;
- pArray(parent).ack;
- Put ("Autoack Task #/Acks:"); Put (temp); Put (Acks);
- New_Line;
- end reset;
- or
- accept ack do
- Acks := Acks + 1;
- Put ("# Acks"); Put (Acks);
- New_Line;
- end ack;
- end select;
- Put ("Outside select, resetBool/beenReset");
- if resetBool then Put ("true"); Put (beenReset); New_Line;
- else Put ("false"); Put (beenReset); New_Line;
- end if;
- if resetBool then
- resetBool := False;
- delay 0.01;
- --reset left processor
- temp2 := temp;
- temp := temp2 - 1;
- if temp mod 10 = 0 then
- temp := temp + 10;
- end if;
- pArray(temp).reset(temp,temp2);
- delay 0.0118;
- --reset right processor
- temp := temp2 + 1;
- if temp mod 10 = 1 then
- temp := temp - 10;
- end if;
- pArray(temp).reset(temp,temp2);
- delay 0.0111;
- --reset above processor
- temp := temp2 - 10;
- if temp < 1 then
- temp := temp + 120;
- end if;
- pArray(temp).reset(temp,temp2);
- delay 0.0121;
- --reset below processor
- temp := temp2 - 1;
- if temp > 120 then
- temp := temp - 120;
- end if;
- pArray(temp).reset(temp,temp2);
- delay 0.0139;
- end if;
- end loop;
- end processor;
- begin
- Put_Line ("Hello world");
- pArray(1).reset(pNum => 1,parent => 1);
- end a1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement