#include <stdio.h>
#include "void.h"

#define cluster 128
#define size 640

int end;
void_memory * memory;
int array[160];

void_node * new (void_node * src, void (func)(void), int time){
	return void_schedule(src, func, time ,void_alloc(memory,sizeof(void_agenda)+sizeof(void_node)));
}

void rem (void_node * nud){
	void_free(memory, void_cancel(nud));
}

void func_one(void){	printf("one ");}
void func_two(void){	printf("two ");}
void func_tre(void){	printf("tree ");}
void func_spc(void){	printf("\n");}
void func_end(void){	end = 1;}

int main (void)
{
	printf ("new timer system ?\n");
//=====================================================================
	memory = void_seg ((void*)&array, 640);

	void_node * node_sentinel = new(0, func_end, 100);
	void_node * node_one = new(node_sentinel, func_one, 10 );
	void_node * node_two = new(node_sentinel, func_two, 20 );
	void_node * node_tre = new(node_sentinel, func_tre, 30 );
	void_node * node_spc = new(node_sentinel, func_spc, 10 );
	void_node * node_end = new(node_sentinel, func_end, 100);

	int time = 0;
	while (end == 0)
	{


		int idle = void_do(node_sentinel,time);
		if (idle != 0)
		{
			time += idle;
		}
		else
		{
			time += 1;
		}

		printf("%d \n",time);
	}

	rem(node_one);
	rem(node_two);
	rem(node_tre);
	rem(node_spc);
	rem(node_end);
	rem(node_sentinel);

//======================================================

	int i;
	for (i=0;i<160;i+=1)
	{
		printf ("%9d ",array[i]);
	}
	printf ("\n");
	return 0;
}
