This is the DDRO software we write to operate the chip

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers scan.cpp Source File

scan.cpp

00001 #include "scan.h"
00002 using namespace std;
00003 
00004 #define SCAN_TIME 10
00005 #define SCAN_DEPTH 226
00006 
00007 DigitalOut lock_indicator(LED2);
00008 Serial pc(USBTX, USBRX);//tx, rx => for debugging purposes
00009 DigitalOut phi (p16);
00010 DigitalOut phi_bar (p17);
00011 DigitalOut load_chain (p15);
00012 DigitalOut load_chip (p20);
00013 DigitalOut data_in (p19);
00014 DigitalIn data_out(p18);
00015 DigitalOut led2(LED2);
00016 DigitalOut led3(LED3);
00017 DigitalOut led4(LED4);
00018 
00019 // constructor
00020 PLL::PLL()
00021 {
00022     A = new unsigned int [SCAN_DEPTH];
00023     for (int i=0; i<SCAN_DEPTH; i++) {
00024         A[i] = 0;
00025     }
00026 }
00027 
00028 /*******************************
00029 By default, this function setup the PLL as internal feedback
00030 (i.e. no phase synchronization guarantee between internal clock
00031 to refclk)
00032 The equations are:
00033 DCO frequency = (REFCLK/Predivider) x Feedback Divider x Feedback Divider Pre-Scaler
00034 PLLOUTA frequency = DCO frequency / (Forward Divider Pre-Scaler x Forward Divider A)
00035 PLLOUTB frequency = DCO frequency / (Forward Divider Pre-Scaler x Forward Divider B)
00036 Bit vectors to set:
00037 RO
00038 internal_clk_source
00039 ext_div_by
00040 ext_clk_source
00041 DCO_BYPASS
00042 PLL_FEEDBACK_MODE
00043 PLL_TUNE
00044 PLL_A_OR_B
00045 
00046 Values to set:
00047         void plloutAon();// set PLLout A on and B off
00048         void plloutBon();// set PLLout A off and B on
00049         void setPrediv(int val);//Setting the Prediv bits A[143:138] Range 1-32
00050         void setFbDivPreScaler(int val);//Setting the Feedback Divider Pre-scalar bits A[143:138] Range: 1-4
00051         void setFbDiv(int val);//Setting the Feedback Divider bits A[133:126] Range: 1-32
00052         void setFwDivPreScalerA(int val);//Setting the Forward Divider Pre-scalar bits for A A[150:149] Range: 1,2,4
00053         void setFwDivA(int val);//Setting the Forward Divider Pre-scalar bits A[148:144] Range: 1-32
00054         void setFwDivPreScalerB(int val);//Setting the Forward Divider Pre-scalar bits for B A[150:149] Range: 1,2,4
00055         void setFwDivB(int val);//Setting the Forward Divider Pre-scalar bits for B A[148:144] Range: 1-32
00056         void setLFTUNE(int interval);//Setting LFTUNE A[83:43] Range: 0(2.5-3.2) - 1(3.2-5.0)
00057         void setFFTUNE(int interval);//Setting FFTUNE A[41:26]
00058         void setINTFBK();//Setting feedback mode A[42]
00059         void setROandOther();//Setting(disabling) ring_osc A[7:0]
00060         void setINTMUX(int clk);//Setting internal clk source bits A[9:8] Range: 0: HCLK_EXT 1: ring_osc 2: PLLOUT_A 3: PLLOUT_B
00061         void setEXTMUX(int clk);//Setting external clk source bits A[15:14] Range: 0: HCLK_EXT 1: HCLK_divider 2: PLLOUT_A 3: PLLOUT_B
00062         void setEXTDIV(int val);//Setting clk divider bits for B A[13:10] Range: 0-15, divided by 2^val
00063         void resetPLL(int val);//Setting PLL_RESET A[158], range: 0:unreset 1:reset
00064 
00065 *******************************/
00066 
00067 int PLL::setPLL(int frequency)
00068 {
00069 
00070     //input should be multiple of 5MHz, range should be from 100 - 200
00071 
00072     if (frequency < 50) {
00073         //infeasible frequency
00074     } else if (frequency <63) {
00075         frequency = frequency * 2;
00076         //DCO=20/4*(freq*2)*3, PLLOUT=DCO/12 for freq=[50-62]
00077         //DCO range: 3G to 3.75G
00078         setFBK_MODE(1);//set internal mode
00079         plloutAon();
00080         setPrediv(4);
00081         setFbDivPreScaler(3);
00082         setFbDiv(frequency*2);
00083         setFwDivPreScalerA(1);
00084         setFwDivA(12);
00085         setFwDivPreScalerB(1);
00086         setFwDivB(12);
00087         if (frequency<107) {  //3G - 3.2G
00088             setLFTUNE(0);
00089             setFFTUNE(0);
00090         } else { //3.2G - 3.75G
00091             setLFTUNE(1);
00092             setFFTUNE(1);
00093         }
00094         setINTFBK();
00095         setROandOther();
00096         setINTMUX(2);//PLLOUTA
00097         setEXTMUX(1);//HCLK_DIVIDER
00098         setEXTDIV(10);
00099         resetPLL(1);
00100         initScan();
00101         scanIn();
00102         resetPLL(0);
00103         scanIn();
00104     } else if (frequency <81) {
00105         frequency = frequency * 2;
00106         //DCO=20*freq, PLLOUT=DCO/8 for freq=[63-80]
00107         //DCO range: 2.5G - 3.2G
00108         setFBK_MODE(1);//set internal mode
00109         plloutAon();
00110         setPrediv(1);
00111         setFbDivPreScaler(1);
00112         setFbDiv(frequency);
00113         setFwDivPreScalerA(1);
00114         setFwDivA(8);
00115         setFwDivPreScalerB(1);
00116         setFwDivB(8);
00117         setLFTUNE(0);
00118         setFFTUNE(0);
00119         setINTFBK();
00120         setROandOther();
00121         setINTMUX(2);//PLLOUTA
00122         setEXTMUX(1);//HCLK_DIVIDER
00123         setEXTDIV(10);
00124         resetPLL(1);
00125         initScan();
00126         scanIn();
00127         resetPLL(0);
00128         scanIn();
00129     } else if (frequency <=100) {
00130         frequency = frequency * 2;
00131         //DCO=20*freq, PLLOUT=DCO/8 for freq=[81-100]
00132         //DCO range: 3.2G - 4G
00133         setFBK_MODE(1);//set internal mode
00134         plloutAon();
00135         setPrediv(1);
00136         setFbDivPreScaler(1);
00137         setFbDiv(frequency);
00138         setFwDivPreScalerA(1);
00139         setFwDivA(8);
00140         setFwDivPreScalerB(1);
00141         setFwDivB(8);
00142         setLFTUNE(1);
00143         setFFTUNE(1);
00144         setINTFBK();
00145         setROandOther();
00146         setINTMUX(2);//PLLOUTA
00147         setEXTMUX(1);//HCLK_DIVIDER
00148         setEXTDIV(10);
00149         resetPLL(1);
00150         initScan();
00151         scanIn();
00152         resetPLL(0);
00153         scanIn();
00154     } else if (frequency < 125) {
00155         //DCO=20/4*(freq*2)*3, PLLOUT=DCO/6 for freq=[100-124]
00156         //DCO range: 3G to 3.75G
00157         setFBK_MODE(1);//set internal mode
00158         plloutAon();
00159         setPrediv(4);
00160         setFbDivPreScaler(3);
00161         setFbDiv(frequency*2);
00162         setFwDivPreScalerA(1);
00163         setFwDivA(6);
00164         setFwDivPreScalerB(1);
00165         setFwDivB(6);
00166         if (frequency<107) {  //3G - 3.2G
00167             setLFTUNE(0);
00168             setFFTUNE(0);
00169         } else { //3.2G - 3.75G
00170             setLFTUNE(1);
00171             setFFTUNE(1);
00172         }
00173         setINTFBK();
00174         setROandOther();
00175         setINTMUX(2);//PLLOUTA
00176         setEXTMUX(1);//HCLK_DIVIDER
00177         setEXTDIV(10);
00178         resetPLL(1);
00179         initScan();
00180         scanIn();
00181         resetPLL(0);
00182         scanIn();
00183     } else if (frequency < 161) {
00184         //DCO=20*freq, PLLOUT=DCO/4 for freq=[125-160]
00185         //DCO range: 2.5G - 3.2G
00186         setFBK_MODE(1);//set internal mode
00187         plloutAon();
00188         setPrediv(1);
00189         setFbDivPreScaler(1);
00190         setFbDiv(frequency);
00191         setFwDivPreScalerA(1);
00192         setFwDivA(4);
00193         setFwDivPreScalerB(1);
00194         setFwDivB(4);
00195         setLFTUNE(0);
00196         setFFTUNE(0);
00197         setINTFBK();
00198         setROandOther();
00199         setINTMUX(2);//PLLOUTA
00200         setEXTMUX(1);//HCLK_DIVIDER
00201         setEXTDIV(10);
00202         resetPLL(1);
00203         initScan();
00204         scanIn();
00205         resetPLL(0);
00206         scanIn();
00207     } else if (frequency <= 200) {
00208         //DCO=20*freq, PLLOUT=DCO/4 for freq=[160-200]
00209         //DCO range: 3.2G - 4G
00210         setFBK_MODE(1);//set internal mode
00211         plloutAon();
00212         setPrediv(1);
00213         setFbDivPreScaler(1);
00214         setFbDiv(frequency);
00215         setFwDivPreScalerA(1);
00216         setFwDivA(4);
00217         setFwDivPreScalerB(1);
00218         setFwDivB(4);
00219         setLFTUNE(1);
00220         setFFTUNE(1);
00221         setINTFBK();
00222         setROandOther();
00223         setINTMUX(2);//PLLOUTA
00224         setEXTMUX(1);//HCLK_DIVIDER
00225         setEXTDIV(10);
00226         resetPLL(1);
00227         initScan();
00228         scanIn();
00229         resetPLL(0);
00230         scanIn();
00231     } else {
00232         //infeasible frequency
00233     }
00234     wait(0.1);
00235     return check_lock();
00236 }
00237 
00238 /********************************************
00239 PLL test function
00240 ********************************************/
00241 
00242 int PLL::testPLL()
00243 {
00244     return 0;
00245 }
00246 
00247 // lock indicator
00248 int PLL::check_lock()
00249 {
00250     scanOut();
00251     lock_indicator = A[219];
00252     return lock_indicator;
00253 }
00254 
00255 // feedback mode setting
00256 void PLL::setFBK_MODE(int MODE)
00257 {
00258     FB_MODE = MODE;
00259 }
00260 
00261 
00262 /**************************************************
00263 ***************************************************
00264 Private Functions:
00265 ***************************************************
00266 **************************************************/
00267 
00268 
00269 /**************************************************
00270 Scan chain operation
00271 **************************************************/
00272 // scan A into chip
00273 int PLL::scanIn()
00274 {
00275     for (int i=0; i<SCAN_DEPTH; i++) {
00276         data_in = A[i];
00277         scanAction();
00278     }
00279     loadChip();
00280 }
00281 
00282 // scan outto A
00283 int PLL::scanOut()
00284 {
00285     loadChain();
00286     for (int i=0; i<SCAN_DEPTH; i++) {
00287         A[i] = 0;
00288         A[i] = data_out;
00289         scanAction();
00290     }
00291 
00292 }
00293 
00294 // initialize the scan chain
00295 void PLL::initScan()
00296 {
00297     phi = 0;
00298     phi_bar = 0;
00299     load_chain = 0;
00300     load_chip = 0;
00301     data_in = 0;
00302     data_out.mode(PullNone);
00303     lock_indicator = 0;
00304 }
00305 
00306 // load scan chain values to chip
00307 void PLL::loadChip()
00308 {
00309     wait_us(SCAN_TIME);
00310     load_chip = 0;
00311     wait_us(SCAN_TIME);
00312     load_chip = 1;
00313     wait_us(SCAN_TIME);
00314     load_chip = 0;
00315     wait_us(SCAN_TIME);
00316 }
00317 
00318 // load chip values to scan chain
00319 void PLL::loadChain()
00320 {
00321     wait_us(SCAN_TIME);
00322     load_chain = 0;
00323     wait_us(SCAN_TIME);
00324     load_chain = 1;
00325     wait_us(SCAN_TIME);
00326     phi = 0;
00327     phi_bar = 0;
00328     wait_us(SCAN_TIME);
00329     phi = 1;
00330     wait_us(SCAN_TIME);
00331     phi = 0;
00332     wait_us(SCAN_TIME);
00333     phi_bar = 1;
00334     wait_us(SCAN_TIME);
00335     phi_bar = 0;
00336     wait_us(SCAN_TIME);
00337     load_chain = 0;
00338     wait_us(SCAN_TIME);
00339 }
00340 
00341 // scan chain step in
00342 void PLL::scanAction ()
00343 {
00344     wait_us(SCAN_TIME);
00345     phi = 0;
00346     phi_bar = 0;
00347     wait_us(SCAN_TIME);
00348     phi = 1;
00349     wait_us(SCAN_TIME);
00350     phi = 0;
00351     wait_us(SCAN_TIME);
00352     phi_bar = 1;
00353     wait_us(SCAN_TIME);
00354     phi_bar = 0;
00355     wait_us(SCAN_TIME);
00356 }
00357 
00358 
00359 /**************************************************
00360 Scan vector setting functions
00361 **************************************************/
00362 // set Vector for PLL testing
00363 void PLL::setVector()
00364 {
00365     for (int i=0; i<SCAN_DEPTH; i++) {
00366         A[i] = 0;
00367     }
00368     A[1] = 1;
00369     A[2] = 1;
00370     A[4] = 1;
00371     A[9] = 1;
00372     A[10] = 1;
00373     A[13] = 1;
00374     A[14] = 1;
00375     A[34] = 1;
00376     A[42] = 1;
00377     A[63] = 1;
00378     A[73] = 1;
00379     A[79] = 1;
00380     A[81] = 1;
00381     A[126] = 1;
00382     A[128] = 1;
00383     A[129] = 1;
00384     A[130] = 1;
00385     A[131] = 1;
00386     A[132] = 1;
00387     A[145] = 1;
00388     A[146] = 1;
00389     A[147] = 1;
00390     A[152] = 1;
00391     A[153] = 1;
00392     A[154] = 1;
00393     A[168] = 1;
00394     A[169] = 1;
00395 }
00396 
00397 /**************************************************
00398 Setting PLL_STOPCLKA bit A[162]
00399 Setting PLL_STOPCLKB bit A[163]
00400 **************************************************/
00401 void PLL::plloutAon()
00402 {
00403     A[162] = 0;
00404     A[163] = 1;
00405 }
00406 
00407 /**************************************************
00408 Setting PLL_STOPCLKA bit A[162]
00409 Setting PLL_STOPCLKB bit A[163]
00410 **************************************************/
00411 void PLL::plloutBon()
00412 {
00413     A[162] = 1;
00414     A[163] = 0;
00415 }
00416 
00417 
00418 /**************************************************
00419 Setting the Prediv bits A[143:138]
00420 Range: 1-32
00421 **************************************************/
00422 void PLL::setPrediv(int val)
00423 {
00424     //scan_load[143:138] = PLL_PREDIV;
00425     A[143]=0; //PREDIV5 unused, connect to ground
00426     switch(val) {
00427         case 1:  {
00428             A[142]=0;
00429             A[141]=0;
00430             A[140]=0;
00431             A[139]=0;
00432             A[138]=0;
00433             break;
00434         }
00435         case 2:  {
00436             A[142]=1;
00437             A[141]=1;
00438             A[140]=1;
00439             A[139]=1;
00440             A[138]=1;
00441             break;
00442         }
00443         case 3:  {
00444             A[142]=1;
00445             A[141]=1;
00446             A[140]=1;
00447             A[139]=1;
00448             A[138]=0;
00449             break;
00450         }
00451         case 4:  {
00452             A[142]=1;
00453             A[141]=1;
00454             A[140]=1;
00455             A[139]=0;
00456             A[138]=0;
00457             break;
00458         }
00459         case 5:  {
00460             A[142]=1;
00461             A[141]=1;
00462             A[140]=0;
00463             A[139]=0;
00464             A[138]=1;
00465             break;
00466         }
00467         case 6:  {
00468             A[142]=1;
00469             A[141]=0;
00470             A[140]=0;
00471             A[139]=1;
00472             A[138]=1;
00473             break;
00474         }
00475         case 7:  {
00476             A[142]=0;
00477             A[141]=0;
00478             A[140]=1;
00479             A[139]=1;
00480             A[138]=0;
00481             break;
00482         }
00483         case 8:  {
00484             A[142]=0;
00485             A[141]=1;
00486             A[140]=1;
00487             A[139]=0;
00488             A[138]=1;
00489             break;
00490         }
00491         case 9:  {
00492             A[142]=1;
00493             A[141]=1;
00494             A[140]=0;
00495             A[139]=1;
00496             A[138]=0;
00497             break;
00498         }
00499         case 10: {
00500             A[142]=1;
00501             A[141]=0;
00502             A[140]=1;
00503             A[139]=0;
00504             A[138]=0;
00505             break;
00506         }
00507         case 11: {
00508             A[142]=0;
00509             A[141]=1;
00510             A[140]=0;
00511             A[139]=0;
00512             A[138]=1;
00513             break;
00514         }
00515         case 12: {
00516             A[142]=1;
00517             A[141]=0;
00518             A[140]=0;
00519             A[139]=1;
00520             A[138]=0;
00521             break;
00522         }
00523         case 13: {
00524             A[142]=0;
00525             A[141]=0;
00526             A[140]=1;
00527             A[139]=0;
00528             A[138]=0;
00529             break;
00530         }
00531         case 14: {
00532             A[142]=0;
00533             A[141]=1;
00534             A[140]=0;
00535             A[139]=0;
00536             A[138]=0;
00537             break;
00538         }
00539         case 15: {
00540             A[142]=1;
00541             A[141]=0;
00542             A[140]=0;
00543             A[139]=0;
00544             A[138]=0;
00545             break;
00546         }
00547         case 16: {
00548             A[142]=0;
00549             A[141]=0;
00550             A[140]=0;
00551             A[139]=0;
00552             A[138]=1;
00553             break;
00554         }
00555         case 17: {
00556             A[142]=0;
00557             A[141]=0;
00558             A[140]=0;
00559             A[139]=1;
00560             A[138]=0;
00561             break;
00562         }
00563         case 18: {
00564             A[142]=0;
00565             A[141]=0;
00566             A[140]=1;
00567             A[139]=0;
00568             A[138]=1;
00569             break;
00570         }
00571         case 19: {
00572             A[142]=0;
00573             A[141]=1;
00574             A[140]=0;
00575             A[139]=1;
00576             A[138]=0;
00577             break;
00578         }
00579         case 20: {
00580             A[142]=1;
00581             A[141]=0;
00582             A[140]=1;
00583             A[139]=0;
00584             A[138]=1;
00585             break;
00586         }
00587         case 21: {
00588             A[142]=0;
00589             A[141]=1;
00590             A[140]=0;
00591             A[139]=1;
00592             A[138]=1;
00593             break;
00594         }
00595         case 22: {
00596             A[142]=1;
00597             A[141]=0;
00598             A[140]=1;
00599             A[139]=1;
00600             A[138]=1;
00601             break;
00602         }
00603         case 23: {
00604             A[142]=0;
00605             A[141]=1;
00606             A[140]=1;
00607             A[139]=1;
00608             A[138]=0;
00609             break;
00610         }
00611         case 24: {
00612             A[142]=1;
00613             A[141]=1;
00614             A[140]=1;
00615             A[139]=0;
00616             A[138]=1;
00617             break;
00618         }
00619         case 25: {
00620             A[142]=1;
00621             A[141]=1;
00622             A[140]=0;
00623             A[139]=1;
00624             A[138]=1;
00625             break;
00626         }
00627         case 26: {
00628             A[142]=1;
00629             A[141]=0;
00630             A[140]=1;
00631             A[139]=1;
00632             A[138]=0;
00633             break;
00634         }
00635         case 27: {
00636             A[142]=0;
00637             A[141]=1;
00638             A[140]=1;
00639             A[139]=0;
00640             A[138]=0;
00641             break;
00642         }
00643         case 28: {
00644             A[142]=1;
00645             A[141]=1;
00646             A[140]=0;
00647             A[139]=0;
00648             A[138]=0;
00649             break;
00650         }
00651         case 29: {
00652             A[142]=1;
00653             A[141]=0;
00654             A[140]=0;
00655             A[139]=0;
00656             A[138]=1;
00657             break;
00658         }
00659         case 30: {
00660             A[142]=0;
00661             A[141]=0;
00662             A[140]=0;
00663             A[139]=1;
00664             A[138]=1;
00665             break;
00666         }
00667         case 31: {
00668             A[142]=0;
00669             A[141]=0;
00670             A[140]=1;
00671             A[139]=1;
00672             A[138]=1;
00673             break;
00674         }
00675         case 32: {
00676             A[142]=0;
00677             A[141]=1;
00678             A[140]=1;
00679             A[139]=1;
00680             A[138]=1;
00681             break;
00682         }
00683         default: {
00684             A[142]=0;
00685             A[141]=0;
00686             A[140]=0;
00687             A[139]=0;
00688             A[138]=0;
00689             break;
00690         }
00691     }
00692 }
00693 
00694 /**************************************************
00695 Setting the Feedback Divider Pre-scalar bits A[136:134]
00696 Range: 1-4
00697 **************************************************/
00698 void PLL::setFbDivPreScaler(int val)
00699 {
00700     //scan_load[136:126] = PLL_MULTINT;
00701     //PLL_MULTINT[10] unused, connect to ground
00702     A[136] = 0;
00703     //Feedback Divider Pre-Scaler = MULTINT[9:8]
00704     switch(val) {
00705         case 1: {
00706             A[135] = 0;
00707             A[134] = 0;
00708             break;
00709         }
00710         case 2: {
00711             A[135] = 1;
00712             A[134] = 0;
00713             break;
00714         }
00715         case 3: {
00716             A[135] = 0;
00717             A[134] = 1;
00718             break;
00719         }
00720         case 4: {
00721             A[135] = 1;
00722             A[134] = 1;
00723             break;
00724         }
00725         default: {
00726             A[135] = 0;
00727             A[134] = 0;
00728             break;
00729         }
00730     }
00731 }
00732 
00733 /**************************************************
00734 Setting the Feedback Divider bits A[133:126]
00735 Range: 1-255
00736 **************************************************/
00737 void PLL::setFbDiv(int val)
00738 {
00739     //scan_load[133:126] = PLL_MULTINT;
00740     //Feedback Divider = MULTINT[7:0]
00741     switch(val) {
00742         case 1: {
00743             A[133]=0;
00744             A[132]=0;
00745             A[131]=0;
00746             A[130]=0;
00747             A[129]=0;
00748             A[128]=0;
00749             A[127]=0;
00750             A[126]=0;
00751             break;
00752         }
00753         case 34: {
00754             A[133]=1;
00755             A[132]=1;
00756             A[131]=1;
00757             A[130]=0;
00758             A[129]=0;
00759             A[128]=0;
00760             A[127]=1;
00761             A[126]=1;
00762             break;
00763         }
00764         case 67: {
00765             A[133]=0;
00766             A[132]=1;
00767             A[131]=1;
00768             A[130]=0;
00769             A[129]=0;
00770             A[128]=0;
00771             A[127]=0;
00772             A[126]=1;
00773             break;
00774         }
00775         case 2: {
00776             A[133]=1;
00777             A[132]=1;
00778             A[131]=1;
00779             A[130]=1;
00780             A[129]=1;
00781             A[128]=1;
00782             A[127]=1;
00783             A[126]=1;
00784             break;
00785         }
00786         case 35: {
00787             A[133]=0;
00788             A[132]=1;
00789             A[131]=0;
00790             A[130]=0;
00791             A[129]=0;
00792             A[128]=1;
00793             A[127]=1;
00794             A[126]=0;
00795             break;
00796         }
00797         case 68: {
00798             A[133]=1;
00799             A[132]=1;
00800             A[131]=0;
00801             A[130]=0;
00802             A[129]=0;
00803             A[128]=0;
00804             A[127]=1;
00805             A[126]=0;
00806             break;
00807         }
00808         case 3: {
00809             A[133]=0;
00810             A[132]=1;
00811             A[131]=1;
00812             A[130]=1;
00813             A[129]=1;
00814             A[128]=1;
00815             A[127]=1;
00816             A[126]=0;
00817             break;
00818         }
00819         case 36: {
00820             A[133]=1;
00821             A[132]=0;
00822             A[131]=0;
00823             A[130]=0;
00824             A[129]=1;
00825             A[128]=1;
00826             A[127]=0;
00827             A[126]=1;
00828             break;
00829         }
00830         case 69: {
00831             A[133]=0;
00832             A[132]=0;
00833             A[131]=0;
00834             A[130]=0;
00835             A[129]=0;
00836             A[128]=1;
00837             A[127]=0;
00838             A[126]=1;
00839             break;
00840         }
00841         case 4: {
00842             A[133]=1;
00843             A[132]=1;
00844             A[131]=1;
00845             A[130]=1;
00846             A[129]=1;
00847             A[128]=1;
00848             A[127]=0;
00849             A[126]=1;
00850             break;
00851         }
00852         case 37: {
00853             A[133]=0;
00854             A[132]=0;
00855             A[131]=0;
00856             A[130]=1;
00857             A[129]=1;
00858             A[128]=0;
00859             A[127]=1;
00860             A[126]=1;
00861             break;
00862         }
00863         case 70: {
00864             A[133]=1;
00865             A[132]=0;
00866             A[131]=0;
00867             A[130]=0;
00868             A[129]=1;
00869             A[128]=0;
00870             A[127]=1;
00871             A[126]=1;
00872             break;
00873         }
00874         case 5: {
00875             A[133]=0;
00876             A[132]=1;
00877             A[131]=1;
00878             A[130]=1;
00879             A[129]=1;
00880             A[128]=0;
00881             A[127]=1;
00882             A[126]=0;
00883             break;
00884         }
00885         case 38: {
00886             A[133]=1;
00887             A[132]=0;
00888             A[131]=1;
00889             A[130]=1;
00890             A[129]=0;
00891             A[128]=1;
00892             A[127]=1;
00893             A[126]=1;
00894             break;
00895         }
00896         case 71: {
00897             A[133]=0;
00898             A[132]=0;
00899             A[131]=0;
00900             A[130]=1;
00901             A[129]=0;
00902             A[128]=1;
00903             A[127]=1;
00904             A[126]=1;
00905             break;
00906         }
00907         case 6: {
00908             A[133]=1;
00909             A[132]=1;
00910             A[131]=1;
00911             A[130]=1;
00912             A[129]=0;
00913             A[128]=1;
00914             A[127]=0;
00915             A[126]=1;
00916             break;
00917         }
00918         case 39: {
00919             A[133]=0;
00920             A[132]=1;
00921             A[131]=1;
00922             A[130]=0;
00923             A[129]=1;
00924             A[128]=1;
00925             A[127]=1;
00926             A[126]=1;
00927             break;
00928         }
00929         case 72: {
00930             A[133]=1;
00931             A[132]=0;
00932             A[131]=1;
00933             A[130]=0;
00934             A[129]=1;
00935             A[128]=1;
00936             A[127]=1;
00937             A[126]=1;
00938             break;
00939         }
00940         case 7: {
00941             A[133]=0;
00942             A[132]=1;
00943             A[131]=1;
00944             A[130]=0;
00945             A[129]=1;
00946             A[128]=0;
00947             A[127]=1;
00948             A[126]=0;
00949             break;
00950         }
00951         case 40: {
00952             A[133]=1;
00953             A[132]=1;
00954             A[131]=0;
00955             A[130]=1;
00956             A[129]=1;
00957             A[128]=1;
00958             A[127]=1;
00959             A[126]=0;
00960             break;
00961         }
00962         case 73: {
00963             A[133]=0;
00964             A[132]=1;
00965             A[131]=0;
00966             A[130]=1;
00967             A[129]=1;
00968             A[128]=1;
00969             A[127]=1;
00970             A[126]=1;
00971             break;
00972         }
00973         case 8: {
00974             A[133]=1;
00975             A[132]=1;
00976             A[131]=0;
00977             A[130]=1;
00978             A[129]=0;
00979             A[128]=1;
00980             A[127]=0;
00981             A[126]=1;
00982             break;
00983         }
00984         case 41: {
00985             A[133]=0;
00986             A[132]=0;
00987             A[131]=1;
00988             A[130]=1;
00989             A[129]=1;
00990             A[128]=1;
00991             A[127]=0;
00992             A[126]=1;
00993             break;
00994         }
00995         case 74: {
00996             A[133]=1;
00997             A[132]=0;
00998             A[131]=1;
00999             A[130]=1;
01000             A[129]=1;
01001             A[128]=1;
01002             A[127]=1;
01003             A[126]=0;
01004             break;
01005         }
01006         case 9: {
01007             A[133]=0;
01008             A[132]=0;
01009             A[131]=1;
01010             A[130]=0;
01011             A[129]=1;
01012             A[128]=0;
01013             A[127]=1;
01014             A[126]=0;
01015             break;
01016         }
01017         case 42: {
01018             A[133]=1;
01019             A[132]=1;
01020             A[131]=1;
01021             A[130]=1;
01022             A[129]=1;
01023             A[128]=0;
01024             A[127]=1;
01025             A[126]=1;
01026             break;
01027         }
01028         case 75: {
01029             A[133]=0;
01030             A[132]=1;
01031             A[131]=1;
01032             A[130]=1;
01033             A[129]=1;
01034             A[128]=1;
01035             A[127]=0;
01036             A[126]=0;
01037             break;
01038         }
01039         case 10: {
01040             A[133]=1;
01041             A[132]=1;
01042             A[131]=0;
01043             A[130]=1;
01044             A[129]=0;
01045             A[128]=1;
01046             A[127]=0;
01047             A[126]=0;
01048             break;
01049         }
01050         case 43: {
01051             A[133]=0;
01052             A[132]=1;
01053             A[131]=1;
01054             A[130]=1;
01055             A[129]=0;
01056             A[128]=1;
01057             A[127]=1;
01058             A[126]=0;
01059             break;
01060         }
01061         case 76: {
01062             A[133]=1;
01063             A[132]=1;
01064             A[131]=1;
01065             A[130]=1;
01066             A[129]=1;
01067             A[128]=0;
01068             A[127]=0;
01069             A[126]=1;
01070             break;
01071         }
01072         case 11: {
01073             A[133]=0;
01074             A[132]=0;
01075             A[131]=1;
01076             A[130]=0;
01077             A[129]=1;
01078             A[128]=0;
01079             A[127]=0;
01080             A[126]=1;
01081             break;
01082         }
01083         case 44: {
01084             A[133]=1;
01085             A[132]=1;
01086             A[131]=1;
01087             A[130]=0;
01088             A[129]=1;
01089             A[128]=1;
01090             A[127]=0;
01091             A[126]=1;
01092             break;
01093         }
01094         case 77: {
01095             A[133]=0;
01096             A[132]=1;
01097             A[131]=1;
01098             A[130]=1;
01099             A[129]=0;
01100             A[128]=0;
01101             A[127]=1;
01102             A[126]=0;
01103             break;
01104         }
01105         case 12: {
01106             A[133]=1;
01107             A[132]=1;
01108             A[131]=0;
01109             A[130]=1;
01110             A[129]=0;
01111             A[128]=0;
01112             A[127]=1;
01113             A[126]=1;
01114             break;
01115         }
01116         case 45: {
01117             A[133]=0;
01118             A[132]=1;
01119             A[131]=0;
01120             A[130]=1;
01121             A[129]=1;
01122             A[128]=0;
01123             A[127]=1;
01124             A[126]=0;
01125             break;
01126         }
01127         case 78: {
01128             A[133]=1;
01129             A[132]=1;
01130             A[131]=1;
01131             A[130]=0;
01132             A[129]=0;
01133             A[128]=1;
01134             A[127]=0;
01135             A[126]=1;
01136             break;
01137         }
01138         case 13: {
01139             A[133]=0;
01140             A[132]=0;
01141             A[131]=1;
01142             A[130]=0;
01143             A[129]=0;
01144             A[128]=1;
01145             A[127]=1;
01146             A[126]=0;
01147             break;
01148         }
01149         case 46: {
01150             A[133]=1;
01151             A[132]=0;
01152             A[131]=1;
01153             A[130]=1;
01154             A[129]=0;
01155             A[128]=1;
01156             A[127]=0;
01157             A[126]=1;
01158             break;
01159         }
01160         case 79: {
01161             A[133]=0;
01162             A[132]=1;
01163             A[131]=0;
01164             A[130]=0;
01165             A[129]=1;
01166             A[128]=0;
01167             A[127]=1;
01168             A[126]=0;
01169             break;
01170         }
01171         case 14: {
01172             A[133]=1;
01173             A[132]=1;
01174             A[131]=0;
01175             A[130]=0;
01176             A[129]=1;
01177             A[128]=1;
01178             A[127]=0;
01179             A[126]=0;
01180             break;
01181         }
01182         case 47: {
01183             A[133]=0;
01184             A[132]=1;
01185             A[131]=1;
01186             A[130]=0;
01187             A[129]=1;
01188             A[128]=0;
01189             A[127]=1;
01190             A[126]=1;
01191             break;
01192         }
01193         case 80: {
01194             A[133]=1;
01195             A[132]=0;
01196             A[131]=0;
01197             A[130]=1;
01198             A[129]=0;
01199             A[128]=1;
01200             A[127]=0;
01201             A[126]=1;
01202             break;
01203         }
01204         case 15: {
01205             A[133]=0;
01206             A[132]=0;
01207             A[131]=0;
01208             A[130]=1;
01209             A[129]=1;
01210             A[128]=0;
01211             A[127]=0;
01212             A[126]=1;
01213             break;
01214         }
01215         case 48: {
01216             A[133]=1;
01217             A[132]=1;
01218             A[131]=0;
01219             A[130]=1;
01220             A[129]=0;
01221             A[128]=1;
01222             A[127]=1;
01223             A[126]=0;
01224             break;
01225         }
01226         case 81: {
01227             A[133]=0;
01228             A[132]=0;
01229             A[131]=1;
01230             A[130]=0;
01231             A[129]=1;
01232             A[128]=0;
01233             A[127]=1;
01234             A[126]=1;
01235             break;
01236         }
01237         case 16: {
01238             A[133]=1;
01239             A[132]=0;
01240             A[131]=1;
01241             A[130]=1;
01242             A[129]=0;
01243             A[128]=0;
01244             A[127]=1;
01245             A[126]=1;
01246             break;
01247         }
01248         case 49: {
01249             A[133]=0;
01250             A[132]=0;
01251             A[131]=1;
01252             A[130]=0;
01253             A[129]=1;
01254             A[128]=1;
01255             A[127]=0;
01256             A[126]=1;
01257             break;
01258         }
01259         case 82: {
01260             A[133]=1;
01261             A[132]=1;
01262             A[131]=0;
01263             A[130]=1;
01264             A[129]=0;
01265             A[128]=1;
01266             A[127]=1;
01267             A[126]=1;
01268             break;
01269         }
01270         case 17: {
01271             A[133]=0;
01272             A[132]=1;
01273             A[131]=1;
01274             A[130]=0;
01275             A[129]=0;
01276             A[128]=1;
01277             A[127]=1;
01278             A[126]=1;
01279             break;
01280         }
01281         case 50: {
01282             A[133]=1;
01283             A[132]=1;
01284             A[131]=0;
01285             A[130]=1;
01286             A[129]=1;
01287             A[128]=0;
01288             A[127]=1;
01289             A[126]=1;
01290             break;
01291         }
01292         case 83: {
01293             A[133]=0;
01294             A[132]=0;
01295             A[131]=1;
01296             A[130]=0;
01297             A[129]=1;
01298             A[128]=1;
01299             A[127]=1;
01300             A[126]=0;
01301             break;
01302         }
01303         case 18: {
01304             A[133]=1;
01305             A[132]=1;
01306             A[131]=0;
01307             A[130]=0;
01308             A[129]=1;
01309             A[128]=1;
01310             A[127]=1;
01311             A[126]=0;
01312             break;
01313         }
01314         case 51: {
01315             A[133]=0;
01316             A[132]=0;
01317             A[131]=1;
01318             A[130]=1;
01319             A[129]=0;
01320             A[128]=1;
01321             A[127]=1;
01322             A[126]=0;
01323             break;
01324         }
01325         case 84: {
01326             A[133]=1;
01327             A[132]=1;
01328             A[131]=0;
01329             A[130]=1;
01330             A[129]=1;
01331             A[128]=1;
01332             A[127]=0;
01333             A[126]=0;
01334             break;
01335         }
01336         case 19: {
01337             A[133]=0;
01338             A[132]=0;
01339             A[131]=0;
01340             A[130]=1;
01341             A[129]=1;
01342             A[128]=1;
01343             A[127]=0;
01344             A[126]=1;
01345             break;
01346         }
01347         case 52: {
01348             A[133]=1;
01349             A[132]=1;
01350             A[131]=1;
01351             A[130]=0;
01352             A[129]=1;
01353             A[128]=1;
01354             A[127]=0;
01355             A[126]=0;
01356             break;
01357         }
01358         case 85: {
01359             A[133]=0;
01360             A[132]=0;
01361             A[131]=1;
01362             A[130]=1;
01363             A[129]=1;
01364             A[128]=0;
01365             A[127]=0;
01366             A[126]=1;
01367             break;
01368         }
01369         case 20: {
01370             A[133]=1;
01371             A[132]=0;
01372             A[131]=1;
01373             A[130]=1;
01374             A[129]=1;
01375             A[128]=0;
01376             A[127]=1;
01377             A[126]=1;
01378             break;
01379         }
01380         case 53: {
01381             A[133]=0;
01382             A[132]=1;
01383             A[131]=0;
01384             A[130]=1;
01385             A[129]=1;
01386             A[128]=0;
01387             A[127]=0;
01388             A[126]=1;
01389             break;
01390         }
01391         case 86: {
01392             A[133]=1;
01393             A[132]=1;
01394             A[131]=1;
01395             A[130]=1;
01396             A[129]=0;
01397             A[128]=0;
01398             A[127]=1;
01399             A[126]=1;
01400             break;
01401         }
01402         case 21: {
01403             A[133]=0;
01404             A[132]=1;
01405             A[131]=1;
01406             A[130]=1;
01407             A[129]=0;
01408             A[128]=1;
01409             A[127]=1;
01410             A[126]=1;
01411             break;
01412         }
01413         case 54: {
01414             A[133]=1;
01415             A[132]=0;
01416             A[131]=1;
01417             A[130]=1;
01418             A[129]=0;
01419             A[128]=0;
01420             A[127]=1;
01421             A[126]=0;
01422             break;
01423         }
01424         case 87: {
01425             A[133]=0;
01426             A[132]=1;
01427             A[131]=1;
01428             A[130]=0;
01429             A[129]=0;
01430             A[128]=1;
01431             A[127]=1;
01432             A[126]=0;
01433             break;
01434         }
01435         case 22: {
01436             A[133]=1;
01437             A[132]=1;
01438             A[131]=1;
01439             A[130]=0;
01440             A[129]=1;
01441             A[128]=1;
01442             A[127]=1;
01443             A[126]=0;
01444             break;
01445         }
01446         case 55: {
01447             A[133]=0;
01448             A[132]=1;
01449             A[131]=1;
01450             A[130]=0;
01451             A[129]=0;
01452             A[128]=1;
01453             A[127]=0;
01454             A[126]=0;
01455             break;
01456         }
01457         case 88: {
01458             A[133]=1;
01459             A[132]=1;
01460             A[131]=0;
01461             A[130]=0;
01462             A[129]=1;
01463             A[128]=1;
01464             A[127]=0;
01465             A[126]=1;
01466             break;
01467         }
01468         case 23: {
01469             A[133]=0;
01470             A[132]=1;
01471             A[131]=0;
01472             A[130]=1;
01473             A[129]=1;
01474             A[128]=1;
01475             A[127]=0;
01476             A[126]=1;
01477             break;
01478         }
01479         case 56: {
01480             A[133]=1;
01481             A[132]=1;
01482             A[131]=0;
01483             A[130]=0;
01484             A[129]=1;
01485             A[128]=0;
01486             A[127]=0;
01487             A[126]=1;
01488             break;
01489         }
01490         case 89: {
01491             A[133]=0;
01492             A[132]=0;
01493             A[131]=0;
01494             A[130]=1;
01495             A[129]=1;
01496             A[128]=0;
01497             A[127]=1;
01498             A[126]=0;
01499             break;
01500         }
01501         case 24: {
01502             A[133]=1;
01503             A[132]=0;
01504             A[131]=1;
01505             A[130]=1;
01506             A[129]=1;
01507             A[128]=0;
01508             A[127]=1;
01509             A[126]=0;
01510             break;
01511         }
01512         case 57: {
01513             A[133]=0;
01514             A[132]=0;
01515             A[131]=0;
01516             A[130]=1;
01517             A[129]=0;
01518             A[128]=0;
01519             A[127]=1;
01520             A[126]=0;
01521             break;
01522         }
01523         case 90: {
01524             A[133]=1;
01525             A[132]=0;
01526             A[131]=1;
01527             A[130]=1;
01528             A[129]=0;
01529             A[128]=1;
01530             A[127]=0;
01531             A[126]=0;
01532             break;
01533         }
01534         case 25: {
01535             A[133]=0;
01536             A[132]=1;
01537             A[131]=1;
01538             A[130]=1;
01539             A[129]=0;
01540             A[128]=1;
01541             A[127]=0;
01542             A[126]=0;
01543             break;
01544         }
01545         case 58: {
01546             A[133]=1;
01547             A[132]=0;
01548             A[131]=1;
01549             A[130]=0;
01550             A[129]=0;
01551             A[128]=1;
01552             A[127]=0;
01553             A[126]=0;
01554             break;
01555         }
01556         case 91: {
01557             A[133]=0;
01558             A[132]=1;
01559             A[131]=1;
01560             A[130]=0;
01561             A[129]=1;
01562             A[128]=0;
01563             A[127]=0;
01564             A[126]=0;
01565             break;
01566         }
01567         case 26: {
01568             A[133]=1;
01569             A[132]=1;
01570             A[131]=1;
01571             A[130]=0;
01572             A[129]=1;
01573             A[128]=0;
01574             A[127]=0;
01575             A[126]=1;
01576             break;
01577         }
01578         case 59: {
01579             A[133]=0;
01580             A[132]=1;
01581             A[131]=0;
01582             A[130]=0;
01583             A[129]=1;
01584             A[128]=0;
01585             A[127]=0;
01586             A[126]=0;
01587             break;
01588         }
01589         case 92: {
01590             A[133]=1;
01591             A[132]=1;
01592             A[131]=0;
01593             A[130]=1;
01594             A[129]=0;
01595             A[128]=0;
01596             A[127]=0;
01597             A[126]=1;
01598             break;
01599         }
01600         case 27: {
01601             A[133]=0;
01602             A[132]=1;
01603             A[131]=0;
01604             A[130]=1;
01605             A[129]=0;
01606             A[128]=0;
01607             A[127]=1;
01608             A[126]=0;
01609             break;
01610         }
01611         case 60: {
01612             A[133]=1;
01613             A[132]=0;
01614             A[131]=0;
01615             A[130]=1;
01616             A[129]=0;
01617             A[128]=0;
01618             A[127]=0;
01619             A[126]=1;
01620             break;
01621         }
01622         case 93: {
01623             A[133]=0;
01624             A[132]=0;
01625             A[131]=1;
01626             A[130]=0;
01627             A[129]=0;
01628             A[128]=0;
01629             A[127]=1;
01630             A[126]=0;
01631             break;
01632         }
01633         case 28: {
01634             A[133]=1;
01635             A[132]=0;
01636             A[131]=1;
01637             A[130]=0;
01638             A[129]=0;
01639             A[128]=1;
01640             A[127]=0;
01641             A[126]=1;
01642             break;
01643         }
01644         case 61: {
01645             A[133]=0;
01646             A[132]=0;
01647             A[131]=1;
01648             A[130]=0;
01649             A[129]=0;
01650             A[128]=0;
01651             A[127]=1;
01652             A[126]=1;
01653             break;
01654         }
01655         case 94: {
01656             A[133]=1;
01657             A[132]=1;
01658             A[131]=0;
01659             A[130]=0;
01660             A[129]=0;
01661             A[128]=1;
01662             A[127]=0;
01663             A[126]=0;
01664             break;
01665         }
01666         case 29: {
01667             A[133]=0;
01668             A[132]=1;
01669             A[131]=0;
01670             A[130]=0;
01671             A[129]=1;
01672             A[128]=0;
01673             A[127]=1;
01674             A[126]=1;
01675             break;
01676         }
01677         case 62: {
01678             A[133]=1;
01679             A[132]=1;
01680             A[131]=0;
01681             A[130]=0;
01682             A[129]=0;
01683             A[128]=1;
01684             A[127]=1;
01685             A[126]=1;
01686             break;
01687         }
01688         case 95: {
01689             A[133]=0;
01690             A[132]=0;
01691             A[131]=0;
01692             A[130]=0;
01693             A[129]=1;
01694             A[128]=0;
01695             A[127]=0;
01696             A[126]=1;
01697             break;
01698         }
01699         case 30: {
01700             A[133]=1;
01701             A[132]=0;
01702             A[131]=0;
01703             A[130]=1;
01704             A[129]=0;
01705             A[128]=1;
01706             A[127]=1;
01707             A[126]=0;
01708             break;
01709         }
01710         case 63: {
01711             A[133]=0;
01712             A[132]=0;
01713             A[131]=0;
01714             A[130]=0;
01715             A[129]=1;
01716             A[128]=1;
01717             A[127]=1;
01718             A[126]=0;
01719             break;
01720         }
01721         case 96: {
01722             A[133]=1;
01723             A[132]=0;
01724             A[131]=0;
01725             A[130]=1;
01726             A[129]=0;
01727             A[128]=0;
01728             A[127]=1;
01729             A[126]=1;
01730             break;
01731         }
01732         case 31: {
01733             A[133]=0;
01734             A[132]=0;
01735             A[131]=1;
01736             A[130]=0;
01737             A[129]=1;
01738             A[128]=1;
01739             A[127]=0;
01740             A[126]=0;
01741             break;
01742         }
01743         case 64: {
01744             A[133]=1;
01745             A[132]=0;
01746             A[131]=0;
01747             A[130]=1;
01748             A[129]=1;
01749             A[128]=1;
01750             A[127]=0;
01751             A[126]=0;
01752             break;
01753         }
01754         case 97: {
01755             A[133]=0;
01756             A[132]=0;
01757             A[131]=1;
01758             A[130]=0;
01759             A[129]=0;
01760             A[128]=1;
01761             A[127]=1;
01762             A[126]=1;
01763             break;
01764         }
01765         case 32: {
01766             A[133]=1;
01767             A[132]=1;
01768             A[131]=0;
01769             A[130]=1;
01770             A[129]=1;
01771             A[128]=0;
01772             A[127]=0;
01773             A[126]=0;
01774             break;
01775         }
01776         case 65: {
01777             A[133]=0;
01778             A[132]=0;
01779             A[131]=1;
01780             A[130]=1;
01781             A[129]=1;
01782             A[128]=0;
01783             A[127]=0;
01784             A[126]=0;
01785             break;
01786         }
01787         case 98: {
01788             A[133]=1;
01789             A[132]=1;
01790             A[131]=0;
01791             A[130]=0;
01792             A[129]=1;
01793             A[128]=1;
01794             A[127]=1;
01795             A[126]=1;
01796             break;
01797         }
01798         case 33: {
01799             A[133]=0;
01800             A[132]=0;
01801             A[131]=1;
01802             A[130]=1;
01803             A[129]=0;
01804             A[128]=0;
01805             A[127]=0;
01806             A[126]=1;
01807             break;
01808         }
01809         case 66: {
01810             A[133]=1;
01811             A[132]=1;
01812             A[131]=1;
01813             A[130]=1;
01814             A[129]=0;
01815             A[128]=0;
01816             A[127]=0;
01817             A[126]=0;
01818             break;
01819         }
01820         case 99: {
01821             A[133]=0;
01822             A[132]=0;
01823             A[131]=0;
01824             A[130]=1;
01825             A[129]=1;
01826             A[128]=1;
01827             A[127]=1;
01828             A[126]=0;
01829             break;
01830         }
01831         case 100: {
01832             A[133]=1;
01833             A[132]=0;
01834             A[131]=1;
01835             A[130]=1;
01836             A[129]=1;
01837             A[128]=1;
01838             A[127]=0;
01839             A[126]=0;
01840             break;
01841         }
01842         case 136: {
01843             A[133]=1;
01844             A[132]=0;
01845             A[131]=1;
01846             A[130]=0;
01847             A[129]=1;
01848             A[128]=0;
01849             A[127]=1;
01850             A[126]=0;
01851             break;
01852         }
01853         case 172: {
01854             A[133]=1;
01855             A[132]=1;
01856             A[131]=0;
01857             A[130]=1;
01858             A[129]=1;
01859             A[128]=0;
01860             A[127]=1;
01861             A[126]=0;
01862             break;
01863         }
01864         case 101: {
01865             A[133]=0;
01866             A[132]=1;
01867             A[131]=1;
01868             A[130]=1;
01869             A[129]=1;
01870             A[128]=0;
01871             A[127]=0;
01872             A[126]=0;
01873             break;
01874         }
01875         case 137: {
01876             A[133]=0;
01877             A[132]=1;
01878             A[131]=0;
01879             A[130]=1;
01880             A[129]=0;
01881             A[128]=1;
01882             A[127]=0;
01883             A[126]=0;
01884             break;
01885         }
01886         case 173: {
01887             A[133]=0;
01888             A[132]=0;
01889             A[131]=1;
01890             A[130]=1;
01891             A[129]=0;
01892             A[128]=1;
01893             A[127]=0;
01894             A[126]=1;
01895             break;
01896         }
01897         case 102: {
01898             A[133]=1;
01899             A[132]=1;
01900             A[131]=1;
01901             A[130]=1;
01902             A[129]=0;
01903             A[128]=0;
01904             A[127]=0;
01905             A[126]=1;
01906             break;
01907         }
01908         case 138: {
01909             A[133]=1;
01910             A[132]=0;
01911             A[131]=1;
01912             A[130]=0;
01913             A[129]=1;
01914             A[128]=0;
01915             A[127]=0;
01916             A[126]=1;
01917             break;
01918         }
01919         case 174: {
01920             A[133]=1;
01921             A[132]=1;
01922             A[131]=1;
01923             A[130]=0;
01924             A[129]=1;
01925             A[128]=0;
01926             A[127]=1;
01927             A[126]=1;
01928             break;
01929         }
01930         case 103: {
01931             A[133]=0;
01932             A[132]=1;
01933             A[131]=1;
01934             A[130]=0;
01935             A[129]=0;
01936             A[128]=0;
01937             A[127]=1;
01938             A[126]=0;
01939             break;
01940         }
01941         case 139: {
01942             A[133]=0;
01943             A[132]=1;
01944             A[131]=0;
01945             A[130]=1;
01946             A[129]=0;
01947             A[128]=0;
01948             A[127]=1;
01949             A[126]=1;
01950             break;
01951         }
01952         case 175: {
01953             A[133]=0;
01954             A[132]=1;
01955             A[131]=0;
01956             A[130]=1;
01957             A[129]=0;
01958             A[128]=1;
01959             A[127]=1;
01960             A[126]=0;
01961             break;
01962         }
01963         case 104: {
01964             A[133]=1;
01965             A[132]=1;
01966             A[131]=0;
01967             A[130]=0;
01968             A[129]=0;
01969             A[128]=1;
01970             A[127]=0;
01971             A[126]=1;
01972             break;
01973         }
01974         case 140: {
01975             A[133]=1;
01976             A[132]=0;
01977             A[131]=1;
01978             A[130]=0;
01979             A[129]=0;
01980             A[128]=1;
01981             A[127]=1;
01982             A[126]=0;
01983             break;
01984         }
01985         case 176: {
01986             A[133]=1;
01987             A[132]=0;
01988             A[131]=1;
01989             A[130]=0;
01990             A[129]=1;
01991             A[128]=1;
01992             A[127]=0;
01993             A[126]=1;
01994             break;
01995         }
01996         case 105: {
01997             A[133]=0;
01998             A[132]=0;
01999             A[131]=0;
02000             A[130]=0;
02001             A[129]=1;
02002             A[128]=0;
02003             A[127]=1;
02004             A[126]=0;
02005             break;
02006         }
02007         case 141: {
02008             A[133]=0;
02009             A[132]=1;
02010             A[131]=0;
02011             A[130]=0;
02012             A[129]=1;
02013             A[128]=1;
02014             A[127]=0;
02015             A[126]=0;
02016             break;
02017         }
02018         case 177: {
02019             A[133]=0;
02020             A[132]=1;
02021             A[131]=0;
02022             A[130]=1;
02023             A[129]=1;
02024             A[128]=0;
02025             A[127]=1;
02026             A[126]=1;
02027             break;
02028         }
02029         case 106: {
02030             A[133]=1;
02031             A[132]=0;
02032             A[131]=0;
02033             A[130]=1;
02034             A[129]=0;
02035             A[128]=1;
02036             A[127]=0;
02037             A[126]=0;
02038             break;
02039         }
02040         case 142: {
02041             A[133]=1;
02042             A[132]=0;
02043             A[131]=0;
02044             A[130]=1;
02045             A[129]=1;
02046             A[128]=0;
02047             A[127]=0;
02048             A[126]=1;
02049             break;
02050         }
02051         case 178: {
02052             A[133]=1;
02053             A[132]=0;
02054             A[131]=1;
02055             A[130]=1;
02056             A[129]=0;
02057             A[128]=1;
02058             A[127]=1;
02059             A[126]=0;
02060             break;
02061         }
02062         case 107: {
02063             A[133]=0;
02064             A[132]=0;
02065             A[131]=1;
02066             A[130]=0;
02067             A[129]=1;
02068             A[128]=0;
02069             A[127]=0;
02070             A[126]=0;
02071             break;
02072         }
02073         case 143: {
02074             A[133]=0;
02075             A[132]=0;
02076             A[131]=1;
02077             A[130]=1;
02078             A[129]=0;
02079             A[128]=0;
02080             A[127]=1;
02081             A[126]=1;
02082             break;
02083         }
02084         case 179: {
02085             A[133]=0;
02086             A[132]=1;
02087             A[131]=1;
02088             A[130]=0;
02089             A[129]=1;
02090             A[128]=1;
02091             A[127]=0;
02092             A[126]=0;
02093             break;
02094         }
02095         case 108: {
02096             A[133]=1;
02097             A[132]=1;
02098             A[131]=0;
02099             A[130]=1;
02100             A[129]=0;
02101             A[128]=0;
02102             A[127]=0;
02103             A[126]=0;
02104             break;
02105         }
02106         case 144: {
02107             A[133]=1;
02108             A[132]=1;
02109             A[131]=1;
02110             A[130]=0;
02111             A[129]=0;
02112             A[128]=1;
02113             A[127]=1;
02114             A[126]=1;
02115             break;
02116         }
02117         case 180: {
02118             A[133]=1;
02119             A[132]=1;
02120             A[131]=0;
02121             A[130]=1;
02122             A[129]=1;
02123             A[128]=0;
02124             A[127]=0;
02125             A[126]=1;
02126             break;
02127         }
02128         case 109: {
02129             A[133]=0;
02130             A[132]=0;
02131             A[131]=1;
02132             A[130]=0;
02133             A[129]=0;
02134             A[128]=0;
02135             A[127]=0;
02136             A[126]=1;
02137             break;
02138         }
02139         case 145: {
02140             A[133]=0;
02141             A[132]=1;
02142             A[131]=0;
02143             A[130]=0;
02144             A[129]=1;
02145             A[128]=1;
02146             A[127]=1;
02147             A[126]=0;
02148             break;
02149         }
02150         case 181: {
02151             A[133]=0;
02152             A[132]=0;
02153             A[131]=1;
02154             A[130]=1;
02155             A[129]=0;
02156             A[128]=0;
02157             A[127]=1;
02158             A[126]=0;
02159             break;
02160         }
02161         case 110: {
02162             A[133]=1;
02163             A[132]=1;
02164             A[131]=0;
02165             A[130]=0;
02166             A[129]=0;
02167             A[128]=0;
02168             A[127]=1;
02169             A[126]=1;
02170             break;
02171         }
02172         case 146: {
02173             A[133]=1;
02174             A[132]=0;
02175             A[131]=0;
02176             A[130]=1;
02177             A[129]=1;
02178             A[128]=1;
02179             A[127]=0;
02180             A[126]=1;
02181             break;
02182         }
02183         case 182: {
02184             A[133]=1;
02185             A[132]=1;
02186             A[131]=1;
02187             A[130]=0;
02188             A[129]=0;
02189             A[128]=1;
02190             A[127]=0;
02191             A[126]=0;
02192             break;
02193         }
02194         case 111: {
02195             A[133]=0;
02196             A[132]=0;
02197             A[131]=0;
02198             A[130]=0;
02199             A[129]=0;
02200             A[128]=1;
02201             A[127]=1;
02202             A[126]=0;
02203             break;
02204         }
02205         case 147: {
02206             A[133]=0;
02207             A[132]=0;
02208             A[131]=1;
02209             A[130]=1;
02210             A[129]=1;
02211             A[128]=0;
02212             A[127]=1;
02213             A[126]=1;
02214             break;
02215         }
02216         case 183: {
02217             A[133]=0;
02218             A[132]=1;
02219             A[131]=0;
02220             A[130]=0;
02221             A[129]=1;
02222             A[128]=0;
02223             A[127]=0;
02224             A[126]=1;
02225             break;
02226         }
02227         case 112: {
02228             A[133]=1;
02229             A[132]=0;
02230             A[131]=0;
02231             A[130]=0;
02232             A[129]=1;
02233             A[128]=1;
02234             A[127]=0;
02235             A[126]=0;
02236             break;
02237         }
02238         case 148: {
02239             A[133]=1;
02240             A[132]=1;
02241             A[131]=1;
02242             A[130]=1;
02243             A[129]=0;
02244             A[128]=1;
02245             A[127]=1;
02246             A[126]=1;
02247             break;
02248         }
02249         case 184: {
02250             A[133]=1;
02251             A[132]=0;
02252             A[131]=0;
02253             A[130]=1;
02254             A[129]=0;
02255             A[128]=0;
02256             A[127]=1;
02257             A[126]=0;
02258             break;
02259         }
02260         case 113: {
02261             A[133]=0;
02262             A[132]=0;
02263             A[131]=0;
02264             A[130]=1;
02265             A[129]=1;
02266             A[128]=0;
02267             A[127]=0;
02268             A[126]=0;
02269             break;
02270         }
02271         case 149: {
02272             A[133]=0;
02273             A[132]=1;
02274             A[131]=1;
02275             A[130]=0;
02276             A[129]=1;
02277             A[128]=1;
02278             A[127]=1;
02279             A[126]=0;
02280             break;
02281         }
02282         case 185: {
02283             A[133]=0;
02284             A[132]=0;
02285             A[131]=1;
02286             A[130]=0;
02287             A[129]=0;
02288             A[128]=1;
02289             A[127]=0;
02290             A[126]=0;
02291             break;
02292         }
02293         case 114: {
02294             A[133]=1;
02295             A[132]=0;
02296             A[131]=1;
02297             A[130]=1;
02298             A[129]=0;
02299             A[128]=0;
02300             A[127]=0;
02301             A[126]=0;
02302             break;
02303         }
02304         case 150: {
02305             A[133]=1;
02306             A[132]=1;
02307             A[131]=0;
02308             A[130]=1;
02309             A[129]=1;
02310             A[128]=1;
02311             A[127]=0;
02312             A[126]=1;
02313             break;
02314         }
02315         case 186: {
02316             A[133]=1;
02317             A[132]=1;
02318             A[131]=0;
02319             A[130]=0;
02320             A[129]=1;
02321             A[128]=0;
02322             A[127]=0;
02323             A[126]=0;
02324             break;
02325         }
02326         case 115: {
02327             A[133]=0;
02328             A[132]=1;
02329             A[131]=1;
02330             A[130]=0;
02331             A[129]=0;
02332             A[128]=0;
02333             A[127]=0;
02334             A[126]=0;
02335             break;
02336         }
02337         case 151: {
02338             A[133]=0;
02339             A[132]=0;
02340             A[131]=1;
02341             A[130]=1;
02342             A[129]=1;
02343             A[128]=0;
02344             A[127]=1;
02345             A[126]=0;
02346             break;
02347         }
02348         case 187: {
02349             A[133]=0;
02350             A[132]=0;
02351             A[131]=0;
02352             A[130]=1;
02353             A[129]=0;
02354             A[128]=0;
02355             A[127]=0;
02356             A[126]=1;
02357             break;
02358         }
02359         case 116: {
02360             A[133]=1;
02361             A[132]=1;
02362             A[131]=0;
02363             A[130]=0;
02364             A[129]=0;
02365             A[128]=0;
02366             A[127]=0;
02367             A[126]=1;
02368             break;
02369         }
02370         case 152: {
02371             A[133]=1;
02372             A[132]=1;
02373             A[131]=1;
02374             A[130]=1;
02375             A[129]=0;
02376             A[128]=1;
02377             A[127]=0;
02378             A[126]=0;
02379             break;
02380         }
02381         case 188: {
02382             A[133]=1;
02383             A[132]=0;
02384             A[131]=1;
02385             A[130]=0;
02386             A[129]=0;
02387             A[128]=0;
02388             A[127]=1;
02389             A[126]=1;
02390             break;
02391         }
02392         case 117: {
02393             A[133]=0;
02394             A[132]=0;
02395             A[131]=0;
02396             A[130]=0;
02397             A[129]=0;
02398             A[128]=0;
02399             A[127]=1;
02400             A[126]=0;
02401             break;
02402         }
02403         case 153: {
02404             A[133]=0;
02405             A[132]=1;
02406             A[131]=1;
02407             A[130]=0;
02408             A[129]=1;
02409             A[128]=0;
02410             A[127]=0;
02411             A[126]=1;
02412             break;
02413         }
02414         case 189: {
02415             A[133]=0;
02416             A[132]=1;
02417             A[131]=0;
02418             A[130]=0;
02419             A[129]=0;
02420             A[128]=1;
02421             A[127]=1;
02422             A[126]=1;
02423             break;
02424         }
02425         case 118: {
02426             A[133]=1;
02427             A[132]=0;
02428             A[131]=0;
02429             A[130]=0;
02430             A[129]=0;
02431             A[128]=1;
02432             A[127]=0;
02433             A[126]=0;
02434             break;
02435         }
02436         case 154: {
02437             A[133]=1;
02438             A[132]=1;
02439             A[131]=0;
02440             A[130]=1;
02441             A[129]=0;
02442             A[128]=0;
02443             A[127]=1;
02444             A[126]=0;
02445             break;
02446         }
02447         case 190: {
02448             A[133]=1;
02449             A[132]=0;
02450             A[131]=0;
02451             A[130]=0;
02452             A[129]=1;
02453             A[128]=1;
02454             A[127]=1;
02455             A[126]=0;
02456             break;
02457         }
02458         case 119: {
02459             A[133]=0;
02460             A[132]=0;
02461             A[131]=0;
02462             A[130]=0;
02463             A[129]=1;
02464             A[128]=0;
02465             A[127]=0;
02466             A[126]=0;
02467             break;
02468         }
02469         case 155: {
02470             A[133]=0;
02471             A[132]=0;
02472             A[131]=1;
02473             A[130]=0;
02474             A[129]=0;
02475             A[128]=1;
02476             A[127]=0;
02477             A[126]=1;
02478             break;
02479         }
02480         case 191: {
02481             A[133]=0;
02482             A[132]=0;
02483             A[131]=0;
02484             A[130]=1;
02485             A[129]=1;
02486             A[128]=1;
02487             A[127]=0;
02488             A[126]=0;
02489             break;
02490         }
02491         case 120: {
02492             A[133]=1;
02493             A[132]=0;
02494             A[131]=0;
02495             A[130]=1;
02496             A[129]=0;
02497             A[128]=0;
02498             A[127]=0;
02499             A[126]=0;
02500             break;
02501         }
02502         case 156: {
02503             A[133]=1;
02504             A[132]=1;
02505             A[131]=0;
02506             A[130]=0;
02507             A[129]=1;
02508             A[128]=0;
02509             A[127]=1;
02510             A[126]=1;
02511             break;
02512         }
02513         case 192: {
02514             A[133]=1;
02515             A[132]=0;
02516             A[131]=1;
02517             A[130]=1;
02518             A[129]=1;
02519             A[128]=0;
02520             A[127]=0;
02521             A[126]=0;
02522             break;
02523         }
02524         case 121: {
02525             A[133]=0;
02526             A[132]=0;
02527             A[131]=1;
02528             A[130]=0;
02529             A[129]=0;
02530             A[128]=0;
02531             A[127]=0;
02532             A[126]=0;
02533             break;
02534         }
02535         case 157: {
02536             A[133]=0;
02537             A[132]=0;
02538             A[131]=0;
02539             A[130]=1;
02540             A[129]=0;
02541             A[128]=1;
02542             A[127]=1;
02543             A[126]=0;
02544             break;
02545         }
02546         case 193: {
02547             A[133]=0;
02548             A[132]=1;
02549             A[131]=1;
02550             A[130]=1;
02551             A[129]=0;
02552             A[128]=0;
02553             A[127]=0;
02554             A[126]=0;
02555             break;
02556         }
02557         case 122: {
02558             A[133]=1;
02559             A[132]=1;
02560             A[131]=0;
02561             A[130]=0;
02562             A[129]=0;
02563             A[128]=0;
02564             A[127]=0;
02565             A[126]=0;
02566             break;
02567         }
02568         case 158: {
02569             A[133]=1;
02570             A[132]=0;
02571             A[131]=1;
02572             A[130]=0;
02573             A[129]=1;
02574             A[128]=1;
02575             A[127]=0;
02576             A[126]=0;
02577             break;
02578         }
02579         case 194: {
02580             A[133]=1;
02581             A[132]=1;
02582             A[131]=1;
02583             A[130]=0;
02584             A[129]=0;
02585             A[128]=0;
02586             A[127]=0;
02587             A[126]=1;
02588             break;
02589         }
02590         case 123: {
02591             A[133]=0;
02592             A[132]=0;
02593             A[131]=0;
02594             A[130]=0;
02595             A[129]=0;
02596             A[128]=0;
02597             A[127]=0;
02598             A[126]=1;
02599             break;
02600         }
02601         case 159: {
02602             A[133]=0;
02603             A[132]=1;
02604             A[131]=0;
02605             A[130]=1;
02606             A[129]=1;
02607             A[128]=0;
02608             A[127]=0;
02609             A[126]=0;
02610             break;
02611         }
02612         case 195: {
02613             A[133]=0;
02614             A[132]=1;
02615             A[131]=0;
02616             A[130]=0;
02617             A[129]=0;
02618             A[128]=0;
02619             A[127]=1;
02620             A[126]=0;
02621             break;
02622         }
02623         case 124: {
02624             A[133]=1;
02625             A[132]=0;
02626             A[131]=0;
02627             A[130]=0;
02628             A[129]=0;
02629             A[128]=0;
02630             A[127]=1;
02631             A[126]=1;
02632             break;
02633         }
02634         case 160: {
02635             A[133]=1;
02636             A[132]=0;
02637             A[131]=1;
02638             A[130]=1;
02639             A[129]=0;
02640             A[128]=0;
02641             A[127]=0;
02642             A[126]=1;
02643             break;
02644         }
02645         case 196: {
02646             A[133]=1;
02647             A[132]=0;
02648             A[131]=0;
02649             A[130]=0;
02650             A[129]=0;
02651             A[128]=1;
02652             A[127]=0;
02653             A[126]=1;
02654             break;
02655         }
02656         case 125: {
02657             A[133]=0;
02658             A[132]=0;
02659             A[131]=0;
02660             A[130]=0;
02661             A[129]=0;
02662             A[128]=1;
02663             A[127]=1;
02664             A[126]=1;
02665             break;
02666         }
02667         case 161: {
02668             A[133]=0;
02669             A[132]=1;
02670             A[131]=1;
02671             A[130]=0;
02672             A[129]=0;
02673             A[128]=0;
02674             A[127]=1;
02675             A[126]=1;
02676             break;
02677         }
02678         case 197: {
02679             A[133]=0;
02680             A[132]=0;
02681             A[131]=0;
02682             A[130]=0;
02683             A[129]=1;
02684             A[128]=0;
02685             A[127]=1;
02686             A[126]=1;
02687             break;
02688         }
02689         case 126: {
02690             A[133]=1;
02691             A[132]=0;
02692             A[131]=0;
02693             A[130]=0;
02694             A[129]=1;
02695             A[128]=1;
02696             A[127]=1;
02697             A[126]=1;
02698             break;
02699         }
02700         case 162: {
02701             A[133]=1;
02702             A[132]=1;
02703             A[131]=0;
02704             A[130]=0;
02705             A[129]=0;
02706             A[128]=1;
02707             A[127]=1;
02708             A[126]=0;
02709             break;
02710         }
02711         case 198: {
02712             A[133]=1;
02713             A[132]=0;
02714             A[131]=0;
02715             A[130]=1;
02716             A[129]=0;
02717             A[128]=1;
02718             A[127]=1;
02719             A[126]=1;
02720             break;
02721         }
02722         case 127: {
02723             A[133]=0;
02724             A[132]=0;
02725             A[131]=0;
02726             A[130]=1;
02727             A[129]=1;
02728             A[128]=1;
02729             A[127]=1;
02730             A[126]=1;
02731             break;
02732         }
02733         case 163: {
02734             A[133]=0;
02735             A[132]=0;
02736             A[131]=0;
02737             A[130]=0;
02738             A[129]=1;
02739             A[128]=1;
02740             A[127]=0;
02741             A[126]=1;
02742             break;
02743         }
02744         case 199: {
02745             A[133]=0;
02746             A[132]=0;
02747             A[131]=1;
02748             A[130]=0;
02749             A[129]=1;
02750             A[128]=1;
02751             A[127]=1;
02752             A[126]=1;
02753             break;
02754         }
02755         case 128: {
02756             A[133]=1;
02757             A[132]=0;
02758             A[131]=1;
02759             A[130]=1;
02760             A[129]=1;
02761             A[128]=1;
02762             A[127]=1;
02763             A[126]=1;
02764             break;
02765         }
02766         case 164: {
02767             A[133]=1;
02768             A[132]=0;
02769             A[131]=0;
02770             A[130]=1;
02771             A[129]=1;
02772             A[128]=0;
02773             A[127]=1;
02774             A[126]=1;
02775             break;
02776         }
02777         case 200: {
02778             A[133]=1;
02779             A[132]=1;
02780             A[131]=0;
02781             A[130]=1;
02782             A[129]=1;
02783             A[128]=1;
02784             A[127]=1;
02785             A[126]=1;
02786             break;
02787         }
02788         case 129: {
02789             A[133]=0;
02790             A[132]=1;
02791             A[131]=1;
02792             A[130]=1;
02793             A[129]=1;
02794             A[128]=1;
02795             A[127]=1;
02796             A[126]=1;
02797             break;
02798         }
02799         case 165: {
02800             A[133]=0;
02801             A[132]=0;
02802             A[131]=1;
02803             A[130]=1;
02804             A[129]=0;
02805             A[128]=1;
02806             A[127]=1;
02807             A[126]=1;
02808             break;
02809         }
02810         case 201: {
02811             A[133]=0;
02812             A[132]=0;
02813             A[131]=1;
02814             A[130]=1;
02815             A[129]=1;
02816             A[128]=1;
02817             A[127]=1;
02818             A[126]=0;
02819             break;
02820         }
02821         case 130: {
02822             A[133]=1;
02823             A[132]=1;
02824             A[131]=1;
02825             A[130]=1;
02826             A[129]=1;
02827             A[128]=1;
02828             A[127]=1;
02829             A[126]=0;
02830             break;
02831         }
02832         case 166: {
02833             A[133]=1;
02834             A[132]=1;
02835             A[131]=1;
02836             A[130]=0;
02837             A[129]=1;
02838             A[128]=1;
02839             A[127]=1;
02840             A[126]=1;
02841             break;
02842         }
02843         case 202: {
02844             A[133]=1;
02845             A[132]=1;
02846             A[131]=1;
02847             A[130]=1;
02848             A[129]=1;
02849             A[128]=1;
02850             A[127]=0;
02851             A[126]=0;
02852             break;
02853         }
02854         case 131: {
02855             A[133]=0;
02856             A[132]=1;
02857             A[131]=1;
02858             A[130]=1;
02859             A[129]=1;
02860             A[128]=1;
02861             A[127]=0;
02862             A[126]=1;
02863             break;
02864         }
02865         case 167: {
02866             A[133]=0;
02867             A[132]=1;
02868             A[131]=0;
02869             A[130]=1;
02870             A[129]=1;
02871             A[128]=1;
02872             A[127]=1;
02873             A[126]=0;
02874             break;
02875         }
02876         case 203: {
02877             A[133]=0;
02878             A[132]=1;
02879             A[131]=1;
02880             A[130]=1;
02881             A[129]=1;
02882             A[128]=0;
02883             A[127]=0;
02884             A[126]=1;
02885             break;
02886         }
02887         case 132: {
02888             A[133]=1;
02889             A[132]=1;
02890             A[131]=1;
02891             A[130]=1;
02892             A[129]=1;
02893             A[128]=0;
02894             A[127]=1;
02895             A[126]=0;
02896             break;
02897         }
02898         case 168: {
02899             A[133]=1;
02900             A[132]=0;
02901             A[131]=1;
02902             A[130]=1;
02903             A[129]=1;
02904             A[128]=1;
02905             A[127]=0;
02906             A[126]=1;
02907             break;
02908         }
02909         case 204: {
02910             A[133]=1;
02911             A[132]=1;
02912             A[131]=1;
02913             A[130]=1;
02914             A[129]=0;
02915             A[128]=0;
02916             A[127]=1;
02917             A[126]=0;
02918             break;
02919         }
02920         case 133: {
02921             A[133]=0;
02922             A[132]=1;
02923             A[131]=1;
02924             A[130]=1;
02925             A[129]=0;
02926             A[128]=1;
02927             A[127]=0;
02928             A[126]=1;
02929             break;
02930         }
02931         case 169: {
02932             A[133]=0;
02933             A[132]=1;
02934             A[131]=1;
02935             A[130]=1;
02936             A[129]=1;
02937             A[128]=0;
02938             A[127]=1;
02939             A[126]=1;
02940             break;
02941         }
02942         case 205: {
02943             A[133]=0;
02944             A[132]=1;
02945             A[131]=1;
02946             A[130]=0;
02947             A[129]=0;
02948             A[128]=1;
02949             A[127]=0;
02950             A[126]=1;
02951             break;
02952         }
02953         case 134: {
02954             A[133]=1;
02955             A[132]=1;
02956             A[131]=1;
02957             A[130]=0;
02958             A[129]=1;
02959             A[128]=0;
02960             A[127]=1;
02961             A[126]=0;
02962             break;
02963         }
02964         case 170: {
02965             A[133]=1;
02966             A[132]=1;
02967             A[131]=1;
02968             A[130]=1;
02969             A[129]=0;
02970             A[128]=1;
02971             A[127]=1;
02972             A[126]=0;
02973             break;
02974         }
02975         case 206: {
02976             A[133]=1;
02977             A[132]=1;
02978             A[131]=0;
02979             A[130]=0;
02980             A[129]=1;
02981             A[128]=0;
02982             A[127]=1;
02983             A[126]=0;
02984             break;
02985         }
02986         case 135: {
02987             A[133]=0;
02988             A[132]=1;
02989             A[131]=0;
02990             A[130]=1;
02991             A[129]=0;
02992             A[128]=1;
02993             A[127]=0;
02994             A[126]=1;
02995             break;
02996         }
02997         case 171: {
02998             A[133]=0;
02999             A[132]=1;
03000             A[131]=1;
03001             A[130]=0;
03002             A[129]=1;
03003             A[128]=1;
03004             A[127]=0;
03005             A[126]=1;
03006             break;
03007         }
03008         case 207: {
03009             A[133]=0;
03010             A[132]=0;
03011             A[131]=0;
03012             A[130]=1;
03013             A[129]=0;
03014             A[128]=1;
03015             A[127]=0;
03016             A[126]=1;
03017             break;
03018         }
03019         case 208: {
03020             A[133]=1;
03021             A[132]=0;
03022             A[131]=1;
03023             A[130]=0;
03024             A[129]=1;
03025             A[128]=0;
03026             A[127]=1;
03027             A[126]=1;
03028             break;
03029         }
03030         case 224: {
03031             A[133]=1;
03032             A[132]=0;
03033             A[131]=1;
03034             A[130]=0;
03035             A[129]=0;
03036             A[128]=1;
03037             A[127]=1;
03038             A[126]=1;
03039             break;
03040         }
03041         case 240: {
03042             A[133]=1;
03043             A[132]=0;
03044             A[131]=0;
03045             A[130]=1;
03046             A[129]=1;
03047             A[128]=0;
03048             A[127]=0;
03049             A[126]=0;
03050             break;
03051         }
03052         case 209: {
03053             A[133]=0;
03054             A[132]=1;
03055             A[131]=0;
03056             A[130]=1;
03057             A[129]=0;
03058             A[128]=1;
03059             A[127]=1;
03060             A[126]=1;
03061             break;
03062         }
03063         case 225: {
03064             A[133]=0;
03065             A[132]=1;
03066             A[131]=0;
03067             A[130]=0;
03068             A[129]=1;
03069             A[128]=1;
03070             A[127]=1;
03071             A[126]=1;
03072             break;
03073         }
03074         case 241: {
03075             A[133]=0;
03076             A[132]=0;
03077             A[131]=1;
03078             A[130]=1;
03079             A[129]=0;
03080             A[128]=0;
03081             A[127]=0;
03082             A[126]=0;
03083             break;
03084         }
03085         case 210: {
03086             A[133]=1;
03087             A[132]=0;
03088             A[131]=1;
03089             A[130]=0;
03090             A[129]=1;
03091             A[128]=1;
03092             A[127]=1;
03093             A[126]=0;
03094             break;
03095         }
03096         case 226: {
03097             A[133]=1;
03098             A[132]=0;
03099             A[131]=0;
03100             A[130]=1;
03101             A[129]=1;
03102             A[128]=1;
03103             A[127]=1;
03104             A[126]=0;
03105             break;
03106         }
03107         case 242: {
03108             A[133]=1;
03109             A[132]=1;
03110             A[131]=1;
03111             A[130]=0;
03112             A[129]=0;
03113             A[128]=0;
03114             A[127]=0;
03115             A[126]=0;
03116             break;
03117         }
03118         case 211: {
03119             A[133]=0;
03120             A[132]=1;
03121             A[131]=0;
03122             A[130]=1;
03123             A[129]=1;
03124             A[128]=1;
03125             A[127]=0;
03126             A[126]=0;
03127             break;
03128         }
03129         case 227: {
03130             A[133]=0;
03131             A[132]=0;
03132             A[131]=1;
03133             A[130]=1;
03134             A[129]=1;
03135             A[128]=1;
03136             A[127]=0;
03137             A[126]=0;
03138             break;
03139         }
03140         case 243: {
03141             A[133]=0;
03142             A[132]=1;
03143             A[131]=0;
03144             A[130]=0;
03145             A[129]=0;
03146             A[128]=0;
03147             A[127]=0;
03148             A[126]=1;
03149             break;
03150         }
03151         case 212: {
03152             A[133]=1;
03153             A[132]=0;
03154             A[131]=1;
03155             A[130]=1;
03156             A[129]=1;
03157             A[128]=0;
03158             A[127]=0;
03159             A[126]=1;
03160             break;
03161         }
03162         case 228: {
03163             A[133]=1;
03164             A[132]=1;
03165             A[131]=1;
03166             A[130]=1;
03167             A[129]=1;
03168             A[128]=0;
03169             A[127]=0;
03170             A[126]=0;
03171             break;
03172         }
03173         case 244: {
03174             A[133]=1;
03175             A[132]=0;
03176             A[131]=0;
03177             A[130]=0;
03178             A[129]=0;
03179             A[128]=0;
03180             A[127]=1;
03181             A[126]=0;
03182             break;
03183         }
03184         case 213: {
03185             A[133]=0;
03186             A[132]=1;
03187             A[131]=1;
03188             A[130]=1;
03189             A[129]=0;
03190             A[128]=0;
03191             A[127]=1;
03192             A[126]=1;
03193             break;
03194         }
03195         case 229: {
03196             A[133]=0;
03197             A[132]=1;
03198             A[131]=1;
03199             A[130]=1;
03200             A[129]=0;
03201             A[128]=0;
03202             A[127]=0;
03203             A[126]=1;
03204             break;
03205         }
03206         case 245: {
03207             A[133]=0;
03208             A[132]=0;
03209             A[131]=0;
03210             A[130]=0;
03211             A[129]=0;
03212             A[128]=1;
03213             A[127]=0;
03214             A[126]=0;
03215             break;
03216         }
03217         case 214: {
03218             A[133]=1;
03219             A[132]=1;
03220             A[131]=1;
03221             A[130]=0;
03222             A[129]=0;
03223             A[128]=1;
03224             A[127]=1;
03225             A[126]=0;
03226             break;
03227         }
03228         case 230: {
03229             A[133]=1;
03230             A[132]=1;
03231             A[131]=1;
03232             A[130]=0;
03233             A[129]=0;
03234             A[128]=0;
03235             A[127]=1;
03236             A[126]=0;
03237             break;
03238         }
03239         case 246: {
03240             A[133]=1;
03241             A[132]=0;
03242             A[131]=0;
03243             A[130]=0;
03244             A[129]=1;
03245             A[128]=0;
03246             A[127]=0;
03247             A[126]=0;
03248             break;
03249         }
03250         case 215: {
03251             A[133]=0;
03252             A[132]=1;
03253             A[131]=0;
03254             A[130]=0;
03255             A[129]=1;
03256             A[128]=1;
03257             A[127]=0;
03258             A[126]=1;
03259             break;
03260         }
03261         case 231: {
03262             A[133]=0;
03263             A[132]=1;
03264             A[131]=0;
03265             A[130]=0;
03266             A[129]=0;
03267             A[128]=1;
03268             A[127]=0;
03269             A[126]=1;
03270             break;
03271         }
03272         case 247: {
03273             A[133]=0;
03274             A[132]=0;
03275             A[131]=0;
03276             A[130]=1;
03277             A[129]=0;
03278             A[128]=0;
03279             A[127]=0;
03280             A[126]=0;
03281             break;
03282         }
03283         case 216: {
03284             A[133]=1;
03285             A[132]=0;
03286             A[131]=0;
03287             A[130]=1;
03288             A[129]=1;
03289             A[128]=0;
03290             A[127]=1;
03291             A[126]=0;
03292             break;
03293         }
03294         case 232: {
03295             A[133]=1;
03296             A[132]=0;
03297             A[131]=0;
03298             A[130]=0;
03299             A[129]=1;
03300             A[128]=0;
03301             A[127]=1;
03302             A[126]=0;
03303             break;
03304         }
03305         case 248: {
03306             A[133]=1;
03307             A[132]=0;
03308             A[131]=1;
03309             A[130]=0;
03310             A[129]=0;
03311             A[128]=0;
03312             A[127]=0;
03313             A[126]=0;
03314             break;
03315         }
03316         case 217: {
03317             A[133]=0;
03318             A[132]=0;
03319             A[131]=1;
03320             A[130]=1;
03321             A[129]=0;
03322             A[128]=1;
03323             A[127]=0;
03324             A[126]=0;
03325             break;
03326         }
03327         case 233: {
03328             A[133]=0;
03329             A[132]=0;
03330             A[131]=0;
03331             A[130]=1;
03332             A[129]=0;
03333             A[128]=1;
03334             A[127]=0;
03335             A[126]=0;
03336             break;
03337         }
03338         case 249: {
03339             A[133]=0;
03340             A[132]=1;
03341             A[131]=0;
03342             A[130]=0;
03343             A[129]=0;
03344             A[128]=0;
03345             A[127]=0;
03346             A[126]=0;
03347             break;
03348         }
03349         case 218: {
03350             A[133]=1;
03351             A[132]=1;
03352             A[131]=1;
03353             A[130]=0;
03354             A[129]=1;
03355             A[128]=0;
03356             A[127]=0;
03357             A[126]=0;
03358             break;
03359         }
03360         case 234: {
03361             A[133]=1;
03362             A[132]=0;
03363             A[131]=1;
03364             A[130]=0;
03365             A[129]=1;
03366             A[128]=0;
03367             A[127]=0;
03368             A[126]=0;
03369             break;
03370         }
03371         case 250: {
03372             A[133]=1;
03373             A[132]=0;
03374             A[131]=0;
03375             A[130]=0;
03376             A[129]=0;
03377             A[128]=0;
03378             A[127]=0;
03379             A[126]=1;
03380             break;
03381         }
03382         case 219: {
03383             A[133]=0;
03384             A[132]=1;
03385             A[131]=0;
03386             A[130]=1;
03387             A[129]=0;
03388             A[128]=0;
03389             A[127]=0;
03390             A[126]=1;
03391             break;
03392         }
03393         case 235: {
03394             A[133]=0;
03395             A[132]=1;
03396             A[131]=0;
03397             A[130]=1;
03398             A[129]=0;
03399             A[128]=0;
03400             A[127]=0;
03401             A[126]=0;
03402             break;
03403         }
03404         case 251: {
03405             A[133]=0;
03406             A[132]=0;
03407             A[131]=0;
03408             A[130]=0;
03409             A[129]=0;
03410             A[128]=0;
03411             A[127]=1;
03412             A[126]=1;
03413             break;
03414         }
03415         case 220: {
03416             A[133]=1;
03417             A[132]=0;
03418             A[131]=1;
03419             A[130]=0;
03420             A[129]=0;
03421             A[128]=0;
03422             A[127]=1;
03423             A[126]=0;
03424             break;
03425         }
03426         case 236: {
03427             A[133]=1;
03428             A[132]=0;
03429             A[131]=1;
03430             A[130]=0;
03431             A[129]=0;
03432             A[128]=0;
03433             A[127]=0;
03434             A[126]=1;
03435             break;
03436         }
03437         case 252: {
03438             A[133]=1;
03439             A[132]=0;
03440             A[131]=0;
03441             A[130]=0;
03442             A[129]=0;
03443             A[128]=1;
03444             A[127]=1;
03445             A[126]=1;
03446             break;
03447         }
03448         case 221: {
03449             A[133]=0;
03450             A[132]=1;
03451             A[131]=0;
03452             A[130]=0;
03453             A[129]=0;
03454             A[128]=1;
03455             A[127]=0;
03456             A[126]=0;
03457             break;
03458         }
03459         case 237: {
03460             A[133]=0;
03461             A[132]=1;
03462             A[131]=0;
03463             A[130]=0;
03464             A[129]=0;
03465             A[128]=0;
03466             A[127]=1;
03467             A[126]=1;
03468             break;
03469         }
03470         case 253: {
03471             A[133]=0;
03472             A[132]=0;
03473             A[131]=0;
03474             A[130]=0;
03475             A[129]=1;
03476             A[128]=1;
03477             A[127]=1;
03478             A[126]=1;
03479             break;
03480         }
03481         case 222: {
03482             A[133]=1;
03483             A[132]=0;
03484             A[131]=0;
03485             A[130]=0;
03486             A[129]=1;
03487             A[128]=0;
03488             A[127]=0;
03489             A[126]=1;
03490             break;
03491         }
03492         case 238: {
03493             A[133]=1;
03494             A[132]=0;
03495             A[131]=0;
03496             A[130]=0;
03497             A[129]=0;
03498             A[128]=1;
03499             A[127]=1;
03500             A[126]=0;
03501             break;
03502         }
03503         case 254: {
03504             A[133]=1;
03505             A[132]=0;
03506             A[131]=0;
03507             A[130]=1;
03508             A[129]=1;
03509             A[128]=1;
03510             A[127]=1;
03511             A[126]=1;
03512             break;
03513         }
03514         case 223: {
03515             A[133]=0;
03516             A[132]=0;
03517             A[131]=0;
03518             A[130]=1;
03519             A[129]=0;
03520             A[128]=0;
03521             A[127]=1;
03522             A[126]=1;
03523             break;
03524         }
03525         case 239: {
03526             A[133]=0;
03527             A[132]=0;
03528             A[131]=0;
03529             A[130]=0;
03530             A[129]=1;
03531             A[128]=1;
03532             A[127]=0;
03533             A[126]=0;
03534             break;
03535         }
03536         case 255: {
03537             A[133]=0;
03538             A[132]=0;
03539             A[131]=1;
03540             A[130]=1;
03541             A[129]=1;
03542             A[128]=1;
03543             A[127]=1;
03544             A[126]=1;
03545             break;
03546         }
03547         default : {
03548             A[133]=0;
03549             A[132]=0;
03550             A[131]=0;
03551             A[130]=0;
03552             A[129]=0;
03553             A[128]=0;
03554             A[127]=0;
03555             A[126]=0;
03556             break;
03557         }
03558     }
03559 }
03560 
03561 /**************************************************
03562 Setting the Forward Divider Pre-scalar bits for A A[150:149]
03563 Range: 1,2,4
03564 **************************************************/
03565 void PLL::setFwDivPreScalerA(int val)
03566 {
03567     //scan_load[150:144] = PLL_RANGEA; => 29
03568     //RANGEA[6:5]
03569     switch(val) {
03570         case 1: {
03571             A[150] = 0;
03572             A[149] = 0;
03573             break;
03574         }
03575         case 2: {
03576             A[150] = 1;
03577             A[149] = 0;
03578             break;
03579         }
03580         //case 3 not supported
03581         case 4: {
03582             A[150] = 1;
03583             A[149] = 1;
03584             break;
03585         }
03586     }
03587 }
03588 
03589 /**************************************************
03590 Setting the Forward Divider Pre-scalar bits A[148:144]
03591 Range: 1-32
03592 **************************************************/
03593 void PLL::setFwDivA(int val)
03594 {
03595     switch(val) {
03596         case 32: {
03597             A[148]=0;
03598             A[147]=1;
03599             A[146]=1;
03600             A[145]=1;
03601             A[144]=0;
03602             break;
03603         }
03604         case 31: {
03605             A[148]=0;
03606             A[147]=1;
03607             A[146]=1;
03608             A[145]=1;
03609             A[144]=1;
03610             break;
03611         }
03612         case 30: {
03613             A[148]=0;
03614             A[147]=0;
03615             A[146]=1;
03616             A[145]=1;
03617             A[144]=0;
03618             break;
03619         }
03620         case 29: {
03621             A[148]=0;
03622             A[147]=0;
03623             A[146]=1;
03624             A[145]=1;
03625             A[144]=1;
03626             break;
03627         }
03628         case 28: {
03629             A[148]=0;
03630             A[147]=0;
03631             A[146]=0;
03632             A[145]=1;
03633             A[144]=0;
03634             break;
03635         }
03636         case 27: {
03637             A[148]=0;
03638             A[147]=0;
03639             A[146]=0;
03640             A[145]=1;
03641             A[144]=1;
03642             break;
03643         }
03644         case 26: {
03645             A[148]=1;
03646             A[147]=0;
03647             A[146]=0;
03648             A[145]=0;
03649             A[144]=0;
03650             break;
03651         }
03652         case 25: {
03653             A[148]=1;
03654             A[147]=0;
03655             A[146]=0;
03656             A[145]=0;
03657             A[144]=1;
03658             break;
03659         }
03660         case 24: {
03661             A[148]=0;
03662             A[147]=1;
03663             A[146]=0;
03664             A[145]=0;
03665             A[144]=0;
03666             break;
03667         }
03668         case 23: {
03669             A[148]=0;
03670             A[147]=1;
03671             A[146]=0;
03672             A[145]=0;
03673             A[144]=1;
03674             break;
03675         }
03676         case 22: {
03677             A[148]=0;
03678             A[147]=0;
03679             A[146]=1;
03680             A[145]=0;
03681             A[144]=0;
03682             break;
03683         }
03684         case 21: {
03685             A[148]=0;
03686             A[147]=0;
03687             A[146]=1;
03688             A[145]=0;
03689             A[144]=1;
03690             break;
03691         }
03692         case 20: {
03693             A[148]=1;
03694             A[147]=0;
03695             A[146]=0;
03696             A[145]=1;
03697             A[144]=0;
03698             break;
03699         }
03700         case 19: {
03701             A[148]=1;
03702             A[147]=0;
03703             A[146]=0;
03704             A[145]=1;
03705             A[144]=1;
03706             break;
03707         }
03708         case 18: {
03709             A[148]=1;
03710             A[147]=1;
03711             A[146]=0;
03712             A[145]=0;
03713             A[144]=0;
03714             break;
03715         }
03716         case 17: {
03717             A[148]=1;
03718             A[147]=1;
03719             A[146]=0;
03720             A[145]=0;
03721             A[144]=1;
03722             break;
03723         }
03724         case 16: {
03725             A[148]=0;
03726             A[147]=1;
03727             A[146]=1;
03728             A[145]=0;
03729             A[144]=0;
03730             break;
03731         }
03732         case 15: {
03733             A[148]=0;
03734             A[147]=1;
03735             A[146]=1;
03736             A[145]=0;
03737             A[144]=1;
03738             break;
03739         }
03740         case 14: {
03741             A[148]=1;
03742             A[147]=0;
03743             A[146]=1;
03744             A[145]=1;
03745             A[144]=0;
03746             break;
03747         }
03748         case 13: {
03749             A[148]=1;
03750             A[147]=0;
03751             A[146]=1;
03752             A[145]=1;
03753             A[144]=1;
03754             break;
03755         }
03756         case 12: {
03757             A[148]=0;
03758             A[147]=1;
03759             A[146]=0;
03760             A[145]=1;
03761             A[144]=0;
03762             break;
03763         }
03764         case 11: {
03765             A[148]=0;
03766             A[147]=1;
03767             A[146]=0;
03768             A[145]=1;
03769             A[144]=1;
03770             break;
03771         }
03772         case 10: {
03773             A[148]=1;
03774             A[147]=0;
03775             A[146]=1;
03776             A[145]=0;
03777             A[144]=0;
03778             break;
03779         }
03780         case 9: {
03781             A[148]=1;
03782             A[147]=0;
03783             A[146]=1;
03784             A[145]=0;
03785             A[144]=1;
03786             break;
03787         }
03788         case 8: {
03789             A[148]=1;
03790             A[147]=1;
03791             A[146]=0;
03792             A[145]=1;
03793             A[144]=0;
03794             break;
03795         }
03796         case 7: {
03797             A[148]=1;
03798             A[147]=1;
03799             A[146]=0;
03800             A[145]=1;
03801             A[144]=1;
03802             break;
03803         }
03804         case 6: {
03805             A[148]=1;
03806             A[147]=1;
03807             A[146]=1;
03808             A[145]=0;
03809             A[144]=0;
03810             break;
03811         }
03812         case 5: {
03813             A[148]=1;
03814             A[147]=1;
03815             A[146]=1;
03816             A[145]=0;
03817             A[144]=1;
03818             break;
03819         }
03820         case 4: {
03821             A[148]=1;
03822             A[147]=1;
03823             A[146]=1;
03824             A[145]=1;
03825             A[144]=0;
03826             break;
03827         }
03828         case 3: {
03829             A[148]=1;
03830             A[147]=1;
03831             A[146]=1;
03832             A[145]=1;
03833             A[144]=1;
03834             break;
03835         }
03836         case 2: {
03837             A[148]=0;
03838             A[147]=0;
03839             A[146]=0;
03840             A[145]=0;
03841             A[144]=1;
03842             break;
03843         }
03844         case 1: {
03845             A[148]=0;
03846             A[147]=0;
03847             A[146]=0;
03848             A[145]=0;
03849             A[144]=0;
03850             break;
03851         }
03852         default: {
03853             A[148]=0;
03854             A[147]=0;
03855             A[146]=0;
03856             A[145]=0;
03857             A[144]=0;
03858             break;
03859         }
03860     }
03861 }
03862 
03863 /**************************************************
03864 Setting the Forward Divider Pre-scalar bits for B A[157:156]
03865 Range: 1,2,4
03866 **************************************************/
03867 void PLL::setFwDivPreScalerB(int val)
03868 {
03869     //scan_load[150:144] = PLL_RANGEA; => 29
03870     //RANGEA[6:5]
03871     switch(val) {
03872         case 1: {
03873             A[157] = 0;
03874             A[156] = 0;
03875             break;
03876         }
03877         case 2: {
03878             A[157] = 1;
03879             A[156] = 0;
03880             break;
03881         }
03882         //case 3 not supported
03883         case 4: {
03884             A[157] = 1;
03885             A[156] = 1;
03886             break;
03887         }
03888     }
03889 }
03890 
03891 /**************************************************
03892 Setting the Forward Divider Pre-scalar bits for B A[155:151]
03893 Range: 1-32
03894 **************************************************/
03895 void PLL::setFwDivB(int val)
03896 {
03897     //scan_load[157:151] = PLL_RANGEB; => 24
03898     //RANGEB[4:0]
03899     int init = 151;
03900     switch(val) {
03901         case 32: {
03902             A[155]=0;
03903             A[154]=1;
03904             A[153]=1;
03905             A[152]=1;
03906             A[151]=0;
03907             break;
03908         }
03909         case 31: {
03910             A[155]=0;
03911             A[154]=1;
03912             A[153]=1;
03913             A[152]=1;
03914             A[151]=1;
03915             break;
03916         }
03917         case 30: {
03918             A[155]=0;
03919             A[154]=0;
03920             A[153]=1;
03921             A[152]=1;
03922             A[151]=0;
03923             break;
03924         }
03925         case 29: {
03926             A[155]=0;
03927             A[154]=0;
03928             A[153]=1;
03929             A[152]=1;
03930             A[151]=1;
03931             break;
03932         }
03933         case 28: {
03934             A[155]=0;
03935             A[154]=0;
03936             A[153]=0;
03937             A[152]=1;
03938             A[151]=0;
03939             break;
03940         }
03941         case 27: {
03942             A[155]=0;
03943             A[154]=0;
03944             A[153]=0;
03945             A[152]=1;
03946             A[151]=1;
03947             break;
03948         }
03949         case 26: {
03950             A[155]=1;
03951             A[154]=0;
03952             A[153]=0;
03953             A[152]=0;
03954             A[151]=0;
03955             break;
03956         }
03957         case 25: {
03958             A[155]=1;
03959             A[154]=0;
03960             A[153]=0;
03961             A[152]=0;
03962             A[151]=1;
03963             break;
03964         }
03965         case 24: {
03966             A[155]=0;
03967             A[154]=1;
03968             A[153]=0;
03969             A[152]=0;
03970             A[151]=0;
03971             break;
03972         }
03973         case 23: {
03974             A[155]=0;
03975             A[154]=1;
03976             A[153]=0;
03977             A[152]=0;
03978             A[151]=1;
03979             break;
03980         }
03981         case 22: {
03982             A[155]=0;
03983             A[154]=0;
03984             A[153]=1;
03985             A[152]=0;
03986             A[151]=0;
03987             break;
03988         }
03989         case 21: {
03990             A[155]=0;
03991             A[154]=0;
03992             A[153]=1;
03993             A[152]=0;
03994             A[151]=1;
03995             break;
03996         }
03997         case 20: {
03998             A[155]=1;
03999             A[154]=0;
04000             A[153]=0;
04001             A[152]=1;
04002             A[151]=0;
04003             break;
04004         }
04005         case 19: {
04006             A[155]=1;
04007             A[154]=0;
04008             A[153]=0;
04009             A[152]=1;
04010             A[151]=1;
04011             break;
04012         }
04013         case 18: {
04014             A[155]=1;
04015             A[154]=1;
04016             A[153]=0;
04017             A[152]=0;
04018             A[151]=0;
04019             break;
04020         }
04021         case 17: {
04022             A[155]=1;
04023             A[154]=1;
04024             A[153]=0;
04025             A[152]=0;
04026             A[151]=1;
04027             break;
04028         }
04029         case 16: {
04030             A[155]=0;
04031             A[154]=1;
04032             A[153]=1;
04033             A[152]=0;
04034             A[151]=0;
04035             break;
04036         }
04037         case 15: {
04038             A[155]=0;
04039             A[154]=1;
04040             A[153]=1;
04041             A[152]=0;
04042             A[151]=1;
04043             break;
04044         }
04045         case 14: {
04046             A[155]=1;
04047             A[154]=0;
04048             A[153]=1;
04049             A[152]=1;
04050             A[151]=0;
04051             break;
04052         }
04053         case 13: {
04054             A[155]=1;
04055             A[154]=0;
04056             A[153]=1;
04057             A[152]=1;
04058             A[151]=1;
04059             break;
04060         }
04061         case 12: {
04062             A[155]=0;
04063             A[154]=1;
04064             A[153]=0;
04065             A[152]=1;
04066             A[151]=0;
04067             break;
04068         }
04069         case 11: {
04070             A[155]=0;
04071             A[154]=1;
04072             A[153]=0;
04073             A[152]=1;
04074             A[151]=1;
04075             break;
04076         }
04077         case 10: {
04078             A[155]=1;
04079             A[154]=0;
04080             A[153]=1;
04081             A[152]=0;
04082             A[151]=0;
04083             break;
04084         }
04085         case 9: {
04086             A[155]=1;
04087             A[154]=0;
04088             A[153]=1;
04089             A[152]=0;
04090             A[151]=1;
04091             break;
04092         }
04093         case 8: {
04094             A[155]=1;
04095             A[154]=1;
04096             A[153]=0;
04097             A[152]=1;
04098             A[151]=0;
04099             break;
04100         }
04101         case 7: {
04102             A[155]=1;
04103             A[154]=1;
04104             A[153]=0;
04105             A[152]=1;
04106             A[151]=1;
04107             break;
04108         }
04109         case 6: {
04110             A[155]=1;
04111             A[154]=1;
04112             A[153]=1;
04113             A[152]=0;
04114             A[151]=0;
04115             break;
04116         }
04117         case 5: {
04118             A[155]=1;
04119             A[154]=1;
04120             A[153]=1;
04121             A[152]=0;
04122             A[151]=1;
04123             break;
04124         }
04125         case 4: {
04126             A[155]=1;
04127             A[154]=1;
04128             A[153]=1;
04129             A[152]=1;
04130             A[151]=0;
04131             break;
04132         }
04133         case 3: {
04134             A[155]=1;
04135             A[154]=1;
04136             A[153]=1;
04137             A[152]=1;
04138             A[151]=1;
04139             break;
04140         }
04141         case 2: {
04142             A[155]=0;
04143             A[154]=0;
04144             A[153]=0;
04145             A[152]=0;
04146             A[151]=1;
04147             break;
04148         }
04149         case 1: {
04150             A[155]=0;
04151             A[154]=0;
04152             A[153]=0;
04153             A[152]=0;
04154             A[151]=0;
04155             break;
04156         }
04157         default: {
04158             A[155]=0;
04159             A[154]=0;
04160             A[153]=0;
04161             A[152]=0;
04162             A[151]=0;
04163             break;
04164         }
04165     }
04166 }
04167 
04168 /**************************************************
04169 Setting LFTUNE bits A[83:43]
04170 Range: 0(2.5-3.2) - 1(3.2-5.0)
04171 int FB_MODE;//feedback mode, 0 for external, 1 for internal
04172 **************************************************/
04173 void PLL::setLFTUNE(int interval)
04174 {
04175     if (FB_MODE) { //internal
04176         A[79]=1;//LFTUNE[36]=1
04177         A[73]=1;//LFTUNE[30]=1
04178         A[63]=1;//LFTUNE[20]=1
04179         switch (interval) {
04180             case 0: {
04181                 A[82]=0;
04182                 A[81]=1;
04183                 break;
04184             }
04185             case 1: {
04186                 A[82]=1;
04187                 A[81]=1;
04188                 break;
04189             }
04190             default: {
04191                 A[82]=1;
04192                 A[81]=1;
04193                 break;
04194             }
04195         }
04196     } else { //external
04197         A[83]=1;//LFTUNE[40]=1
04198         A[79]=1;//LFTUNE[36]=1
04199         A[63]=1;//LFTUNE[20]=1
04200         switch (interval) {
04201             case 0: {
04202                 A[82]=0;
04203                 A[81]=1;
04204                 break;
04205             }
04206             case 1: {
04207                 A[82]=1;
04208                 A[81]=1;
04209                 break;
04210             }
04211             default: {
04212                 A[82]=1;
04213                 A[81]=1;
04214                 break;
04215             }
04216         }
04217     }
04218 }
04219 
04220 /**************************************************
04221 Setting FFTUNE bits A[41:26]
04222 int FB_MODE;//feedback mode, 0 for external, 1 for internal
04223 it seems that Matt's code set A[34] to 1 instead of 35, not sure why
04224 **************************************************/
04225 void PLL::setFFTUNE(int interval)
04226 {
04227     if (FB_MODE) { //internal
04228         //A[35]=1;//FFTUNE[9]=1
04229         //debug
04230         switch (interval) {
04231             case 0: {
04232                 A[35]=0;    //slow DCO
04233                 A[34]=1;
04234                 break;
04235             }
04236             case 1: {
04237                 A[35]=1;    //fast DCO
04238                 A[34]=0;
04239                 break;
04240             }
04241             default: {
04242                 A[35]=0;
04243                 A[34]=1;
04244                 break;
04245             }
04246         }
04247     } else { //external
04248         A[37]=1;//FFTUNE[11]=1
04249         switch (interval) {
04250             case 0: {
04251                 A[35]=0;    //slow DCO
04252                 A[34]=1;
04253                 break;
04254             }
04255             case 1: {
04256                 A[35]=1;    //fast DCO
04257                 A[34]=0;
04258                 break;
04259             }
04260             default: {
04261                 A[35]=0;
04262                 A[34]=1;
04263                 break;
04264             }
04265         }
04266     }
04267 }
04268 
04269 /**************************************************
04270 Setting INTFBK bit A[42]
04271 int FB_MODE;//feedback mode, 0 for external, 1 for internal
04272 **************************************************/
04273 void PLL::setINTFBK()
04274 {
04275     A[42] = FB_MODE;
04276 }
04277 
04278 /**************************************************
04279 Setting the RO bits for A[7:0]
04280 **************************************************/
04281 void PLL::setROandOther()
04282 {
04283     A[1] = 1; // reset ring_osc
04284     A[168] = 1;
04285     A[169] = 1;
04286 }
04287 
04288 /**************************************************
04289 Setting internal clk source bits A[9:8]
04290 Range: 0: HCLK_EXT 1: ring_osc 2: PLLOUT_A 3: PLLOUT_B
04291 **************************************************/
04292 void PLL::setINTMUX(int clk)
04293 {
04294     switch(clk) {
04295         case 3: {
04296             A[9]=1;
04297             A[8]=1;
04298             break;
04299         }
04300         case 2: {
04301             A[9]=1;
04302             A[8]=0;
04303             break;
04304         }
04305         case 1: {
04306             A[9]=0;
04307             A[8]=1;
04308             break;
04309         }
04310         case 0: {
04311             A[9]=0;
04312             A[8]=0;
04313             break;
04314         }
04315         default: {
04316             A[9]=0;
04317             A[8]=0;
04318             break;
04319         }
04320     }
04321 }
04322 
04323 /**************************************************
04324 Setting external clk source bits A[15:14]
04325 Range: 0: HCLK_EXT 1: HCLK_divider 2: PLLOUT_A 3: PLLOUT_B
04326 **************************************************/
04327 void PLL::setEXTMUX(int clk)
04328 {
04329     switch(clk) {
04330         case 3: {
04331             A[15]=1;
04332             A[14]=1;
04333             break;
04334         }
04335         case 2: {
04336             A[15]=1;
04337             A[14]=0;
04338             break;
04339         }
04340         case 1: {
04341             A[15]=0;
04342             A[14]=1;
04343             break;
04344         }
04345         case 0: {
04346             A[15]=0;
04347             A[14]=0;
04348             break;
04349         }
04350         default: {
04351             A[15]=0;
04352             A[14]=0;
04353             break;
04354         }
04355     }
04356 }
04357 
04358 /**************************************************
04359 Setting clk divider bits for B A[13:10]
04360 Range: 0-15, divided by 2^val
04361 **************************************************/
04362 void PLL::setEXTDIV(int val)
04363 {
04364     switch(val) {
04365         case 15: {
04366             A[13]=1;
04367             A[12]=1;
04368             A[11]=1;
04369             A[10]=1;
04370             break;
04371         }
04372         case 14: {
04373             A[13]=1;
04374             A[12]=1;
04375             A[11]=1;
04376             A[10]=0;
04377             break;
04378         }
04379         case 13: {
04380             A[13]=1;
04381             A[12]=1;
04382             A[11]=0;
04383             A[10]=1;
04384             break;
04385         }
04386         case 12: {
04387             A[13]=1;
04388             A[12]=1;
04389             A[11]=0;
04390             A[10]=0;
04391             break;
04392         }
04393         case 11: {
04394             A[13]=1;
04395             A[12]=0;
04396             A[11]=1;
04397             A[10]=1;
04398             break;
04399         }
04400         case 10: {
04401             A[13]=1;
04402             A[12]=0;
04403             A[11]=1;
04404             A[10]=0;
04405             break;
04406         }
04407         case 9: {
04408             A[13]=1;
04409             A[12]=0;
04410             A[11]=0;
04411             A[10]=1;
04412             break;
04413         }
04414         case 8: {
04415             A[13]=1;
04416             A[12]=0;
04417             A[11]=0;
04418             A[10]=0;
04419             break;
04420         }
04421         case 7: {
04422             A[13]=0;
04423             A[12]=1;
04424             A[11]=1;
04425             A[10]=1;
04426             break;
04427         }
04428         case 6: {
04429             A[13]=0;
04430             A[12]=1;
04431             A[11]=1;
04432             A[10]=0;
04433             break;
04434         }
04435         case 5: {
04436             A[13]=0;
04437             A[12]=1;
04438             A[11]=0;
04439             A[10]=1;
04440             break;
04441         }
04442         case 4: {
04443             A[13]=0;
04444             A[12]=1;
04445             A[11]=0;
04446             A[10]=0;
04447             break;
04448         }
04449         case 3: {
04450             A[13]=0;
04451             A[12]=0;
04452             A[11]=1;
04453             A[10]=1;
04454             break;
04455         }
04456         case 2: {
04457             A[13]=0;
04458             A[12]=0;
04459             A[11]=1;
04460             A[10]=0;
04461             break;
04462         }
04463         case 1: {
04464             A[13]=0;
04465             A[12]=0;
04466             A[11]=0;
04467             A[10]=1;
04468             break;
04469         }
04470         case 0: {
04471             A[13]=0;
04472             A[12]=0;
04473             A[11]=0;
04474             A[10]=0;
04475             break;
04476         }
04477         default: {
04478             A[13]=0;
04479             A[12]=0;
04480             A[11]=0;
04481             A[10]=0;
04482             break;
04483         }
04484     }
04485 }
04486 
04487 /**************************************************
04488 Setting clk divider bits for B A[158]
04489 Range: 0:unreset 1:reset
04490 **************************************************/
04491 void PLL::resetPLL(int val)
04492 {
04493     if (val) {
04494         A[158]=1;
04495     } else {
04496         A[158]=0;
04497     }
04498 }