/* AmyCalendar, frontier of magnifficent Amy-series :) */

#include <exec/types.h>
#include <exec/memory.h>
#include <libraries/dos.h>
#include <proto/all.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#define VERSTAG		"\0$VER: Calendar 1.0 (1.9.91)"

UBYTE	versiontag[]=VERSTAG;
BOOL	keepgoing=TRUE;
char	*months[]={"","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
char	aika[18];
unsigned int year=1978,day,month=1;
struct	DateStamp v;

void convert_datestamp(struct DateStamp);
void initgraphics(char *month,int year,int day,int firstday,int lastday);


void convert_datestamp(struct DateStamp v)
{	int dpm[]={31,28,31,30,31,30,31,31,30,31,30,31};
	int wd;

	year=1978;month=1;
	day=v.ds_Days;

	while(day>=((year%4==0)+365))
	{	day-=365+(year%4==0);
		year++;
	}
	while(day>=(dpm[month-1]+(year%4==0 && month==2)))
	{	day-=dpm[month-1]+(year%4==0 && month==2);
		month++;
	}
	day++;

	wd=((v.ds_Days-day)+1)%7;

	initgraphics(months[month],year,day,wd,dpm[month-1]);

	/*	This routine was partly coded by Pasi the Ojala (Yes, the same guy who
		caused the handler-scandal :-) */
}

void initgraphics(char *month,int year,int day,int firstday,int lastday)
{	char temp[80];
	int	 i,j=-1;

	sprintf(temp,"       %s %d            ",month,year);
	printf("%s\n",temp);
	printf(" Su Mo Tu We Th Fr Sa\n");
	for(i=0;i<firstday;i++)
		printf("   ");
	for(i=0;i<7-firstday;i++)
	{	sprintf(temp,"%2d",i+1);
		printf(" ");
		if(i+1==day)
			printf("\033[7m");
		printf("%s\033[0m",temp);
	}
	printf("\n");
	for(i=8-firstday;i<=lastday;i++)
	{	if(++j==7)
		{
			j=0;
			printf("\n");
		}
		sprintf(temp,"%2d",i);
		printf(" ");
		if(i==day)
			printf("\033[7m");
		printf("%s\033[0m",temp);
	}
	printf("\n");
}

int main(int argc, char *argv[])
{
	DateStamp(&v);
	convert_datestamp(v);
}
