#include <string.h>
#include "ses_v3.h"

#define _DEBUG

/*-------------本来はヘッダファイルの内容 (開始)-----------------*/
#ifdef _WIN32
#pragma pack(push, 1)
#endif 

#define IO_PACKAGE_HEADER_SIZE 2 //IO package header length:tag+len
#define MAX_IO_DATA_SIZE	0xf8 // maximum IO data size

/* common error code. */
#define ERR_SUCCESS				0x00	// success
#define ERR_SES					0x80	// SES function execution error
#define ERR_INVALID_PARAMETER	0x81	// invalid parameter

/* IO package */
typedef struct _IO_PACKAGE
{	
	unsigned char tag;	
	unsigned char len;
	unsigned char buff[MAX_IO_DATA_SIZE];
} IO_PACKAGE;

#ifdef _WIN32
#pragma pack(pop)
#endif
/*-------------本来はヘッダファイルの内容 (終了)-----------------*/

/* global variable defination. */
unsigned char last_ses_error = 0; /* last SES error */
IO_PACKAGE out_pkg;  /* output package */
IO_PACKAGE *output = &out_pkg; 
IO_PACKAGE *input = (IO_PACKAGE *)pbInBuff; /* input package */

unsigned char code table[9][9] = 
{
 1,  2,  3,  4,  5,  6,  7,  8,  9,
 2,  4,  6,  8, 10, 12, 14, 16, 18,
 3,  6,  9, 12, 15, 18, 21, 24, 27,
 4,  8, 12, 16, 20, 24, 28, 32, 36,
 5, 10, 15, 20, 25, 30, 35, 40, 45,
 6, 12, 18, 24, 30, 36, 42, 48, 54,
 7, 14, 21, 28, 35, 42, 49, 56, 63,
 8, 16, 24, 32, 40, 48, 56, 64, 72,
 9, 18, 27, 36, 45, 54, 63, 72, 81
};

void main()
{
	unsigned char line = input->buff[0]-1;
	unsigned char column = input->buff[1]-1;
	
	output->buff[0] = table[line][column]; /* lookup in table */
	output->tag = ERR_SUCCESS;
	output->len = sizeof(char);
	
	_set_response(IO_PACKAGE_HEADER_SIZE+output->len, (unsigned char *)output);
	_exit();  
}