#include"exec/types.h"
#include"exec/memory.h"
#include"exec/tasks.h"
#include"exec/nodes.h"
#include"exec/lists.h"
#include"exec/interrupts.h"
#include"exec/ports.h"
#include"exec/libraries.h"
#include"exec/execbase.h"
#include"intuition/intuition.h"


extern APTR AllocMem();
extern void task1(),task2();
extern struct Task *FindTask();
struct IntuiMessage *message;
int uscita = -1;

#define NUMENTRIES 4
#define ME_STACK 1
#define ME_TASK 0

   struct FakeMemEntry {
    ULONG fme_Reqs;
    ULONG fme_Length;
   };

   struct FakeMemList {
    struct Node fml_Node;
    UWORD fml_NumEntries;
    struct FakeMemEntry fml_ME[NUMENTRIES];
    } TaskMemTemplate = {
       { 0 },
      { NUMENTRIES },
        {
{MEMF_PUBLIC | MEMF_CLEAR,sizeof(struct Task) },
{MEMF_CLEAR,0 },
{MEMF_PUBLIC | MEMF_CLEAR,sizeof(struct Task) },
{MEMF_CLEAR,0 }    
        }
      };



void main()
  {

  struct Task *primo,*secondo;  

  secondo = (struct Task *)
	    CreateTask("task2",-20,task2,3000L);
   if (task2 == 0 )
       printf("notask2");
 
   printf("\n Aggiunto task2\n");

#undef  ME_STACK 
#undef  ME_TASK  
#define ME_STACK 3
#define ME_TASK 2

  primo = (struct Task *)
	  CreateTask("task1",-20,task1,3000L);  
   if (task1 == 0 )
       printf("notask1");

   printf("\n Aggiunto task1\n");
  	
     for (;uscita<0;)
	{
	 Delay(50);
	}

  Delay(50);

 printf("\nTask rimossi\n");

}
