#include "VS1033.h"
#include "SPI.h"
#include <mc9s12e128.h> /* derivative information */
#include "board.h"
unsigned char Left_Vol = 0x24;
unsigned char Right_Vol = 0x24;
#define CODE_SIZE 2278
const unsigned char atab[2278] = { 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x7,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6
};
const unsigned short dtab[2278] = { 0x8010, 0x2000, 0x0000, 0x0002, 0x0000, 0x0000, 0x0024, 0x0000,
0x0024, 0x2800, 0x4c40, 0x8030, 0x2919, 0xe240, 0x0000, 0x0510,
0x2919, 0xe140, 0x0000, 0x0010, 0x2800, 0x0dc0, 0x0000, 0x0041,
0x0000, 0x0001, 0x2800, 0xa880, 0x0006, 0x2016, 0x8039, 0x3e13,
0xb80f, 0x0000, 0x0055, 0x0030, 0x0497, 0x3f75, 0x780d, 0x0000,
0x03ce, 0x2400, 0x11ce, 0x0000, 0x0024, 0x0000, 0x0024, 0x2800,
0x1080, 0x0000, 0x02d5, 0x3f05, 0x4024, 0x0000, 0x0024, 0x2800,
0x1180, 0x0000, 0x00d5, 0x3f05, 0x4024, 0x3009, 0x1bcd, 0x2000,
0x0000, 0x36f3, 0x980f, 0x804b, 0x0000, 0x0401, 0x3e11, 0xb804,
0x3e13, 0x7805, 0x0000, 0x0244, 0x0000, 0x0046, 0x419a, 0x380e,
0x4cc2, 0xb80f, 0x0030, 0x0497, 0x2400, 0x1745, 0x0fff, 0xff45,
0x0000, 0x0024, 0x0000, 0x0024, 0x3f60, 0x4024, 0x3710, 0x4024,
0x3f01, 0x0024, 0xa152, 0x0024, 0x0000, 0x0024, 0x0000, 0x0024,
0x8cc2, 0x3e46, 0x36f3, 0x980f, 0x36f3, 0x5805, 0x2000, 0x0000,
0x36f1, 0x9804, 0x8015, 0x3e12, 0x3805, 0x2900, 0x19c0, 0x0000,
0x3fc5, 0x3602, 0x0024, 0x2000, 0x0000, 0xb500, 0x9bc5, 0x8062,
0x6492, 0xb808, 0x2900, 0x19c0, 0x6198, 0x3844, 0x3009, 0x1808,
0x4082, 0x1804, 0x0000, 0x0015, 0xf240, 0x3814, 0xf400, 0x4014,
0x3583, 0x3801, 0x3510, 0x4024, 0x0000, 0x0204, 0x2800, 0x1c11,
0x3500, 0x0024, 0xac42, 0x0024, 0x0000, 0x0020, 0x6848, 0x4800,
0xac42, 0x1814, 0x2000, 0x0000, 0xc100, 0x9bc1, 0x8075, 0x0006,
0x0197, 0x3e00, 0x5c00, 0x000f, 0xd641, 0xfe10, 0x0024, 0x0008,
0xd4c0, 0x4cb2, 0x0024, 0xf200, 0xbc00, 0x2000, 0x0000, 0x36f0,
0x4024, 0x8025, 0x2a00, 0x1f8e, 0x807e, 0x3e12, 0xb817, 0x3e10,
0xb800, 0x0030, 0x0a57, 0x3700, 0x0024, 0x0000, 0x2002, 0xb024,
0x0024, 0x002f, 0xe002, 0x2800, 0x22c5, 0x0006, 0x2017, 0x4024,
0x1c00, 0xf400, 0x4097, 0x2800, 0x2400, 0x3f00, 0x1bcc, 0x3700,
0xb804, 0x0000, 0x01c4, 0xa244, 0x0024, 0x4024, 0x0024, 0x3f00,
0x9bc4, 0x36f0, 0x9800, 0x0030, 0x0717, 0x3602, 0x8024, 0x2100,
0x0000, 0x3f05, 0xdbd7, 0x8095, 0x3e12, 0xb817, 0x3e12, 0x3815,
0x3e05, 0xb814, 0x3625, 0x0024, 0x0000, 0x800a, 0x3e10, 0x7802,
0x3e10, 0xf804, 0x3e11, 0x7806, 0x3e11, 0xf810, 0x3e14, 0x7813,
0x3e13, 0xf80e, 0x3e03, 0x4842, 0x2800, 0x4880, 0xb88a, 0x8bc3,
0x2900, 0x0540, 0x4588, 0x184c, 0xf400, 0x4007, 0x0000, 0x3940,
0x6700, 0x0024, 0x0000, 0x02c1, 0x2800, 0x4205, 0x478e, 0x0024,
0x0000, 0x0024, 0x2800, 0x4205, 0x0000, 0x0024, 0x2900, 0x0540,
0x4518, 0x184c, 0x0000, 0x0401, 0x3413, 0x0024, 0xb010, 0xb3c0,
0x0000, 0x0b80, 0x2800, 0x34c5, 0x6700, 0x0024, 0x0000, 0x0501,
0x2800, 0x34c5, 0x0000, 0x0024, 0x0000, 0x0686, 0x4518, 0x184c,
0x3009, 0x3852, 0x3e10, 0xf802, 0x3009, 0x3852, 0x2900, 0x19c0,
0x3009, 0x3840, 0xb284, 0x984c, 0x2900, 0x19c0, 0x4568, 0x4003,
0xb182, 0x134c, 0x2900, 0xd340, 0x4dc6, 0x10d2, 0x34d3, 0x1bcc,
0x3600, 0xd802, 0x3e10, 0x0024, 0x2900, 0x2540, 0x3434, 0x8024,
0x4080, 0x1bcc, 0x3009, 0x1812, 0x2800, 0x3458, 0x4d82, 0x0024,
0x2800, 0x4940, 0xc890, 0x1bcc, 0x2900, 0xe9c0, 0x0000, 0x4208,
0x0000, 0x3781, 0x3413, 0x0024, 0x3009, 0x13c0, 0xb010, 0x0024,
0x0000, 0x0024, 0x2800, 0x4215, 0x0000, 0x0024, 0x0000, 0x0206,
0x2900, 0x1880, 0x4568, 0x184c, 0x2900, 0xf380, 0x3613, 0x0024,
0x4080, 0x0024, 0x0000, 0x0024, 0x2800, 0x4205, 0x0000, 0x0024,
0x0006, 0x0610, 0x30f1, 0x0024, 0x6498, 0x0040, 0x4090, 0x23c4,
0x6090, 0x2000, 0x0000, 0x0001, 0x2800, 0x4215, 0x0000, 0x0024,
0x0006, 0x0010, 0xf150, 0x0024, 0x0000, 0x014e, 0x4010, 0x0024,
0xf400, 0x4011, 0x2400, 0x3c8e, 0x3110, 0x0024, 0x3110, 0x2040,
0x0006, 0x0253, 0x0000, 0x0706, 0x2900, 0x1880, 0x4568, 0x984c,
0x0000, 0x0686, 0x3b10, 0x184c, 0x3bf0, 0x7802, 0x0000, 0x0501,
0x4518, 0x3843, 0x0000, 0x0001, 0x3009, 0x3852, 0x2900, 0x19c0,
0x3009, 0x3840, 0xb284, 0x984c, 0x2900, 0x19c0, 0x4568, 0x4003,
0x4dc6, 0x0024, 0x2900, 0xd340, 0x0006, 0x01d2, 0x2800, 0x4940,
0xc890, 0x9b92, 0xf400, 0x4145, 0x0000, 0x0801, 0x451a, 0x0024,
0x0000, 0x7fc1, 0xb51a, 0x0024, 0x458a, 0x0024, 0x0000, 0x0024,
0x2800, 0x28d5, 0x0000, 0x0024, 0x6d96, 0x4490, 0x3023, 0x0024,
0x3009, 0x0000, 0x4090, 0x0024, 0x3009, 0x2000, 0x2800, 0x4895,
0x0000, 0x0024, 0x30e3, 0x08cc, 0x3009, 0x0040, 0x3009, 0x03c1,
0x4c82, 0x8842, 0x3009, 0x0bc3, 0x2800, 0x4898, 0x0000, 0x0024,
0x0006, 0x0611, 0x2800, 0x4940, 0x3100, 0x0b4c, 0x4d82, 0x184c,
0x2900, 0xe9c0, 0x0000, 0x28c8, 0x36f3, 0x4024, 0x36f3, 0xd80e,
0x36f4, 0x5813, 0x36f1, 0xd810, 0x36f1, 0x5806, 0x36f0, 0xd804,
0x36f0, 0x5802, 0x3405, 0x9014, 0x36f3, 0x0024, 0x36f2, 0x1815,
0x2000, 0x0000, 0x36f2, 0x9817, 0x8131, 0x3613, 0x0024, 0x3e12,
0xb817, 0x3e12, 0x3815, 0x3e05, 0xb814, 0x3615, 0x0024, 0x0000,
0x800a, 0x3e10, 0x3801, 0x0020, 0x0001, 0x3e10, 0xb803, 0x3e11,
0x3805, 0x3e11, 0xb807, 0x3e14, 0x3811, 0x0006, 0x0390, 0x0030,
0x03d1, 0x3e14, 0xb813, 0x3e13, 0xf80e, 0x3e03, 0x4024, 0x3001,
0x4024, 0x3100, 0x0024, 0xb010, 0x0024, 0x0000, 0x0401, 0x2800,
0x5385, 0x0000, 0x0024, 0x3100, 0x184c, 0xf292, 0x0024, 0xb012,
0x0024, 0x2910, 0x9a80, 0x3900, 0x4024, 0x0000, 0x0401, 0x3100,
0x0024, 0xb010, 0x0024, 0x0000, 0x1c00, 0x2800, 0x5885, 0x458a,
0x0024, 0x0000, 0x0024, 0x2800, 0x5b05, 0x0000, 0x0024, 0x0006,
0x1e50, 0x0006, 0x03d2, 0x0006, 0x79d3, 0x2910, 0x0700, 0x3a01,
0x4024, 0xb88a, 0x8c00, 0x3009, 0x2000, 0x0006, 0x7a10, 0x3009,
0x0000, 0x6090, 0x0024, 0x2800, 0x5b00, 0x3009, 0x2c00, 0x0000,
0x0024, 0x2800, 0x5b15, 0x0000, 0x0024, 0x0006, 0x1e53, 0x0006,
0x79d0, 0x0006, 0x03d2, 0x2910, 0x0700, 0x0000, 0x18c0, 0x3201,
0x4c00, 0x3009, 0x2000, 0x0020, 0x0001, 0x31d3, 0x0024, 0x3100,
0x0024, 0xb010, 0x0024, 0x0000, 0x0024, 0x2800, 0x6185, 0x4590,
0x0024, 0x3100, 0x184c, 0xf292, 0x0024, 0xb012, 0x0024, 0x3930,
0x4024, 0x003f, 0xe9c1, 0x3100, 0x0024, 0xb012, 0x0024, 0x2900,
0x0e40, 0x3900, 0x4024, 0x0000, 0x404e, 0x2400, 0x608e, 0x0000,
0x0024, 0x0000, 0x0401, 0x2900, 0x1300, 0xc890, 0x184c, 0x0000,
0x0024, 0x2900, 0x0d80, 0x0000, 0x4084, 0x4590, 0x0024, 0x0000,
0x0181, 0x2800, 0x6715, 0x0030, 0x03d0, 0x0000, 0x0085, 0x0006,
0x0250, 0x0006, 0x0451, 0x3010, 0x0024, 0x30f0, 0x4024, 0x0006,
0x0590, 0x6c92, 0x0024, 0x0000, 0x0020, 0xf2c2, 0x0024, 0x3910,
0x0024, 0x0006, 0x01c0, 0x39f0, 0x4024, 0x0006, 0x01d1, 0x38d0,
0x0440, 0x3810, 0x0441, 0x3810, 0x4400, 0x0000, 0x0181, 0x3800,
0x0024, 0x0030, 0x03d0, 0x30a0, 0x0024, 0xb010, 0x0024, 0x0000,
0x0081, 0x6012, 0x0024, 0x001d, 0x9941, 0x2800, 0x6c55, 0x0000,
0x0024, 0x3000, 0x0024, 0x6012, 0x0024, 0x0030, 0x0110, 0x2800,
0x6c55, 0x0000, 0x0024, 0x0006, 0x0651, 0x3000, 0x0024, 0x3100,
0x4024, 0x6014, 0x0024, 0x0000, 0x0024, 0x2800, 0x6c41, 0x0000,
0x0024, 0x3100, 0x0024, 0x3800, 0x0024, 0x0000, 0x0080, 0x6500,
0x0024, 0x0000, 0x00c0, 0x2800, 0x7495, 0x0000, 0x0241, 0x0006,
0x04d0, 0x0000, 0x1442, 0x3011, 0x984c, 0x30f1, 0xc024, 0x2900,
0xfa40, 0xaf1e, 0x0024, 0x0000, 0x00c1, 0x3010, 0x8024, 0x3010,
0xc024, 0x6d96, 0x0380, 0x4090, 0x2042, 0x3810, 0xc024, 0x2800,
0x73d5, 0x0000, 0x00c5, 0x418a, 0x004c, 0x3000, 0x0024, 0x4010,
0x0024, 0x3800, 0x0024, 0x30d4, 0x4024, 0x3009, 0x0440, 0x3810,
0x07c1, 0x3820, 0x4024, 0x30f4, 0x4024, 0x3123, 0x0024, 0x3009,
0x0400, 0x0006, 0x0411, 0xb880, 0x2000, 0x4580, 0x2400, 0x6500,
0x0024, 0x0000, 0x0100, 0x2800, 0x7a55, 0x0000, 0x0201, 0x003f,
0xc000, 0x2900, 0x1300, 0x3613, 0x0024, 0x0000, 0x3f81, 0x6012,
0x0024, 0x0006, 0x0410, 0x2800, 0x7855, 0x0000, 0x0000, 0x0000,
0x0105, 0x2800, 0xa400, 0x3800, 0x0024, 0x3000, 0x0024, 0x6090,
0x0024, 0x4080, 0x2000, 0x0000, 0x0024, 0x2800, 0xa418, 0x0000,
0x0024, 0x2900, 0x0d80, 0x0000, 0xa408, 0x6500, 0x0024, 0x0000,
0x0140, 0x2800, 0x97d5, 0x0006, 0x0450, 0x3010, 0x0024, 0x30f0,
0x4024, 0x4c82, 0x0024, 0x0000, 0xf601, 0x2800, 0x8d89, 0x0000,
0x0024, 0x291a, 0x22c0, 0x3613, 0x0024, 0x6012, 0x0024, 0x0000,
0x0041, 0x2800, 0x8d98, 0x0006, 0x0451, 0x0000, 0x0802, 0x0006,
0x79d0, 0x3111, 0x8012, 0xfe22, 0x07c7, 0x48b2, 0x0024, 0x6cfe,
0x0024, 0x0000, 0x0004, 0x2800, 0x8109, 0x6420, 0x0024, 0xb888,
0x0442, 0x6420, 0x07c3, 0x0000, 0x0024, 0x2800, 0x8558, 0x4290,
0x0024, 0x2400, 0x8500, 0x0000, 0x0024, 0x0000, 0x0401, 0x2900,
0x1300, 0xc890, 0x184c, 0x0001, 0x0001, 0x3a10, 0x0024, 0xf400,
0x4480, 0x6016, 0x0024, 0x0000, 0x0024, 0x2800, 0x8511, 0x0000,
0x0024, 0x0000, 0x0012, 0x6498, 0x0024, 0x0006, 0x79d0, 0x0000,
0x0041, 0x0006, 0x0451, 0x0006, 0x0413, 0x3111, 0xa012, 0xfe22,
0x07c7, 0x6fb2, 0x0024, 0x3910, 0x0024, 0x39f0, 0x4024, 0x0000,
0x0801, 0x3300, 0x0024, 0x4012, 0x0024, 0x0000, 0x4000, 0x6100,
0x2c01, 0x0006, 0x0450, 0x2800, 0x8a91, 0x0000, 0x0401, 0x2900,
0x1300, 0xc890, 0x184c, 0x2800, 0x8d80, 0x0000, 0x0085, 0x3010,
0x0024, 0x30f0, 0x4024, 0x4c82, 0x0024, 0x0000, 0xf601, 0x2800,
0x8d89, 0x0000, 0x0024, 0x291a, 0x22c0, 0x3613, 0x0024, 0x6012,
0x0024, 0x0006, 0x0451, 0x2800, 0x7e48, 0x0000, 0x0041, 0x0013,
0xaa40, 0x0030, 0x0850, 0x0006, 0x0451, 0x3800, 0x0024, 0x3110,
0x0024, 0x31f0, 0x4024, 0x4c82, 0x0024, 0x0000, 0x0181, 0x2800,
0xa419, 0x0030, 0x03d0, 0x2900, 0x0e40, 0x3613, 0x0024, 0x30d0,
0x0024, 0xb010, 0x0024, 0x0000, 0x0081, 0x6012, 0x0024, 0x0000,
0x0145, 0x2800, 0x9455, 0x6892, 0x0024, 0x0030, 0x0111, 0x0006,
0x0652, 0x3100, 0x0024, 0x6090, 0x0024, 0x689a, 0x2800, 0x0000,
0x1b00, 0x2910, 0x0700, 0x0000, 0xa408, 0x3000, 0x0024, 0x4012,
0x0024, 0x6592, 0x20c1, 0x3000, 0x0024, 0xb010, 0x0024, 0x6592,
0x0024, 0x6012, 0x0024, 0x0000, 0x1401, 0x2800, 0xa415, 0x0000,
0x0024, 0x3000, 0x0024, 0xc012, 0x0024, 0x2800, 0xa400, 0x3800,
0x4024, 0x6500, 0x0024, 0x0030, 0x0850, 0x2800, 0xa3d5, 0x0013,
0xaa40, 0x0000, 0xf601, 0x291a, 0x22c0, 0x3613, 0x0024, 0x6012,
0x0024, 0x0000, 0x5001, 0x2800, 0x9fd8, 0x0006, 0x0410, 0x0006,
0x79d0, 0x0000, 0x07ce, 0x2400, 0x9d8e, 0xb884, 0x8012, 0x0001,
0x0001, 0x3a10, 0x8024, 0xf400, 0x4480, 0x6016, 0x0024, 0x0000,
0x0024, 0x2800, 0x9d91, 0x0000, 0x0024, 0x0000, 0x0012, 0x0000,
0x0024, 0x0000, 0x5001, 0x0000, 0x0804, 0x0006, 0x79d0, 0x0006,
0x0411, 0x3100, 0x2012, 0x0006, 0x0410, 0x6090, 0x0024, 0x3900,
0x0024, 0x3000, 0x0024, 0x6012, 0x0024, 0x0000, 0x404e, 0x2800,
0xa391, 0x0013, 0xaa40, 0x2400, 0xa24e, 0x0000, 0x0024, 0x0000,
0x0401, 0x2900, 0x1300, 0xc890, 0x184c, 0x0000, 0x0024, 0x2910,
0x0700, 0x0000, 0x1940, 0x2900, 0x0d80, 0x0013, 0xaa40, 0x0030,
0x0850, 0x3800, 0x0024, 0x0030, 0x0490, 0x0000, 0x0000, 0x0006,
0x0391, 0x3800, 0x0024, 0x3901, 0x4024, 0x36f3, 0x4024, 0x36f3,
0xd80e, 0x36f4, 0x9813, 0x36f4, 0x1811, 0x36f1, 0x9807, 0x36f1,
0x1805, 0x36f0, 0x9803, 0x36f0, 0x1801, 0x3405, 0x9014, 0x36f3,
0x0024, 0x36f2, 0x1815, 0x2000, 0x0000, 0x36f2, 0x9817, 0x82a2,
0x0030, 0x0653, 0x0030, 0x0351, 0x0000, 0xfa00, 0x0030, 0x0810,
0x0030, 0x0012, 0x003f, 0xfdc3, 0x3e05, 0xb814, 0x3615, 0x0024,
0x0000, 0x800a, 0x3810, 0x0024, 0x0013, 0xaa40, 0xb880, 0x2000,
0x0006, 0x0190, 0x2900, 0x0400, 0x3900, 0x0024, 0x3200, 0x8004,
0xb234, 0x984c, 0xc020, 0x0024, 0x3a00, 0x0024, 0x0000, 0x00c0,
0x3be0, 0x0024, 0x0000, 0x02c0, 0x2910, 0x4500, 0x3b00, 0x0024,
0x2916, 0x4780, 0x3613, 0x2004, 0x2911, 0xcb40, 0x3613, 0x0024,
0x2914, 0x3340, 0x0000, 0x7d05, 0x2910, 0x9040, 0x6898, 0x184c,
0x4182, 0x084c, 0x0000, 0x0302, 0x2800, 0xb255, 0x3200, 0x0024,
0x003f, 0xfdc2, 0x2800, 0xb280, 0xb024, 0x0024, 0xc024, 0x0024,
0x3a00, 0x8d4c, 0xb880, 0x984c, 0x3b00, 0x0024, 0x2911, 0xfe80,
0x3b00, 0x0024, 0x0000, 0x7fce, 0x2400, 0xb50e, 0x0000, 0x0024,
0x2900, 0x0e40, 0x3613, 0x0024, 0x0000, 0x0024, 0x0000, 0x1002,
0x2900, 0xfa40, 0xbf8e, 0x184c, 0x4090, 0x4004, 0x0000, 0x0024,
0x2800, 0xb3d5, 0x0000, 0x0024, 0x0000, 0x1045, 0x4584, 0x184c,
0x2900, 0xfa40, 0xbf8e, 0x0024, 0x4080, 0x0024, 0x0000, 0x0024,
0x2800, 0xbac5, 0x0000, 0x0024, 0x6498, 0x0024, 0x4480, 0x0024,
0x0000, 0x0024, 0x2800, 0xb3c8, 0x0000, 0x0024, 0x2800, 0xb740,
0x0000, 0x0024, 0x0000, 0x1402, 0x0000, 0x8006, 0x2900, 0xfa40,
0xb88e, 0x184c, 0x4080, 0x0024, 0x0000, 0x0024, 0x2800, 0xb3d5,
0x0000, 0x0024, 0x2901, 0x0380, 0x3613, 0x0024, 0x4080, 0x0024,
0x0000, 0x0802, 0x2800, 0xcb95, 0x0030, 0x03d0, 0x3000, 0x0024,
0xb020, 0x0024, 0x0000, 0x0024, 0x2800, 0xc005, 0x0000, 0x0024,
0x2800, 0xc0c0, 0xf290, 0x038c, 0x003f, 0xffc4, 0x2901, 0x1ac0,
0x3613, 0x038c, 0x3820, 0x184c, 0x6894, 0x0000, 0xb020, 0x0024,
0x0000, 0x0024, 0x2800, 0xc485, 0x0000, 0x0024, 0x3009, 0x3841,
0x2900, 0x1d40, 0x3009, 0x3840, 0x4084, 0x038c, 0x291d, 0x21c0,
0x3000, 0x1bcc, 0x0030, 0x0310, 0x4180, 0x9801, 0x3800, 0x0024,
0x0030, 0x0310, 0xf298, 0x0002, 0xb244, 0x0024, 0x2901, 0x1ac0,
0x4288, 0x2002, 0x4080, 0x00cc, 0x0000, 0x0182, 0x2800, 0xcb98,
0x0000, 0x0024, 0x3000, 0x0024, 0xb020, 0x0024, 0x0000, 0x0102,
0x6024, 0x0024, 0x0006, 0x0391, 0x2800, 0xc9d5, 0x003f, 0xefc2,
0x0000, 0x0402, 0x3000, 0x0024, 0xc024, 0x0024, 0x3800, 0x8024,
0x003f, 0xefc2, 0x3000, 0x0024, 0xb020, 0x0024, 0x0000, 0x0202,
0xc020, 0x0024, 0x6890, 0x2000, 0x2800, 0xcc80, 0x3900, 0x0024,
0x0030, 0x0310, 0xb880, 0x0024, 0x2900, 0x0d80, 0x3800, 0x0024,
0x0030, 0x0050, 0x003f, 0xfec2, 0x0006, 0x7e51, 0x0006, 0x7a92,
0x0030, 0x0693, 0x3000, 0x0024, 0xb024, 0x0024, 0x0002, 0x8000,
0x3830, 0xa400, 0x0001, 0x0000, 0x3009, 0x2800, 0x0000, 0x08c0,
0xb880, 0x2c00, 0x3800, 0x0024, 0x0006, 0x0650, 0x3800, 0x0024,
0x2913, 0x4280, 0x3613, 0x0024, 0x4080, 0x184c, 0x0000, 0x0024,
0x2800, 0xd2d5, 0x0000, 0x0024, 0x2919, 0x6e40, 0x0000, 0xd088,
0x3613, 0x0024, 0x2911, 0xfe80, 0x0000, 0xd088, 0x834d, 0x3e10,
0x7807, 0x3e12, 0x380a, 0x3e11, 0x3805, 0x3e14, 0xf811, 0x0006,
0x02d1, 0x31a0, 0x084c, 0x2800, 0xde00, 0xb182, 0x3806, 0x6d96,
0x05c0, 0x4080, 0x184c, 0x0003, 0xffc7, 0x2800, 0xd785, 0x3223,
0x050c, 0x2900, 0x1880, 0x489c, 0x44c4, 0x2800, 0xd940, 0xbcfe,
0x0640, 0x2900, 0x19c0, 0x478a, 0x44c4, 0x6098, 0x0024, 0x0000,
0x0001, 0x2800, 0xd955, 0x4c8e, 0x0640, 0x489c, 0x4147, 0x3009,
0x0804, 0x4408, 0x070c, 0x4408, 0xab84, 0x0000, 0x0024, 0x2800,
0xdb41, 0x6fda, 0x0401, 0x0000, 0x0024, 0x2800, 0xe145, 0x4f86,
0x0024, 0x4898, 0x05cc, 0x0003, 0xffc5, 0x6fea, 0x4480, 0x0006,
0x1d84, 0x2800, 0xe785, 0x6048, 0x084c, 0x3143, 0x0024, 0x2800,
0xe798, 0xb182, 0x0680, 0x3233, 0x0024, 0xffb0, 0x084c, 0x48ba,
0xab81, 0xffa0, 0x0440, 0x44ba, 0x05c1, 0x4ce2, 0x0684, 0x000c,
0x8c45, 0x645a, 0xa840, 0x0000, 0x0024, 0x2800, 0xe3d5, 0x3193,
0x2bc1, 0xc998, 0x088c, 0x2800, 0xe780, 0x3009, 0x2bc4, 0x4182,
0x44c6, 0x0000, 0x0080, 0x2800, 0xe285, 0x460c, 0x0024, 0x460c,
0x0024, 0x0000, 0x7fc0, 0xb60c, 0x0024, 0xf400, 0x4193, 0x2800,
0xd555, 0x0000, 0x0024, 0x0000, 0x3fc6, 0xb26c, 0x0440, 0x4080,
0x184c, 0x0fff, 0xfe04, 0x2800, 0xe645, 0x0000, 0x0021, 0x0000,
0x1fc6, 0xb26c, 0x0024, 0x466c, 0x0024, 0x0fff, 0xfe44, 0xad42,
0x0444, 0x466c, 0x0785, 0x4ce2, 0x4193, 0x2900, 0xe9c0, 0x0000,
0xd548, 0x36f1, 0x8884, 0x0020, 0x0005, 0xc458, 0x4480, 0x32e3,
0x1811, 0x36f4, 0xe804, 0x36f1, 0x1805, 0x36f2, 0x180a, 0x2000,
0x0000, 0x36f0, 0x5807, 0x83a7, 0x3e10, 0xb806, 0x3e12, 0x380a,
0x0000, 0x0246, 0x4112, 0xb812, 0xf212, 0x3847, 0x3e13, 0xf80e,
0xac6e, 0x388d, 0x2900, 0xfa40, 0x0000, 0x1442, 0x003f, 0xc000,
0x2900, 0x1300, 0x0000, 0x0201, 0x0000, 0x3fc2, 0x6024, 0x0024,
0x0000, 0x3f82, 0x2800, 0xec05, 0x6024, 0x184c, 0x0000, 0x0140,
0x2900, 0x0e55, 0x0000, 0xf208, 0x0000, 0x3fce, 0x2400, 0xf00e,
0x0000, 0x0012, 0x2900, 0x12c0, 0x003f, 0xffc0, 0x3a10, 0x184c,
0x003f, 0xffc0, 0x2900, 0x1300, 0x0000, 0x0401, 0x2900, 0x0e40,
0x3613, 0x0024, 0x2900, 0x0e40, 0xb080, 0x184c, 0x36f3, 0x4024,
0x36f3, 0xd80e, 0x36f1, 0xd812, 0x36f2, 0x180a, 0x2000, 0x0000,
0x36f0, 0x9806, 0x83ce, 0x4c87, 0xe2e3, 0x0000, 0x3fc1, 0xb316,
0x0024, 0x0000, 0xf755, 0xf400, 0x5544, 0x4c82, 0x0024, 0x0000,
0x0024, 0x2800, 0xf6c5, 0x0000, 0x0024, 0xdcd2, 0x0024, 0x0000,
0x0024, 0x2800, 0xf495, 0x0fff, 0xffc0, 0x2000, 0x0000, 0x36f0,
0x9803, 0x0033, 0x504d, 0x0033, 0x504d, 0x0033, 0x504d, 0x0056,
0x4157, 0x0041, 0x4d57, 0x0056, 0x4d57, 0x0046, 0x5341, 0x0043,
0x4141, 0x0034, 0x504d, 0x0041, 0x344d, 0x0044, 0x494d, 0x0000,
0x0000, 0x83e9, 0x3e10, 0x7803, 0x3e24, 0x3808, 0x2900, 0x0e40,
0x0030, 0x0650, 0x2900, 0x0e40, 0xf296, 0x984c, 0xf236, 0x0000,
0x0fff, 0xff41, 0xb012, 0x0024, 0xf236, 0x2001, 0x003f, 0xc000,
0x2900, 0x1300, 0x0000, 0x0201, 0x0000, 0x0201, 0x2900, 0x1300,
0xa210, 0x184c, 0x2900, 0x12c0, 0x4780, 0x184c, 0x2900, 0x12c0,
0x4680, 0x188c, 0x0000, 0x0201, 0x2900, 0x1300, 0x0025, 0x4000,
0x2801, 0x0100, 0x0001, 0xf402, 0x2900, 0x1300, 0x4680, 0x184c,
0x4294, 0x0024, 0x0000, 0x2006, 0x2801, 0x02c5, 0xb06c, 0x0024,
0x003f, 0xc006, 0x2801, 0x0095, 0x0000, 0x0201, 0x36f4, 0x1808,
0x2000, 0x0000, 0x36f0, 0x5803, 0x840e, 0x3e11, 0xf812, 0x3e10,
0x7802, 0x3e10, 0xf804, 0x3e11, 0x7806, 0x0006, 0x01d2, 0xbc82,
0x380a, 0x3a10, 0x3888, 0x2900, 0xe9c0, 0x3af0, 0x4024, 0x2900,
0x1880, 0x0000, 0x0d84, 0x0010, 0x5184, 0x000c, 0x5505, 0x6ce2,
0x18cc, 0x0000, 0x0024, 0x2801, 0x0a05, 0x000c, 0xd505, 0x2900,
0x1880, 0x0000, 0x1484, 0x0010, 0x5184, 0x6ce2, 0x184c, 0x0000,
0x0024, 0x2801, 0x0a05, 0x0000, 0x7184, 0x2900, 0x1880, 0x3613,
0x0024, 0x3a10, 0x0024, 0x2900, 0xe9c0, 0x3a50, 0x4024, 0x2900,
0x19c0, 0x0000, 0x0e44, 0x3af0, 0x0024, 0x2900, 0x19c0, 0x0000,
0x0444, 0x408e, 0x2a40, 0x0000, 0x02c4, 0x2801, 0x0d45, 0x6892,
0x0acc, 0xb882, 0x0024, 0x2900, 0x19c0, 0x3a70, 0x584c, 0x0000,
0x2001, 0xff82, 0x090c, 0x48b2, 0x184c, 0x2900, 0x0540, 0x0000,
0x0344, 0xff90, 0x4046, 0x48b6, 0x984c, 0x3ac0, 0x8024, 0x2900,
0x19c0, 0x0000, 0x0384, 0x3211, 0x0024, 0xffe0, 0x0a45, 0x4eb2,
0x184c, 0x3a10, 0x0024, 0xb182, 0x2841, 0x2900, 0x19c0, 0x0000,
0x0584, 0x4080, 0x2840, 0x3ac0, 0x584c, 0x2801, 0x1515, 0x3230,
0x0024, 0x4080, 0x1bcc, 0x0000, 0x0904, 0x2801, 0x1945, 0x0000,
0x02c0, 0x2900, 0x1880, 0x3613, 0x0024, 0x3a10, 0x184c, 0x3af0,
0x4024, 0x2900, 0x0540, 0x0000, 0x0404, 0xffe0, 0x0842, 0x48ba,
0x0b43, 0xffb8, 0x4103, 0x48b2, 0x0844, 0xffa6, 0x09c5, 0x40b2,
0x888c, 0x4cea, 0x0a42, 0xb182, 0x41c0, 0x0fff, 0xff07, 0xac72,
0x4043, 0x4ce2, 0x0bcc, 0x4224, 0x2844, 0x6cd2, 0x2845, 0xb880,
0x2840, 0x3a00, 0x4024, 0x36f2, 0x9808, 0x36f1, 0x5806, 0x36f0,
0xd804, 0x36f0, 0x5802, 0x2000, 0x0000, 0x36f1, 0xd812, 0x846b,
0x3e10, 0x7802, 0x3e12, 0x3810, 0x3e10, 0xf812, 0x0006, 0x0012,
0x3230, 0x0024, 0x4080, 0xb851, 0x0006, 0x01d1, 0x2801, 0x1e05,
0x0020, 0x0003, 0x0000, 0x0082, 0xb886, 0x4452, 0x2900, 0xd340,
0x0001, 0x20c8, 0x3210, 0x1bcc, 0x3260, 0x4024, 0xc132, 0x088c,
0x3200, 0x8024, 0xf224, 0xa440, 0xb182, 0xa7c1, 0xf224, 0x4450,
0xf224, 0x00cc, 0xf224, 0xa3c1, 0x3009, 0x2082, 0xf400, 0x4400,
0x0006, 0x05d5, 0xf400, 0x4452, 0xb884, 0x3444, 0x3d00, 0x8024,
0x2900, 0x2540, 0x3e10, 0x0024, 0x3009, 0x1bd1, 0x36f0, 0xd812,
0x36f2, 0x1810, 0x2000, 0x0000, 0x36f0, 0x5802
};
void DSP_Init() {
static unsigned char garbage = 0; static unsigned long i = 0;
static unsigned short data_in = 0;
SPI_Init(1);
DDR_DSP_RESET = 1; DSP_RESET = 0; for(i=0; i<10000; i++){}
DSP_RESET = 1; for(i=0; i<100000; i++){}
DSP_Send(0x0000,BASS);
DSP_Send(0x0000,DECODE);
DSP_Send(0x4000,CLOCKF);
DSP_Send(0x0000,AUDATA);
for(i = 0; i < 10000; i++);
data_in = Left_Vol;
data_in = (data_in<<8) + Right_Vol;
DSP_Send(data_in,VOL);
data_in = DSP_Get(VOL);
i = 0;
do {
DSP_Send(dtab[i],atab[i]);
data_in = DSP_Get(atab[i]);
} while(i < CODE_SIZE && data_in == dtab[i++]);
data_in = DSP_Get(AICTRL3);
DSP_Send(data_in,AICTRL3);
DSP_Send(0x0030,AIADDR);
}
void DSP_Init_Direct() {
static unsigned char garbage = 0; static unsigned long i = 0;
static unsigned short data_in = 0;
SPI_Init(1);
DDR_DSP_RESET = 1; DSP_RESET = 0; for(i=0; i<10000; i++){}
DSP_RESET = 1; for(i=0; i<100000; i++){}
DSP_Send(0x4000,CLOCKF);
DSP_Send(0x0000,AUDATA);
for(i = 0; i < 10000; i++);
data_in = Left_Vol;
data_in = (data_in<<8) + Right_Vol;
DSP_Send(data_in,VOL);
data_in = DSP_Get(VOL);
}
void DSP_Play_Song(unsigned short songNum) {
DSP_Send(songNum+0x8000,AICTRL0);
}
void DSP_Play_Pause(void) {
unsigned short data = DSP_Get(AICTRL3);
data ^= 0x0010;
DSP_Send(data,AICTRL3);
}
void DSP_Send(unsigned short data, unsigned char reg) {
unsigned char garbage;
unsigned char LB = (unsigned char) data;
unsigned char HB = (unsigned char) data >>8;
SPI_CSLow(DSP_DEVICE);
garbage = SPI_Data(COMMAND_WRITE);
garbage = SPI_Data(reg);
garbage = SPI_Data((unsigned char) (data >>8));
garbage = SPI_Data((unsigned char) data);
for(garbage = 0; garbage != 50; garbage++);
SPI_CSHigh(DSP_DEVICE);
for(garbage = 0; garbage != 100; garbage++);
}
unsigned short DSP_Get(unsigned char reg) {
unsigned char garbage;
unsigned short data;
SPI_CSLow(DSP_DEVICE);
garbage = SPI_Data(COMMAND_READ);
garbage = SPI_Data(reg);
data = SPI_Data(garbage);
data = SPI_Data(garbage);
data = data<<8;
data += SPI_Data(garbage);
for(garbage = 0; garbage != 50; garbage++);
SPI_CSHigh(DSP_DEVICE);
return data;
}
int DSP_Test2(void) {
unsigned long i;
DDR_DSP_CS = 1;
DSP_CS = 1;
DDR_DSP_RESET = 1;
DSP_RESET = 0;
for(i=0; i<10000; i++);
DSP_RESET = 1;
for(i=0; i<100000; i++);
}
int DSP_Test3(void)
{
unsigned char dummy;
DSP_Send(0x0004,0x02);
return 1;
}
int DSP_Test4(void) {
unsigned char dummy;
long i;
static unsigned short VolReg = 2;
unsigned short VolReg_Sent = 0xF0F1;
DSP_Send(VolReg_Sent,VOL);
VolReg = DSP_Get(VOL);
#if DEBUG
SCI_OutString("VolReg_sent = "); SCI_OutUHex((unsigned long)VolReg_Sent&0xFFFF);SCI_OutString("\n\r");
SCI_OutString(" VolReg = "); SCI_OutUHex((unsigned long)VolReg&0xFFFF);SCI_OutString("\n\r");
#endif
}
int DSP_Test5(void) {
unsigned char dummy;
unsigned long i;
static unsigned short VolReg = 2;
unsigned short VolReg_Sent = 0x0000;
unsigned short received_reg;
DSP_Send(0x0C20,MMODE);
received_reg = DSP_Get(MMODE);
if(received_reg == 0x0C20)
PTP_PTP0 = 1;
for(i=0; i<1000000; i++){
asm nop
}
for(i=0; i<5; i++);
dummy = SPI_Data((unsigned char)(0x53));
dummy = SPI_Data((unsigned char)(0xEF));
dummy = SPI_Data((unsigned char)(0x6E));
dummy = SPI_Data((unsigned char)(0x7F));
dummy = SPI_Data((unsigned char)(0x00));
dummy = SPI_Data((unsigned char)(0x00));
dummy = SPI_Data((unsigned char)(0x00));
dummy = SPI_Data((unsigned char)(0x00));
for(i=0; i<10; i++);
for(i=0; i<1000000; i++){
asm nop
}
dummy = SPI_Data((unsigned char)(0x45));
dummy = SPI_Data((unsigned char)(0x78));
dummy = SPI_Data((unsigned char)(0x69));
dummy = SPI_Data((unsigned char)(0x74));
dummy = SPI_Data((unsigned char)(0x00));
dummy = SPI_Data((unsigned char)(0x00));
dummy = SPI_Data((unsigned char)(0x00));
dummy = SPI_Data((unsigned char)(0x00));
SPI_CSLow(DSP_DEVICE);
for(i=0; i<10000; i++);
SPI_CSHigh(DSP_DEVICE);
for(i=0; i<1000000; i++){
asm nop
}
}