/****************************************************************
*		タイプ別 ＯＢＪバンクデータ			*
****************************************************************/

#include <stdio.h>

#define unchar  unsigned char
#define unshort unsigned short

FILE           *fpr0, *fpr1, *fpw;

void 
typcnv(char *);

void 
main(int argc, char **argv)
{
	/****** 変数宣言 ******/

	char            obtp_file[100];

	/****** 引数チェック ******/
	if (argc != 2) {
		printf("Usage: ys_obtpcnv (obtp_file)\n");
		exit(1);
	}
	/****** タイプ別 ＯＢＪバンクデータ ファイルＯＰＥＮ ******/
	strcpy(obtp_file, argv[1]);
	strcat(obtp_file, ".ojd");
	if (!(fpr0 = fopen(obtp_file, "r"))) {
		printf("can't open (%s) !!\n", obtp_file);
		exit(1);
	}
	/****** ＯＢＪバンク コンバートデータ ファイルＯＰＥＮ ******/
	if (!(fpr1 = fopen("objtyp.dat", "r"))) {
		printf("can't open (objtyp.dat) !!\n");
		exit(1);
	}
	/****** コンバートデータ出力ファイルＯＰＥＮ ******/
	if (!(fpw = fopen("objtyp.lis", "w"))) {
		printf("can't open (objtyp.lis) !!\n");
		exit(1);
	}
	/****** ＯＢＪバンクデータ 変換 ******/
	typcnv(obtp_file);

	/****** ファイルＣＬＯＳＥ ******/
	fclose(fpr0);
	fclose(fpr1);
	fclose(fpw);
}

/****************************************************************
*		ＯＢＪバンクデータ 変換				*
****************************************************************/
void 
typcnv(char *obtp_file)
{
	/****** 変数宣言 ******/
	char            bank_tbl[128][10];

	int             f_max = 0;
	int             n;
	int             i, j, k = 0;

	/****** ラベル名 セット******/
	fprintf(fpw, "OBJCHRBK\tEQU\t$\n");
	fprintf(fpw, ";\t\t\t     [0]          [1]          [2]          [3]          [4]          [5]\n");

	/****** コンバート データ 読み込み ******/
	while (fgets(bank_tbl[f_max], 10, fpr1) != NULL) {
		n = strlen(bank_tbl[f_max]);
		bank_tbl[f_max][n - 1] = '\0';
		f_max++;
	}

	/****** コンバート!! ******/
	for (i = 0; i < 128; i++) {
		fprintf(fpw, "\t\tBYTE\t");
		for (j = 0; j < 6; j++) {
			if (j < 5)
				fprintf(fpw, "%s-CHR10,", bank_tbl[fgetc(fpr0)]);
			else
				fprintf(fpw, "%s-CHR10 ;[%02X]\n", bank_tbl[fgetc(fpr0)], i);
		}
		k++;
		if (k >= 16) {
			fprintf(fpw, ";\n");
			k = 0;
		}
	}
}
