#include <stdio.h>

#define		unshort		unsigned short
#define		unchar		unsigned char

FILE		*fpw0,*fpr0;

int		i,j,k,l,size;

unshort		pnl_data[32896];

char		READ_FILE_NAME_COM[256][100];
char		READ_FILE_NAME[256][100];

main()
{
	if(( fpr0 = fopen( "pnl1.TBL","r" )) == NULL ){
		printf( "pnl1.TBL not open \n" );
		exit(1);
	}

	size=0;

	while( fgets( &READ_FILE_NAME_COM[size][0],70,fpr0 ) != NULL ){
		for( l=0;l<100;l++ ) READ_FILE_NAME[size][l]='\0';
		strcpy( &READ_FILE_NAME[size][0],&READ_FILE_NAME_COM[size][0] );
		for( l=0;l<100;l++ ) if( READ_FILE_NAME[size][l] == 0x0a ) READ_FILE_NAME[size][l]='\0';
		size++;
	}

	fclose( fpr0 );

	if(( fpw0 = fopen( "../asm_sy/sy_unit1.asm","w" )) == NULL ){
		printf( "sy_unit1.asm file not found\n" );
		exit(1);
	}

	fprintf( fpw0,";************************************************************************\n" );
	fprintf( fpw0,";*\t\t\t\t\t\t\t\t\t*\n" );
	fprintf( fpw0,";*\ttitle name\t: mchip game\t\t\t\t\t*\n" );
	fprintf( fpw0,";*\tproccess\t: game unit data\t\t\t\t*\n" );
	fprintf( fpw0,";*\tfile name\t: sy_unit\t\t\t\t\t*\n" );
	fprintf( fpw0,";*\t\t\t\t\t\t\t\t\t*\n" );
	fprintf( fpw0,";************************************************************************\n" );
	fprintf( fpw0,";\n;\n;\n;\n" );
	fprintf( fpw0,";------------------------------------------------------------------------\n" );
	fprintf( fpw0,";-\t\tglobal symbol\t\t\t\t\t\t-\n");
	fprintf( fpw0,";------------------------------------------------------------------------\n" );
	fprintf( fpw0,"\t\tGLB\tUNDTADD,UNDATA\n" );
	fprintf( fpw0,";\n" );
	fprintf( fpw0,";************************************************************************\n");
	fprintf( fpw0,";*\t\t\t\t\t\t\t\t\t*\n");
	fprintf( fpw0,";*\t\tdata start\t\t\t\t\t\t*\n");
	fprintf( fpw0,";*\t\t\t\t\t\t\t\t\t*\n");
	fprintf( fpw0,";************************************************************************\n");
	fprintf( fpw0,";\n;\n" );
	fprintf( fpw0,";------------------------------------------------------------------------\n" );
	fprintf( fpw0,";-\t\tunit data address\t\t\t\t\t-\n");
	fprintf( fpw0,";------------------------------------------------------------------------\n" );
	fprintf( fpw0,"\t\tORG\t078000H\n;\n;\n\t\tEXTEND\n;\n;\n");
	fprintf( fpw0,"UNDTADD\t\tEQU\t$\n" );

	for( i=0;i<size;i++ ){

		fprintf( fpw0,"\t\tWORD\tUNITD%02X-UNDATA\t ;[%02X]\n",i,i );
	}

	fprintf( fpw0,";\n;\n" );
	fprintf( fpw0,";------------------------------------------------------------------------\n" );
	fprintf( fpw0,";-\t\tunit data\t\t\t\t\t\t\t\t-\n" );
	fprintf( fpw0,";------------------------------------------------------------------------\n" );
	fprintf( fpw0,"\t\tORG\t078200H\n;\n;\n" );
	fprintf( fpw0,"UNDATA\t\tEQU\t$\n" );

	for( k=0;k<size;k++ ){

		if(( fpr0 = fopen( &READ_FILE_NAME[k][0],"r" )) == NULL ){
			printf( "%s not found\n",&READ_FILE_NAME[k][0] );
			exit(1);
		}

		while(( fread( pnl_data,sizeof(unshort),32896,fpr0 )) == NULL ){
			printf( "read error\n" );
			exit(1);
		}

		fclose( fpr0 );

		fprintf( fpw0,"UNITD%02X\t\tEQU\t$\n",k );

		j=0;

		for( i=128;pnl_data[i]!=0x13ef || i&0xff==0;i++ ){
			fprintf( fpw0,"\t\tWORD\t%05XH\t\t; %02X\n",pnl_data[i],j );
			j++;
		}

		fprintf( fpw0,";\n" );

	}

	fprintf( fpw0,";\n;\n;\n;\n\t\tEND\n" );

	fclose( fpw0 );

}
