Inicializace

     To, co bude teď následovat, je pouze pro ty,  kteří mají silné nervy.
     Inicializace EMU je totiž pěkně zdlouhavá záležitost. Inicializace se
     skládá ze dvou částí. První část je vynulování všech registrů a druhá
     část  je  zapsání  inicializačních  polí  do  EMU.  Pokud  jste  tedy
     psychycky připraveni, tak jdeme na to.

     Procedure InitAWE;

           for o:=0 to 31 do out(DCYSUSV[o],80h);
             {vypne generátor obálek u všech oscilátorů}

           for o:=0 to 31 do out(ENVVOL[o],0);
           for o:=0 to 31 do out(ENVVAL[o],0);
           for o:=0 to 31 do out(DCYSUS[o],0);
           for o:=0 to 31 do out(ATKHLDV[o],0);
           for o:=0 to 31 do out(LFO1VAL[o],0);
           for o:=0 to 31 do out(ATKHLD[o],0);
           for o:=0 to 31 do out(LFO2VAL[o],0);
           for o:=0 to 31 do out(IP[o],0);
           for o:=0 to 31 do out(IFATN[o],0);
           for o:=0 to 31 do out(PEFE[o],0);
           for o:=0 to 31 do out(FMMOD[o],0);
           for o:=0 to 31 do out(TREMFRQ[o],0);
           for o:=0 to 31 do out(FM2FRQ[o],0);
           for o:=0 to 31 do out(PTRX[o],0);
           for o:=0 to 31 do out(VTFT[o],0);
           for o:=0 to 31 do out(PSST[o],0);
           for o:=0 to 31 do out(CSL[o],0);
           for o:=0 to 31 do out(CCCA[o],0);
             {vynuluje registry ENVVOL, ENVVAL, DCYSUS, ATKHLDV, LFO1VAL,
              ATKHLD, LFO2VAL, IP, IFATN, PEFE, FMMOD, TREMFRQ, FM2FRQ,
              PTRX, VTFT, PSST, CSL a CCCA u všech oscilátorů}

           for o:=0 to 31 do out(CPF[o],0);
           for o:=0 to 31 do out(CVCF[o],0);
             {vynuluje registry CPF a CVCF u všech oscilátorů}


     Uf. První  část máme za  sebou. Vypadá to  jednoduše, co ?  Nyní bude
     následovat  největší  kotrmelec  celé  inicializace, a  tím  je zápis
     inicializačních  polí.  Inicializační  pole  určují  také  vlastnosti
     efektového  procesoru, ale  o tom  se víc  dozvíte v kapitole, kterou
     jsem  této  tématice  věnoval.  Inicializační  pole,  které zde budou
     uvedeny,nastaví eqalizér EMU na plochou  křivku (Bass & Treble = 0) a
     nastaví  implicitně  chorus  efekt na  Chorus 3  a reverb  na Hall 2.
     Inicializační pole jsou  původně 4, ale pokud se  na ně podíváte, tak
     se dají  redukovat na 3  a při posílání  druhého pole použijete  pole
     první a ke  keždé druhé hodnotě přičtete před  zápisem na port 8000h.
     Inicializační  pole si  můžete exportovat  v assemblerovském formátu,
     takže přepis do vyšších jazyků by neměl být problém. Nebudu je uvádět
     ani do tohoto textu, protože by to byla jen halda čísel a zbytečně by
     vás to odrazovalo. :)


           for o:=0 to 31 do out(INIT1[o],InitArray1[o]);
             {první část inicializačního pole č.1 na INIT1}

           for o:=0 to 31 do out(INIT2[o],InitArray1[o+32]);
             {druhá část inicializačního pole č.1 na INIT2}

           for o:=0 to 31 do out(INIT3[o],InitArray1[o+64]);
             {třetí část inicializačního pole č.1 na INIT3}

           for o:=0 to 31 do out(INIT4[o],InitArray1[o+96]);
             {čtvrtá část inicializačního pole č.1 na INIT4}

           x:=in(WC)+1024;
           repeat in(WC)<>x;
             {čekáme 1024 period (24 msec)}

           for o:=0 to 31 do out(INIT1[o],
                             InitArray1[o] or ((o and 1) shl 15));
             {první část inicializačního pole č.1 na INIT1
              každá druhá hodnota OR 8000h}

           for o:=0 to 31 do out(INIT2[o],
                             InitArray1[o+32] or ((o and 1) shl 15));
             {druhá část...}

           for o:=0 to 31 do out(INIT3[o],
                             InitArray1[o+64] or ((o and 1) shl 15));
             {třetí část...}

           for o:=0 to 31 do out(INIT4[o],
                             InitArray1[o+96] or ((o and 1) shl 15));
             {čtvrtá část...}

           for o:=0 to 31 do out(INIT1[o],InitArray2[o]);
             {první část pole č.2 na INIT1}

           for o:=0 to 31 do out(INIT2[o],InitArray2[o+32]);
             {druhá část pole č.2 na INIT2}

           for o:=0 to 31 do out(INIT3[o],InitArray2[o+64]);
             {třetí část pole č.2 na INIT3}

           for o:=0 to 31 do out(INIT4[o],InitArray2[o+96]);
             {čtvrtá část pole č.2 na INIT4}

           out(HWCF4,0);
           out(HWCF5,83h);
           out(HWCF6,8000h);

           for o:=0 to 31 do out(INIT1[o],InitArray3[o]);
             {první část pole č.3 na INIT1}

           for o:=0 to 31 do out(INIT2[o],InitArray3[o+32]);
             {druhá část pole č.3 na INIT2}

           for o:=0 to 31 do out(INIT3[o],InitArray3[o+64]);
             {třetí část pole č.3 na INIT3}

           for o:=0 to 31 do out(INIT4[o],InitArray3[o+96]);
             {čtvrtá část pole č.3 na INIT4}

           out(HWCF3,4);
             {zapne audio výstup}

     Procedure_End;

     Tak,  a  inicializace  je  za   námi.  Pokud  byste  chtěli  již  při
     inicializaci měnit nastavení eqalizéru a  efektů, tak byste si museli
     najít příslušné hodnoty ve třetím  inicializačním poli a opravit je v
     tabulce.


            výheň