Embedded system Fun Blog
























































Find out all the best information, libraries and circuit about the latest Embedded systems.

Saturday 7 January 2012

VS1011 MP3 Decoder Module: vs10xx.c source

 
.from: http://www.google.com/codesearch#hdIfIxYTHhY/trunk/Sources/vs10xx.c&q=VS1011.c&type=cs&l=2

/*  Phillip Duran
    VS1011.c
    A low level driver to intialize and operate the VS1011 DSP

    Updated: 2/21/08
*/

#include "VS1033.h"
#include "SPI.h"
#include <mc9s12e128.h>     /* derivative information */
#include "board.h"


// left and right volume levels
// volume grows louder and levels approach zero (0)
unsigned char Left_Vol = 0x24;
unsigned char Right_Vol = 0x24;

#define CODE_SIZE 2278
const unsigned char atab[2278] = { // Register addresses
    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] = { // Data to write
    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
};

/*#define CODE_SIZE 2316
const unsigned char atab[2316] = { // Register addresses
    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, 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, 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, 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, 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[2316] = { // Data to write
    0x8010, 0x2000, 0x0000, 0x0002, 0x0000, 0x0000, 0x0024, 0x0000,
    0x0024, 0x2800, 0x48c0, 0x8030, 0x2919, 0xe240, 0x0000, 0x0510,
    0x2919, 0xe140, 0x0000, 0x0010, 0x2800, 0x0dc0, 0x0000, 0x0041,
    0x0000, 0x0001, 0x2800, 0x9d00, 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, 0x807e, 0x0000, 0x07c0, 0x0030, 0x0497, 0x0000, 0x0055,
    0x4090, 0x3c15, 0x0000, 0x0015, 0x2800, 0x2014, 0x3f05, 0x4024,
    0x2000, 0x0000, 0x0000, 0x0024, 0x8087, 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, 0x4500, 0xb88a,
    0x8bc3, 0x2900, 0x0540, 0x4588, 0x184c, 0xf400, 0x4007, 0x0000,
    0x3940, 0x6700, 0x0024, 0x0000, 0x02c1, 0x2800, 0x3ec5, 0x478e,
    0x0024, 0x0000, 0x0024, 0x2800, 0x3ec5, 0x0000, 0x0024, 0x2900,
    0x0540, 0x4518, 0x184c, 0x0000, 0x0401, 0x3413, 0x0024, 0xb010,
    0xb3c0, 0x0000, 0x0b80, 0x2800, 0x3185, 0x6700, 0x0024, 0x0000,
    0x0501, 0x2800, 0x3185, 0x0000, 0x0024, 0x0000, 0x0686, 0x4518,
    0x184c, 0x3009, 0x3852, 0x3e10, 0xf802, 0x0000, 0x0002, 0x3009,
    0x3852, 0x2900, 0x19c0, 0x3009, 0x3840, 0x4086, 0x984c, 0x2900,
    0x19c0, 0x4568, 0x0024, 0xb182, 0x134c, 0x2900, 0xd340, 0x4dc6,
    0x10d2, 0x34d3, 0x1bcc, 0x3600, 0xd802, 0x3e10, 0x0024, 0x2900,
    0x21c0, 0x3434, 0x8024, 0x4080, 0x1bcc, 0x3009, 0x1812, 0x2800,
    0x3118, 0x4d82, 0x0024, 0x2800, 0x45c0, 0xc890, 0x1bcc, 0x2900,
    0xe9c0, 0x0000, 0x3ec8, 0x0000, 0x3781, 0x3413, 0x0024, 0x3009,
    0x13c0, 0xb010, 0x0024, 0x0000, 0x0024, 0x2800, 0x3ed5, 0x0000,
    0x0024, 0x0000, 0x0206, 0x2900, 0x1880, 0x4568, 0x184c, 0x2900,
    0xf380, 0x3613, 0x0024, 0x4080, 0x0024, 0x0000, 0x0024, 0x2800,
    0x3ec5, 0x0000, 0x0024, 0x0006, 0x0610, 0x30f1, 0x0024, 0x6498,
    0x0040, 0x4090, 0x23c4, 0x6090, 0x2000, 0x0000, 0x0001, 0x2800,
    0x3ed5, 0xf150, 0x0024, 0x0000, 0x014e, 0x4010, 0x0024, 0x0006,
    0x0010, 0xf400, 0x4011, 0x2400, 0x390e, 0x3110, 0x0024, 0x3110,
    0x2040, 0x0006, 0x0253, 0x0000, 0x0706, 0x2900, 0x1880, 0x4568,
    0x984c, 0x0000, 0x0686, 0x3b10, 0x184c, 0x3bf0, 0x7802, 0x0000,
    0x0002, 0x0000, 0x0501, 0x4518, 0x3843, 0x0000, 0x0001, 0x3009,
    0x3852, 0x2900, 0x19c0, 0x3009, 0x3840, 0x4086, 0x984c, 0x2900,
    0x19c0, 0x4568, 0x0024, 0x4dc6, 0x0024, 0x2900, 0xd340, 0x0006,
    0x01d2, 0x2800, 0x45c0, 0xc890, 0x9b92, 0x0000, 0x0801, 0x451a,
    0x4140, 0x0000, 0x7fc1, 0xb51a, 0x0024, 0x458a, 0x0024, 0x0000,
    0x0024, 0x2800, 0x2555, 0x0000, 0x0024, 0x6d96, 0x4490, 0x3023,
    0x0024, 0x3009, 0x0000, 0x4090, 0x0024, 0x3009, 0x2000, 0x2800,
    0x4515, 0x0000, 0x0024, 0x30e3, 0x08cc, 0x3009, 0x0040, 0x3009,
    0x03c1, 0x4c82, 0x8842, 0x3009, 0x0bc3, 0x2800, 0x4518, 0x0000,
    0x0024, 0x0006, 0x0611, 0x2800, 0x45c0, 0x3100, 0x0b4c, 0x4d82,
    0x184c, 0x2900, 0xe9c0, 0x0000, 0x2548, 0x36f3, 0x4024, 0x36f3,
    0xd80e, 0x36f4, 0x5813, 0x36f1, 0xd810, 0x36f1, 0x5806, 0x36f0,
    0xd804, 0x36f0, 0x5802, 0x3405, 0x9014, 0x36f3, 0x0024, 0x36f2,
    0x1815, 0x2000, 0x0000, 0x36f2, 0x9817, 0x8123, 0x3613, 0x0024,
    0x3e12, 0xb817, 0x3e12, 0x3815, 0x3e05, 0xb814, 0x3615, 0x0024,
    0x0000, 0x800a, 0x3e10, 0x3801, 0x0000, 0x0401, 0x3e10, 0xb803,
    0x3e11, 0x3805, 0x3e11, 0xb807, 0x3e14, 0x3811, 0x0030, 0x03d1,
    0x0006, 0x0390, 0x3e14, 0xb813, 0x3e13, 0xf80e, 0x3e03, 0x4024,
    0x3001, 0x4024, 0x3100, 0x0024, 0xb010, 0x0024, 0x0013, 0x5501,
    0x2800, 0x5245, 0x458a, 0x0024, 0x0006, 0x1e50, 0x2800, 0x5405,
    0x0000, 0x0024, 0x0006, 0x79d3, 0x0006, 0x03d2, 0xb88b, 0xa530,
    0x31a3, 0x2000, 0x3100, 0x0024, 0x6012, 0x0024, 0x0006, 0x7a10,
    0x2800, 0x5415, 0x3009, 0x0000, 0x6090, 0x0024, 0x2800, 0x5400,
    0x3009, 0x2c00, 0x0006, 0x79d0, 0x2800, 0x5415, 0x0000, 0x0024,
    0x0006, 0x1e53, 0x0006, 0x03d2, 0x3201, 0x4c00, 0x3009, 0x2000,
    0x0020, 0x0001, 0x0030, 0x0310, 0x3000, 0x0024, 0xb010, 0x0024,
    0x0000, 0x0024, 0x2800, 0x57c5, 0x4590, 0x0024, 0x3000, 0x184c,
    0xf292, 0x0024, 0xb010, 0x0024, 0x2900, 0x0e40, 0x3800, 0x0024,
    0x2900, 0x0d80, 0x0000, 0x0024, 0x4590, 0x0024, 0x0000, 0x0181,
    0x2800, 0x5d55, 0x0030, 0x03d0, 0x0006, 0x0590, 0x0006, 0x0452,
    0x0006, 0x0251, 0x0000, 0x0085, 0x3110, 0x0024, 0x31f0, 0x4024,
    0x0006, 0x0211, 0x6c92, 0x0024, 0x0000, 0x0020, 0xf2c2, 0x0024,
    0x3a10, 0x0024, 0x0006, 0x01c0, 0x3af0, 0x47c1, 0x38d0, 0x0480,
    0x3810, 0x0400, 0x3810, 0x4024, 0x0000, 0x0181, 0x3800, 0x0024,
    0x0030, 0x03d0, 0x30a0, 0x0024, 0xb010, 0x0024, 0x0000, 0x0081,
    0x6012, 0x0024, 0x001d, 0x9941, 0x2800, 0x6295, 0x0000, 0x0024,
    0x3000, 0x0024, 0x6012, 0x0024, 0x0030, 0x0110, 0x2800, 0x6295,
    0x0000, 0x0024, 0x0006, 0x0691, 0x3000, 0x0024, 0x3100, 0x4024,
    0x6014, 0x0024, 0x0000, 0x0024, 0x2800, 0x6281, 0x0000, 0x0024,
    0x3100, 0x0024, 0x3800, 0x0024, 0x0000, 0x0080, 0x6500, 0x0024,
    0x0000, 0x0241, 0x2800, 0x6e15, 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, 0x6a15, 0x0006, 0x0411,
    0x3013, 0x0024, 0x3000, 0x0024, 0x4010, 0x0024, 0x3800, 0x0024,
    0x30d4, 0x4024, 0x3009, 0x0440, 0x3810, 0x07c1, 0x3820, 0x4024,
    0x30f4, 0x4024, 0x3123, 0x0024, 0x3009, 0x0400, 0x0006, 0x0411,
    0x0000, 0xc801, 0x0006, 0x0652, 0xb880, 0x2000, 0x3900, 0x0024,
    0x3200, 0x0024, 0x6090, 0x0024, 0x6012, 0x2800, 0x0000, 0x00c5,
    0x2800, 0x6e15, 0x0000, 0x0024, 0x0030, 0x0253, 0x3300, 0x0024,
    0x4080, 0x0024, 0x0030, 0x03d0, 0x2800, 0x89c5, 0x0000, 0x0181,
    0x0000, 0x00c0, 0x6500, 0x0024, 0x0000, 0x0100, 0x2800, 0x7415,
    0x0000, 0x0201, 0x003f, 0xc000, 0x2900, 0x1300, 0x3613, 0x0024,
    0x0000, 0x3f81, 0x6012, 0x0024, 0x0006, 0x0410, 0x2800, 0x7215,
    0x0000, 0x0000, 0x0000, 0x0105, 0x2800, 0x9880, 0x3800, 0x0024,
    0x3000, 0x0024, 0x6090, 0x0024, 0x4080, 0x2000, 0x0000, 0x0024,
    0x2800, 0x9898, 0x0000, 0x0024, 0x2900, 0x0d80, 0x0000, 0x9888,
    0x6500, 0x0024, 0x0000, 0x0140, 0x2800, 0x8e95, 0x0006, 0x0450,
    0x3010, 0x0024, 0x30f0, 0x4024, 0x4c82, 0x0024, 0x0000, 0xf601,
    0x2800, 0x8749, 0x0000, 0x0024, 0x291a, 0x22c0, 0x3613, 0x0024,
    0x6012, 0x0024, 0x0000, 0x0041, 0x2800, 0x8758, 0x0006, 0x0451,
    0x0006, 0x79d0, 0x0000, 0x0802, 0x3111, 0x8012, 0xfe22, 0x07c7,
    0x48b2, 0x0024, 0x6cfe, 0x0024, 0x0000, 0x0004, 0x2800, 0x7ac9,
    0x6420, 0x0024, 0xb888, 0x0442, 0x6420, 0x07c3, 0x0000, 0x0024,
    0x2800, 0x7f18, 0x4290, 0x0024, 0x2400, 0x7ec0, 0x0000, 0x0024,
    0x0000, 0x0401, 0x2900, 0x1300, 0xc890, 0x184c, 0x0001, 0x0001,
    0x3a10, 0x0024, 0xf400, 0x4480, 0x6016, 0x0024, 0x0000, 0x0024,
    0x2800, 0x7ed1, 0x0000, 0x0024, 0x0000, 0x0012, 0x6498, 0x0024,
    0x0006, 0x0413, 0x0006, 0x0451, 0x0000, 0x0041, 0x0006, 0x79d0,
    0x3111, 0xa012, 0xfe22, 0x07c7, 0x6fb2, 0x0024, 0x3910, 0x0024,
    0x39f0, 0x4024, 0x0000, 0x0801, 0x3300, 0x0024, 0x4012, 0x0024,
    0x0000, 0x4000, 0x6100, 0x2c01, 0x0006, 0x0450, 0x2800, 0x8451,
    0x0000, 0x0401, 0x2900, 0x1300, 0xc890, 0x184c, 0x2800, 0x8740,
    0x0000, 0x0085, 0x3010, 0x0024, 0x30f0, 0x4024, 0x4c82, 0x0024,
    0x0000, 0xf601, 0x2800, 0x8749, 0x0000, 0x0024, 0x291a, 0x22c0,
    0x3613, 0x0024, 0x6012, 0x0024, 0x0006, 0x0451, 0x2800, 0x7808,
    0x0000, 0x0041, 0x0006, 0x0451, 0x0030, 0x0850, 0x0013, 0xaa40,
    0x3800, 0x0024, 0x3110, 0x0024, 0x31f0, 0x4024, 0x4c82, 0x0024,
    0x0030, 0x03d0, 0x2800, 0x9899, 0x0000, 0x0181, 0x2900, 0x0e40,
    0x3613, 0x0024, 0x30d0, 0x0024, 0xb010, 0x0024, 0x0000, 0x0081,
    0x6012, 0x0024, 0x0000, 0x0145, 0x2800, 0x8d95, 0x6892, 0x0024,
    0x0006, 0x0692, 0x0030, 0x0111, 0x689a, 0x0400, 0x6090, 0x0024,
    0x2800, 0x9880, 0x3a00, 0x0024, 0x3000, 0x0024, 0x4012, 0x0024,
    0x2800, 0x9880, 0x3800, 0x4024, 0x6500, 0x0024, 0x0030, 0x0850,
    0x2800, 0x9855, 0x0013, 0xaa40, 0x4112, 0x184c, 0x2900, 0x1300,
    0xc890, 0x0024, 0x0000, 0xf601, 0x291a, 0x22c0, 0x3613, 0x0024,
    0x6012, 0x0024, 0x0000, 0x07ce, 0x2800, 0x97d8, 0x0006, 0x79d0,
    0x2400, 0x948e, 0xb884, 0x8012, 0x0001, 0x0001, 0x3a10, 0x8024,
    0xf400, 0x4480, 0x6016, 0x0024, 0x0000, 0x0024, 0x2800, 0x9491,
    0x0000, 0x0024, 0x0000, 0x0012, 0x0000, 0x0024, 0x0000, 0x0801,
    0x0006, 0x0411, 0x0006, 0x79d0, 0x3100, 0x2012, 0x4012, 0x0024,
    0x0002, 0x4000, 0x6100, 0x2401, 0x0000, 0x0024, 0x2800, 0x97d1,
    0x0000, 0x0024, 0x2900, 0x0d80, 0x0000, 0x0024, 0x0030, 0x0850,
    0x0013, 0xaa40, 0x3800, 0x0024, 0x0006, 0x0391, 0x0000, 0x0000,
    0x0030, 0x0490, 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,
    0x8274, 0x0030, 0x0653, 0x0030, 0x0012, 0x0030, 0x0351, 0x0030,
    0x0810, 0x0000, 0xfa00, 0x003f, 0xfdc2, 0x3e05, 0xb814, 0x3615,
    0x0024, 0x0000, 0x800a, 0x3810, 0x0024, 0x0013, 0xaa40, 0xb880,
    0x2000, 0x0006, 0x0190, 0x3900, 0x0024, 0x3200, 0x0024, 0xb024,
    0x0024, 0x2900, 0x0400, 0x3a00, 0x8024, 0x3200, 0x8004, 0xc200,
    0x984c, 0x3a00, 0x0024, 0x0000, 0x00c0, 0x3be0, 0x0024, 0x0000,
    0x02c0, 0x2910, 0x4500, 0x3b00, 0x0024, 0x3373, 0x2004, 0xb880,
    0x984c, 0x2916, 0x4780, 0x3b00, 0x0024, 0x2911, 0xcb40, 0x3613,
    0x0024, 0x2914, 0x3340, 0x0000, 0x7d05, 0x2910, 0x9040, 0x6898,
    0x184c, 0x4182, 0x084c, 0x0000, 0x0302, 0x2800, 0xa7d5, 0x3200,
    0x0024, 0x003f, 0xfdc2, 0x2800, 0xa800, 0xb024, 0x0024, 0xc024,
    0x0024, 0x0000, 0x1045, 0x0006, 0x6011, 0x0001, 0x0390, 0xb880,
    0x2802, 0x3904, 0x0f8c, 0x3b00, 0x184c, 0x2911, 0xfe80, 0x3b00,
    0x0024, 0x0000, 0x7fce, 0x2400, 0xab4e, 0x0000, 0x0024, 0x2900,
    0x0e40, 0x3613, 0x0024, 0x0000, 0x0024, 0x0000, 0x1002, 0x2900,
    0xfa40, 0xbf8e, 0x184c, 0x4090, 0x4004, 0x0000, 0x0024, 0x2800,
    0xaa15, 0x0000, 0x0024, 0x4584, 0x184c, 0x2900, 0xfa40, 0xbf8e,
    0x0024, 0x4080, 0x0024, 0x0000, 0x0024, 0x2800, 0xb0c5, 0x0000,
    0x0024, 0x6498, 0x0024, 0x4480, 0x0024, 0x0000, 0x0024, 0x2800,
    0xaa08, 0x0000, 0x0024, 0x2800, 0xad40, 0x0000, 0x0024, 0x0000,
    0x8006, 0x0000, 0x1402, 0x2900, 0xfa40, 0xb88e, 0x184c, 0x4080,
    0x0024, 0x0000, 0x0024, 0x2800, 0xaa15, 0x0000, 0x0024, 0x2901,
    0x0880, 0x3613, 0x0024, 0x4080, 0x0024, 0x0030, 0x0350, 0x2800,
    0xcb95, 0x0000, 0x0024, 0x003f, 0xffc4, 0x2901, 0x1fc0, 0x3613,
    0x0024, 0x6894, 0x2080, 0x3000, 0x184c, 0xb020, 0x0024, 0x0000,
    0x0024, 0x2800, 0xb8c5, 0x0000, 0x0024, 0x3009, 0x3841, 0x2900,
    0x1d40, 0x3009, 0x3840, 0x4084, 0x038c, 0x291d, 0x21c0, 0x3000,
    0x1bcc, 0x0030, 0x0310, 0x4180, 0x9801, 0x3800, 0x0024, 0x0030,
    0x0310, 0xf294, 0x0004, 0xb428, 0x0024, 0x2901, 0x1fc0, 0x3801,
    0x0024, 0x4080, 0x0024, 0x0006, 0x01d1, 0x2800, 0xcb98, 0x0000,
    0x0024, 0x0000, 0x0cc7, 0x0000, 0x3fc5, 0x0011, 0x1246, 0x3613,
    0x0024, 0x3009, 0x3841, 0x3009, 0x0440, 0x2900, 0xe9c0, 0x3009,
    0x07c1, 0x2900, 0x1880, 0xb888, 0x984c, 0x4898, 0x0024, 0x4c86,
    0x9bc1, 0xbde6, 0x0024, 0x6dfe, 0x0024, 0x0000, 0x0182, 0x2800,
    0xc7d5, 0x0030, 0x03d0, 0x0000, 0x01c4, 0x2900, 0x0540, 0x3613,
    0x0024, 0x4088, 0x184c, 0x0000, 0x0140, 0xa408, 0x0024, 0x3009,
    0x3844, 0x2900, 0x0540, 0x0000, 0x0204, 0x3123, 0x1bc4, 0xf200,
    0x0024, 0xf200, 0x0024, 0x4408, 0x8400, 0x6404, 0x0024, 0x0006,
    0x0250, 0x2800, 0xc411, 0x0006, 0x0253, 0x3009, 0x0404, 0x4498,
    0x0024, 0x0006, 0x01d2, 0x4484, 0x8846, 0xb386, 0x8bc7, 0x4fd6,
    0x0024, 0x0000, 0x8006, 0xff68, 0xa842, 0x3009, 0x2bc3, 0x3009,
    0x0c02, 0x6240, 0x0042, 0x30f0, 0xec00, 0x6dbe, 0x0024, 0x0000,
    0x0182, 0x3811, 0x8024, 0x38f1, 0xc024, 0x0030, 0x03d0, 0x3000,
    0x0024, 0xb020, 0x0024, 0x0000, 0x0102, 0x6024, 0x0024, 0x0006,
    0x0652, 0x2800, 0xca95, 0x6890, 0x0024, 0x0000, 0x0602, 0x3000,
    0x0024, 0xc024, 0x0024, 0x6890, 0x2002, 0x0006, 0x0391, 0xb880,
    0x2400, 0x2800, 0xcc80, 0x3a00, 0x0024, 0x0030, 0x0310, 0xb880,
    0x0024, 0x2900, 0x0d80, 0x3800, 0x0024, 0x0030, 0x0693, 0x0006,
    0x7a92, 0x0006, 0x7e51, 0x003f, 0xfec2, 0x0030, 0x0050, 0x3000,
    0x0024, 0xb024, 0x0024, 0x0002, 0x8000, 0x3830, 0xa400, 0x0001,
    0x0000, 0x3009, 0x2800, 0x0000, 0x08c0, 0xb880, 0x2c00, 0x3800,
    0x0024, 0x0006, 0x0690, 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, 0x0044, 0x494d,
    0x0041, 0x4d57, 0x0056, 0x4d57, 0x0046, 0x5341, 0x0043, 0x4141,
    0x0034, 0x504d, 0x0041, 0x344d, 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, 0x3613, 0x0024, 0x3e12, 0xb804, 0x0000, 0x800a,
    0x0000, 0x0204, 0x6142, 0xb802, 0x0006, 0x5e55, 0x2801, 0x07d5,
    0x3009, 0x1402, 0x6298, 0x4097, 0x3009, 0x3404, 0x0010, 0x0004,
    0x6248, 0x1c01, 0xf400, 0x4117, 0x2801, 0x0784, 0x0030, 0x0395,
    0x3009, 0x1c01, 0x3d00, 0x4024, 0x3009, 0x1bc2, 0x2000, 0x0000,
    0x36f2, 0x9804, 0x8422, 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, 0x0f05, 0x000c, 0xd505, 0x2900, 0x1880, 0x0000,
    0x1484, 0x0010, 0x5184, 0x6ce2, 0x184c, 0x0000, 0x0024, 0x2801,
    0x0f05, 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, 0x1245, 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, 0x1a15, 0x3230, 0x0024, 0x4080,
    0x1bcc, 0x0000, 0x0904, 0x2801, 0x1e45, 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, 0x847f, 0x3e10, 0x7802,
    0x3e12, 0x3810, 0x3e10, 0xf812, 0x0006, 0x0012, 0x3230, 0x0024,
    0x4080, 0xb851, 0x0006, 0x01d1, 0x2801, 0x2305, 0x0020, 0x0003,
    0x0000, 0x0082, 0xb886, 0x4452, 0x2900, 0xd340, 0x0001, 0x25c8,
    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, 0x21c0,
    0x3e10, 0x0024, 0x3009, 0x1bd1, 0x36f0, 0xd812, 0x36f2, 0x1810,
    0x2000, 0x0000, 0x36f0, 0x5802
};  */

/* Writing to DSP control registers follow these steps:
    CS_Low();
    send command
    send register command applies to
    send or receive 16 bit value
    CS_High();
*/

/*******DSP_Init()**************
  Initializes the DSP with application code and also
  sets internal registers to enable MP3 output
  input: none
  output: none
********************************/
void DSP_Init() {
  static unsigned char garbage = 0;  //for garbage reads and writes
  static unsigned long i = 0;
  static unsigned short data_in = 0;

  SPI_Init(1);

  // hw reset for initial turn on
  DDR_DSP_RESET = 1;  //output to xReset
  DSP_RESET = 0; //reset low
  for(i=0; i<10000; i++){}
  DSP_RESET = 1; //reset high;
  for(i=0; i<100000; i++){}

  /*// sw reset
  DSP_Send(0x0004,MMODE);
  for(i=0; i<100000; i++){}*/

  /*// funky mmode stuff
  data_in = DSP_Get(MMODE);
  data_in |= 0x0400;
  DSP_Send(data_in,MMODE);*/

  //Initialize some internal registers
  DSP_Send(0x0000,BASS);
  DSP_Send(0x0000,DECODE);

  //Initialize clock doubler
  DSP_Send(0x4000,CLOCKF);
  //A write to AUDATA causes clock doubler to take effect
  DSP_Send(0x0000,AUDATA);
  for(i = 0; i < 10000; i++);

  //Set VOL (volume)
  data_in = Left_Vol;
  data_in = (data_in<<8) + Right_Vol;
  DSP_Send(data_in,VOL);

  //to test good send
  data_in = DSP_Get(VOL);

  //Load application code
  i = 0;
  do  {
    DSP_Send(dtab[i],atab[i]);
    data_in = DSP_Get(atab[i]);
  } while(i < CODE_SIZE && data_in == dtab[i++]);

  // set the play mode
  data_in = DSP_Get(AICTRL3);
  //data_in &= PLAY_MODE_NORMAL;
  DSP_Send(data_in,AICTRL3);

  //write 0x30 to AIADDR to begin DSP MP3 application
  DSP_Send(0x0030,AIADDR);


}

void DSP_Init_Direct() {

 static unsigned char garbage = 0;  //for garbage reads and writes
  static unsigned long i = 0;
  static unsigned short data_in = 0;

  SPI_Init(1);

  // hw reset for initial turn on
  DDR_DSP_RESET = 1;  //output to xReset
  DSP_RESET = 0; //reset low
  for(i=0; i<10000; i++){}
  DSP_RESET = 1; //reset high;
  for(i=0; i<100000; i++){}

  /*// sw reset
  DSP_Send(0x0004,MMODE);
  for(i=0; i<100000; i++){}*/

  /*// funky mmode stuff
  data_in = DSP_Get(MMODE);
  data_in |= 0x0400;
  DSP_Send(data_in,MMODE);*/

  //Initialize some internal registers
 /* DSP_Send(0x0000,BASS);
  DSP_Send(0x0000,DECODE);
         */

  //Initialize clock doubler
  DSP_Send(0x4000,CLOCKF);
   //A write to AUDATA causes clock doubler to take effect
  DSP_Send(0x0000,AUDATA);

  for(i = 0; i < 10000; i++);

  //Set VOL (volume)
  data_in = Left_Vol;
  data_in = (data_in<<8) + Right_Vol;
  DSP_Send(data_in,VOL);

  //to test good send
  data_in = DSP_Get(VOL);






 }

/*******DSP_Play_Song()**************
  Commands the DSP to play the song indicated by songNum
  input: unsigned short songNum
  output: none
********************************/
void DSP_Play_Song(unsigned short songNum) {
  DSP_Send(songNum+0x8000,AICTRL0);
}


/*******DSP_Play_Pause()**************
  Toggles the play/pause state of the player
  input: none
  output: none
********************************/
void DSP_Play_Pause(void) {
  unsigned short data = DSP_Get(AICTRL3);
  data ^= 0x0010;
  DSP_Send(data,AICTRL3);
}


/*******DSP_Send()**************
// sends 2 bytes of data to the DSP to the specified register
// inputs: unsigned short data, unsigned char register
// outputs: none
********************************/
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++);
}


/*******DSP_Get()**************
// Reads the specified two byte register and returns the value
// inputs: unsigned char reg
// outputs: unsigned short contents of reg
********************************/
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;
}

/******************************************************
*******************************************************
   manish's test code! below
*******************************************************
*******************************************************/


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++);
}

//test1 and test2 were analog test
//TEST 3
//dreq should go low then high really fast (PASSED!)
int DSP_Test3(void)
{
  unsigned char dummy;
  // 1) Activiate xCS by setting it to 0;
  //SPI_CSLow(DSP_DEVICE);

  DSP_Send(0x0004,0x02);

  /*PTS_PTS3 = 0;
  // 2) Reset the firmware by writing four SCI bytes: 0x02, 0x00, 0x00, 0x04;
  dummy = SPI_Data((unsigned char)(0x02)); //write function
  dummy = SPI_Data((unsigned char)(0x00)); //to mode register
  dummy = SPI_Data((unsigned char)(0x00)); //msb data
  dummy = SPI_Data((unsigned char)(0x04)); //lsb data
  // 3) Finish SCI cycle by setting xCS to 1;
  //SPI_CSHigh(DSP_DEVICE);  // DSP CS = 1
  PTS_PTS3 = 1;*/
  return 1;
}

//TEST 4
//now that we know sci works, we can try reeding from DSP (PASSED!)
int DSP_Test4(void) {
  unsigned char dummy;
  long i;
  static unsigned short VolReg = 2;
  unsigned short VolReg_Sent = 0xF0F1;

  /*
  // 1) Activiate xCS by setting it to 0;
  //SPI_CSLow(DSP_DEVICE);
  PTS_PTS3 = 0;
                for(i=0; i<100; i++);
  // 2) Set volume by writing four bytes
  //    First two bytes are address for volume register
  //    Next two bytes are data.
  //    volume register is [0x020B]
  //    data sent is "0xA2F5"
  dummy = SPI_Data((unsigned char)(0x02));
  //for(i=0; i<100; i++);
  dummy = SPI_Data((unsigned char)(0x0B));
  //for(i=0; i<100; i++);
  dummy = SPI_Data((unsigned char)(VolRegMSB_sent));
  //for(i=0; i<100; i++);
  dummy = SPI_Data((unsigned char)(VolRegLSB_sent));
  //for(i=0; i<100; i++);
  // 3) Finish Writing to volume register by setting xCS to 1;
  //SPI_CSHigh(DSP_DEVICE);
  PTS_PTS3 = 1;
  //delay loop. hopefully everything is done writing though SCI by then
  for(i=0; i<10000; i++){
    asm nop
  }


  // 4) Activitate xCS by setting it to 0 so we can
  //    start reading from volume register
  //SPI_CSLow(DSP_DEVICE);
  PTS_PTS3 = 0;
     for(i=0; i<100; i++);
  // 5) Write tow bytes (0x03, 0x0B) to SCI
  dummy = SPI_Data((unsigned char)(0x03));
  dummy = SPI_Data((unsigned char)(0x0B));
  dummy = SPI_Data((unsigned char)(VolRegMSB_sent));
  VolRegMSB = SPI_Data((unsigned char)(0x00)); //msb bit recieved from vol register
  VolRegLSB = SPI_Data((unsigned char)(0x00)); //lsb bit recieved from vol register
         for(i=0; i<100; i++);
  // 6) Finish writing and reading volume reister by setting xCS to 1;
  //SPI_CSHigh(DSP_DEVICE);
  PTS_PTS3 = 1;

  //delay loop. hopefully everything is done writing though SCI by then
  for(i=0; i<10000; i++){
    asm nop
  }*/

  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
/*  return 1;    */
}


//TEST 5
//the sine test, making the mp3 player sing!
int DSP_Test5(void) {
  unsigned char dummy;
  unsigned long i;
  static unsigned short VolReg = 2;
  unsigned short VolReg_Sent = 0x0000;
  unsigned short received_reg;

  // 1) allows test for writing to SCI: 0x02, 0x0, 0x80, 0x20;
  /*SPI_CSLow(DSP_DEVICE);
  dummy = SPI_Data((unsigned char)(0x02)); //write command
  dummy = SPI_Data((unsigned char)(0x00)); //mode register
  dummy = SPI_Data((unsigned char)(0x08)); //msb data
  dummy = SPI_Data((unsigned char)(0x20)); //lsb data
  SPI_CSHigh(DSP_DEVICE);*/
  DSP_Send(0x0C20,MMODE);
  received_reg = DSP_Get(MMODE);

  if(received_reg == 0x0C20)
    PTP_PTP0 = 1;

  //delay loop. hopefully everything is done writing though SCI by then
  for(i=0; i<1000000; i++){
    asm nop
  }

  // 2) Activivate the sine test by writing the folowing eight bytes to SDI:
  //    0x53, 0xEF, 0x6E, 0x30, 0x00, 0x00, 0x00, 0x00
  //    Remember to take care of xDCS/BSYNC(PT3)
//  SPI_CSHigh(DSP_DEVICE);
  for(i=0; i<5; i++);
  dummy = SPI_Data((unsigned char)(0x53));
  //for(i=0; i<5; i++);
  dummy = SPI_Data((unsigned char)(0xEF));
  //for(i=0; i<5; i++);
  dummy = SPI_Data((unsigned char)(0x6E));
  //for(i=0; i<5; i++);
  dummy = SPI_Data((unsigned char)(0x7F));
  //for(i=0; i<5; i++);
  dummy = SPI_Data((unsigned char)(0x00));
  //for(i=0; i<5; i++);
  dummy = SPI_Data((unsigned char)(0x00));
//  SPI_CSHigh(DSP_DEVICE);
//  for(i=0; i<100; i++);
//  SPI_CSLow(DSP_DEVICE);
  //for(i=0; i<5; i++);
  dummy = SPI_Data((unsigned char)(0x00));
 // for(i=0; i<5; i++);
  dummy = SPI_Data((unsigned char)(0x00));
  for(i=0; i<10; i++);


  // 3) Wait about 500ms for example
  //    delay loop. hopefully everything is done writing though SCI by then
  for(i=0; i<1000000; i++){
    asm nop
  }

  // 4) Deactivate the siine test by writing to SDI: 0x45, 0x78, 0x69, 0x74
//  SPI_CSHigh(DSP_DEVICE);
  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_CSHigh(DSP_DEVICE);

  SPI_CSLow(DSP_DEVICE);
  for(i=0; i<10000; i++);
  SPI_CSHigh(DSP_DEVICE);

  // 5) Wait about 500ms for example
  //    delay loop. hopefully everything is done writing though SCI by then
  for(i=0; i<1000000; i++){
    asm nop
  }

 /*************************
   REMEBER TO CALL THIS TEST IN A FORLOOP BECAUSE STEP 6...
     6) Repeat these steps indefinitely
  *************************/

}

No comments:

Post a Comment