Oznámení

Sbalit
Aktuálně žádná oznámení.

Assembler - všeobecná logika

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    Dnes jsem konecne zkusil na emulaci WinUAE pod cistou ROM 1.3 / A500, kdy zkompilovane exe nakopiruji na disketu a udelam reset, jestli vse bezi rychlostne ok a tvari se to, ze ano.

    Zkusil jsem emulaci pak jiz ve WB pod A1200 nastavit rychlostne pomoci SysInfa na rychlost A1200 a nejak se nezadarilo. Cycle-exact zaskrtnute, pamet na 1MB chip a porad jsem byl podle SysInfa rychlostne mezi A1200 a A2500. Pokud jsem u stejne konfiguraci presel z AGA na Full ECS (WB hlasil nejakou chybu, ale šlo to), tak již se rychlost dle grafu shodovala s rychlosti A600, ale jakmile jsem nastavil na emulaci AGA, rychlost byla opet mezi A1200 a A2500. Očekával bych rychlost A1200.

    A ještě dotaz k rychlosti z mých zkušeností v rámci optimalizace kodu i pro A500. Může se zrychleni A1200 s 4 MB Fast RAM blížit až 4 násobku rychlosti holé A500?
    Dá se nějak shrnout rychlostni rozdil A1200 s fast RAM, A1200 bez fast RAM, A500 s pridavnou RAM a A500 v základu? Pokud sehraje roli i A500+ vuči již zmíneným konfiguracim, tak klidne zahrnout. Jde mi tedy o rychlosti pouze s pridavnou RAM bez turbokarty
    Amiga - PMD 85

    Komentovat


      Autorem citovaného textu je Lisiak Přejít na původní příspěvek
      A ještě dotaz k rychlosti z mých zkušeností v rámci optimalizace kodu i pro A500. Může se zrychleni A1200 s 4 MB Fast RAM blížit až 4 násobku rychlosti holé A500?
      Dá se nějak shrnout rychlostni rozdil A1200 s fast RAM, A1200 bez fast RAM, A500 s pridavnou RAM a A500 v základu? Pokud sehraje roli i A500+ vuči již zmíneným konfiguracim, tak klidne zahrnout. Jde mi tedy o rychlosti pouze s pridavnou RAM bez turbokarty
      Ano dá. Netroufám si tvrdit, jestli jsou mé znalosti úplné (a nebo správné). Napíšu v krátkost jen to, co teď vím a co si vybavuju.
      Je velký rozdíl mezi A500 s CPU 68000 a A1200 s 68020. Nejdřív A500+68000, protože 68020 (a částečně i AGA) věci poněkud komplikuje.

      Základem všeho je chip sběrnice a její taktování. A taky způsob její arbitráže, tedy kdy se povoluje přístup k čtení a zápisu na sběrnici jednotlivým HW částem Amigy. Ve tvém případě tě zajímá, jak ke sběrnici může přistupovat CPU. Arbitr sběrnice je v Agnus. Ta umožňuje přístup CPU ke sběrnici maximálně jen každý její druhý takt. To je hardwired, nejde to změnit a má to svůj důvod: Z časování instrukcí 68000 je zřejmé, že CPU potřebuje přistupovat ke sběrnici vždy jen v její liché takty. Např. nejjednodušší instrukce MOVE.W Dn,Dn trvá 4 takty, z toho v prvním a druhém taktu je třeba přistoupit je sběrnici (instruction fetch) a další dva takty trvá provedení. V A500 je CPU taktováno 2x rychleji než sběrnice, takže první dva takty CPU pokrývají jeden takt sběrnice. Další dva takty se sběrnice nevyužije. Pokud by instrukce četla z paměti operand, toto čtení se provede v taktech 5 a 6, a pokud by dělala i zápis, tak ten by se provedl v taktech 9 a 10. Tak je patrné, že přístup ke sběrnici se prokládá s takty, kdy se provádí interní operace a sběrnice pro CPU není zapotřebí. Proto je pro Agnus zbytečné, aby CPU dávala k dispozici každý takt sběrnice.

      Rozdíl ve fast-ram (a myslím skutečnou fast-ram a ne expanzní 512kB paměť pro A500, která se připojuje na chip sběrnici - tzv. fake fast-ram, nebo též slow-ram) je v tom, že zde řadič (velmi primitivní) umožňuje přístup k RAM CPU v libovolném jeho taktu. Ale jak je z výše uvedeného snad patrné, je to vlastně zbytečné, protože CPU to stejně nevyužije.
      Upozorňuju, že vše popsané platí jen pokud se bavíme o standardní A500, kdy je takt CPU dvojnásobek taktu chip sběrnice!

      Jak je tedy možné, že fast-ram má i v A500 zrychlující efekt? To, že Agnus může dát sběrnici k dispozici CPU každý druhý takt, neznamená, že ji má k dispozici, a že ten přístup CPU skutečné dá. CPU má totiž v systému nejnižší prioritu ze všech zařízení (DMA kanálů). Pokud se toho na sběrnici děje hodně (fetchuje se příliš moc bitplane dat, copper jede na plné pecky, blitter kopíruje jak divý, do toho jsou zapnuté sprajty, ...), klidně se stane, že CPU se ke sběrnici nedostane po celou dobu generování obrazu. Tedy vždy, když paprsek na TV něco vykresluje, je sběrnice obsazená. CPU může načíst instrukci nebo načíst a zapsat operandy jen mimo tento čas (horizontal nebo vertical blank). To ale neplatí, když má CPU instrukce a data k dispozici ve fast-ram. Tam ho nic nebrzdí. A to je ten jediný rozdíl. Zjednodušeně se dá napsat, že pokud se na screenu Amigy nic moc neděje (lo-res max v 16 barvách, copper se fláká, blitter stojí, ...), nemá fast-ram oproti chip-ram žádný efekt.
      Z chování chip sběrnice vůči CPU vyplývá i to, že nemá příliš velký význam 68000 přetaktovávat, pokud není k dispozici fast-ram. Je fajn, že se hodně instrukci _interně_ provede rychleji (určitě se velmi zrychlí provádění náročných instrukcí jako MUL, DIV nebo bitové posuny a rotace), ale CPU stejně musí čekat na chip sběrnici, třeba jen k tomu, aby načetlo kód další instrukce.

      U A1200 se situace komplikuje tím, že je v ní 68020. A ta má interní instrukční cache. Už jen kvůli ní je možné načíst kód instrukce a začít ji zpracovávat bez ohledu na dostupnost chip-sběrnice. Ale má to svá velká omezení. Cache je jen pro instrukce, takže se stále musí číst a zapisovat do chip, pokud jsou operandy v paměti (a ne pouhé registry). 68020 je však obecně rychlejší. Nejen že byla taktována 2x rychleji než 68000 u A500, ale je i plně 32bitová, takže operace nad 4 bajty trvají už jen jeden takt. Chip sběrnice je u AGA pro CPU 32bitová - takže dvakrát rychlejší než u OCS, i když její takt je stejný. (Tady ještě uvedu, že AGA umožňuje fast-page mód u chip sběrnice, kdy se v jednom taktu může načíst až 8 bajtů dat. Bohužel ten je k dispozici jen mezi Alicí a Lisou k načítání bitplane a sprite dat.). Fast-ram má u A1200 obdobný efekt jako u A500, tedy že sběrnice synchronní s CPU může poskytovat data kdykoliv je potřeba. A protože má 68020 instrukční cache, lepší (úspornější) časování instrukcí a v jednom taktu čte/zapisuje celé 4 bajty, využije se to mnohem častěji. Proto je efekt fast-ram v A1200 dramatičtější než v A500.
      Naposledy upravil Defor; 17.09.2023, 20:02:16.

      Komentovat


        Ten kdo sleduje Oldcomp ví,ze krome assembleru se v posledni dobe hraju i s programovanim v C#. Tenhle programovaci jazyk vyssi urovne jsem pouzil pro udelani prevodniku z hudebniho formatu MOD na muj hudebni format. Technicky jsem byl skoro hotov. Jen jsem si pak uvedomil, ze pokud bych chtel s hudbou delat i nadale, kazda dalsi tvorba by byla kazdou dalsi praci zbytecneho prizpusobovani skladeb na muj hudebni format a to i za stavu, ze by znacnou cast udelal samotny prevodnik. Rekl jsem si ze je na case otocit list a zacal jsem pracovat s myslenkou, ze bych presel na zpracovani samotneho formatu MOD, ktery je konstrukcne na tom preci jen lepe nez muj hudebni format.

        Jen pripomenu hlavni duvod, proc jsem zacal delat hudebni rutinu s mym hudebnim formatem. Jednoduse jsem to vnimal jako moc novych informaci, aby jsem se zacal ucit assembler, se kterym jsem nemel zadne zkusenosti a jeste u toho studovat hudebni format MOD, ktery jsem taky neznal stejne jako jsem nemel zkusenost s nacitanim dat z nejakeho externiho souboru, z MODu.

        Chtel jsem si nejdrive z MODu vzit pouze data k samotne skladbe v ramci patternu ze skladby a ze si ostatni udelam po svem. Tak jsem vytvoril novy soubor a dal jsem si do nej casovac CIA, pointre na sample do sladby a udelal prvni kod, kde se mi zpracuji data zatim jen z patternu, tedy z casti dat z MODu ktere jsou urcena pro hrani tonu jednotlive skladby. Zatim jen cisti kod, ktery nemel ani pouzite HW registre. Nejmin mi sedelo zpracovani dat pro hrajici sampel, kde je 1 bajt rozdeleny na 2 casti, jen jsem premyslel, jak to zpracovat alepson trochu elegantne = co nejstrožeji. Já bych treba Lower four bits of sample number prohodil s Effect command a pak bych udelal rotaci doleva o 4 bity v 4 bajtech s tim ze bych jeste Lower four bits prohodil s Upper four bits of sample number, ale ok. Ve formátu MOD maji bity pro Effect command vetsi prioritu nez bity pro cislo hrajiciho samplu.

        Struktura formatu MOD pro data z patternu:


        Klikni pro plné zobrazení obrázku

Jméno: MOD noty.png
Počet zobrazení: 208
Velikost: 6,4 KB
ID: 164963


        Pek jsem ale zacal resit, jak lepe zpracovat pocet pointrů na jednotlive sample, pokud by jsem to delal sam a nebral tyhle data primo z MODu, protoze zatim u mne mel kazdy sampel skladby svuj vlastni pointer, neboli ukazatel na misto v pameti, kde se sampel nachazi a odkud jej číst. Pri vicero skladbach by to jiz slo do poctu, ktery se mi moc nelibil hlavne kdyby meli skladby vetší počty samplů. Tedy maúriklad 7 skladeb po 20 samplech by bylo 140 pointru v pameti na jednotlive sample a to se mi moc nelibi. Tyhle pointre by museli byt zvlast zadany primo v kodu a to samostatne, neboli zatim neznam zpusob, jak to udelat jinak a zatim se domnivam, ze bych to musel rešit nejakou komunikaci pomoci systemu, co je pro mne vyšší divčí (je to na mně moc). Nepovedlo se mi v kodu...

        incdir "DH1:MOD T02X3/"
        incbin "T02X3.MOD"

        nacist samotny MOD jinak nez takhle. Chtel jsem u "incbin" mit moznost zadat retezec textu s nazvem modu treba z datoveho registru, nebo z pointru v pameti, kde by byl tenhle retezec textu s nazev souboru, tedy MODu. Tedy se mi soubor podarilo nacist jen s primym zadanim: incbin "T02X3.MOD"

        Počet pointrů na sampel bych snizil, kdyby jsem mel sample nahrane za sebou a pro vsechny sample ve skladbe bych tedy mel celkem 4 pointre v pameti (4 hudebni kanaly). To by byl jiz stav lepsi a pro mne prijatelny.

        To mne nakonec dovedlo k zaveru, ze tohle vse je jiz v samotnem MODu a ze bude nejlepsi nacist rovnou cely MOD a z neho si konretni sample nacist, co by celou situaci rešilo. Tedy jsem zkušebne zadal:

        incbin "DH1:MOD T02X3/T02X3.MOD"

        a navýšill pointer (ukazatel) v pameti na tenhle MOD o 1084 bajtu, co je misto, kde v MODu zacinaji data patternu MODu a porovnal tyhle data s datami z meho programku v C# kde mam taky jen data z patternu. Ty 4 bajty byly shodné... .

        Tak fajn, budu tedy načítat celý MOD





        Naposledy upravil Lisiak; 04.10.2023, 09:31:05.
        Amiga - PMD 85

        Komentovat


          Jsem to původně chtěl dát na OC, to nepíšu z provokace, jen mně tam přednastavený barevný podklad CODE seděl o něco více, nicméně na OC je omezení na 32768 znaků a já mám 108475 znaků a tady to bere i tenhle počet znaků...

          Primárně poznámky pro mne kvůli HW registrům, které si nepamatuji a nechci si ten kód otevírat v ASM-Pro, když nemusím...

          Poslední verze kódu hudební rutiny hrající můj formát.
          Smazaný kód pro zobrazování textu (možná ho ještě použiju).
          Copper list a font ponechán.
          Chybí tam sample pro použitou skladbu.
          Hodně staršího kódu je tam v poznámkách.

          Code:
              SECTION    musicRoutine,CODE_C ;zalozeni kodove sekce musicRoutine
                              ;by Lisiak
          ;PhotonWrapper
          
              *** MiniWrapper by Photon ***
          
          Start:
              move.l    4.w,a6            ;Exec library base address in a6
              sub.l    a4,a4
              btst    #0,297(a6)            ;68000 CPU?
              beq.w    .yes68k
              lea    .GetVBR(PC),a5        ;else fetch vector base address to a4:
              jsr    -30(a6)            ;enter Supervisor mode
          
              *--- save view+coppers ---*
          
          .yes68k:
          ;    lea    .GfxLib(PC),a1        ;either way return to here and open
              lea    GFXLIB(PC),a1        ;either way return to here and open
              jsr    -408(a6)            ;graphics library
              tst.l    d0            ;if not OK,
              beq.w    .quit            ;exit program.
              move.l    d0,a5            ;a5=gfxbase
          
              move.l    a5,a6
              move.l    34(a6),-(sp)
              sub.l    a1,a1            ;blank screen to trigger screen switch
          
          
          
          
          
          ;        sub.l    a1,a1       ;nuluji A1, jinak to jde do Guru
                  lea    PLANE(pc),a3 ;zapis adresy pro 1 bitplane
          ;        add.w    #40,a3
          
                  LEA    PLANES(PC),a2 ;zapis adresy 1 bitplanu pro Copper
                  move.l    a3,d2         ;a3 neumoznuje instrukci swap,pozijeme d0
          
          
                  add.w    #40,d2
                  move.w    d2,6(a2)    ;zapis adresy 1 bitplanu do adresy pro reg
                  SWAP    D2        ;ister na 2 krat v PLANES $00E0,sem,$00E2,
                  move.w    d2,2(a2)    ;sem. 6(a3)=o 6byte dal vuci pointeru
                              ;dc.w 0 = dc.w 0000
                  SWAP    D2
          
                  addq.l    #8,a2
          
                  sub.w    #40,d2
          
                  move.w    d2,6(a2)
                  SWAP    D2
                  move.w    d2,2(a2)
          
                                ;30*(40byte)=30*(40*8bite)
                                ;=30*(320=sirka obrazovky v LoRes)
                                ;zacatek textu bude posunuty
                                ;o 30 pixelu nize
                                ;Musi byt pouzito MOVE.L a byt vynulovana
                                ;D1 v ted nevyuzitych bitech-souvisi to s
                                ;pozdejsi praci s bitplanem do ktereho
                                ;musime pristupovat v rozsahu Long a
                                ;pripocitavame k nemu prave hodnotu z D1
                                ;v navesti FOUNDCHAR: ADD.L D1,A3. Pokud
                                ;pouzijeme pouze Word,program se za stavu
                                ;kdy je spusten v Asm-Pro a spustime jej
                                ;taky i u jiz zkompilovaneho EXE souboru
                                ;ze zkompilovaneho EXE souboru spravne
                                ;nespusti.Samostatne spustene EXE, kdyz
                                ;neni program spusten i v Asm-Pro funguje
                                ;spravne i s instrukci MOVE.W
          
          
                  LEA    COPLIST(PC),A2 ;zapis adresy pro nas program pro Copper
                  MOVE.L    A2,$DFF080  ;registr adresy pocatku programu pro Copper
          
          
          
          
          
              move.b    #$00,$bfde00
              move.b    #$7f,$bfdd00
              move.b    #$00,$bfd400 ;2000=1/100 vteriny
              move.b    #$70,$bfd500
              move.b    #$09,$bfde00
          .zpomal222
              btst.b    #0,$bfdd00
              beq    .zpomal222
          
          
          
          
              jsr    -222(a6)            ;on Amigas with graphics cards
          
              *--- save int+dma ---*
          
              lea    $dff000,a6
              bsr.w    WaitEOF            ;wait out the current frame
          ;    bsr.s    WaitEOF0        ;wait out the current frame
              move.l    $1c(a6),-(sp)        ;save intena+intreq
              move.w    2(a6),-(sp)        ;and dma
              move.l    $6c(a4),-(sp)        ;and also the VB int vector for sport.
              bsr.w    AllOff            ;turn off all interrupts+DMA
          ;    move.w    #$8380,$dff096
          
              *--- call demo ---*
          
              movem.l    a4-a6,-(sp)
              bsr.w    Demo            ;call our demo \o/
              movem.l    (sp)+,a4-a6
          
              *--- restore all ---*
          
              bsr.s    WaitEOF            ;wait out the demo's last frame
              bsr.w    AllOff            ;turn off all interrupts+DMA
          ;;    bsr.s    AllOff0            ;turn off all interrupts+DMA
              move.l    (sp)+,$6c(a4)        ;restore VB vector
              move.l    38(a5),$80(a6)        ;and copper pointers
              move.l    50(a5),$84(a6)
              addq.w    #1,d2            ;$7fff->$8000 = master enable bit
              or.w    d2,(sp)
              move.w    (sp)+,$96(a6)        ;restore DMA
              or.w    d2,(sp)
              move.w    (sp)+,$9a(a6)        ;restore interrupt mask
              or.w    (sp)+,d2
              bsr.s    IntReqD2        ;restore interrupt requests
          
              move.l    a5,a6
              move.l    (sp)+,a1
              jsr    -222(a6)        ;restore OS screen
          
              *--- close lib+exit ---*
          
              move.l    a6,a1            ;close graphics library
              move.l    4.w,a6
              jsr    -414(a6)
          .quit:    moveq    #0,d0            ;clear error return code to OS
              rts                ;back to AmigaDOS/Workbench.
          
          .GetVBR:
              dc.w    $4e7a,$c801        ;hex for "movec VBR,a4"
              rte                ;return from Supervisor mode
          
          ;.GfxLib:
          ;    dc.b    "graphics.library",0,0
          
          
          WaitEOF0:                ;wait for end of frame
              bsr.s    WaitBlitter
              move.w    #$138,d0
              rts
          
          WaitEOF:                ;wait for end of frame
              bsr.s    WaitBlitter
              move.w    #$138,d0
          WaitRaster:                ;Wait for scanline d0. Trashes d1.
          .l:    move.l    4(a6),d1
              lsr.l    #1,d1
              lsr.w    #7,d1
              cmp.w    d0,d1
              bne.s    .l            ;wait until it matches (eq)
              rts
          
          ***** pridano,Textro nefungovalo s nulovanim bitu u DMACON a INTENA *****
          AllOff0:                                *
          ;    move.w    #$7fff,d2        ;clear all bits            *
          ;    move.w    #$7c7f,d2        ;clear all bits            *
          
              move.w    d2,$9c(a6)        ;and INTREQ            *
              move.w    d2,$9c(a6)        ;twice for A4000 compatibility    *
              rts                                *
          *************************************************************************
          AllOff:
              move.w    #$7fff,d2        ;clear all bits
          ;    move.w    #$7c7f,d2        ;clear all bits
              move.w    d2,$96(a6)        ;in DMACON,
          ;    move.w    #$8380,$dff096
          
              move.w    #$7fff,d2        ;clear all bits
              move.w    d2,$9a(a6)        ;INTENA,
          IntReqD2:
              move.w    d2,$9c(a6)        ;and INTREQ
              move.w    d2,$9c(a6)        ;twice for A4000 compatibility
              rts
          
          WaitBlitter:                ;wait until blitter is finished
              tst.w    (a6)            ;for compatibility with A1000
          .loop:    btst    #6,2(a6)
              bne.s    .loop
              rts
          
          
          ;PhotonWrapperEnd
          
          
          ******************************************
          *       CD music routine - Lisiak        *
          ******************************************
          
          ;;_LVOFreeMem    =     -210
          ;;_LVOAllocMem    =     -198
          ;_LVOForbid    =    -132 ;odstaveni multitaskingu
          ;_LVOPermit    =    -138 ;spusteni multitaskingu
          
          
          Demo
          
          
          ;      ;musicRoutine by Lisiak
          
          
          START
          
          ;    or.w    #2,$bfe001      ;vypnuti filtru pro vysoky frekvence
          
              moveq.l    #0,d1
              moveq.l    #0,d2
              moveq.l    #0,d3 ;arpeggio
              moveq.l    #0,d4;vypnu bit pro vibrato,vynuluji casovas pro Textro
          
              ;TEXTRO casovac
          ;       move    #0,a1;-4-7.bit - pro vykresleni kazdeho radku pismena
                               ;-0-3.bit - pocet radku na obrazovce
                  sub.l    a1,a1;-4-7.bit - pro vykresleni kazdeho radku pismena
                               ;-0-3.bit - pocet radku na obrazovce
          
          ;    move.l    #$ff000000,a5 ; pozice pismena v radku=00
              sub.l    a5,a5 ; pozice pismena v radku=00
          
          
          ;    move.w    #$0f00,a5
          ;    move.l    #$ffff0000,a5 ;00ff0000 casovas pro hrajici pattern na hodnotu
                            ;         pred 0 = ff
          
              lea    table6(pc),a6
              moveq    #0,d5
          
          
          ;TEXTRO tenhle usek kodu jsem dal nahoru k hudebni  rutine---------------------
          INIT:
                  move.w    #$8380,$dff096
          
          
                                ;30*(40byte)=30*(40*8bite)
                                ;=30*(320=sirka obrazovky v LoRes)
                                ;zacatek textu bude posunuty
                                ;o 30 pixelu nize
                                ;Musi byt pouzito MOVE.L a byt vynulovana
                                ;D1 v ted nevyuzitych bitech-souvisi to s
                                ;pozdejsi praci s bitplanem do ktereho
                                ;musime pristupovat v rozsahu Long a
                                ;pripocitavame k nemu prave hodnotu z D1
                                ;v navesti FOUNDCHAR: ADD.L D1,A3. Pokud
                                ;pouzijeme pouze Word,program se za stavu
                                ;kdy je spusten v Asm-Pro a spustime jej
                                ;taky i u jiz zkompilovaneho EXE souboru
                                ;ze zkompilovaneho EXE souboru spravne
                                ;nespusti.Samostatne spustene EXE, kdyz
                                ;neni program spusten i v Asm-Pro funguje
                                ;spravne i s instrukci MOVE.W
          
          
          ;        lea    TEXT(pc),a4  ;adresa na nas text
          ;        move.w    #$0f00,a5
          
          ;TEXTRO konec------------------------------------------------------------------
          
          
              move.w    #0,d0 ;2 byte nuluji kvuli pozdejsi instrukci 0(a2,d0.w),a2
              and.w    #$ff,d5 ;ve hre se vzdy bude hrat prednastavena 1.melodie
                          ;tedy nuluji 1 byte
          
              sub.l    a4,a4
          
          skladba
          ;    move.l    #$ffff0000,d2;#$00xx0000 xx pro casovac hrani patternu Vskladbe
          ;    move.w    a5,d2 ; #$00xx v A5 je xx  hodnota pozice pismena v radku
          ;    move.l    d2,a5 ; v A5 spravne hodnoty pro hrani nove skladby
          
          
          ;    move.b    #0,d2
          
                           ;44332211
          ;    or.l    #$04000000,d4
              and.l    #$fbffffff,d4 ;bit hrani skladby od zacatku = 0
          
              move.w    #$f,$dff096
              ;lea    music(pc),a0    ;adresu music do a0
              lea    skladby(pc),a0    ;adresu music do a0
          ;;    move.w    (a0)+,d2
          ;;    move.b    d2,d5
          ;    move.b    d0,d5 ;vyreseno vyse v kodu pomoci and.w #$ff,d5
          ;    ror.w    #8,d5
          
          
              lea    tableST(pc),a2
          ;    rol.b    #2,d2
          
              move.w    d5,d0
              lsr.w    #8,d0
          
              rol.b    #2,d0
          ;    move.l    0(a2,d2.w),a2
              move.l    0(a2,d0.w),a2
              jsr    (a2)
              bra    zahrajSampl
          
          
          T00    move.l    a5,d0         ;index 1.patternu ve skladbe do 2.byte A5
              and.l    #$00ff0000,d0 ;ten je v 1.skladbe 0, v dalsich skladbach-
                            ;-bude vetsi
              sub.l    d0,a5
          ;    lea    skladba1(pc),a0    ;adresu music do a0
          ;;    move.l    #C2,$dff0c4
          ;;    move.l    #C2,$dff0c4
              rts
          
          T01
          ;    move.l    #C4,$dff0a0    ;sampl synth do 2.kanalu
          ;    move.w    #$12c8,$dff0a4
          ;;    move.l    #BA,$dff0b0    ;sampl synth do 2.kanalu
          ;    move.l    #C6,$dff0b0    ;sampl synth do 2.kanalu
          ;    move.w    #$fa0,$dff0b4
          ;;    move.l    #C5,$dff0d0    ;sampl kickTerminator (4.kanal)
              rts
          
          
          zahrajSampl
          
          
          
          ;****************************************
          ;program
          
          
          ;docasneTextro
          ;****************************************
          
          ;;    or.w    #$0f00,d1 ;DMA hraji vzdy vsechny
          ;    and.w    #$00ff,d1 ;DMA nehraji zadne
                        ;(pokud hraje puvodni DMA tak to pokracuje)
              move.b    #$ff,d4 ; nastavim casovac na FF
          
              btst    #7,d3
              beq    sfxNe
          ;    move.w    #3,$dff096
          ;    bra    txtIn1time
              bra    docasneTextro
          
          
          sfxNe
          ;    move.b    #$ff,d4 ; nastavim casovac na FF
              or.w    #$0f00,d1 ;zde nastacuji DMA Pauli na 1, protoze v prvni smycce
                         ;hudebni rutiny se testuje, jestli se ma DMA hrat,
                         ;a pokud by bylo DMA na 0, neprovedl by se ani prvni
                         ;cyklus hudebni rutiny a kdyz se neprovede prvni cyklus,
                         ;nezinicializuje se nikdy DMA na 1, cim zustane hudebni
                         ;rutina po celou dobu ticho. Testovani DMA pro kazdy
                         ;kanal je stara cast kodu, nemusel bych to jiz delat,
                         ;zatim ponechavam
          
          
              and.l    #$bfffffff,d3;vypnu bit pro vibrato. Vibrato jiz v D3
                           ;ponecham bit, co urcuje, jestli se bude obrazovka
                           ;v textru mazat pomoci mezery, nebo pomoci napsani
                           ;dalsiho textu
          
              and.l    #$3f3f3f3f,d7 ;d7 smaz puvodni volume slide
          
          ;    btst    #7,d3
          ;    bne    txtIn1time
          ;sfxNe
          
          
              move.w    #0,d6
              moveq    #0,d0 ;potrebuji smazat 2.word(ztlumovani samplu v 1/4,1/2,3/4)
                        ;a 1.word je pomocna promenna,pouzivam rychlejsi
                        ;moveq a mazu vse
          ;    move.b    #0,d5 ;aby se nevykonal volume slide, kdyz neni aktivni.
                        ;V 0.cyklu se efekt nevykonava (zacina az v 1/4 radku
                        ;patternu) a casovac pro shodu je na 0.
          
          ;    move.l    (a0)+,d2  ;prepinani samplu
          
          
          ;tstFre
          ;    btst    #8,d1
          ;    beq    tstFre2    ;ne? Vynech nestaveni frek. 1.kanalu
              move.b    (a0)+,d2   ;hrani 1.tonu?
          
          ;    bpl    tony       ;ano jdi sem
          ;    cmp.b    #$80,d2
          ;    bne    tony
          ;    rts
          ;    move.b    (a0)+,d2   ;hrani 1.tonu
          ;tony
          
              cmp.b    #0,d2
              bne    zachoD4
              and.b    #$c0,d3
              move.w    #1,$dff096 ;;;
              bra    zmeDma1
          
          zachoD4
          ;    cmp.b    #$41,d2
              cmp.b    #$3d,d2
          ;;    bne    vybFre1
              bne    ctiFre1
          zmeDma1
          ;    and.b    #$e,d0
              and.w    #$eff,d1
              bra    tstFre2
          
          ctiFre1
              move.b    d2,d0
              and.b    #$c0,d0
              tst.b    d0
              beq    vybFre1
          
              cmp.b    #$c0,d0
              bne    ztl12s1
              or.l    #$400000,d0
              bra    ztlfre1
          ztl12s1
              cmp.b    #$80,d0
              bne    ztl14s1
              or.l    #$80000,d0
              bra    ztlfre1
          ztl14s1    or.l    #$10000,d0
          
          ztlfre1    and.b    #$3f,d2
              tst.b    d2
              beq    tstFre2
          
          vybFre1    move.w    #1,$dff096
          
              move.b    #$00,$bfde00
              move.b    #$7f,$bfdd00
              move.b    #$70,$bfd400 ;2000=1/100 vteriny
              move.b    #$00,$bfd500
              move.b    #$09,$bfde00
          waitTimeP
              btst.b    #0,$bfdd00
              beq    waitTimeP
          
              bsr    cFreVd2
          ;    swap    d0
          
          ;;    swap    d1
              move.w    d1,$dff0a6        ;nastav frekvenci 1.kanalu
          ;;    swap    d1
          
          ;;    bra    tstFre2
          
          ;;    move.l    a4,d2
          ;;    sub.w    d2,a4
          ;;    swap    d2
          ;;    add.w    d2,a4
          
          ;;jemna uprava tonu
          
          ;;zalVib
          ;    swap    d6
          ;    move.w    d1,d6
              swap    d1
          ;    swap    d6
          
          
          tstFre2
          ;    btst    #9,d1
          ;    beq    tstFre3            ;ne? Vynech nestaveni frek. 1.kanalu
          ;    rol.l    #8,d2
          
              move.b    (a0)+,d2  ;prepinani samplu
              cmp.b    #0,d2
              bne    zachoD5
              move.w    #2,$dff096 ;;;
              bra    zmeDma2
          zachoD5
          ;    cmp.b    #$41,d2;;;
              cmp.b    #$3d,d2
              bne    nahSmp2
          zmeDma2
          ;    and.b    #$d,d0
              and.w    #$dff,d1
              bra    tstFre3
          
          nahSmp2    move.b    d2,d0
              and.b    #$c0,d0
              tst.b    d0
              beq    vybFre2
          
              cmp.b    #$c0,d0
              bne    ztl22s1
              or.l    #$800000,d0
              bra    ztlfre2
          
          ztl22s1    cmp.b    #$80,d0
              bne    ztl24s1
              or.l    #$100000,d0
              bra    ztlfre2
          ztl24s1    or.l    #$20000,d0
          
          ztlfre2    and.b    #$3f,d2
              tst.b    d2
              beq    tstFre3
          
          
          vybFre2    move.w    #2,$dff096
          
              move.b    #$00,$bfde00
              move.b    #$7f,$bfdd00
              move.b    #$70,$bfd400 ;2000=1/100 vteriny ---5000 ne,6000 ok
              move.b    #$00,$bfd500
              move.b    #$09,$bfde00
          waitTimeP1
              btst.b    #0,$bfdd00
              beq    waitTimeP1
          
              bsr    cFreVd2
          ;    swap    d0
          
          ;;    swap    d1
              move.w    d1,$dff0b6        ;nastav frekvenci 1.kanalu
              swap    d1
          
          ;;    move.l    a5,d2
          ;;    sub.w    d2,a5
          ;;    swap    d2
          ;;    add.w    d2,a5
          
          tstFre3
          ;    btst    #$a,d1
          ;    beq    tstFre4            ;ne? Vynech nestaveni frek. 1.kanalu
          ;    rol.l    #8,d2
          
              move.b    (a0)+,d2  ;prepinani samplu
              cmp.b    #0,d2
              bne    zachoD6
          
              and.b    #$c0,d3
              move.w    #4,$dff096 ;;;
              bra    zmeDma3
          
          
          zachoD6    cmp.b    #$3d,d2
              bne    ctiFre3
          
          zmeDma3    and.w    #$bff,d1 ;presunuto nahoru a zde nema byt pro efekt arpeggio
              bra    tstFre4
          
          
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          ctiFre3
          ;;    cmp.b    #$42,d2 ;           ;
          ;    cmp.b    #$3e,d2
          ;    bne    nahSmp3 ;vibrato    ;
          ;    or.l    #$1000000,d4 ;zapneme vibrato 1b
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          
          
              move.b    d2,d0
              and.b    #$c0,d0
              tst.b    d0
              beq    vybFre3
          
              cmp.b    #$c0,d0
              bne    ztl32s1
              or.l    #$1000000,d0
              bra    ztlfre2
          
          ztl32s1    cmp.b    #$80,d0
              bne    ztl34s1
              or.l    #$200000,d0
              bra    ztlfre3
          ztl34s1    or.l    #$40000,d0
          
          ztlfre3    and.b    #$3f,d2
              tst.b    d2
              beq    tstFre4
          
          
          vybFre3    move.w    #$ffff,d4 ;potrebuji nasavit casovac pro arpeggio (2.byte)
                        ;na ff a casovac pro delku hrani 1 radku patternu
                        ;zde jiz mam nastaven na ff a jen nastavuji znovu.
                        ;casovac pro arpeggio muzu nastavit pouze zde kvuli
                        ;casove spravnemu zahrani 1.tonu arpeggia
          
              move.w    #4,$dff096 ;u arpeggia mozna nebude moci byt
          
              move.b    #$00,$bfde00
              move.b    #$7f,$bfdd00
              move.b    #$70,$bfd400 ;2000=1/100 vteriny e
              move.b    #$00,$bfd500
              move.b    #$09,$bfde00
          waitTimeP2
              btst.b    #0,$bfdd00
              beq    waitTimeP2
          
          
          ;    bsr    cFreVd2
          ;    move.w    d1,$dff0c6        ;nastav frekvenci 1.kanalu
          ;    swap    d1
          
          ;    move.b    d2,d3
              and.b    #$c0,d3
              or.b    d2,d3
          
          
          tstFre4
          ;    btst    #$b,d1
          ;    beq    zahFre            ;ne? Vynech nestaveni frek. 1.kanalu
          ;    rol.l    #8,d2
          
              move.b    (a0)+,d2
          
          ;;;;;;;odparal jsem, ale budu potrebovat pro 1.kanal a volumeSlide
          ;    btst    #6,d2
          ;    beq    tst404
          ;    or.l    #$2000000,d4 ;pro btst #$19,d4
          ;    and.b    #$bf,d2
          ;    tst.b    d2
          ;    beq    zahFre
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          
          
          tst404    btst    #6,d2
              beq    tst0
          ;;    or.l    #$40000000,d4 ;zapneme vibrato
          ;    or.l    #$04000000,d4 ;zapneme vibrato
              or.l    #$40000000,d4 ;zapneme vibrato
          
          tst0    cmp.b    #0,d2
              bne    zachoD7
          ;    moveq.l    #0,d3
              and.b    #$c0,d3
          
              move.w    #8,$dff096
              bra    zmeDma4
          
          zachoD7    cmp.b    #$3d,d2
              bne    ctiFre4
          
          zmeDma4    and.w    #$7ff,d1 ;kvuli mixu presunuto nahoru
              bra    zahFre ;
          
          ctiFre4    cmp.b    #$3e,d2
              bne    vybFre4
              bra    zahFre
          
          
          vybFre4    move.w    #8,$dff096 ;test nove predsekvence, ztlumeni
                         ;samplu opet aktivni
              move.b    #$00,$bfde00
              move.b    #$7f,$bfdd00
              move.b    #$70,$bfd400 ;2000=1/100 vteriny 39
              move.b    #$00,$bfd500
              move.b    #$09,$bfde00
          waitTimeP3
              btst.b    #0,$bfdd00
              beq    waitTimeP3
          
          ;    swap    d4 ;nezpracovavam bit 6,7 kvuli ztlumeni samplu
                     ;v 1/4 1/2 3/4 = swapD4 v cFreVd2
                     ;jiz v poznamce kvuli kanalu 1,2,3
                     ;kde tyhle 2 bity zpracovavam,
                     ;proto swapD4 ve 4.kanalu jiz zde
              bsr    cFreVd2
          
              move.w    d1,$dff0d6        ;nastav frekvenci 4.kanalu
              swap    d6
              move.w    d1,d6
              swap    d6
              swap    d1
          
          
          
          zahFre    move.l    (a0)+,d2  ;prepinani samplu
          
          
              tst.b    d2
          ;    bpl    smp2nd ;ok
              bmi    predSmp;ok
              bsr    time
              bsr    time
              bsr    time
              bsr    time
              bra    smp2nd ;ok
              
          predSmp
          
          ;sekvenc
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          ;zatim urcuji delku taktu zde, pak smazu ;
          ;    move.b    d2,d1    ;delka taktu     ;
          ;    and.b    #$1f,d1 ;delka taktu     ;
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          
              move.b    d2,d0
          ;    and.b    #$e0,d2
              and.b    #$e0,d0
          
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          ; dam za sekvenci sampl
          ;    cmp.b    #$e0,d2        ;arpeggio?
          ;
          ;    bne    tst40
          ;    move.l    d2,d3
          ;    move.l    (a0)+,d2
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          
              cmp.b    #$a0,d0        ;sampl?
          ;    bne    volume0
              beq    smp0k
              bsr    time
              bra    volume1
          
          
          smp0k
              btst    #0,d2    ;---------------------------------------
              beq    smp1k    ;test aktivniho volume slide pro 0.kanal
              or.b    #$40,d7 ;---------------------------------------
          
          smp1k    btst    #1,d2
          ;    beq    smp3k
              beq    smp2k
          
              and.b    #$c,d2    ;verze pro 4 sample
              move.w    d5,d0
              clr.b    d0
              ror.w    #4,d0    ;4 sample = 16 byte (1 sampl jsou 4 byte)
              or.b    d2,d0
          
          
          
              lea    tableS0(pc),a2
              move.l    0(a2,d0.w),a2
              jsr    (a2)
              bra    smp2k
          
          ;S00    move.l    #BB,$dff0a0 ;sampl do 1.kanalu
          ;    move.w    #$5f,$dff0a4 ;delku samplu dame do vybraneho kanalu
          ;    rts
          ;S01    move.l    #C1,$dff0a0 ;sampl do 1.kanalu
          ;    move.w    #$c5,$dff0a4 ;delku samplu dame do vybraneho kanalu
          ;    rts
          ;S02    move.l    #C2,$dff0a0 ;sampl do 1.kanalu
          ;    move.w    #$6f,$dff0a4 ;delku samplu dame do vybraneho kanalu
          ;    rts
          ;S03    move.l    #C3,$dff0a0 ;sampl do 1.kanalu
          ;    move.w    #$d6,$dff0a4 ;delku samplu dame do vybraneho kanalu
          ;    rts
          
          
          S00    move.l    #BA,$dff0a0 ;sampl do 0.kanalu  (0-3)
              move.w    #$1e8d,$dff0a4
              rts
          S01    move.l    #BB,$dff0a0 ;sampl do 0.kanalu  (0-3)
              move.w    #$16cb,$dff0a4
              rts
          S02    move.l    #BC,$dff0a0 ;sampl do 0.kanalu  (0-3)
              move.w    #$797,$dff0a4
              rts
          S03    move.l    #BD,$dff0a0 ;sampl do 0.kanalu  (0-3)
              move.w    #$1dbf,$dff0a4
              rts
          
          
          
          
          S04
          ;    move.l    #C7,$dff0c0
          ;    move.w    #$2000,$dff0c4
              rts
          S05    rts
          S06    rts
          S07    rts
          
          
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          ;zkontrolovano - cela logika
          
          smp2k
          ;    ror.w    #8,d2
          ;    btst    #0,d2
              btst    #8,d2
              beq    smp3k
              move.w    d2,d0
              ror.w    #7,d0
              and.b    #$c,d0    ;verze pro 4 sample
              move.b    d0,d2
              move.w    d5,d0
          ;    rol.b    #1,d0
          ;    and.b    #$c,d0
              clr.b    d0
              ror.w    #4,d0    ;4 sample = 16 byte (1 sampl jsou 4 byte)
              or.b    d2,d0
          
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          
              lea    tableS1(pc),a2
              move.l    0(a2,d0.w),a2
              jsr    (a2)
              bra    smp3k
          
          S30    move.l    #BE,$dff0b0 ;sampl do 1.kanalu (0-3)
          ;;    move.w    #$11aa,$dff0b4 ;delku samplu dame do vybraneho kanalu
          ;    move.w    #$1198,$dff0b4 ;delku samplu dame do vybraneho kanalu
              move.w    #$3ef,$dff0b4 ;delku samplu dame do vybraneho kanalu
              rts
          S31
          ;    move.l    #BF,$dff0b0 ;sampl do 1.kanalu (0-3)
          ;    move.w    #$9e0,$dff0b4 ;delku samplu dame do vybraneho kanalu
              rts
          S32
          ;    move.l    #C0,$dff0b0 ;sampl do 1.kanalu (0-3)
          ;    move.w    #$c2b,$dff0b4 ;delku samplu dame do vybraneho kanalu
              rts
          S33
          ;    move.l    #C1,$dff0b0 ;sampl do 1.kanalu (0-3)
          ;    move.w    #$bf1,$dff0b4 ;delku samplu dame do vybraneho kanalu
              rts
          S34
          ;    move.l    #C7,$dff0c0
          ;    move.w    #$2000,$dff0c4
              rts
          S35    rts
          S36    rts
          S37    rts
          
          
          
          
          smp3k
              ror.w    #8,d2
              btst    #7,d2
              beq    smp4k
          
          ;    move.w    (a0),d2 ;nevi se jestli bude SMP z 1,2 kanalu=musi zde byt
          ;    rol.w    #4,d2    ;verze pro 4 sample
              ror.b    #2,d2    ;verze pro 4 sample
              and.b    #$c,d2
          ;;    rol.w    #,d2    ;verze pro 8 samplu
          
          ;    clr.w    d0
          ;    move.b    d5,d0
              move.w    d5,d0
              clr.b    d0
          ;    rol.w    #4,d0    
              ror.w    #4,d0    
              or.b    d2,d0
          
              lea    tableS2(pc),a2
              move.l    0(a2,d0.w),a2
              jsr    (a2)
              bra    smp4k
          
          S60    move.l    #C2,$dff0c0    ;sampl do 2.kanalu (0-3)
                 move.w    #$167d,$dff0c4    ;delka samplu
              rts
          S61
          ;    move.l    #C3,$dff0c0    ;sampl do 2.kanalu (0-3)
          ;    move.w    #$a56,$dff0c4
              rts
          S62
          ;    move.l    #C4,$dff0c0    ;sampl do 2.kanalu (0-3)
          ;    move.w    #$c2b,$dff0c4
              rts
          S63
          ;    move.l    #C5,$dff0c0    ;sampl do 2.kanalu (0-3)
          ;    move.w    #$bf1,$dff0c4
              rts
          
          
          S64
          ;    move.l    #BE,$dff0d0 ;sampl sum do 4.kanalu  (1-3)
          ;    move.w    #$9F0,$dff0d4
              rts
          S65    rts
          S66    rts
          S67    rts
          
          smp4k    swap    d2    ;info o SMP pres casovac do nizsich 2 byte
              move.w    d2,d6    ;info o SMP pres casovac do D6
              move.l    (a0)+,d2
          
          
              tst.b    d2 ;predsekvence hlasitost / 2 sample ve 4.kanalu
          
          ;    bpl    smp2nd ;ok
              bmi    volume0 ;ok
              bsr    time
              bsr    time
              bsr    time
              bra    smp2nd ;ok
          
          
          
          
          volume0    move.b    d2,d0
              and.b    #$e0,d0
          volume1    cmp.b    #$c0,d0
          
          ;    bne    arpegg
              beq    smp3k1
              bsr    time
              bra    arpegg
          
          smp3k1    btst    #1,d2 ;nahrat sampl?
              beq    volume2
              move.w    d5,d0
              clr.b    d0
              ror.w    #4,d0 ;cislo SMP je v 2.byte, proto rotuji doprava
              and.b    #$1f,d2
              or.b    d2,d0
              and.b    #$fc,d0
          
          
          ;pokracovat
          
              lea    tableS4(pc),a2
              move.l    0(a2,d0.w),a2
              jsr    (a2)
              bra    volume3
          
          SE0
              move.l    #C6,$dff0d0 ;sampl bass do 3.kanalu (0-3)
              move.w    #$98e6,$dff0d4
              rts
          SE1
              move.l    #C7,$dff0d0 ;sampl bass do 3.kanalu (0-3)
              move.w    #$9065,$dff0d4
              rts
          SE2    rts
          SE3    rts
          SE4    rts
          SE5    rts
          SE6    rts
          SE7    rts
          
          
          ;pokracovat
          ;smpNe    or.b    #1,d2    ;pri nepouziti predsekvence SMP
          
          volume3    btst    #0,d2
              beq    volume4
          
          volume2    rol.l    #6,d2
              and.b    #$3f,d2
              beq    volK2
          ;;    move.b    d2,d7
              and.b    #$40,d7 ;do 0.kanalu davame info o aktivnim volume slide pred
              or.b    d2,d7    ;nastavenim hlasitosti, u ostatnich kanalu az po nastav
              addq.b    #1,d2    ;eni hlasitosti, proto musime toto info zachovat, smaza
                      ;t puvodni hodnotu hlasitosti a az pak pridat novou hla
                      ;sitost k bitu urcujicimu aktivni efekt volume slide
                      
              move.b    d2,$dff0a9 ;hlasitost 0.kanalu (0-3)
          
          volK2    rol.l    #6,d2
              rol.l    #8,d7
              and.b    #$3f,d2
              beq    volK3
              move.b    d2,d7
              addq.b    #1,d2
              move.b    d2,$dff0b9 ;hlasitost 1.kanalu
          volK3    rol.l    #6,d2
              rol.l    #8,d7
              and.b    #$3f,d2
              beq    volK4
              move.b    d2,d7
              addq.b    #1,d2
              move.b    d2,$dff0c9 ;hlasitost 2.kanalu
          volK4    rol.l    #6,d2
              rol.l    #8,d7
              and.b    #$3f,d2
              beq    volume4
              move.b    d2,d7
              addq.b    #1,d2
              move.b    d2,$dff0d9 ;hlasitost 3.kanalu
          
          volume4    rol.l    #8,d7
              move.l    (a0)+,d2
              tst.b    d2
          
          ;    bpl    smp2nd  ;ok
              bmi    arpegg0 ;ok
              bsr    time
              bsr    time
              bra    smp2nd ;ok
          
          
          arpegg0    move.b    d2,d0
              and.b    #$e0,d0
          arpegg    cmp.b    #$e0,d0
          ;    bne    pattern
              beq    arpegg1
              bsr    time
              bra    pattern
          
          arpegg1
          ;;    addq.l    #4,a0 ;predsekvence arpeggio/rychlost hrani
              move.b    d2,d1
              and.b    #$1f,d1
          ;;    ror.w    #8,d5
          ;    move.b    d1,d5
          ;    addq.b    #1,d5
          ;    ror.b    #2,d5 ;1/4 hodnoty z celkove delky taktu
          
          
              move.b    #0,d2
              tst.l    d2
          ;    beq    smp2nd; ok
              beq    patter0; ok
          
          
              move.w    d2,d0      ;test aktivniho arpeggia
              and.w    #$3fff,d0 ;testuji pouze 1.byte, 0.byte je jiz vynulovany
              beq    vSlid13
              and.l    #$ff,d3
              or.l    d2,d3
              and.l    #$3f3f3fff,d3 ;jen tony arpeggia
          vSlid13    and.l    #$c0c0c0ff,d2 ;jen volume slide,0.byte jiz vynulovany,kanal 1-3
          ;    and.l    #$3f3f3f3f,d7 ;-kanal 0 je jinde ;d7 smaz puvodni volume slide
              or.l    d2,d7          ;-uroven hlasitosti ponechej,kanal 0-3
                            ;nakopiruj volume slide,kanal 1-3
          
          
          patter0    move.l    (a0)+,d2 ;priprava na predsekvenci pattern
              tst.b    d2
          ;    bpl    smp2nd ;ok
              bmi    patte20 ;ok
              bsr    time
              bra    smp2nd
          
          pattern ;predsekvence pattern
          
          ;patte21 and.b    #$7f,d3 ;bit pro sfx pismo na 0
          
          patte20    btst    #4,d2 ;volume slide zesilit (0=zeslabit) 0.kanal (0-3)
              beq    patte21
              or.b    #$80,d7
          
          
          
          ;sem jeste pribyde vynulovani casovace pro #skladbyPattern
          
          
          
          patte21    btst    #18,d2
              beq    patte22
              or.l    #$f0000000,d4 ;nastaveni casovace volume slide na 1.hodnotu
                            ;pred jeho zvyseni hodnoty o 1 = 0
          
          patte22    btst    #19,d2
              beq    patte23
              or.b    #$80,d3 ;bit pro sfx pismo na 1
              move.w    #$1ff,d1 ;0 byte -delka taktu na vychozi hodnotu casovace, tedy
                       ;kazda velka smycka hudebni rutiny je shoda a mala
                       ;smycka se nevykonava, 1 byte je nastaveni DMA
              move.l    #CA,$dff0a0 ;sampl do 0.kanalu  (0-3)
              move.w    #180,$dff0a4 ;delka samplu do 1.kanalu (0-3)
                  move.w    #360,$dff0a6  ;nastav frekvenci 0.kanalu ;chtena rychlost D2#
          
          ;;    subq.l    #4,a0 ;pri aktivnim sfx budu ucelove addq.l #4,a0 delat primo
                        ;v textru a ne zde na konci predsekvence pattern. Timhle
                        ;subq instrukci addq na konci tehle predsekvence nuluji
                        ;aby jsem dane addq mohl delat v textru. ADDQ v rezimu
                        ;sfx musim delat, protoze v rezimu sfx pozuzivam jen
                        ;cyklus Textra. Cyklus hudebni rutiny neni pouzit.
          
          
          ;oprava, aby hral efekt SFX i na vyssich radach CPU z $dff0a8 na $dff0a9
              move.b    #20,$dff0a9 ;hlasitost 0.kanalu (0-3) oprava $dff0a9
              move.b    #20,d7
          
              addq.l    #4,a0
              bra    hraj2
          
          
          ;;    ror.w    #8,d2  ;hodnota pro volume slide do 2.byte. Co je v 1.byte v d2
                         ;nas ted nezajima. Ten budeme nastavovat kousek dal na
                         ;navesti smp2nd1 pomoci move.b
          
          
          patte23    and.b    #$7f,d3 ;bit pro sfx pismo na 0
          
          ;patte21
          
              btst    #16,d2  ;test pro praci se skoky v patternech
              beq    patte26
          
              btst    #17,d2
              beq    patte24 ;hrat dalsi pattern v indexu #skladbyPatern? a pokud-
                      ;-bude skok na pattern #0.L=hrani uplne prvni skladby-
                              ;-ano skoc sem
          
                                  ;nebo se vrat na prvni pattern prave hrajici skladby
          
          ;    bra    skladba
              or.l    #$4000000,d4
              bra    patte26
          
          patte24    add.l    #$10000,a5 ;navys hodnotu indexu pro #skladbyPattern
              move.l    a5,d2      ;a dej do D2
              swap    d2         ;do 0.byte
          
              and.w    #$ff,d2
          ;    rol.b    #2,d2      ;vynasob cislem 4
              lsl.b    #2,d2      ;vynasob cislem 4
              
          ;;patte25
              lea    skladbyPattern(pc),a2 ;pointer do A2
              lea    skladby(pc),a0 ;pointer do A0
          
          ;;    move.w    #0,d2
              add.w    d2,a2       ;navys adresu o index hrajiciho patternu
          
              move.l    (a2),d2     ;index #skladbyPattern na 0?
              bne    patte25     ;ne, skoc sem
          
          ;    move.l    a5,d2         ;
          ;    and.l    #$ff00ffff,d2 ;
          ;    move.l    d2,a5         ;
          
              and.w    #$ff,d5 ; 00--.w = 1.skladba
          
              or.l    #$4000000,d4
          
          patte25
              add.l    (a2),a0             ;pozice hrajiciho patternu do A0
          
          
          
          patte26    and.w    #$0f0f,d2
              addq.l    #4,a0
          
          **
              swap    d2
          **
          
          
          smp2nd
          ;    tst.b    d3
              move.b    d3,d2
              and.b    #$3f,d2
          ;    tst.b    d2 ;neprovadim, priznaky nastaveny jiz ANDem
          
          ;;    beq    smp2nd2; ok
          ;    beq    txtIn1time
              beq    docasneTextro
          
          
          
          ;    move.w    d3,d0
          ;    move.b    #0,d0
          ;    tst.w    d0
              cmp.w    #$ff,d3
          ;    bhi    txtIn1time
              bhi    docasneTextro
          
          ;;    bne    smp2nd2; ok
              
          ;    move.b    d3,d2
              bsr    cFreVd2
              move.w    d1,$dff0c6 ;frekvence 3.kanalu se kvuli arpeggiu zpracovava
              swap    d1       ;az zde, tedy po predsekvenci arpeggio, kde se jiz
          ;    moveq.l    #0,d3       ;vi, jestli se bude hrat jen 1 ton, nebo arpeggio
              and.b    #$c0,d3       ;d3 zde smazu, pokud v ni neco bude, jedna se pouze
                         ;o efekt arpeggio
          
          ;smp2nd1
          ;    move.b    d5,d2 ;kvuli utlumeni SMP v kanaly 0-2, aby jsme zachovali
                        ;stejnou hodnotu v D5 (1/4taktu) a zvysovali hodnotu v D2
                        ;pro dosazeni hodnoty taktu 1/4,1/2 a 3/4. Zde je
                        ;v D2 vyssi word pouzit jen pro tuhle funkci. Swapem ted
                        ;zpristupnime nizsi word v D2 pro pomocne promenne a hned
                        ;skaceme na navesti smp2nd2
          ;;    bra    smp2nd2; ok
          ;;hraj1
          ;smp2nd2
          ;    swap    d2 ;v poznamce pro optimalizaci volume slide
          ;    cmp.b    d4,d1    ;souhlasi?
          ;    beq    klik
          
          ;misto pro program co potrebuje vyssi frekvenci obnovovani
          
          
          ;****************************************
          
          docasneTextro
          
                  move.w    #0,d0
          
          ;******************************************************************************
          ; TEXTRO ZACATEK
          ;******************************************************************************
          
          
          
          ;******************************************************************************
          ; TEXTRO KONEC
          ;******************************************************************************
          
          
          
          
          
          
          ;;freVibra30
          ;    move.b    #$00,$bfde00
          ;    move.b    #$7f,$bfdd00 ;c2 c1
          ;         move.b    #$00,$bfd400 ;00n80n60n50n4cn48n44n40j00j00j     ,2000=1/100 vteriny
          ;    move.b    #$28,$bfd500 ;2e 2d 2d 2d 2d 2d 2d 2d 2d 2c
          ;    move.b    #$09,$bfde00
          ;waitVibra2
          ;    btst.b    #0,$bfdd00
          ;    beq    waitVibra2
          
          
          
          
          
          
          
          
          
              addq.b    #1,d4
              move.w    d6,d2       ;pro hodnotu kdy nahrat 2.sampl
          ;;    rol.w    #5,d2
              and.b    #$1f,d2
              cmp.b    d4,d2       ;ma se nahrat 2.sampl?
          ;;    bne    tstVibra2
              bne    frek13
          
          btst13    btst    #9,d6
              beq    smp13
              move.w    #2,$dff096    ;ztlumeni samplu    (1-3)
          ;    and.w    #$3fff,d7
          
          smp13
          ;    btst    #$1b,d4   ;nahrani SMP, 4.kanal?
              btst    #8,d6     ;nahrani SMP, 4.kanal?
          ;    beq    tstVibra2
              beq    frek13
          ;    move.b    d6,d2
          ;    lsr.b    #2,d2    ;d2 vstupni hodnota pro cFreVD2
          ;    lsr.b    #2,d6    ;d2 vstupni hodnota pro cFreVD2
              and.w    #$fc00,d2
              tst.w    d2
              beq    smp23
              rol.w    #6,d2    ;d2 vstupni hodnota pro cFreVD2
          ;    tst.b    d6
          ;    beq    smp23
          ;    move.b    d6,d2    ;d2 vstupni hodnota pro cFreVD2
          
          ;    bsr    cFreD0s
              bsr    cFreVd2
          ;    swap    d0 ;vracim D0 pro zpracovani DMA kanalu
              move.w    d1,$dff0b6    ;frekvence samplu 1-3 (4.kanal)
              swap    d1
          
          smp23
          ;    swap    d0 ;vracim D0 pro zpracovani DMA kanalu
          ;    beq    tstVibra2
          ;    or.l    #$8 0000,d0
          ;    or.b    #8,d0
          
          
          ;pokracovat
          
          
              or.w    #$200,d1
          
              lea    tableS3(pc),a2
          ;    ror.w    #6,d6
              ror.b    #3,d6
              and.b    #$c,d6
          
          
          ;;    clr.w    d0
          ;    clr.w    d2
          ;    move.b    d5,d2
              move.w    d5,d0
              clr.b    d0
          ;    rol.w    #4,d0    
              ror.w    #4,d0    
              or.b    d6,d0
          
              move.l    0(a2,d0.w),a2
              jsr    (a2)
              move.w    #0,d6
              bra    frek13
          
          
          S90    move.l    #BF,$dff0b0 ;sampl do 1.kanalu (0-3)
          ;;    move.w    #$9e0,$dff0b4 ;delku samplu dame do vybraneho kanalu
              move.w    #$938,$dff0b4 ;delku samplu dame do vybraneho kanalu
              rts
          S91
          ;    move.l    #C7,$dff0d0 ;sampl sum do 4.kanalu  (1-3)
          ;    move.w    #$7e,$dff0d4
              rts
          S92
          ;    move.l    #C8,$dff0d0 ;sampl sum do 4.kanalu  (1-3)
          ;    move.w    #$4c4,$dff0d4
              rts
          S93
          ;    move.l    #C9,$dff0d0 ;sampl sum do 4.kanalu  (1-3)
          ;    move.w    #$4c4,$dff0d4
              rts
          
          S94
          ;    move.l    #C5,$dff0d0    ;sampl kickTerminator (4.kanal)
              rts
          S95    rts
          S96    rts
          S97    rts
          
          
          ;tstVibra2
          ;      swap    d0 ; pro zpracovavani DMA kanalu
          
          frek13
          ; hlasitost v arpeggiu
          ;    ror.w    #8,d5 ;d5 az do ted jsem mel na info kterou skladbu hrat,
                        ;je to OK
          
          
          
          
          
          
          
          
          
          ;pokracovat
          
          ;;;;;    btst    #$1c,d4 ;nahrat vibrato?
          ;;;;    btst    #$18,d4 ;nahrat vibrato?
          ;;;    btst    #$1c,d4 ;nahrat vibrato?
          ;;    btst    #$1d,d4 ;nahrat vibrato?
          ;    btst    #$1e,d4 ;nahrat vibrato?
              btst    #$1e,d3 ;nahrat vibrato?
              beq    tstArpeggio
          
          ;opaVibra3
              swap    d6
              move.b    (a6)+,d2
              tst.b    d2
              bmi     odpocet
              bne    pripocet
          
              lea    table6(pc),a6
              move.b    (a6)+,d2
          ; hlasitost v arpeggiu
          ;    move.b    #$37,d5 ;dekadicky 56+1 -pocet bytu vibrata (table6) +1 byte
          
          pripocet
              and.w    #$f,d2
              sub.w    d2,d6
              bra    endVibrato
          odpocet
              and.w    #$f,d2
              add.w    d2,d6
          ;    bra    endVibrato
          
          endVibrato
              move.w    d6,$dff0d6        ;nastav frekvenci 1.kanalu
              swap    d6
          ; hlasitost ve vibratu
          ;    subq.b    #1,d5
          
          
          tstArpeggio
          ;    tst.b    d3
              move.b    d3,d2
              and.b    #$3f,d2 ;pokud jsem vyse v kode hral pouze klasicky ton a ne
                      ;arpeggio, z 0.byte jsem ton smazal a zde se arpeggio
                      ;neporvede, jinak se arpeggio provede. Posledni 2 bite
                      ;z 0.byte ponechavam, nizsi bite je pro aktivni vibrato
          ;    beq    hraj1
              beq    volSli0
          
          
          ;tstArpeggio1
              ror.w    #8,d4
              addq.b    #1,d4
              tst.b    d4
              bne    tstArpeggio3
              move.b    #$f6,d4
              move.w    #4,$dff096
              addq.b    #4,d0
              swap    d5
              bsr    cFreVd5
              move.w    d5,$dff0c6        ;nastav frekvenci 3.kanalu
              swap    d5
              rol.l    #8,d3
          tstArpeggio3
              ror.w    #8,d4
          
          
          ; hlasitost v arpeggiu
          ;    addq.b    #1,d5 ;uplne nazacatku je snizeno o 1, aby pri +1 byla 0
          ;    move.b    0(a6,d5),d2
          ;    tst.b    d2
          ;    bne    tstArpeggio4
          ;    sub.b    #$21,d5    ;-32 na zacatek-1=-33 pro addq #1,d5 aby byla 0
          ;tstArpeggio4
          ;    move.b    d2,$dff0c8 ;hlasitost v 3.kanalu
          
          
          
          ;tstSlid
          ;    tst.l    d7
          ;    beq    hraj1
          
          ;    rol.l    #8,d7
          ;    btst    #6,d7
          ;    beq    vSlide3
          ;    btst    #7,d7
          ;    beq    vSMin2
          ;    addq.b    #8,d7
          ;    bra    vSlidV2
          ;vSMin2    subq.b    #8,d7
          ;vSlidV2    move.b    d7,d0
          ;    and.b    #$3f,d0
          ;    move.b    d0,$dff0b9 ;hlasitost 2.kanalu
          
          ;vSlide3    rol.l    #8,d7
          ;    btst    #6,d7
          ;    beq    vSlide4
          ;    btst    #7,d7
          ;    beq    vSMin3
          ;    addq.b    #8,d7
          ;    bra    vSlidV3
          ;vSMin3    subq.b    #8,d7
          ;vSlidV3    move.b    d7,d0
          ;    and.b    #$3f,d0
          ;    move.b    d0,$dff0c9 ;hlasitost 3.kanalu
          
          ;vSlide4    rol.l    #8,d7
          ;    btst    #6,d7
          ;    beq    vSlide5
          ;    btst    #7,d7
          ;    beq    vSMin4
          ;    addq.b    #1,d7
          ;    bra    vSlidV4
          ;vSMin4    
          ;    subq.b    #1,d7
          ;vSlidV4    move.b    d7,d0
          ;    and.b    #$3f,d0
          ;    move.b    d0,$dff0d9 ;hlasitost 4.kanalu
          
          ;vSlide5    rol.l    #8,d7
          
          
          
          
          ;hraj1
          ;;    move.w    d0,$dff096
          ;    move.w    d1,d2
          ;    move.b    #$80,d2
          ;    ror.w    #8,d2
          ;    and.b    #$9,d2
          ;    move.w    d2,$dff096
          
          
          
          
          ;    and.b    #$b,d0    ;DMA prenos 3.kanalu na nulu...mozna arpeggio
          
          ;-----------------------------
          ;    and.b    #7,d0    ;DMA prenos 4.kanalu na nulu
                      ;kdyz se kod da do poznamky, hraji kanaly
                      ;mimo mix bez praskani, mix kod mozna potrebuje
          ;-----------------------------
          
          ;;puvodni rychlost casovani
          ;;freVibra3
          ;;    move.b    #$00,$bfde00
          ;;    move.b    #$7f,$bfdd00
          ;;       move.b    #$48,$bfd400 ;90 2000=1/100 vteriny
          ;;    move.b    #$07,$bfd500 ;0d
          ;;    move.b    #$09,$bfde00
          ;;waitVibra
          ;;    btst.b    #0,$bfdd00
          ;;    beq    waitVibra
          
          
          ;freVibra3
          ;    move.b    #$00,$bfde00
          ;    move.b    #$7f,$bfdd00
          ;       move.b    #$56,$bfd400 ;90 2000=1/100 vteriny
          ;    move.b    #$2f,$bfd500 ;0d
          ;    move.b    #$09,$bfde00
          ;waitVibra
          ;    btst.b    #0,$bfdd00
          ;    beq    waitVibra
          
          
          
          ;; hlasitost v arpeggiu
          ;;    ror.w    #8,d5
          
          
          
          ;;    cmp.b    d4,d1    ;souhlasi?
          ;;    beq    klik
          ;;    swap    d2
          
          
          volSli0
          
              rol.l    #4,d4 ;POZOR rotace pouze o 4 bity, casovac volume slide
                        ;dostavame z longu na prvni 4 bite  
              move.b    d4,d0
              and.b    #$f0,d4 ;vynulujeme casovac vol. slide pro jeho novou hodnotu
          
              addq.b    #1,d0 ;hodnota casovace je vzdy snizena o 1, kvuli pouziti
                        ;plneho rozsahu 4 bitu. Pri 1.cyklu mame casovac na
                        ;hodnote 0f, po zvyseni hodnoty mame 10...
              and.b    #$0f,d0 ;...cim i ted dostavme na casovaci nulovou hodnotu
              or.b    d0,d4 ;zapisuji do D4 novou hodnotu casovace volume slide
              ror.l    #4,d4
          
                        ;dostali na spravnou hodnotu pro casovac D4, ktery nam
                        ;zacina od hodnoty 0 a ne 1
          
              swap    d2
              cmp.b    d2,d0
          ;    bne    smp2nd2; ok
              bne    hraj1
          
          ;;    and.l    #$0fffffff,d4
              or.l    #$f0000000,d4
          
          ;;    add.b    d5,d2 ;1/4 delky taktu,+1/4 delky taktu nebo 1/2 pro dosazeni
                        ;hodnot 1/2 a 3/4 z casovace pro cely takt pro utlumeni
                        ;samplu v rozsahu hodnoty nedostacujici po 1 celem taktu
          
              ;zde test ztlumeni samplu 1-4
          
          ;;    move.w    #0,d0
          ;;    tst.l    d0
          ;;    beq    smp2nd2; ok
              cmp.l    #$ffff,d0 ;pokud jsou neni data v hornich 2 byte z longu, jdi
                        ;rovnou na zpracovani volume slide
              bls.w    tstSlid;
              swap    d0
              btst    #0,d0 ;1.kanal
              beq    tst2k
              move.w    #1,$dff096
              and.w    #$eff,d1
          
          tst2k    btst    #1,d0 ;2.kanal
              beq    tst3k
              move.w    #2,$dff096
              and.w    #$dff,d1
          
          tst3k    btst    #2,d0 ;3.kanal
              beq    tst3k2
              move.w    #4,$dff096
              and.w    #$bff,d1
          
          tst3k2    ror.w    #3,d0
          ;;    add.b    d5,d2
              swap    d0
          ;    bra    tstSlid; ok
          
          
          
          tstSlid
          ;    swap    d2
              ror.w    #8,d2 ;hodnotu zmeny hlasitosti volume slide do 0.byte
              addq.b    #1,d2
          ;    and.b    #$0f,d2 ;myslim ze AND neni treba, mam zde pouze hodnotu zmeny
                      ;hlasitosti pro volume slide
          
          
          ;    move.b    #$01,d2
          
              btst    #6,d7 ;hlasitost 0.kanalu (0-3) opraveno
              beq    vSlide2
              btst    #7,d7
              beq    vSMin1
              add.b    d2,d7
              move.b    d7,d0
              and.b    #$3f,d0
              addq.b    #1,d0
              bra    vSlidV1
          
          vSMin1    sub.b    d2,d7
              move.b    d7,d0
              addq.b    #1,d0
              and.b    #$3f,d0
          vSlidV1    move.b    d0,$dff0a9
          
          vSlide2    rol.l    #8,d7 ;hlasitost 1.kanalu (0-3) opraveno
              btst    #6,d7
              beq    vSlide3
              btst    #7,d7
              beq    vSMin2
              add.b    d2,d7
              move.b    d7,d0
              and.b    #$3f,d0
              addq.b    #1,d0
              bra    vSlidV2
          
          vSMin2    sub.b    d2,d7
              move.b    d7,d0
              addq.b    #1,d0
              and.b    #$3f,d0
          vSlidV2    move.b    d0,$dff0b9
          
          
          vSlide3    rol.l    #8,d7 ;hlasitost 2.kanalu (0-3) opraveno
              btst    #6,d7
              beq    vSlide4
              btst    #7,d7
              beq    vSMin3
              add.b    d2,d7
              move.b    d7,d0
              and.b    #$3f,d0
              addq.b    #1,d0
              bra    vSlidV3
          
          vSMin3    sub.b    d2,d7
              move.b    d7,d0
              addq.b    #1,d0
              and.b    #$3f,d0
          vSlidV3    move.b    d0,$dff0c9
          
          vSlide4    rol.l    #8,d7 ;hlasitost 3.kanalu (0-3) puvodni oprava
              btst    #6,d7
              beq    vSlide5
              btst    #7,d7
              beq    vSMin4
              add.b    d2,d7
              move.b    d7,d0
              and.b    #$3f,d0
              addq.b    #1,d0
              bra    vSlidV4
          
          vSMin4    sub.b    d2,d7
              move.b    d7,d0
              addq.b    #1,d0
              and.b    #$3f,d0
          vSlidV4    move.b    d0,$dff0d9
          
          vSlide5
              subq.b    #1,d2
          
              ror.w    #8,d2 ;hodnotu hlasitosti volume slide do 1.byte
                        ;v 0.byte je frekvence zmeny hlasitosti volume slide
              rol.l    #8,d7
          ;    swap    d2
          
          
          
          hraj1    swap    d2
          
          hraj2    move.w    d1,d2
              move.b    #$80,d2
              ror.w    #8,d2
          
          ;    and.b    #$1,d2
          
          
          ;;freVibra30
              move.b    #$00,$bfde00
              move.b    #$7f,$bfdd00 ;c2 c1
                   move.b    #$a0,$bfd400 ;00n80n60n50n4cn48n44n40j00j00j     ,2000=1/100 vteriny
              move.b    #$17,$bfd500 ;2e 2d 2d 2d 2d 2d 2d 2d 2d 2c
              move.b    #$09,$bfde00
          waitVibra2
              btst.b    #0,$bfdd00
              beq    waitVibra2
          
              move.w    d2,$dff096
          
          ;    btst    #$19,d4          ;vypnute sfx. Psani textu bez zpozdeni?
          ;    bne    freVibra4
          
          
          freVibra30
              move.b    #$00,$bfde00
              move.b    #$7f,$bfdd00 ;c2 c1
                   move.b    #$a0,$bfd400 ;00n80n60n50n4cn48n44n40j00j00j     ,2000=1/100 vteriny
              move.b    #$17,$bfd500 ;2e 2d 2d 2d 2d 2d 2d 2d 2d 2c
              move.b    #$09,$bfde00
          waitVibra
              btst.b    #0,$bfdd00
              beq    waitVibra
          
          
          
          
              cmp.b    d4,d1    ;souhlasi?
          ;;    beq    klik
          ;    bne    txtIn1time
              bne    docasneTextro
          
          
          ;;zde pokracovat
          ;    add.b    #1,d2
          ;    tst.w    a4
          ;    beq    ztlumT2
          ;    cmp.w    d2,a4
          ;    beq    ztlum1
          ;ztlumT2    tst.w    a5
          ;    beq    ztlumT3
          ;    cmp.w    d2,a5
          ;    beq    ztlum2
          ;ztlumT3    tst.w    a3
          ;    beq    ztlumT4
          ;    cmp.w    d2,a3
          ;    beq    ztlum3
          ;ztlumT4
          ;;    tst.w    d7
          ;    tst.w    a1
          ;    beq    ztlumKon
          ;;    cmp.w    d2,d7
          ;    cmp.w    d2,a1
          ;    beq    ztlum4
          
          ;ztlumKon
          ;ztlum1    move.w    #1,$dff096        ;ztlum kanal 1
          ;    bra    ztlumT2
          ;ztlum2    move.w    #2,$dff096        ;ztlum kanal 2
          ;    bra    ztlumT3
          ;ztlum3    move.w    #4,$dff096        ;ztlum kanal 3
          ;    bra    ztlumT4
          ;ztlum4    move.w    #8,$dff096         ;ztlum kanal 4
          ;    bra    ztlumKon
          
          
          klik
          ;    swap    d0 ;pro praci s DMA
              bsr    testMysi
              tst.w    d0
              beq    stisknuto        ;stisknuto!!! Ukonci!!!
          
              subq.l    #4,a0
          ;    cmp.b    #$3f,(a0)
          ;    beq    zacatek            ;obnov hrajici sample
              btst    #26,d4
              bne    zacatek
          
              bra    zahrajSampl        ;vyber dalsi frekvenci pro sample
          
          zacatek    cmp.w    #$3f3f,(a0)
              beq    stisknuto
          ;    addq.l    #4,a0 ;asi jiz nemusi v kodu byt 6.srpen 2023
              bra    skladba
          
          ;;;;;    jsr     _LVOPermit(a6)
          ;;;;;    rts                ;konec programu!!!
          
          testMysi    
              btst    #$6,$bfe001
          ;    bne    nestisknuto
              bne    testEsc
              move.w    0,d0
              rts
          
          testEsc
              move.b    $bfec01,d0
              not.b    d0
              ror.b    #1,d0
              cmp.b    #$40,d0
              bne    nestisknuto
              move.w    0,d0
          nestisknuto                ;funguje i pro ukonceni!!!
              rts
          stisknuto
              move.w    #$f,$dff096 ;;;
          
          ;    move.l    4.w,a6        ;baze execu do a6
          
                                ;musi byt,jinak se exe neukonci
                                ; ;baze execu do a6
          ;        LEA    GFXLIB(PC),A1 ;;nacteme grafickou knihovnu
          ;        JSR    -408(A6)      ; ;otevreme grafickou knihovnu kterou
                                ; ;mame v A1 (vrati nam i hodnotu v D0)
          ;        MOVE.L    D0,A1          ;;v D0 je pointer na grafickou knihovnu
          ;        MOVE.L    38(A1),$DFF080; ;adresu puvodniho systemoveho
          ;;        move.w    38(a1),$dff080; ;Copperlistu dame do registru adresy
                                ; ;pocatku programu pro Copper
          ;        JSR    -414(A6)      ;  ;zavreme grafickou knihovnu
          ;        JSR    -138(A6) ;spusteni multitaskingu
          ;        MOVEQ    #0,D0   ;vynuluj D0
          
          
          
              RTS         ;ukonci program
          
          
          
          time ;casova nahrada za nevykonanou predsekvenci
          
              move.b    #$00,$bfde00
              move.b    #$7f,$bfdd00
                   move.b    #$00,$bfd400 ;2000=1/100 vteriny
              move.b    #$00,$bfd500
              move.b    #$09,$bfde00
          waitTime
              btst.b    #0,$bfdd00
              beq    waitTime
          
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          ;    move.w    d0,d0
          
              rts
          
          
          
          cFreVd2
          ;    swap    d4
              swap    d1
          ;    lea    table5(pc),a2
          ;    clr.b    d4
          ;    move.w    #$6B1,d1
          ;skok2    addq.b    #1,d4
          ;    move.w    (a2)+,d0
          ;    ror.w    #8,d0
          ;    and.w    #$ff,d0
          ;    sub.w    d0,d1
          ;    cmp.b    d4,d2
          ;    bne    skok2
          ;    swap    d4
          
          
          
          ;    move.b    d2,d0
          ;    and.w    #$ff,d0
              and.w    #$ff,d2
          ;    rol.b    #1,d0
              rol.b    #1,d2
              lea    table5(pc),a2
          ;    move.w    (a2,d0.w),d1
              move.w    (a2,d2.w),d1
              rts
          
          cFreVd5
          ;    swap    d0
              swap    d4
          ;    swap    d5
              lea    table5(pc),a2
              clr.b    d4
              move.w    #$6B1,d5
          skok5    addq.b    #1,d4
              move.w    (a2)+,d0
              ror.w    #8,d0
              and.w    #$ff,d0
              sub.w    d0,d5
              cmp.b    d4,d3
              bne    skok5
          ;    swap    d0
              swap    d4
              rts
          
          
          
          tableST    dc.l    T00,T01    
          tableS0    dc.l    S00,S01,S02,S03,S04,S05,S06,S07
          tableS1    dc.l    S30,S31,S32,S33,S34,S35,S36,S37
          tableS2    dc.l    S60,S61,S62,S63,S64,S65,S66,S67
          tableS3    dc.l    S90,S91,S92,S93,S94,S95,S96,S97
          tableS4    dc.l    SE0,SE1,SE2,SE3,SE4,SE5,SE6,SE7
          
          
          table5
          ;    dc.l    $01006000,$5B005500,$53004C00,$48004400,$40003C00 ;nova oktava
          ;    dc.l    $38003600                      ;nova oktava
          
          ;    dc.l    $33003000,$2E002A00,$2A002600,$24002200,$20001E00
          ;    dc.l    $1C001B00,$19001800,$17001500,$15001300,$12001100
          ;    dc.l    $10000F00,$0E000E00,$0C000C00,$0C000A00,$0A000A00
          ;    dc.l    $09000800,$08000800,$07000700
          
          ;    dc.l    $06000600,$06000500,$05000500,$04000500,$04000300
          ;    dc.l    $04000300,$00000000
          
              dc.w    0000
              dc.w    1712,1616,1525,1440,1357,1281,1209,1141,1077,1017,0961,0907
              dc.w    0856,0808,0762,0720,0678,0640,0604,0570,0538,0508,0480,0453
              dc.w    0428,0404,0381,0360,0339,0320,0302,0285,0269,0254,0240,0226
              dc.w    0214,0202,0190,0180,0170,0160,0151,0143,0135,0127,0120,0113
              dc.w    0107,0101,0095,0090,0085,0080,0076,0071,0067,0064,0060,0057
          
          ;3ka vitez4? AGO
          ;table6    dc.l    $01800180,$80800180,$80808080
          ;    dc.l    $80808080,$80808180,$80808180
          ;    dc.l    $81808080,$81808180,$80808180
          ;     dc.l    $80808080,$80808080,$80800180
          ;     dc.l    $80800180,$01800000
          ;;    dc.w    $0000
          
          ;SR
          ;table6    dc.l    $01800180,$01808080,$80808180
          ;    dc.l    $81808180,$81808180,$81808080
          ;    dc.l    $80800180,$01800180
          ;    dc.w    $0000
          
          ;SR2
          ;table6    dc.l    $01018001,$80808081,$80818181
          ;    dc.l    $81808180,$80800180,$01010000
          ;    dc.w    $0000
          
          ;SR3
          ;table6    dc.l    $01800180,$01808080,$81808180
          ;    dc.l    $81808180,$81808180,$80800180
          ;    dc.l    $01800180
          ;    dc.w    $0000
          
          
          ;SR4
          ;table6    dc.l    $01800180,$01808080,$80818081
          ;    dc.l    $80818081,$80818081,$80808080
          ;    dc.l    $01800180,$01800000
          ;;    dc.w    $0000
          
          ;SR5
          table6    dc.l    $01800180,$01808080,$80818081
              dc.l    $80818180,$81808180,$80808001
              dc.l    $80018001
              dc.w    $8000
          
          
          
          ;table6    dc.l    $80808080
          ;    dc.w    $0000
          
          
          ;arpeggio hlasitost 1 pulsinusovka-posledni verze
          ;    dc.l    $24292e34,$343a3a40,$40404040,$4040403a
          ;    dc.l    $3a3a3a34,$34342e2e,$2e292929,$24241f1f
          ;    dc.w    $0000
          
          
          
              CNOP    0,4
          
          ;CHARTAB:  DC.B "*0987654321FEDCBA^&$GHIJKkLMmNOoPQRSTUuVWXxYZ/!?:.,%-" ;_ "
          
          CHARS:
          
          ;dc.b $00, $00, $00, $FE, $00, $00, $00, $00 ;* 00gr.znakNove
          
           dc.b 0,0,0,0,0,0,0,0 ;32 space
          ;dc.b 0,0,0,0,0,0,0,0 ;33
           dc.b $30, $78, $78, $30, $00, $00, $30, $00 ;! 33 uprava pro zlute pismo Reset
           dc.b 0,0,0,0,0,0,0,0 ;34
           dc.b 0,0,0,0,0,0,0,0 ;35
           dc.b 0,0,0,0,0,0,0,0 ;36
           dc.b 0,0,0,0,0,0,0,0 ;37
           dc.b 0,0,0,0,0,0,0,0 ;38
           dc.b 0,0,0,0,0,0,0,0 ;39
           dc.b 0,0,0,0,0,0,0,0 ;40
           dc.b 0,0,0,0,0,0,0,0 ;41
           dc.b 0,0,0,0,0,0,0,0 ;42
           dc.b 0,0,0,0,0,0,0,0 ;43
           dc.b 0,0,0,0,0,0,0,0 ;44
          ;dc.b 0,0,0,0,0,0,0,0 ;45
           dc.b $00, $00, $00, $7C, $00, $00, $00, $00 ;- 45
          ;dc.b $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff ;- 45
           dc.b 0,0,0,0,0,0,0,0 ;46
           dc.b 0,0,0,0,0,0,0,0 ;47
           dc.b $7C, $C6, $CE, $D6, $E6, $C6, $7C, $00 ;0 48
           dc.b $18, $38, $18, $18, $18, $18, $7E, $00 ;1 49
           dc.b $7C, $C6, $06, $3C, $60, $C0, $FE, $00 ;2 50
           dc.b $FE, $0C, $18, $3C, $06, $06, $FC, $00 ;3 51
           dc.b $1C, $3C, $6C, $CC, $FE, $0C, $0C, $00 ;4 52
           dc.b $FE, $C0, $C0, $FC, $06, $06, $FC, $00 ;5 53
           dc.b $3C, $60, $C0, $FC, $C6, $C6, $7C, $00 ;6 54
           dc.b $FE, $C6, $0C, $18, $30, $30, $30, $00 ;7 55
           dc.b $78, $C4, $E4, $78, $BE, $86, $7C, $00 ;8 56
           dc.b $7C, $C6, $C6, $7E, $06, $0C, $78, $00 ;9 57
          
           dc.b $38, $6C, $C6, $C6, $FE, $C6, $C6, $00 ;A 00
           dc.b $38, $6C, $C6, $C6, $FE, $C6, $C6, $00 ;A 00
           dc.b $38, $6C, $C6, $C6, $FE, $C6, $C6, $00 ;A 00
           dc.b $38, $6C, $C6, $C6, $FE, $C6, $C6, $00 ;A 00
           dc.b $38, $6C, $C6, $C6, $FE, $C6, $C6, $00 ;A 00
           dc.b $38, $6C, $C6, $C6, $FE, $C6, $C6, $00 ;A 00
           dc.b $38, $6C, $C6, $C6, $FE, $C6, $C6, $00 ;A 00
          
           dc.b $38, $6C, $C6, $C6, $FE, $C6, $C6, $00 ;A 65
           dc.b $F8, $CC, $CC, $FC, $C6, $C6, $FC, $00 ;B 66
           dc.b $3C, $66, $C0, $C0, $C0, $66, $3C, $00 ;C 67
           dc.b $F8, $CC, $C6, $C6, $C6, $CC, $F8, $00 ;D 68
           dc.b $FE, $C0, $C0, $F8, $C0, $C0, $FE, $00 ;E 69
           dc.b $FE, $C0, $C0, $F8, $C0, $C0, $C0, $00 ;F 70
          
          ;dc.b $01, $03, $07, $FF, $00, $00, $00, $00 ;^ 00gr.znakNove-nevyuzito
          ;dc.b $00, $80, $C0, $FE, $00, $00, $00, $00 ;& 00gr.znakNove
          ;dc.b $08, $1C, $3E, $3E, $3E, $1C, $08, $00 ;$ 00
          
           dc.b $3C, $66, $C0, $C0, $CE, $62, $3E, $00 ;G 71
           dc.b $C6, $C6, $C6, $FE, $C6, $C6, $C6, $00 ;H 72
           dc.b $7E, $18, $18, $18, $18, $18, $7E, $00 ;I 73
           dc.b $FE, $0C, $0C, $0C, $0C, $D8, $70, $00 ;J 74
           dc.b $C6, $CC, $D8, $F0, $D8, $CC, $C6, $00 ;K 75
          
          ;dc.b $00, $00, $C6, $CC, $F8, $CC, $C6, $00 ;k 12nove
           dc.b $C0, $C0, $C0, $C0, $C0, $C0, $FE, $00 ;L 13
           dc.b $C6, $EE, $FE, $D6, $C6, $C6, $C6, $00 ;M 14
          ;dc.b $00, $00, $C6, $EE, $FE, $D6, $C6, $00 ;m 15nove
           dc.b $C6, $E6, $F6, $FE, $DE, $CE, $C6, $00 ;N 16
           dc.b $7C, $C6, $C6, $C6, $C6, $C6, $7C, $00 ;O 17
          ;dc.b $00, $00, $7C, $C6, $C6, $C6, $7C, $00 ;o 18nove
           dc.b $F8, $CC, $C6, $CC, $F8, $C0, $C0, $00 ;P 19
           dc.b $38, $6C, $C6, $C6, $C6, $6C, $3A, $00 ;Q 20
           dc.b $F8, $CC, $C6, $CC, $F8, $CC, $C6, $00 ;R 21
           dc.b $7E, $C0, $C0, $7C, $06, $06, $FC, $00 ;S 22
           dc.b $7E, $18, $18, $18, $18, $18, $18, $00 ;T 23
           dc.b $C6, $C6, $C6, $C6, $C6, $C6, $7C, $00 ;U 24
          ;dc.b $00, $00, $C6, $C6, $C6, $C6, $7C, $00 ;u 24
           dc.b $C6, $C6, $C6, $C6, $C6, $6C, $38, $00 ;V 25
           dc.b $C6, $C6, $C6, $D6, $FE, $EE, $C6, $00 ;W 26
           dc.b $C6, $EE, $7C, $38, $7C, $EE, $C6, $00 ;X 27
          ;dc.b $00, $00, $C6, $6C, $38, $6C, $C6, $00 ;x 28nove
           dc.b $c6, $c6, $c6, $7e, $0c, $0c, $f8, $00 ;Y 29
           dc.b $FE, $0C, $18, $30, $60, $C0, $FE, $00 ;Z 30
          
           dc.b $0c, $0c, $18, $18, $30, $30, $60, $60 ;/ 41
          ;dc.b $30, $78, $78, $30, $00, $00, $30, $00 ;! 42 uprava pro zlute pismo Reset
           dc.b $3C, $66, $06, $1C, $18, $00, $18, $00 ;? 43
           dc.b $00, $00, $60, $00, $00, $60, $00, $00 ;: 44 uprava pro zlute pismo Reset
           dc.b $00, $00, $00, $00, $00, $60, $60, $00 ;. 45 posunuta doprava vuci orig.
           dc.b $00, $00, $00, $00, $00, $60, $60, $40 ;, 46
           dc.b $00, $00, $00, $00, $00, $00, $7C, $00 ;% 47podtrzitkoNove
           dc.b $00, $00, $00, $7C, $00, $00, $00, $00 ;- 48
           dc.b $00, $00, $00, $00, $00, $00, $00, $00 ;  49
           dc.b $00, $00, $00, $00, $00, $00, $00, $00 ;_ 50
          
          
          
          
          
          GFXLIB:        DC.B    "graphics.library",0,0
          
          
          
          
          ;EVEN
          ;        cnop    0,4
                  cnop    0,2
          COPLIST:
                  DC.W    $008E,$2c81 ;pro vypsani celeho textu na obrazovku,
                  DC.W    $0090,$2cc1 ;jinak bude zobrazen pouze vysek obrazovky
                              ;v pripade textra se nezobrzi posledni
                              ;radek z posledniho radku textu
          
                  DC.W    $0092,$0038 ;start,prenos obrazovych dat
                  DC.W    $0094,$00D0 ; stop,prenos obrazovych dat
                              ; vypocet pro LoRes,start+(pocet wordu-1)*8
                              ; tedy 56+(20-1)*8=$D0
                  DC.W    $0100,$2200 ;BPLCON0 = $0100 = $dff100 zapis
              ;               ::
              ;               1+--- pouzity 1 bitplane (2 barvy)
              ;            :    nastavujeme 12.bit u $dff100
              ;            2--- aktivace barvoveho signalu Amiga 1000
              ;                 nastavujeme 9.bit u $dff100
                  DC.W    $0102,$0000 ;BPLCON1 = $0102 = $dff102
              ;              :
              ;              1-- horizontalni rolovani po 1 pixelu (140ns)
              ;                  (1 nemusi byt, nechavam puvodni nastaveni
              ;                  nicmene $dff102 musi byt alespon
              ;                  kompletne vynulovan)
              ;                  nastavujeme 0.bit u $dff102
          
                  DC.W    $0104,$0000 ;BPLCON2
                  DC.W    $0106,$0000 ;musi byt,jinak exe nedodrzi barvy
                  DC.W    $0108,$0000 ;modulo pro liche/neparne radky
                  DC.W    $010A,$0000 ;modulo pro sude/parne radky
          
          SPRADR:
                  ;pridano pro zruseni nekdy se objevujiciho bordelu v grafice
                  ;vynulujeme pointre/ukazatele na sprite 0-7
                  dc.w    $0120,$0000,$0122,$0000 ;SPR0PTH, SPR0PTL
                  dc.w    $0124,$0000,$0126,$0000 ;SPR1PTH, SPR1PTL
                  dc.w    $0128,$0000,$012A,$0000 ;SPR2PTH, SPR2PTL
                  dc.w    $012C,$0000,$012E,$0000 ;SPR3PTH, SPR3PTL
                  dc.w    $0130,$0000,$0132,$0000 ;SPR4PTH, SPR4PTL
                  dc.w    $0134,$0000,$0136,$0000 ;SPR5PTH, SPR5PTL
                  dc.w    $0138,$0000,$013A,$0000 ;SPR6PTH, SPR6PTL
                  dc.w    $013C,$0000,$013E,$0000 ;SPR7PTH, SPR7PTL
          
          COLS:        dc.w    $0100,$2200
          
          ;        dc.w    $0180,$0f00
          ;        dc.w    $1b01,$ff00
                  dc.w    $0180,$0f00
                  dc.w    $1c01,$ff00
          
          
          PLANES:
                  DC.W    $00E0,$0000,$00E2,$0000 ;adresa 1.bitplanu
                  DC.W    $00E4,$0000,$00E6,$0000
          
          
                  dc.w    $0180,$0000
                  dc.w    $5701,$fffe    ;WAIT na radek $80, maskuj x i y
          ;        dc.w    $0180,$0000
          
          
                  dc.w    $0180,$00F0    ;$dff180 = 0 => cerna barva pozadi
                  dc.w    $5801,$fffe    ;WAIT na radek $80, maskuj x i y
          
                  dc.w    $0100,$2200
          
                  DC.W    $0180,$0000 ;barva pozadi
                  DC.W    $0182,$0ff0 ;barva pisma
                  DC.W    $0184,$0f80 ;barva pozadi
                  DC.W    $0186,$0f80 ;barva pisma
          
                  DC.W    $01FC,$0000 ;sirka spritu
          ;;         dc.w    $f601,$fffe    ;WAIT na radek $80, maskuj x i y
          ;        dc.w    $f901,$fffe    ;WAIT na radek $80, maskuj x i y
          
          
          ;PLANES:
          ;        DC.W    $00E0,$0000,$00E2,$0000 ;adresa 1.bitplanu
          ;        DC.W    $00E4,$0000,$00E6,$0000
          
          
          ;        dc.w    $0100,$0200
          
          ;        dc.w    $0180,$0000    ;$dff180 = 0 => cerna barva pozadi
                  dc.w    $fa01,$fffe    ;WAIT na radek $80, maskuj x i y
                  dc.w    $0180,$0f00    ;$dff180 = 0 => cerna barva pozadi
          ;        dc.w    $f701,$fffe    ;WAIT na radek $80, maskuj x i y
                  dc.w    $fb01,$fffe    ;WAIT na radek $80, maskuj x i y
                  dc.w    $0180,$0700    ;$dff180 = 0 => cerna barva pozadi
                   dc.w    $fc01,$fffe    ;WAIT na radek $80, maskuj x i y
                  dc.w    $0180,$0000    ;$dff180 = 0 => cerna barva pozadi
          
                  dc.w    $ffdf,$fffe
          ;        dc.w    $0180,$0000
                  dc.w    $3807,$ff00
                  dc.w    $0180,$0f00
          
                  DC.W    $FFFF,$FFFE      ;ukonceni copperlistu
          
                           ;rezervovane misto vyplnime 0
          ;PLANE:        BLK.B    257*40,0 ;rezervujeme pocet byte na adrese PLANE
          ;                 ;256*40 je velikost 1 bitplanu v bytech
          PLANE:        BLK.B    257*40,0 ;rezervujeme pocet byte na adrese PLANE
                           ;256*40 je velikost 1 bitplanu v bytech
                           ;rezervovane misto vyplnime 0
                           ;rezervovane misto vyplnime 0
          
          
          
          
          skladbyPattern
          ;; dc.l    $0000031a
          ; dc.l    $00000318
           dc.l    $00000314, $00000314,$00000000
          
          ;music ;navesti prejmenovano na skladba1 kvuli skokum v patternech
          skladby
          
          ; 2.skladba
          ;1.kanal -  vibrato
          ;2.kanal - (bez efektu)
          ;3.kanal -  arpeggio
          ;4.kanal -  mix
          
          ;poradi predsekvenci: SMP, volume, arpeggio
          
          ;    dc.w    $0000                 ;skladba 0
              dc.l    $00000030, $000000e4 ;hlasitost 0
              dc.l    $00000030            ;hlasitost 0
          
          
          ;    tony       sample     hlasitost  arpeggio   pattern
          ;
          ;        0 1 2 3       321 0   0-12-3     1 2 3 0        
          
           dc.l    $00000000;,                        ;$00040080
           dc.l    $00000000,             $000000ff
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000, $00000000
           dc.l    $00000000
          
          
          ;hraje celkem 1ch
          
           dc.l    $2a000000, $000000a2, $fc0000c1, $000000e4          ; 00 ffffc7c3
          
          ;spatny radek pouze test jestli pujde volumw slide na maximalni hlasitost
          
           dc.l    $3D3D3D3D ;$--------, $-------- ;$--------, $-------- ; 01
           dc.l    $3D3D3D3D            ; 02
           dc.l    $3D3D3D3D        ; 03
           dc.l    $3D3D3D3D            ; 04
           dc.l    $3D3D3D3D        ; 05
           dc.l    $3D3D3D3D            ; 06
           dc.l    $3D3D3D3D        ; 07
           dc.l    $2a3D3D3D, $000000a6    ; 08 ok
           dc.l    $3D3D3D3D        ; 09
           dc.l    $3D3D3D3D            ; 10
           dc.l    $3D3D3D3D        ; 11
           dc.l    $3D3D3D3D            ; 12
           dc.l    $3D3D3D3D        ; 13
           dc.l    $2a3D3D3D, $000000aa    ; 14 ok
           dc.l    $3D3D3D3D        ; 15
           dc.l    $2a3D3D3D, $000000a2    ; 16 ok
           dc.l    $3D3D3D3D        ; 17
           dc.l    $2a3D3D3D, $000000a6    ; 18 ok
           dc.l    $3D3D3D3D        ; 19
           dc.l    $2a3D3D3D, $000000a2    ; 20 ok
           dc.l    $3D3D3D3D        ; 21
           dc.l    $3D3D3D3D            ; 22
           dc.l    $3D3D3D3D        ; 23
           dc.l    $2a3D3D3D, $000000a6    ; 24 ok
           dc.l    $3D3D3D3D        ; 25
           dc.l    $3D3D3D3D                ;$--------, $-------- ; 26
           dc.l    $3D3D3D3D                      ; 27
           dc.l    $3D3D3D3D              ;$--------, $-------- ; 28
           dc.l    $3D3D3D3D                      ; 29
           dc.l    $003D3D3D              ;$--------, $-------- ; 30
           dc.l    $3d3D3D3D                      ; 31
           dc.l    $2a3D3D3D, $000000a2    ;$--------, $-------- ; 32 ok
           dc.l    $3D3D3D3D                      ; 33
           dc.l    $2a3D3D3D, $000000a2    ;$--------, $-------- ; 34 ok
           dc.l    $3D3D3D3D                          ; 35
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 36
           dc.l    $3D3D3D3D                          ; 37
           dc.l    $2a3D3D3D, $000000a2            ;$--------, $-------- ; 38 ok
           dc.l    $3D3D3D3D                          ; 39
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 40 ok
           dc.l    $3D3D3D3D                          ; 41
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 42
           dc.l    $3D3D3D3D                          ; 43
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 44
           dc.l    $3D3D3D3D                          ; 45
           dc.l    $2a3D3D3D, $000000aa            ;$--------, $-------- ; 46 ok
           dc.l    $3D3D3D3D                          ; 47
           dc.l    $2a3D3D3D, $000000a2            ;$--------, $-------- ; 48 ok
           dc.l    $3D3D3D3D                          ; 49
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 50 ok
           dc.l    $3D3D3D3D                          ; 51
           dc.l    $2a3D3D3D, $000000a2             ;$--------, $-------- ; 52 ok
           dc.l    $3D3D3D3D                          ; 53
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 54
           dc.l    $3D3D3D3D                          ; 55
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 56 ok
           dc.l    $3D3D3D3D                          ; 57
           dc.l    $3D3D3D3D                      ;$--------, $-------- ; 58
           dc.l    $3D3D3D3D                          ; 59
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 60
           dc.l    $3D3D3D3D                          ; 61;
           dc.l    $003D3D3D                    ;$--------, $-------- ; 62
           dc.l    $3d3D3D3D                          ; 63
          
          
          ;    tony       sample     hlasitost  arpeggio   pattern
          
           dc.l    $2a3D3D3D, $000000a2;,$00000000    ; 00 ok
           dc.l    $3D3D3D3D            ; 01
           dc.l    $3D3D3D3D;,          $000800c1    ; 02
           dc.l    $3D3D3D3D            ; 03
           dc.l    $3D3D3D3D;,          $000200c1    ; 04
           dc.l    $3D3D3D3D            ; 05
           dc.l    $3D3D3D3D;,          $000500c1    ; 06
           dc.l    $3D3D3D3D            ; 07
           dc.l    $2a3D3D3D, $000000a6;,$000fc0c1    ; 08 ok
           dc.l    $3D3D3D3D            ; 09
           dc.l    $3D3D3D3D;,          $000400c1    ; 10
           dc.l    $3D3D3D3D            ; 11
           dc.l    $3D3D3D3D;,          $000200c1    ; 12
           dc.l    $3D3D3D3D            ; 13
           dc.l    $2a3D3D3D, $000000aa;,$000fc0c1    ; 14 ok
           dc.l    $3D3D3D3D            ; 15
           dc.l    $2a3D3D3D, $000000a2;,$000400c1    ; 16 ok
           dc.l    $3D3D3D3D            ; 17
           dc.l    $2a3D3D3D, $000000a6;,$000200c1    ; 18 ok
           dc.l    $3D3D3D3D            ; 19
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 20 ok
           dc.l    $3D3D3D3D            ; 21
           dc.l    $3D3D3D3D;,          $000400c1    ; 22
           dc.l    $3D3D3D3D            ; 23
           dc.l    $2a3D3D3D, $000000a6;,$000200c1    ; 24 ok
           dc.l    $3D3D3D3D            ; 25
           dc.l    $3D3D3D3D;,           $000fc0c1    ; 26
           dc.l    $3D3D3D3D            ; 27
           dc.l    $3D3D3D3D;,          $000200c1    ; 28
           dc.l    $3D3D3D3D            ; 29
           dc.l    $003D3D3D;,          $000600c1    ; 30
           dc.l    $3d3D3D3D            ; 31
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 32 ok
           dc.l    $3D3D3D3D            ; 33
           dc.l    $2a3D3D3D, $000000a2;,$000800c1 ; 34 ok
           dc.l    $3D3D3D3D            ; 35
           dc.l    $3D3D3D3D;,          $000200c1 ; 36
           dc.l    $3D3D3D3D            ; 37
           dc.l    $2a3D3D3D, $000000a2;,$000500c1 ; 38 ok
           dc.l    $3D3D3D3D            ; 39
           dc.l    $2a3D3D3D, $000000a6;,$000fc0c1 ; 40 ok
           dc.l    $3D3D3D3D            ; 41
           dc.l    $3D3D3D3D;,          $000400c1 ; 42
           dc.l    $3D3D3D3D            ; 43
           dc.l    $3D3D3D3D;,          $000200c1 ; 44
           dc.l    $3D3D3D3D            ; 45
           dc.l    $2a3D3D3D, $000000aa;,$000fc0c1 ; 46 ok
           dc.l    $3D3D3D3D            ; 47
           dc.l    $2a3D3D3D, $000000a2;,$000400c1 ; 48 ok
           dc.l    $3D3D3D3D            ; 49
           dc.l    $2a3D3D3D, $000000a6;,$000200c1 ; 50 ok
           dc.l    $3D3D3D3D            ; 51
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 52 ok
           dc.l    $3D3D3D3D            ; 53
           dc.l    $3D3D3D3D;,          $000400c1 ; 54
           dc.l    $2a3D3D3D, $000000a6, $300000c1 ; 55;pokr 0.kanal,1ch ok
           dc.l    $2a3D3D3D,            $fc0000c1 ; 56ok
           dc.l    $3D3D3D3D            ; 57ok
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1 ; 58ok,1ch ok
           dc.l    $3D3D3D3D            ; 59ok
           dc.l    $2a3D3D3D, $000000ae;,$000200c1 ; 60ok 0.kanal nekde stopnout sampl-novy ton vuci predeslemu patternu,1ch ok
           dc.l    $3d3D3D3D            ; 61ok
           dc.l    $3d3D3D3D;,          $000600c1 ; 62ok
           dc.l    $3d3D3D3D;,                    $00010080 ; 63ok
          
          
          ;hraju celkem 2ch
          
          
          ;dc.w    $8000
          
           dc.l    $2a3D2a3D, $000080a2, $000fc0c1 ;, $000000e4 ; 00
          
          ;spatny radek pouze test jestli pujde volumw slide na maximalni hlasitost
          
          
           dc.l    $3D3D3D3D ;$--------, $-------- ; 01
           dc.l    $3D3D2a3D,          $000800c1 ; 02
           dc.l    $3D3D3D3D            ; 03
           dc.l    $3D3D2a3D,          $000200c1 ; 04
           dc.l    $3D3D3D3D            ; 05
           dc.l    $3D3D2a3D,          $000500c1 ; 06
           dc.l    $3D3D3D3D            ; 07
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1 ; 08
           dc.l    $3D3D3D3D            ; 09
           dc.l    $3D3D2a3D,          $000400c1 ; 10
           dc.l    $3D3D3D3D            ; 11
           dc.l    $3D3D2a3D,          $000200c1 ; 12
           dc.l    $3D3D3D3D            ; 13
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1 ; 14
           dc.l    $3D3D3D3D            ; 15
           dc.l    $2a3D2a3D, $000000a2, $000400c1 ; 16
           dc.l    $3D3D3D3D            ; 17
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ; 18
           dc.l    $3D3D3D3D            ; 19
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1 ; 20
           dc.l    $3D3D3D3D            ; 21
           dc.l    $3D3D3D3D,          $000400c1 ; 22
           dc.l    $3D3D3D3D            ; 23
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ; 24
           dc.l    $3D3D3D3D            ; 25
           dc.l    $3D3D2a3D,            $000fc0c1    ;$--------, $-------- ; 26
           dc.l    $3D3D3D3D                          ; 27
           dc.l    $3D3D2a3D,          $000200c1    ;$--------, $-------- ; 28
           dc.l    $3D3D3D3D                          ; 29
           dc.l    $003D2a3D,          $000600c1    ;$--------, $-------- ; 30
           dc.l    $3d3D3D3D                          ; 31
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1 ;$--------, $-------- ; 32
           dc.l    $3D3D3D3D                          ; 33
           dc.l    $2a3D2a3D, $000000a2, $000800c1    ;$--------, $-------- ; 34
           dc.l    $3D3D3D3D                          ; 35
           dc.l    $3D3D2a3D,          $000200c1    ;$--------, $-------- ; 36
           dc.l    $3D3D3D3D                          ; 37
           dc.l    $2a3D2a3D, $000000a2, $000500c1 ;$--------, $-------- ; 38
           dc.l    $3D3D3D3D                          ; 39
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1 ;$--------, $-------- ; 40
           dc.l    $3D3D3D3D                          ; 41
           dc.l    $3D3D3D3D,          $000400c1 ;$--------, $-------- ; 42
           dc.l    $3D3D3D3D                          ; 43
           dc.l    $3D3D2a3D,          $000200c1 ;$--------, $-------- ; 44
           dc.l    $3D3D3D3D                          ; 45
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1 ;$--------, $-------- ; 46
           dc.l    $3D3D3D3D                          ; 47
           dc.l    $2a3D2a3D, $000000a2, $000400c1 ;$--------, $-------- ; 48
           dc.l    $3D3D3D3D                          ; 49
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ;$--------, $-------- ; 50
           dc.l    $3D3D3D3D                          ; 51
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ;$--------, $-------- ; 52
           dc.l    $3D3D3D3D                          ; 53
           dc.l    $3D3D3D3D,          $000400c1 ;$--------, $-------- ; 54
           dc.l    $3D3D3D3D                          ; 55
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ;$--------, $-------- ; 56
           dc.l    $3D3D3D3D                          ; 57
           dc.l    $3D3D2a3D,            $000fc0c1 ;$--------, $-------- ; 58
           dc.l    $3D3D3D3D                          ; 59
           dc.l    $3D3D2a3D,          $000200c1 ;$--------, $-------- ; 60
           dc.l    $3D3D3D3D                          ; 61;
           dc.l    $003D2a3D,          $000600c1 ;$--------, $-------- ; 62
           dc.l    $3d3D3D3D                          ; 63
          
          
          ;    tony       sample     hlasitost  arpeggio   pattern
          
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 00
           dc.l    $3D3D3D3D            ; 01
           dc.l    $3D3D2a3D,          $000800c1    ; 02
           dc.l    $3D3D3D3D            ; 03
           dc.l    $3D3D2a3D,          $000200c1    ; 04
           dc.l    $3D3D3D3D            ; 05
           dc.l    $3D3D2a3D,          $000500c1    ; 06
           dc.l    $3D3D3D3D            ; 07
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1    ; 08
           dc.l    $3D3D3D3D            ; 09
           dc.l    $3D3D2a3D,          $000400c1    ; 10
           dc.l    $3D3D3D3D            ; 11
           dc.l    $3D3D2a3D,          $000200c1    ; 12
           dc.l    $3D3D3D3D            ; 13
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1    ; 14
           dc.l    $3D3D3D3D            ; 15
           dc.l    $2a3D2a3D, $000000a2, $000400c1    ; 16
           dc.l    $3D3D3D3D            ; 17
           dc.l    $2a3D2a3D, $000000a6, $000200c1    ; 18
           dc.l    $3D3D3D3D            ; 19
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 20
           dc.l    $3D3D3D3D            ; 21
           dc.l    $3D3D3D3D,          $000400c1    ; 22
           dc.l    $3D3D3D3D            ; 23
           dc.l    $2a3D2a3D, $000000a6, $000200c1    ; 24
           dc.l    $3D3D3D3D            ; 25
           dc.l    $3D3D2a3D,            $000fc0c1    ; 26
           dc.l    $3D3D3D3D            ; 27
           dc.l    $3D3D2a3D,          $000200c1    ; 28
           dc.l    $3D3D3D3D            ; 29
           dc.l    $003D2a3D,          $000600c1    ; 30
           dc.l    $3d3D3D3D            ; 31
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 32
           dc.l    $3D3D3D3D            ; 33
           dc.l    $2a3D2a3D, $000000a2, $000800c1 ; 34
           dc.l    $3D3D3D3D            ; 35
           dc.l    $3D3D2a3D,          $000200c1 ; 36
           dc.l    $3D3D3D3D            ; 37
           dc.l    $2a3D2a3D, $000000a2, $000500c1 ; 38
           dc.l    $3D3D3D3D            ; 39
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1 ; 40
           dc.l    $3D3D3D3D            ; 41
           dc.l    $3D3D3D3D,          $000400c1 ; 42
           dc.l    $3D3D3D3D            ; 43
           dc.l    $3D3D2a3D,          $000200c1 ; 44
           dc.l    $3D3D3D3D            ; 45
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1 ; 46
           dc.l    $3D3D3D3D            ; 47
           dc.l    $2a3D2a3D, $000000a2, $000400c1 ; 48
           dc.l    $3D3D3D3D            ; 49
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ; 50
           dc.l    $3D3D3D3D            ; 51
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 52
           dc.l    $3D3D3D3D            ; 53
           dc.l    $3D3D3D3D,          $000400c1 ; 54
           dc.l    $2a3D3D3D, $000000a6, $300000c1 ; 55;pokr 0.kanal
           dc.l    $2a3D2a3D,          $fc0200c1 ; 56ok
           dc.l    $3D3D3D3D            ; 57ok
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1 ; 58ok
           dc.l    $3D3D3D3D            ; 59ok
           dc.l    $2a3D2a3D, $000000ae, $000200c1 ; 60ok 0.kanal nekde stopnout sampl-novy ton vuci predeslemu patternu
           dc.l    $3d3D3D3D            ; 61ok
           dc.l    $3d3D2a3D,          $000600c1 ; 62ok
           dc.l    $3d3D3D3D,                    $00010080 ; 63ok
          
          
          
          
          
          ;hraju celkem 3ch
          
           dc.l    $2a002a2a, $000000a2, $000fc7c3, $000000e4          ; 00 ffffc7c3
          
          ;spatny radek pouze test jestli pujde volumw slide na maximalni hlasitost
          
           dc.l    $3D3D3D3D ;$--------, $-------- ;$--------, $-------- ; 01
           dc.l    $3D3D2a3D,          $000800c1, $0000c0e4, $00020181 ; 02
           dc.l    $3D3D3D3D,             $0000c0e4, $00020181 ; 03
           dc.l    $3D3D2a3D,          $000200c1, $0000c0e4, $00020181 ; 04
           dc.l    $3D3D3D3D,             $0000c0e4, $00020181 ; 05
           dc.l    $3D3D2a3D,          $000500c1, $0000c0e4, $00020181 ; 06
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 07
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1, $0000c0e4, $00020081 ; 08
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 09
           dc.l    $3D3D2a3D,          $000400c1, $0000c0e4, $00020081 ; 10
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 11
           dc.l    $3D3D2a3D,          $000200c1, $0000c0e4, $00020081 ; 12
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 13
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1, $0000c0e4, $00020081 ; 14
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 15
           dc.l    $2a3D2a3D, $000000a2, $000400c1, $0000c0e4, $00020081 ; 16
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 17
           dc.l    $2a3D2a3D, $000000a6, $000200c1, $0000c0e4, $00020081 ; 18
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 19
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1, $0000c0e4, $00020081 ; 20
           dc.l    $3D3D3D3D                          ; 21
           dc.l    $3D3D3D3D,          $000400c1, $0000c0e4, $00020081 ; 22
           dc.l    $3D3D3D3D                          ; 23
           dc.l    $2a3D2a3D, $000000a6, $000200c1, $0000c0e4, $00020081 ; 24
           dc.l    $3D3D3D3D                          ; 25
           dc.l    $3D3D2a3D,            $000fc0c1    ;$--------, $-------- ; 26
           dc.l    $3D3D3D3D                          ; 27
           dc.l    $3D3D2a3D,          $000200c1    ;$--------, $-------- ; 28
           dc.l    $3D3D3D3D                          ; 29
           dc.l    $003D2a3D,          $000600c1    ;$--------, $-------- ; 30
           dc.l    $3d3D3D3D                          ; 31
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1 ;$--------, $-------- ; 32
           dc.l    $3D3D3D3D                          ; 33
           dc.l    $2a3D2a3D, $000000a2, $000800c1    ;$--------, $-------- ; 34
           dc.l    $3D3D3D3D                          ; 35
           dc.l    $3D3D2a3D,          $000200c1    ;$--------, $-------- ; 36
           dc.l    $3D3D3D3D                          ; 37
           dc.l    $2a3D2a3D, $000000a2, $000500c1 ;$--------, $-------- ; 38
           dc.l    $3D3D3D3D                          ; 39
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1 ;$--------, $-------- ; 40
           dc.l    $3D3D3D3D                          ; 41
           dc.l    $3D3D3D3D,          $000400c1 ;$--------, $-------- ; 42
           dc.l    $3D3D3D3D                          ; 43
           dc.l    $3D3D2a3D,          $000200c1 ;$--------, $-------- ; 44
           dc.l    $3D3D3D3D                          ; 45
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1 ;$--------, $-------- ; 46
           dc.l    $3D3D3D3D                          ; 47
           dc.l    $2a3D2a3D, $000000a2, $000400c1 ;$--------, $-------- ; 48
           dc.l    $3D3D3D3D                          ; 49
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ;$--------, $-------- ; 50
           dc.l    $3D3D3D3D                          ; 51
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ;$--------, $-------- ; 52
           dc.l    $3D3D3D3D                          ; 53
           dc.l    $3D3D3D3D,          $000400c1 ;$--------, $-------- ; 54
           dc.l    $3D3D3D3D                          ; 55
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ;$--------, $-------- ; 56
           dc.l    $3D3D3D3D                          ; 57
           dc.l    $3D3D2a3D,            $000fc0c1 ;$--------, $-------- ; 58
           dc.l    $3D3D3D3D                          ; 59
           dc.l    $3D3D2a3D,          $000200c1 ;$--------, $-------- ; 60
           dc.l    $3D3D3D3D                          ; 61;
           dc.l    $003D2a3D,          $000600c1 ;$--------, $-------- ; 62
           dc.l    $3d3D3D3D                          ; 63
          
          
          ;    tony       sample     hlasitost  arpeggio   pattern
          
           dc.l    $2a3D2a2a, $000000a2, $000fc0c7    ; 00 ffffc7c3
           dc.l    $3D3D3D3D            ; 01
           dc.l    $3D3D2a3D,          $000800c1    ; 02
           dc.l    $3D3D3D3D            ; 03
           dc.l    $3D3D2a3D,          $000200c1    ; 04
           dc.l    $3D3D3D3D            ; 05
           dc.l    $3D3D2a3D,          $000500c1    ; 06
           dc.l    $3D3D3D3D            ; 07
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1    ; 08
           dc.l    $3D3D3D3D            ; 09
           dc.l    $3D3D2a3D,          $000400c1    ; 10
           dc.l    $3D3D3D3D            ; 11
           dc.l    $3D3D2a3D,          $000200c1    ; 12
           dc.l    $3D3D3D3D            ; 13
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1    ; 14
           dc.l    $3D3D3D3D            ; 15
           dc.l    $2a3D2a3D, $000000a2, $000400c1    ; 16
           dc.l    $3D3D3D3D            ; 17
           dc.l    $2a3D2a3D, $000000a6, $000200c1    ; 18
           dc.l    $3D3D3D3D            ; 19
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 20
           dc.l    $3D3D3D3D            ; 21
           dc.l    $3D3D3D3D,          $000400c1    ; 22
           dc.l    $3D3D3D3D            ; 23
           dc.l    $2a3D2a3D, $000000a6, $000200c1    ; 24
           dc.l    $3D3D3D3D            ; 25
           dc.l    $3D3D2a3D,            $000fc0c1    ; 26
           dc.l    $3D3D3D3D            ; 27
           dc.l    $3D3D2a3D,          $000200c1    ; 28
           dc.l    $3D3D3D3D            ; 29
           dc.l    $003D2a3D,          $000600c1    ; 30
           dc.l    $3d3D3D3D            ; 31
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 32
           dc.l    $3D3D3D3D            ; 33
           dc.l    $2a3D2a3D, $000000a2, $000800c1 ; 34
           dc.l    $3D3D3D3D            ; 35
           dc.l    $3D3D2a3D,          $000200c1 ; 36
           dc.l    $3D3D3D3D            ; 37
           dc.l    $2a3D2a3D, $000000a2, $000500c1 ; 38
           dc.l    $3D3D3D3D            ; 39
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1 ; 40
           dc.l    $3D3D3D3D            ; 41
           dc.l    $3D3D3D3D,          $000400c1 ; 42
           dc.l    $3D3D3D3D            ; 43
           dc.l    $3D3D2a3D,          $000200c1 ; 44
           dc.l    $3D3D3D3D            ; 45
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1 ; 46
           dc.l    $3D3D3D3D            ; 47
           dc.l    $2a3D2a3D, $000000a2, $000400c1 ; 48
           dc.l    $3D3D3D3D            ; 49
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ; 50
           dc.l    $3D3D3D3D            ; 51
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 52
           dc.l    $3D3D3D3D            ; 53
           dc.l    $3D3D3D3D,          $000400c1 ; 54
           dc.l    $2a3D3D3D, $000000a6, $300000c1 ; 55;pokr 0.kanal
           dc.l    $2a3D2a3D,          $fc0200c1 ; 56ok
           dc.l    $3D3D3D3D            ; 57ok
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1 ; 58ok
           dc.l    $3D3D3D3D            ; 59ok
           dc.l    $2a3D2a3D, $000000ae, $000200c1 ; 60ok 0.kanal nekde stopnout sampl-novy ton vuci predeslemu patternu
           dc.l    $3d3D3D3D            ; 61ok
           dc.l    $3d3D2a3D,          $000600c1 ; 62ok
           dc.l    $3d3D3D3D;,                    $0001d080 ; 63ok
          
          
          
          
          
          ;hraju celkem 4ch
          
           dc.l    $2a232a2a, $010401a2, $ffffc7c3, $000000e4          ; 00 ffffc7c3
          
          ;spatny radek pouze test jestli pujde volumw slide na maximalni hlasitost
          
           dc.l    $3D3D3D3D ;$--------, $-------- ;$--------, $-------- ; 01
           dc.l    $3D3D2a3D,          $000800c1, $0000c0e4, $00020181 ; 02
           dc.l    $3D3D3D3D,             $0000c0e4, $00020181 ; 03
           dc.l    $3D3D2a3D,          $000200c1, $0000c0e4, $00020181 ; 04
           dc.l    $3D3D3D3D,             $0000c0e4, $00020181 ; 05
           dc.l    $3D3D2a3D,          $000500c1, $0000c0e4, $00020181 ; 06
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 07
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1, $0000c0e4, $00020081 ; 08
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 09
           dc.l    $3D3D2a3D,          $000400c1, $0000c0e4, $00020081 ; 10
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 11
           dc.l    $3D3D2a3D,          $000200c1, $0000c0e4, $00020081 ; 12
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 13
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1, $0000c0e4, $00020081 ; 14
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 15
           dc.l    $2a3D2a3D, $000000a2, $000400c1, $0000c0e4, $00020081 ; 16
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 17
           dc.l    $2a3D2a3D, $000000a6, $000200c1, $0000c0e4, $00020081 ; 18
           dc.l    $3D3D3D3D,             $0000c0e4, $00020081 ; 19
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1, $0000c0e4, $00020081 ; 20
           dc.l    $3D3D3D3D                          ; 21
           dc.l    $3D3D3D3D,          $000400c1, $0000c0e4, $00020081 ; 22
           dc.l    $3D3D3D3D                          ; 23
           dc.l    $2a3D2a3D, $000000a6, $000200c1, $0000c0e4, $00020081 ; 24
           dc.l    $3D3D3D3D                          ; 25
           dc.l    $3D3D2a3D,            $000fc0c1    ;$--------, $-------- ; 26
           dc.l    $3D3D3D3D                          ; 27
           dc.l    $3D3D2a3D,          $000200c1    ;$--------, $-------- ; 28
           dc.l    $3D3D3D3D                          ; 29
           dc.l    $003D2a3D,          $000600c1    ;$--------, $    -30- ; 30
           dc.l    $3d3D3D3D                          ; 31
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1 ;$--------, $-------- ; 32
           dc.l    $3D3D3D3D                          ; 33
           dc.l    $2a3D2a3D, $000000a2, $000800c1    ;$--------, $-------- ; 34
           dc.l    $3D3D3D3D                          ; 35
           dc.l    $3D3D2a3D,          $000200c1    ;$--------, $-------- ; 36
           dc.l    $3D3D3D3D                          ; 37
           dc.l    $2a3D2a3D, $000000a2, $000500c1 ;$--------, $-------- ; 38
           dc.l    $3D3D3D3D                          ; 39
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1 ;$--------, $-------- ; 40
           dc.l    $3D3D3D3D                          ; 41
           dc.l    $3D3D3D3D,          $000400c1 ;$--------, $-------- ; 42
           dc.l    $3D3D3D3D                          ; 43
           dc.l    $3D3D2a3D,          $000200c1 ;$--------, $-------- ; 44
           dc.l    $3D3D3D3D                          ; 45
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1 ;$--------, $-------- ; 46
           dc.l    $3D3D3D3D                          ; 47
           dc.l    $2a3D2a3D, $000000a2, $000400c1 ;$--------, $-------- ; 48
           dc.l    $3D3D3D3D                          ; 49
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ;$--------, $-------- ; 50
           dc.l    $3D3D3D3D                          ; 51
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ;$--------, $-------- ; 52
           dc.l    $3D3D3D3D                          ; 53
           dc.l    $3D3D3D3D,          $000400c1 ;$--------, $-------- ; 54
           dc.l    $3D3D3D3D                          ; 55
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ;$--------, $-------- ; 56
           dc.l    $3D3D3D3D                          ; 57
           dc.l    $3D3D2a3D,            $000fc0c1 ;$--------, $-------- ; 58
           dc.l    $3D3D3D3D                          ; 59
           dc.l    $3D3D2a3D,          $000200c1 ;$--------, $-------- ; 60
           dc.l    $3D3D3D3D                          ; 61;
           dc.l    $003D2a3D,          $000600c1 ;$--------, $-------- ; 62
           dc.l    $3d3D3D3D                          ; 63
          
          
          ;    tony       sample     hlasitost  arpeggio   pattern
          
           dc.l    $2a272a2a, $010401a2, $000fc0c7    ; 00 ffffc7c3
           dc.l    $3D3D3D3D            ; 01
           dc.l    $3D3D2a3D,          $000800c1    ; 02
           dc.l    $3D3D3D3D            ; 03
           dc.l    $3D3D2a3D,          $000200c1    ; 04
           dc.l    $3D3D3D3D            ; 05
           dc.l    $3D3D2a3D,          $000500c1    ; 06
           dc.l    $3D3D3D3D            ; 07
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1    ; 08
           dc.l    $3D3D3D3D            ; 09
           dc.l    $3D3D2a3D,          $000400c1    ; 10
           dc.l    $3D3D3D3D            ; 11
           dc.l    $3D3D2a3D,          $000200c1    ; 12
           dc.l    $3D3D3D3D            ; 13
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1    ; 14
           dc.l    $3D3D3D3D            ; 15
           dc.l    $2a3D2a3D, $000000a2, $000400c1    ; 16
           dc.l    $3D3D3D3D            ; 17
           dc.l    $2a3D2a3D, $000000a6, $000200c1    ; 18
           dc.l    $3D3D3D3D            ; 19
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 20
           dc.l    $3D3D3D3D            ; 21
           dc.l    $3D3D3D3D,          $000400c1    ; 22
           dc.l    $3D3D3D3D            ; 23
           dc.l    $2a3D2a3D, $000000a6, $000200c1    ; 24
           dc.l    $3D3D3D3D            ; 25
           dc.l    $3D3D2a3D,            $000fc0c1    ; 26
           dc.l    $3D3D3D3D            ; 27
           dc.l    $3D3D2a3D,          $000200c1    ; 28
           dc.l    $3D3D3D3D            ; 29
           dc.l    $003D2a3D,          $000600c1    ; 30
           dc.l    $3d3D3D3D            ; 31
           dc.l    $2a2a2a3D, $010401a2, $000fc0c1    ; 32;;
           dc.l    $3D3D3D3D            ; 33
           dc.l    $2a3D2a3D, $000000a2, $000800c1 ; 34
           dc.l    $3D3D3D3D            ; 35
           dc.l    $3D3D2a3D,          $000200c1 ; 36
           dc.l    $3D3D3D3D            ; 37
           dc.l    $2a3D2a3D, $000000a2, $000500c1 ; 38
           dc.l    $3D3D3D3D            ; 39
           dc.l    $2a3D2a3D, $000000a6, $000fc0c1 ; 40
           dc.l    $3D3D3D3D            ; 41
           dc.l    $3D3D3D3D,          $000400c1 ; 42
           dc.l    $3D3D3D3D            ; 43
           dc.l    $3D3D2a3D,          $000200c1 ; 44
           dc.l    $3D3D3D3D            ; 45
           dc.l    $2a3D2a3D, $000000aa, $000fc0c1 ; 46
           dc.l    $3D3D3D3D            ; 47
           dc.l    $2a3D2a3D, $000000a2, $000400c1 ; 48
           dc.l    $3D3D3D3D            ; 49
           dc.l    $2a3D2a3D, $000000a6, $000200c1 ; 50
           dc.l    $3D3D3D3D            ; 51
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1    ; 52
           dc.l    $3D3D3D3D            ; 53
           dc.l    $3D3D3D3D,          $000400c1 ; 54
           dc.l    $2a3D3D3D, $000000a6, $300000c1 ; 55;pokr 0.kanal
           dc.l    $2a2c2a3D, $010401a0, $fc0200c1 ; 56ok
           dc.l    $3D3D3D3D            ; 57ok
           dc.l    $2a3D2a3D, $000000a2, $000fc0c1 ; 58ok
           dc.l    $3D3D3D3D            ; 59ok
           dc.l    $2a3D2a3D, $000000ae, $000200c1 ; 60ok 0.kanal nekde stopnout sampl-novy ton vuci predeslemu patternu
           dc.l    $3d3D3D3D            ; 61ok
           dc.l    $3d3D2a3D,          $000600c1 ; 62ok
           dc.l    $3d3D3D3D,                    $00014080 ; 63ok
           dc.l                             $00000444 ; skok
          
          
           dc.l    $2a000000, $000000a2, $fc0000c1, $000000e4          ; 00 ffffc7c3
          
          ;spatny radek pouze test jestli pujde volumw slide na maximalni hlasitost
          
           dc.l    $3D3D3D3D ;$--------, $-------- ;$--------, $-------- ; 01
           dc.l    $3D3D3D3D            ; 02
           dc.l    $3D3D3D3D        ; 03
           dc.l    $3D3D3D3D            ; 04
           dc.l    $3D3D3D3D        ; 05
           dc.l    $3D3D3D3D            ; 06
           dc.l    $3D3D3D3D        ; 07
           dc.l    $2a3D3D3D, $000000a6    ; 08 ok
           dc.l    $3D3D3D3D        ; 09
           dc.l    $3D3D3D3D            ; 10
           dc.l    $3D3D3D3D        ; 11
           dc.l    $3D3D3D3D            ; 12
           dc.l    $3D3D3D3D        ; 13
           dc.l    $2a3D3D3D, $000000aa    ; 14 ok
           dc.l    $3D3D3D3D        ; 15
           dc.l    $2a3D3D3D, $000000a2    ; 16 ok
           dc.l    $3D3D3D3D        ; 17
           dc.l    $2a3D3D3D, $000000a6    ; 18 ok
           dc.l    $3D3D3D3D        ; 19
           dc.l    $2a3D3D3D, $000000a2    ; 20 ok
           dc.l    $3D3D3D3D        ; 21
           dc.l    $3D3D3D3D            ; 22
           dc.l    $3D3D3D3D        ; 23
           dc.l    $2a3D3D3D, $000000a6    ; 24 ok
           dc.l    $3D3D3D3D        ; 25
           dc.l    $3D3D3D3D                ;$--------, $-------- ; 26
           dc.l    $3D3D3D3D                      ; 27
           dc.l    $3D3D3D3D              ;$--------, $-------- ; 28
           dc.l    $3D3D3D3D                      ; 29
           dc.l    $003D3D3D              ;$--------, $-------- ; 30
           dc.l    $3d3D3D3D                      ; 31
           dc.l    $2a3D3D3D, $000000a2    ;$--------, $-------- ; 32 ok
           dc.l    $3D3D3D3D                      ; 33
           dc.l    $2a3D3D3D, $000000a2    ;$--------, $-------- ; 34 ok
           dc.l    $3D3D3D3D                          ; 35
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 36
           dc.l    $3D3D3D3D                          ; 37
           dc.l    $2a3D3D3D, $000000a2            ;$--------, $-------- ; 38 ok
           dc.l    $3D3D3D3D                          ; 39
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 40 ok
           dc.l    $3D3D3D3D                          ; 41
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 42
           dc.l    $3D3D3D3D                          ; 43
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 44
           dc.l    $3D3D3D3D                          ; 45
           dc.l    $2a3D3D3D, $000000aa            ;$--------, $-------- ; 46 ok
           dc.l    $3D3D3D3D                          ; 47
           dc.l    $2a3D3D3D, $000000a2            ;$--------, $-------- ; 48 ok
           dc.l    $3D3D3D3D                          ; 49
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 50 ok
           dc.l    $3D3D3D3D                          ; 51
           dc.l    $2a3D3D3D, $000000a2             ;$--------, $-------- ; 52 ok
           dc.l    $3D3D3D3D                          ; 53
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 54
           dc.l    $3D3D3D3D                          ; 55
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 56 ok
           dc.l    $3D3D3D3D                          ; 57
           dc.l    $3D3D3D3D                      ;$--------, $-------- ; 58
           dc.l    $3D3D3D3D                          ; 59
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 60
           dc.l    $3D3D3D3D                          ; 61;
           dc.l    $003D3D3D                    ;$--------, $-------- ; 62
           dc.l    $3d3D3D3D                          ; 63
          
          
          ;    tony       sample     hlasitost  arpeggio   pattern
          
           dc.l    $2a3D3D3D, $000000a2;,$00000000    ; 00 ok
           dc.l    $3D3D3D3D            ; 01
           dc.l    $3D3D3D3D;,          $000800c1    ; 02
           dc.l    $3D3D3D3D            ; 03
           dc.l    $3D3D3D3D;,          $000200c1    ; 04
           dc.l    $3D3D3D3D            ; 05
           dc.l    $3D3D3D3D;,          $000500c1    ; 06
           dc.l    $3D3D3D3D            ; 07
           dc.l    $2a3D3D3D, $000000a6;,$000fc0c1    ; 08 ok
           dc.l    $3D3D3D3D            ; 09
           dc.l    $3D3D3D3D;,          $000400c1    ; 10
           dc.l    $3D3D3D3D            ; 11
           dc.l    $3D3D3D3D;,          $000200c1    ; 12
           dc.l    $3D3D3D3D            ; 13
           dc.l    $2a3D3D3D, $000000aa;,$000fc0c1    ; 14 ok
           dc.l    $3D3D3D3D            ; 15
           dc.l    $2a3D3D3D, $000000a2;,$000400c1    ; 16 ok
           dc.l    $3D3D3D3D            ; 17
           dc.l    $2a3D3D3D, $000000a6;,$000200c1    ; 18 ok
           dc.l    $3D3D3D3D            ; 19
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 20 ok
           dc.l    $3D3D3D3D            ; 21
           dc.l    $3D3D3D3D;,          $000400c1    ; 22
           dc.l    $3D3D3D3D            ; 23
           dc.l    $2a3D3D3D, $000000a6;,$000200c1    ; 24 ok
           dc.l    $3D3D3D3D            ; 25
           dc.l    $3D3D3D3D;,           $000fc0c1    ; 26
           dc.l    $3D3D3D3D            ; 27
           dc.l    $3D3D3D3D;,          $000200c1    ; 28
           dc.l    $3D3D3D3D            ; 29
           dc.l    $003D3D3D;,          $000600c1    ; 30
           dc.l    $3d3D3D3D            ; 31
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 32 ok
           dc.l    $3D3D3D3D            ; 33
           dc.l    $2a3D3D3D, $000000a2;,$000800c1 ; 34 ok
           dc.l    $3D3D3D3D            ; 35
           dc.l    $3D3D3D3D;,          $000200c1 ; 36
           dc.l    $3D3D3D3D            ; 37
           dc.l    $2a3D3D3D, $000000a2;,$000500c1 ; 38 ok
           dc.l    $3D3D3D3D            ; 39
           dc.l    $2a3D3D3D, $000000a6;,$000fc0c1 ; 40 ok
           dc.l    $3D3D3D3D            ; 41
           dc.l    $3D3D3D3D;,          $000400c1 ; 42
           dc.l    $3D3D3D3D            ; 43
           dc.l    $3D3D3D3D;,          $000200c1 ; 44
           dc.l    $3D3D3D3D            ; 45
           dc.l    $2a3D3D3D, $000000aa;,$000fc0c1 ; 46 ok
           dc.l    $3D3D3D3D            ; 47
           dc.l    $2a3D3D3D, $000000a2;,$000400c1 ; 48 ok
           dc.l    $3D3D3D3D            ; 49
           dc.l    $2a3D3D3D, $000000a6;,$000200c1 ; 50 ok
           dc.l    $3D3D3D3D            ; 51
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 52 ok
           dc.l    $3D3D3D3D            ; 53
           dc.l    $3D3D3D3D;,          $000400c1 ; 54
           dc.l    $2a3D3D3D, $000000a6, $300000c1 ; 55;pokr 0.kanal,1ch ok
           dc.l    $2a3D3D3D,            $fc0000c1 ; 56ok
           dc.l    $3D3D3D3D            ; 57ok
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1 ; 58ok,1ch ok
           dc.l    $3D3D3D3D            ; 59ok
           dc.l    $2a3D3D3D, $000000ae;,$000200c1 ; 60ok 0.kanal nekde stopnout sampl-novy ton vuci predeslemu patternu,1ch ok
           dc.l    $3d3D3D3D            ; 61ok
           dc.l    $3d3D3D3D;,          $000600c1 ; 62ok
           dc.l    $3d3D3D3D;,                    $0001f080 ; 63ok
          ;dc.l                             $00000444 ; skok
          ;dc.l                             $000006e4 ; skok 6e4 ok
          
          
          
          
           dc.l    $2a000000, $000000a2, $fc0000c1, $000000e4          ; 00 ffffc7c3
          
          ;spatny radek pouze test jestli pujde volumw slide na maximalni hlasitost
          
           dc.l    $3D3D3D3D ;$--------, $-------- ;$--------, $-------- ; 01
           dc.l    $3D3D3D3D            ; 02
           dc.l    $3D3D3D3D        ; 03
           dc.l    $3D3D3D3D            ; 04
           dc.l    $3D3D3D3D        ; 05
           dc.l    $3D3D3D3D            ; 06
           dc.l    $3D3D3D3D        ; 07
           dc.l    $2a3D3D3D, $000000a6    ; 08 ok
           dc.l    $3D3D3D3D        ; 09
           dc.l    $3D3D3D3D            ; 10
           dc.l    $3D3D3D3D        ; 11
           dc.l    $3D3D3D3D            ; 12
           dc.l    $3D3D3D3D        ; 13
           dc.l    $2a3D3D3D, $000000aa    ; 14 ok
           dc.l    $3D3D3D3D        ; 15
           dc.l    $2a3D3D3D, $000000a2    ; 16 ok
           dc.l    $3D3D3D3D        ; 17
           dc.l    $2a3D3D3D, $000000a6    ; 18 ok
           dc.l    $3D3D3D3D        ; 19
           dc.l    $2a3D3D3D, $000000a2    ; 20 ok
           dc.l    $3D3D3D3D        ; 21
           dc.l    $3D3D3D3D            ; 22
           dc.l    $3D3D3D3D        ; 23
           dc.l    $2a3D3D3D, $000000a6    ; 24 ok
           dc.l    $3D3D3D3D        ; 25
           dc.l    $3D3D3D3D                ;$--------, $-------- ; 26
           dc.l    $3D3D3D3D                      ; 27
           dc.l    $3D3D3D3D              ;$--------, $-------- ; 28
           dc.l    $3D3D3D3D                      ; 29
           dc.l    $003D3D3D              ;$--------, $-------- ; 30
           dc.l    $3d3D3D3D                      ; 31
           dc.l    $2a3D3D3D, $000000a2    ;$--------, $-------- ; 32 ok
           dc.l    $3D3D3D3D                      ; 33
           dc.l    $2a3D3D3D, $000000a2    ;$--------, $-------- ; 34 ok
           dc.l    $3D3D3D3D                          ; 35
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 36
           dc.l    $3D3D3D3D                          ; 37
           dc.l    $2a3D3D3D, $000000a2            ;$--------, $-------- ; 38 ok
           dc.l    $3D3D3D3D                          ; 39
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 40 ok
           dc.l    $3D3D3D3D                          ; 41
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 42
           dc.l    $3D3D3D3D                          ; 43
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 44
           dc.l    $3D3D3D3D                          ; 45
           dc.l    $2a3D3D3D, $000000aa            ;$--------, $-------- ; 46 ok
           dc.l    $3D3D3D3D                          ; 47
           dc.l    $2a3D3D3D, $000000a2            ;$--------, $-------- ; 48 ok
           dc.l    $3D3D3D3D                          ; 49
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 50 ok
           dc.l    $3D3D3D3D                          ; 51
           dc.l    $2a3D3D3D, $000000a2             ;$--------, $-------- ; 52 ok
           dc.l    $3D3D3D3D                          ; 53
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 54
           dc.l    $3D3D3D3D                          ; 55
           dc.l    $2a3D3D3D, $000000a6            ;$--------, $-------- ; 56 ok
           dc.l    $3D3D3D3D                          ; 57
           dc.l    $3D3D3D3D                      ;$--------, $-------- ; 58
           dc.l    $3D3D3D3D                          ; 59
           dc.l    $3D3D3D3D                    ;$--------, $-------- ; 60
           dc.l    $3D3D3D3D                          ; 61;
           dc.l    $003D3D3D                    ;$--------, $-------- ; 62
           dc.l    $3d3D3D3D                          ; 63
          
          
          ;    tony       sample     hlasitost  arpeggio   pattern
          
           dc.l    $2a3D3D3D, $000000a2;,$00000000    ; 00 ok
           dc.l    $3D3D3D3D            ; 01
           dc.l    $3D3D3D3D;,          $000800c1    ; 02
           dc.l    $3D3D3D3D            ; 03
           dc.l    $3D3D3D3D;,          $000200c1    ; 04
           dc.l    $3D3D3D3D            ; 05
           dc.l    $3D3D3D3D;,          $000500c1    ; 06
           dc.l    $3D3D3D3D            ; 07
           dc.l    $2a3D3D3D, $000000a6;,$000fc0c1    ; 08 ok
           dc.l    $3D3D3D3D            ; 09
           dc.l    $3D3D3D3D;,          $000400c1    ; 10
           dc.l    $3D3D3D3D            ; 11
           dc.l    $3D3D3D3D;,          $000200c1    ; 12
           dc.l    $3D3D3D3D            ; 13
           dc.l    $2a3D3D3D, $000000aa;,$000fc0c1    ; 14 ok
           dc.l    $3D3D3D3D            ; 15
           dc.l    $2a3D3D3D, $000000a2;,$000400c1    ; 16 ok
           dc.l    $3D3D3D3D            ; 17
           dc.l    $2a3D3D3D, $000000a6;,$000200c1    ; 18 ok
           dc.l    $3D3D3D3D            ; 19
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 20 ok
           dc.l    $3D3D3D3D            ; 21
           dc.l    $3D3D3D3D;,          $000400c1    ; 22
           dc.l    $3D3D3D3D            ; 23
           dc.l    $2a3D3D3D, $000000a6;,$000200c1    ; 24 ok
           dc.l    $3D3D3D3D            ; 25
           dc.l    $3D3D3D3D;,           $000fc0c1    ; 26
           dc.l    $3D3D3D3D            ; 27
           dc.l    $3D3D3D3D;,          $000200c1    ; 28
           dc.l    $3D3D3D3D            ; 29
           dc.l    $003D3D3D;,          $000600c1    ; 30
           dc.l    $3d3D3D3D            ; 31
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 32 ok
           dc.l    $3D3D3D3D            ; 33
           dc.l    $2a3D3D3D, $000000a2;,$000800c1 ; 34 ok
           dc.l    $3D3D3D3D            ; 35
           dc.l    $3D3D3D3D;,          $000200c1 ; 36
           dc.l    $3D3D3D3D            ; 37
           dc.l    $2a3D3D3D, $000000a2;,$000500c1 ; 38 ok
           dc.l    $3D3D3D3D            ; 39
           dc.l    $2a3D3D3D, $000000a6;,$000fc0c1 ; 40 ok
           dc.l    $3D3D3D3D            ; 41
           dc.l    $3D3D3D3D;,          $000400c1 ; 42
           dc.l    $3D3D3D3D            ; 43
           dc.l    $3D3D3D3D;,          $000200c1 ; 44
           dc.l    $3D3D3D3D            ; 45
           dc.l    $2a3D3D3D, $000000aa;,$000fc0c1 ; 46 ok
           dc.l    $3D3D3D3D            ; 47
           dc.l    $2a3D3D3D, $000000a2;,$000400c1 ; 48 ok
           dc.l    $3D3D3D3D            ; 49
           dc.l    $2a3D3D3D, $000000a6;,$000200c1 ; 50 ok
           dc.l    $3D3D3D3D            ; 51
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1    ; 52 ok
           dc.l    $3D3D3D3D            ; 53
           dc.l    $3D3D3D3D;,          $000400c1 ; 54
           dc.l    $2a3D3D3D, $000000a6, $300000c1 ; 55;pokr 0.kanal,1ch ok
           dc.l    $2a3D3D3D,            $fc0000c1 ; 56ok
           dc.l    $3D3D3D3D            ; 57ok
           dc.l    $2a3D3D3D, $000000a2;,$000fc0c1 ; 58ok,1ch ok
           dc.l    $3D3D3D3D            ; 59ok
           dc.l    $2a3D3D3D, $000000ae;,$000200c1 ; 60ok 0.kanal nekde stopnout sampl-novy ton vuci predeslemu patternu,1ch ok
           dc.l    $3d3D3D3D            ; 61ok
           dc.l    $3d3D3D3D;,          $000600c1 ; 62ok
           dc.l    $3d3D3D3D,                    $0001f080 ; 63ok
          ;dc.l                             $00000444 ; skok
          ;dc.l                             $000006e4 ; skok 6e4 ok
           dc.l                             $0000097c ; skok 97c ok
          
          
          
          
          ;0.kanal posledniho patternu zeditovany
          ;1.kanal
          ;2.kanal posledniho patternu zeditovany
          ;3.kanal posledniho patternu zeditovany
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          ;  --------konec--------
           dc.l    $3f3f3f3f
          
          TEXT:
          
          ;DC.B   0
           DC.B $00,0,"TELADBA                                 "
          ;DC.B $01,0,"E                                       "
          ;DC.B $02,0,"E                                       "
          ;DC.B $03,0,"ESED SOFTWARE 2                         "
           DC.B $04,0,"L                                       "
           DC.B $05,0,"E C                                     "
           DC.B $06,0,"E CSM                                   "
           DC.B $07,0,"E CCTAMED V1.03C                        "
           DC.B $08,0,"E CENOISE V3.3                          "
           DC.B $09,0,"E CROTRACKER V3.61                      "
           DC.B $0a,0,"F CDS MUSIC ROUTINE V1.0               E"
           DC.B $0b,0,"E CINIWRAPPER CODE V1.04               E"
           DC.B $0c,0,"E CINIWRAPPER CODE V1.04               E"
           DC.B $0d,0,"C CINIWRAPPER CODE V1.04               E"
           DC.B $0e,0,"C CINIWRAPPER CODE V1.04               E"
           DC.B $0f,0,"A CINIWRAPPER CODE V1.04               E"
           DC.B $80,13,5,1 ;,0,"
          
           DC.B $00,0,"                                        "
          ;DC.B $01,0,"                                        "
          ;DC.B $02,0,"                                        "
          ;DC.B $03,0,"  USED SOFTWARE                         "
           DC.B $04,0,"                                        "
           DC.B $05,0,"  WINUAE  V4.4.0                        "
           DC.B $06,0,"E  ASM PRO V1.18                        "
           DC.B $07,0,"E  OCTAMED V1.03C          EDIT SAMPLES "
           DC.B $08,0,"E  RENOISE V3.3           -1ST EDIT MOD "
           DC.B $09,0,"U  PROTRACKER V3.61       -2ND EDIT MOD "
           DC.B $0a,0,"E  CDS MUSIC ROUTINE V1.0 -3RD EDIT CMR "
           DC.B $0b,0,"   MINIWRAPPER CODE V1.04 BY PHOTON     "
           DC.B $0c,0,"E  MINIWRAPPER CODE V1.04 BY PHOTON     "
           DC.B $0d,0,"E  MINIWRAPPER CODE V1.04 BY PHOTON     "
           DC.B $0e,0,"   MINIWRAPPER CODE V1.04 BY PHOTON     "
           DC.B $0f,0,"E  AINIWRAPPER CODE V1.04 BY PHOTON     "
           DC.B $80,13,5,1
          
          
           DC.B "                                        "
           DC.B "-- -------                              "
           DC.B "HI PEOPLE!                              "
           DC.B "  CODE V1.04 BY PHOTON MINIWRAPPER      "
          
           DC.B "TEXT TEXTRO K CODE V1.04 BY PHOTON      "
           DC.B "B CODE V1.04 BY PHOTON MINIWRAPPER      "
           DC.B "C MINIWRAPPER CODE V1.04 BY PHOTON      "
           DC.B "  CODE V1.04 BY PHOTON MINIWRAPPER      "
          
           DC.B "TEXT TEXTRO K CODE V1.04 BY PHOTON      "
           DC.B "B CODE V1.04 BY PHOTON MINIWRAPPER      "
           DC.B "C MINIWRAPPER CODE V1.04 BY PHOTON      "
           DC.B "  CODE V1.04 BY PHOTON MINIWRAPPER      "
          
           DC.B "TEXT TEXTRO K CODE V1.04 BY PHOTON      "
           DC.B "B CODE V1.04 BY PHOTON MINIWRAPPER      "
           DC.B "C MINIWRAPPER CODE V1.04 BY PHOTON      "
           DC.B "  CODE V1.04 BY PHOTON MINIWRAPPER      "
          
           DC.B "TEXT TEXTRO K CODE V1.04 BY PHOTON      "
           DC.B "B CODE V1.04 BY PHOTON MINIWRAPPER      "
           DC.B "C MINIWRAPPER CODE V1.04 BY PHOTON      "
           DC.B "  CODE V1.04 BY PHOTON MINIWRAPPER      "
          
           DC.B "TEXT TEXTRO K CODE V1.04 BY PHOTON      "
           DC.B "B CODE V1.04 BY PHOTON MINIWRAPPER      "
           DC.B "C MINIWRAPPER CODE V1.04 BY PHOTON      "
           DC.B "  CODE V1.04 BY PHOTON MINIWRAPPER      "
          
           DC.B "TEXT TEXTRO K CODE V1.04 BY PHOTON      "
           DC.B "B CODE V1.04 BY PHOTON MINIWRAPPER      "
           DC.B "C MINIWRAPPER CODE V1.04 BY PHOTON      "
           DC.B "  CODE V1.04 BY PHOTON MINIWRAPPER      "
          
           DC.B "TEXT TEXTRO K CODE V1.04 BY PHOTON      "
           DC.B "B CODE V1.04 BY PHOTON MINIWRAPPER      "
           DC.B "C MINIWRAPPER CODE V1.04 BY PHOTON      "
           DC.B "  CODE V1.04 BY PHOTON MINIWRAPPER      "
          
           DC.B "AHOJ                                    "
          
          
          ; DC.B 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
          
          ; DC.B 0,$00,$f0,"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;07
          ; DC.B 0,$02,$a8,"$                                      $" ;08
          ; DC.B 0,$04,$60,"$                                      $" ;09
          ; DC.B 0,$06,$18,"$                                      $" ;10
          ; DC.B 0,$07,$d0,"$                                      $" ;11
          ; DC.B 0,$09,$88,"$                                      $" ;12
          ; DC.B 0,$0b,$40,"$                                      $" ;13
          ; DC.B 0,$0c,$f8,"$                                      $" ;14
          ; DC.B 0,$0e,$b0,"$                                      $" ;15
          ; DC.B 0,$10,$68,"$                                      $" ;16
          ; DC.B 0,$12,$20,"$                                      $" ;17
          ; DC.B 0,$13,$d8,"$                                      $" ;18
          ; DC.B 0,$15,$90,"$                                      $" ;19
          ; DC.B 0,$17,$48,"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;20
          
          
          ; DC.B  0,$c0,0,"          "          
          ; DC.B -1,$c1,0," USED SOFT" ;WARE" ;08
          ; DC.B  0,$c2,0,"          " ;09
          ; DC.B  0,$c3,0,"          " ;10
          ; DC.B  0,$c4,0,"WINUAE  V4" ;.4.0" ;07
          ; DC.B -1,$c5,0," ASM PRO V" ;1.18" ;08
          
          ; DC.B  0,$c6,0,"OCTAMED V1" ;.03C" ;    EDIT SAMPLES  " ;09
          ; DC.B  0,$c7,0,"  RENOISE " ;V3.3" ;   -1ST EDIT MOD  " ;10
          ; DC.B  0,$c8,0,"PROTRACKER" ; V3." ;   -2ND EDIT MOD  " ;07
          ; DC.B -1,$c9,0,"CDS MUSIC " ;ROUT" ;  V1.0 -3RD EDIT CMR  " ;08
          ; DC.B  0,$ca,0,"MINIWRAPPE" ;R CO" ;V1.04 BY PHOTON      " ;09
          ; DC.B  0,$cb,0,"ATARI  ATA" ;RI  " ;   ATARI        " ;10
          ; DC.B  0,$c0
          
          ;DC.B 0,$e4,0,"$                                      $" ;11
          ;DC.B 0,$e5,0,"$                                      $" ;12
          ;DC.B 0,$e6,0,"$      AHOJ                            $" ;13
          ;DC.B 0,$e7,0,"$                                      $" ;14
          ;DC.B 0,$e8,0,"$                                      $" ;15
          ;DC.B 0,$e9,0,"$                                      $" ;16
          ;DC.B 0,$ea,0,"$                                      $" ;17
          ;DC.B 0,$eb,0,"$                                      $" ;18
          ;DC.B 0,$ec,0,"$                                      $" ;19
          ;DC.B 0,$ed,0,"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" ;20
          
          
          ; DC.B  0,$c0,0, "        "
          ; DC.B  0,$c1,0, "        "
          ; DC.B  0,$c2,0, "        "
          ; DC.B  0,$c3,0, "USED SOF"
          ; DC.B  0,$c4,0, "        "
          ; DC.B  0,$c5,0, "WINUAE  "
          ; DC.B  0,$c6,0, "ASM PRO "
          ; DC.B  0,$c7,0, "OCTAMED "
          ; DC.B  0,$c8,0, "RENOISE "
          ; DC.B  0,$c9,0, "PROTRACK"
          ; DC.B  0,$ca,0, "CDS MUSI"
          ; DC.B  0,$cb,0, "MINIWRAP"
          ; DC.B  0,$c0,0
          
          ; DC.B    $c0,8, "        "
          ; DC.B  0,$c1,8, "        "
          ; DC.B  0,$c2,8, "        "
          ; DC.B  0,$c3,8, "TWARE   "
          ; DC.B  0,$c4,8, "        "
          ; DC.B  0,$c5,8, "V4.4.0  "
          ; DC.B  0,$c6,8, "V1.18   "
          ; DC.B  0,$c7,8, "V1.03C  "
          ; DC.B  0,$c8,8, "V3.3    "
          ; DC.B  0,$c9,8, "ER V3.61"
          ; DC.B  0,$ca,8, "C ROUTIN"
          ; DC.B  0,$cb,8, "PER CODE"
          ; DC.B  0,$c0,0
          
          ; DC.B    $c0,16,"        "
          ; DC.B  0,$c1,16,"        "
          ; DC.B  0,$c2,16,"        "
          ; DC.B  0,$c3,16,"        "
          ; DC.B  0,$c4,16,"        "
          ; DC.B  0,$c5,16,"        "
          ; DC.B  0,$c6,16,"        "
          ; DC.B  0,$c7,16," EDIT SA"
          ; DC.B  0,$c8,16,"P1ST EDI"
          ; DC.B  0,$c9,16,"P2ND EDI"
          ; DC.B  0,$ca,16,"E V1.0  "
          ; DC.B  0,$cb,16," V1.04 B"
          ; DC.B  0,$c0,0
          
          ; DC.B    $c0,24,"        "
          ; DC.B  0,$c1,24,"        "
          ; DC.B  0,$c2,24,"        "
          ; DC.B  0,$c3,24,"        "
          ; DC.B  0,$c4,24,"        "
          ; DC.B  0,$c5,24,"        "
          ; DC.B  0,$c6,24,"        "
          ; DC.B  0,$c7,24,"MPLES   "
          ; DC.B  0,$c8,24,"T MOD   "
          ; DC.B  0,$c9,24,"T MOD   "
          ; DC.B  0,$ca,24,"T CMR   "
          ; DC.B  0,$cb,24,"        "
          ; DC.B  0,$c0,0
          
          ; DC.B    $c0,32,"        "
          ; DC.B  0,$c1,32,"        "
          ; DC.B  0,$c2,32,"        "
          ; DC.B  0,$c3,32,"        "
          ; DC.B  0,$c4,32,"        "
          ; DC.B  0,$c5,32,"        "
          ; DC.B  0,$c6,32,"        "
          ; DC.B  0,$c7,32,"        "
          ; DC.B  0,$c8,32,"        "
          ; DC.B  0,$c9,32,"        "
          ; DC.B  0,$ca,32,"        "
          ; DC.B  0,$cb,32,"        "
          ; DC.B  0,$c0,0
          
          
          
          
          
          ; DC.B    $c0,0, "        "
          ; DC.B  0,$c1,0, "        "
          ; DC.B  0,$c2,0, "        "
          ; DC.B  0,$c3,0, "        "
          ; DC.B  0,$c4,0, "        "
          ; DC.B  0,$c5,0, "        "
          ; DC.B  0,$c6,0, "        "
          ; DC.B  0,$c7,0, "        "
          ; DC.B  0,$c8,0, "        "
          ; DC.B  0,$c9,0, "        "
          ; DC.B  0,$ca,0, "        "
          ; DC.B  0,$cb,0, "        "
          ; DC.B  0,$c0,0;
          
          ; DC.B    $c0,8, "        "
          ; DC.B  0,$c1,8, "        "
          ; DC.B  0,$c2,8, "        "
          ; DC.B  0,$c3,8, "        "
          ; DC.B  0,$c4,8, "        "
          ; DC.B  0,$c5,8, "        "
          ; DC.B  0,$c6,8, "        "
          ; DC.B  0,$c7,8, "        "
          ; DC.B  0,$c8,8, "        "
          ; DC.B  0,$c9,8, "        "
          ; DC.B  0,$ca,8, "        "
          ; DC.B  0,$cb,8, "        "
          ; DC.B  0,$c0,0
          
          ; DC.B    $c0,16,"        "
          ; DC.B  0,$c1,16,"        "
          ; DC.B  0,$c2,16,"        "
          ; DC.B  0,$c3,16,"        "
          ; DC.B  0,$c4,16,"        "
          ; DC.B  0,$c5,16,"        "
          ; DC.B  0,$c6,16,"        "
          ; DC.B  0,$c7,16,"        "
          ; DC.B  0,$c8,16,"        "
          ; DC.B  0,$c9,16,"        "
          ; DC.B  0,$ca,16,"        "
          ; DC.B  0,$cb,16,"        "
          ; DC.B  0,$c0,0
          
          ; DC.B    $c0,24,"        "
          ; DC.B  0,$c1,24,"        "
          ; DC.B  0,$c2,24,"        "
          ; DC.B  0,$c3,24,"        "
          ; DC.B  0,$c4,24,"        "
          ; DC.B  0,$c5,24,"        "
          ; DC.B  0,$c6,24,"        "
          ; DC.B  0,$c7,24,"        "
          ; DC.B  0,$c8,24,"        "
          ; DC.B  0,$c9,24,"        "
          ; DC.B  0,$ca,24,"        "
          ; DC.B  0,$cb,24,"        "
          ; DC.B  0,$c0,0
          
          ; DC.B    $c0,32,"        "
          ; DC.B  0,$c1,32,"        "
          ; DC.B  0,$c2,32,"        "
          ; DC.B  0,$c3,33,"        "
          ; DC.B  0,$c4,32,"        "
          ; DC.B  0,$c5,33,"        "
          ; DC.B  0,$c6,32,"        "
          ; DC.B  0,$c7,32,"        "
          ; DC.B  0,$c8,32,"        "
          ; DC.B  0,$c9,32,"        "
          ; DC.B  0,$ca,32,"        "
          ; DC.B  0,$cb,32,"        "
          ; DC.B  0,$c0,0
          
          
          
          
          
          
          ; DC.B $c0,0,"                                        "
          ; DC.B $c1,0,"                                        "
          ; DC.B $c2,0,"                                        "
          ; DC.B $c3,0,"  USED SOFTWARE 2                       "
          ; DC.B $c4,0,"                                        "
          ; DC.B $c5,0,"  C                                     "
          ; DC.B $c6,0,"  CSM                                   "
          ; DC.B $c7,0,"  CCTAMED V1.03C                        "
          ; DC.B $c8,0,"  CENOISE V3.3                          "
          ; DC.B $c9,0,"  CROTRACKER V3.61                      "
          ; DC.B $ca,0,"  CDS MUSIC ROUTINE V1.0                "
          ; DC.B $cb,0,"  CINIWRAPPER CODE V1.04                "
          ; DC.B $c0,$ff ;,0,"
          
          
          
          
          
          
          
          ;DC.B 0,$0b,$40,"  TESTOVANO NA AMIZE 1200,4MB FAST RAM  ",0,$0c,$f8,$02,$be ;, 0,$0b,$40,$80,$c1;13
          
          ;DC.B 0,$0b,$40,"  _TESTED_ON_AMIGA_1200,4_MB_FAST_RAM_  ",0,$00,$00,$01,$e6 ;, 0,$0b,$40,$80,$c1;13
          
          
          
          
          ;DC.B 0,$06,$18,"                                  /CZ/  ",0,$07,$d0,$00,$00 ;,-1,0,$00,$00,$1,$25;10
          
          ; DC.B 0,$00,$f0,"                                        ",0,$02,$a8,$00,$00;,    ;07
          ; DC.B 0,$02,$a8,"                                        ",0,$04,$60,$00,$00 ;, 0,$10,$e0,$0,$31;08
          ; DC.B 0,$04,$60,"  ************************************  ",0,$06,$18, 0,  0;,    ;09
          ; DC.B 0,$06,$18,"  USED SOFTWARE                         ",0,$07,$d0,$00,$00 ;,-1,0,$00,$00,$1,$25;10
          ; DC.B 0,$07,$d0,"  ************************************  ",0,$09,$88, 0,  0;,    ;11
          ; DC.B 0,$09,$88,"  WINUAE  V4.4.0                        ",0,$0b,$40,$00,$00 ;, 0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"  ASM PRO V1.18                         ",0,$0c,$f8,$00,$00 ;, 0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"  OCTAMED V1.03C          EDIT SAMPLES  ",0,$0e,$b0,$00,$00 ;, 0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"  RENOISE V3.3           -1ST EDIT MOD  ",0,$10,$68,$00,$00 ;, 0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"  PROTRACKER V3.61       -2ND EDIT MOD  ",0,$12,$20, 0, $00;,    ;16
          ; DC.B 0,$12,$20,"  CDS MUSIC ROUTINE V1.0 -3RD EDIT CMR  ",0,$13,$d8,$00,$00 ;, 0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"  MINIWRAPPER CODE V1.04 BY PHOTON      ",0,$15,$90, 0,  0;,    ;01
          ; DC.B 0,$15,$90,"                                        ",0,$17,$48, 0,  0;,    ;01
          ;;DC.B 0,$17,$48,"                                        ",0,$00,$00,$03,$4e;,    ;01
          ;DC.B 0,$17,$48,"                                        ",0,$00,$00,$04,$3e;,    ;01
          
          
          
           
          ; DC.B 0,$00,$f0,"                                        ",0,$02,$a8,$00,$00;,    ;07
          ; DC.B 0,$02,$a8,"                                        ",0,$04,$60,$00,$00 ;, 0,$10,$e0,$0,$31;08
          ; DC.B 0,$04,$60,"  ************************************  ",0,$06,$18, 0,  0;,    ;09
          ; DC.B 0,$06,$18,"  RESETKANI 2023 PARTY                  ",0,$07,$d0,$00,$00 ;,-1,0,$00,$00,$1,$25;10
          ; DC.B 0,$07,$d0,"  ************************************  ",0,$09,$88, 0,  0;,    ;11
          ; DC.B 0,$09,$88,"                                        ",0,$0b,$40,$00,$00 ;, 0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"  HELLO EVERYONE!                       ",0,$0c,$f8,$00,$00 ;, 0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"                                        ",0,$0e,$b0,$00,$00 ;, 0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"  WE WILL HAVE ANOTHER RESETKANI        ",0,$10,$68,$00,$00 ;, 0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"  GATHERING, WHICH WILL TAKE PLACE      ",0,$12,$20, 0,  0;,    ;16
          ; DC.B 0,$12,$20,"  AS ALWAYS IN BRNO. BOTH AMIGA FANS    ",0,$13,$d8,$00,$00 ;, 0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"  AND EVERYONE ELSE IS INVITED.         ",0,$15,$90, 0,  0;,    ;01
          ; DC.B 0,$15,$90,"                                        ",0,$17,$48, 0,  0;,    ;01
          ; DC.B 0,$17,$48,"                                        ",0,$00,$00,$02,$5e;,    ;01
          
          
          
          ; DC.B 0,$0b,$40,"  DATE OF THE EVENT: 31.3.- 2.4.        ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          
          ; DC.B 0,$0b,$40,"  VENUE: CENTRUM DENNICH SLUZEB         ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"         PRO SLUCHOVE POSTIZENE         ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"                                        ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"         STREET: VODOVA 35              ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20,"         CITY:   BRNO                   ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"         CZECH REPUBLIC                 ",0,$15,$90, $0, $0  ;,01
          
          ; DC.B 0,$0b,$40,"  EVENT PROGRAM: DEMO SHOW              ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"                 CREAZY COMPO           ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"                 DEATH MATCH-           ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"                 -IN HIRED GUNS         ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20,"                 FUN AMIGA QUIZ         ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"                 AZ AMIGA QUIZ          ",0,$15,$90, $0, $0  ;,01
          ; DC.B 0,$0b,$40,"  OTHERS: ALCOHOLIC DRINKS              ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"          GOULASH BY NORO               ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"          SANDWICHES WITH FRIED-        ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"          -CHEESE CHILLI AND CHUTNEY    ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20,"          NON-ALCOHOLIC DRINKS          ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"          POTATO CHIPS                  ",0,$15,$90, $0, $0  ;,01
          ; DC.B 0,$0b,$40,"        ORGANIZERS OF THE EVENT:        ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"                                        ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"                  FREDDY                ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"                  DEDY                  ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20,"                  MICE                  ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"                  NORO                  ",0,$15,$90, $0, $0  ;,01
          ;;DC.B 0,$07,$d0,"  DEKUJI MOC ZA VSE...                  ",0,$09,$88, $0, $0  ;,11
          ; DC.B 0,$09,$88,"                                        ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"                 PG                     ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"                 POISON                 ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"                 JANCIB                 ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"                 DAMI                   ",0,$00,$00,$02,$d6 ;,16
          ; DC.B 0,$07,$d0,"  THANK YOU SO MUCH FOR EVERYTHING...   ",0,$09,$88,$81,$20  ;,11
          ; DC.B 0,$07,$d0,"  THANK YOU TO OUR CZ AND SK            ",0,$09,$88, $0, $0  ;,11
          ; DC.B 0,$09,$88,"  PROGRAMMERS, WHO DROVE ME FORWARD     ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"  IN AMIGA ASSEMBLER...                 ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"                                        ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"         DEFOR       OBIWANKEN          ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"         DJM         ANTONY/DTA         ",0,$12,$20,$00,$00 ;,16
          ; DC.B 0,$12,$20,"         MARK        LANEX              ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ;;DC.B 0,$04,$60,"     ZDRAVIME...                        ",0,$06,$18, $0, $0  ;,09
          ; DC.B 0,$06,$18,"    GREETINGS...                        ",0,$07,$d0,$00,$00 ;,-1,0,$00,$00,$1,$25;10
          
          
          ; DC.B 0,$09,$88,"                ARTWAY                  ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"                D.T.A.SOFTWARE STUDIO   ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"                VECTORS                 ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"                KLIK                    ",0,$00,$00,$00,$F6 ;,0,$07,$08,$81,$81;15
          
          
          ;;DC.B 0,$09,$88,"                PG_____________         ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ;;DC.B 0,$0b,$40,"                LOOKE________________   ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ;;DC.B 0,$0c,$f8,"                POISON_________         ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ;;DC.B 0,$0e,$b0,"                AKI____________         ",0,$00,$00,$00,$F6 ;,0,$07,$08,$81,$81;15
          
          
          ; DC.B 0,$09,$88,"                CERES SOFT              ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"                VBG SOFTWARE            ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"                4004/482_ZO SVAZARMU    ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"                GEMBA BOYS              ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"                RM-TEAM                 ",0,$00,$00,$00,$00 ;,16
          
          ; DC.B 0,$0b,$40,"        CHILDHOOD DREAM SOFTWARE        ",0,$0c,$f8,$00,$00 ;, 0,$0b,$40,$80,$c1;13
          
          ; DC.B 0,$0b,$40,"            CODE      LISIAK            ",0,$0c,$f8,$00,$00 ;, 0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"            MUSIC     NOOLY             ",0,$0e,$b0,$00,$00 ;, 0,$08,$70,$81,$21;14
          
          ; DC.B 0,$04,$60,"     GREETINGS...                       ",0,$06,$18, $0, $0  ;,09
          ;;DC.B 0,$06,$18,"     ZDRAVIME...                        ",0,$07,$d0,$00,$00 ;,-1,0,$00,$00,$1,$25;10
          
          ; DC.B 0,$09,$88,"     ZDENEK6           BUSY             ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"     MBORIK128         ROMBOR           ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"     LIBOR L.A.        UB880D           ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"     CZECH HUMAN       ACELTD           ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$07,$d0,"     PHOTON            DEFOR            ",0,$09,$88, $0, $0  ;,11
          ; DC.B 0,$09,$88,"     TRIXIE            JOFA             ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"     SNAPPY            HUMAN FACTOR     ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"     HOLYNA            SOLARIS104       ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"     PREDSEDA          BOMBEROZA        ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"     CERV              OBIWANKEN        ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20,"     EXIE              PROBER           ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"     MARK              GHH              ",0,$00,$00,$01,$e6 ;,01
          
          ; DC.B 0,$07,$d0,"                                        ",0,$09,$88, $0, $0  ;,11
          ; DC.B 0,$09,$88,"                 CHAIN                  ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"                 L.L.G.                 ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"                 SLACHA                 ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"                 TOMSOFT                ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"                 JAY TEE                ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20,"                 RASTER                 ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"                                        ",0,$00,$00,$01,$E6  ;,01
          ;;DC.B 0,$15,$90,"                                        ",0,$17,$48, $0, $0  ;,01
          ;;DC.B 0,$17,$48,"                                        ",0,$00,$00,$00,$00 ;,01
          
          
          
          ; DC.B 0,$09,$88,"     RESETKANI.EU                       ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"     AMIGAPORTAL.CZ                     ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"     AMIGA.LUKYSOFT.CZ                  ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"     JACK.UNTERGRUND.NET                ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"     OLDCOMP.CZ                         ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20,"     GHH.8U.CZ  ...DO NOT PANIC         ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          
          ; DC.B 0,$09,$88,"     PPA.PL                             ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"     ARCADEHRY.CZ                       ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"     EAB.ABIME.NET                      ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"     CADA.PROBERS.CZ                    ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"     NEKONECNY LABUZO         YOUTUBE   ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20,"     AMIGA A ATARI ST CZ/SK   FACEBOOK  ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"     ONESCAPE FOR ATARI 8BIT  GAME      ",0,$00,$00,$00,$00  ;,01
          
          ;;DC.B 0,$0b,$40,"         ZDRAVIME Z... CZ / SK          ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0b,$40,"         GREETINGS FROM CZ / SK         ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          
          ;;DC.B 0,$0b,$40,"                  TEBE________          ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$8b,$40,"$            _WE GREET_YOU!_           $",0,$80,$00,$00,$00 ;,0,$0b,$40,$80,$c1;13
          
          ; DC.B 0,$00,$f0,"                                        ",0,$02,$a8,$00,$00 ;,07
          ; DC.B 0,$02,$a8," A FEW EVENTS FOR 2023                  ",0,$04,$60,$00,$00 ;,0,$10,$e0,$0,$31;08
          ; DC.B 0,$04,$60," ************************************** ",0,$06,$18, $0, $0  ;,09
          ; DC.B 0,$06,$18," NAME             DATE OF EVENT COUNTRY ",0,$07,$d0,$00,$00 ;,-1,0,$00,$00,$1,$25;10
          ; DC.B 0,$07,$d0," &***************^&************^&*****^ ",0,$09,$88, 0,  0;,    ;11
          ; DC.B 0,$09,$88," FOREVER          17.3. - 19.3.    SK   ",0,$0b,$40,$00,$00 ;,0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40," REVISION          7.4. - 1O.4.    DE   ",0,$0c,$f8,$00,$00 ;,0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8," AKF PARTY        28.4. -  1.5.    CZ   ",0,$0e,$b0,$00,$00 ;,0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0," ARTWAY PARTY      7.7. -  9.7.    CZ   ",0,$10,$68,$00,$00 ;,0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68," OLDSCHOOL PARTY  11.8. - 13.8.    CZ   ",0,$12,$20, $0, $0  ;,16
          ; DC.B 0,$12,$20," OLDCOMP PARTY     8.9. - 10.9.    CZ   ",0,$13,$d8,$00,$00 ;,0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8," BYTEFEST         26.10.- 29.10.   CZ   ",0,$15,$90, $0, $0  ;,01
          ; DC.B 0,$15,$90," PRASEPARTY       23.11.- 26.11.   CZ   ",0,$17,$48, $0, $0  ;,01
          ; DC.B 0,$17,$48,"                                        ",0,$00,$00,$00,$00 ;,01
          
          
          
          
          
          ; DC.B 0,$04,$60,"  ************************************  ",0,$06,$18, 0,  0;,    ;09
          ; DC.B 0,$06,$18,"  USED SOFTWARE                         ",0,$07,$d0,$00,$00 ;,-1,0,$00,$00,$1,$25;10
          ; DC.B 0,$07,$d0,"  ************************************  ",0,$09,$88, 0,  0;,    ;11
          ; DC.B 0,$09,$88,"  WINUAE  V4.4.0                        ",0,$0b,$40,$00,$00 ;, 0,$0e,$10,$80,$61;12
          ; DC.B 0,$0b,$40,"  ASM PRO V1.18                         ",0,$0c,$f8,$00,$00 ;, 0,$0b,$40,$80,$c1;13
          ; DC.B 0,$0c,$f8,"  OCTAMED V1.03C          EDIT SAMPLES  ",0,$0e,$b0,$00,$00 ;, 0,$08,$70,$81,$21;14
          ; DC.B 0,$0e,$b0,"  RENOISE V3.3           -1ST EDIT MOD  ",0,$10,$68,$00,$00 ;, 0,$07,$08,$81,$81;15
          ; DC.B 0,$10,$68,"  PROTRACKER V3.61       -2ND EDIT MOD  ",0,$12,$20, 0, $00;,    ;16
          ; DC.B 0,$12,$20,"  CDS MUSIC ROUTINE V1.0 -3RD EDIT CMR  ",0,$13,$d8,$00,$00 ;, 0,$04,$38,$81,$e1;17
          ; DC.B 0,$13,$d8,"  MINIWRAPPER CODE V1.04 BY PHOTON      ",0,$15,$90, 0,  0;,    ;01
          
          
                  
                           ;rezervovane misto vyplnime 0
          
          ;******************************************************************************
          ; TEXTRO KONEC
          ;******************************************************************************
          
          ;PC
          ;mix           0.kanal
          BA    incbin "DH1:MOD T02X3/05"
          BB    incbin "DH1:MOD T02X3/06"
          BC    incbin "DH1:MOD T02X3/07"
          BD    incbin "DH1:MOD T02X3/08"
          
          ;bas           1.kanal
          
          BE    incbin "DH1:MOD T02X3/02a"
          BF    incbin "DH1:MOD T02X3/02b" ;smp s casovacem
          C0
          C1
          
          ;kytara        2.kanal
          C2    incbin "DH1:MOD T02X3/01"
          C3
          C4
          C5
          
          ;klavesy       3.kanal
          C6    incbin "DH1:MOD T02X3/03"
          C7    incbin "DH1:MOD T02X3/04"
          C8
          C9
          
          ;CA    incbin "DH1:MOD T02X3/DART_BOARD"
          CA    incbin "DH1:MOD T02X3/k.chipbell5short0"
          
          * zde si doplnte cestu k samplu
          ;AA    incbin "dh1:noSystem/sampl.smp"
          
          ;29.3.2023 o neco zkratit smycku
          Amiga - PMD 85

          Komentovat


            Zde je ten kód v souboru, kdyby se někdo chtěl podívat, mělo by to tam být bez chyb v zarovnání textu. Koncovnku .S jsem změnil na .TXT

            mR1231p4 Free.txt

            Amiga - PMD 85

            Komentovat


              Jen jsem se na to podíval z rychlíku.
              Tady je pár tipů. Ale nic důležitého.

              Asi bych nepoužíval section code_c. Nutíš tím OS, aby načetlo kód do chip-ram, což je podle mne zbytečné. Použil bych section code pro program, section data_c pro data, která mají být v chip (copper a předpokládám že i samply), section bss_c pro bloky, které mají být v chip a section bss pro bloky, které můžou být kdekoliv.
              Výhodou je, že celý program s daty neokupuje jeden souvislý blok a je tedy větší šance, že se pro něj najde volná paměť.

              Zbytečně často používáš instrukce s celou 32bit adresou cíle. Např. move.b #$00,$bfde00 a podobné. Je lepší si dát bázovou adresu do adresového registru a pro cíl používat 16bit offset, např. move.b #number,offset(a5).

              Pokud má jakákoliv instrukce za cíl datový registr, tak se automaticky nastavují stavové bity podle výsledku operace. Takže je zbytečné dělat po and.w #mask,d0 ještě tst.w d0. Už první instrukce nastaví stavové bity, takže např. beq.b .skip bude fungovat i bez tst.

              Myslím, že používání or.l a and.l na nastavování nebo mazání jednoho bitu v datovém registru je pomalejší než k tomu použít instrukce bset.l a bclr.l.

              Komentovat


                Autorem citovaného textu je Defor Přejít na původní příspěvek
                Jen jsem se na to podíval z rychlíku.
                Tady je pár tipů. Ale nic důležitého.

                Asi bych nepoužíval section code_c. Nutíš tím OS, aby načetlo kód do chip-ram, což je podle mne zbytečné. Použil bych section code pro program, section data_c pro data, která mají být v chip (copper a předpokládám že i samply), section bss_c pro bloky, které mají být v chip a section bss pro bloky, které můžou být kdekoliv.
                Výhodou je, že celý program s daty neokupuje jeden souvislý blok a je tedy větší šance, že se pro něj najde volná paměť.

                Zbytečně často používáš instrukce s celou 32bit adresou cíle. Např. move.b #$00,$bfde00 a podobné. Je lepší si dát bázovou adresu do adresového registru a pro cíl používat 16bit offset, např. move.b #number,offset(a5).

                Pokud má jakákoliv instrukce za cíl datový registr, tak se automaticky nastavují stavové bity podle výsledku operace. Takže je zbytečné dělat po and.w #mask,d0 ještě tst.w d0. Už první instrukce nastaví stavové bity, takže např. beq.b .skip bude fungovat i bez tst.

                Myslím, že používání or.l a and.l na nastavování nebo mazání jednoho bitu v datovém registru je pomalejší než k tomu použít instrukce bset.l a bclr.l.
                díky za navedení

                - bloky jsou data? Nevím, jestli to mám vnímat rozdílně nebo ne.
                - to s tím 16 bit offsetem na HW registre díky. Já si tam zvykl to dělat takhle, protože jsem ani neměl volný adresový registr, do kterého bych dal bázovou adresu. Ono celý ten kód je celkem divočina, kde byli datové a adresové registre celkem narvány.
                - na instrukce bset.l a bclr.l. časem kouknu.
                - nastavování stavových bitú u instrukcích na datové registre používám, jen jsem to asi všude neopravoval u starého kódu.

                Ještě jednou díky.
                Amiga - PMD 85

                Komentovat


                  ...zatim muj kod pro cteni MODu vypada takhle, je to vse rozpracovany. Nacteni baze pro 16 bitovy offset casem dam, pokud budu moci, ted to i tak z meho pohledu neni priorita. Data za navestim songs jsou jen pro ukazku, ty budu cist primo z MODu. U souboru je pripona ".S" zmenena na ".txt"

                  soubor:
                  playMod3_CDS.txt

                  vylistovany kod:
                  Code:
                  ;********************************
                  ;** playMod v1.5 by Lisiak/CDS **
                  ;********************************
                  
                  SECTION musicRoutine, CODE_C ;establishing a code section
                  
                  
                  moveq #0,d0 ;register for variables to 0
                  moveq #3,d2 ;4 music channel
                  moveq #0,d3 ;for a jump of 4 bytes
                  
                  
                  lea numberMod(pc),a0 ;pointer MODs to A0
                  move.l 0(a0,d0.w),a1 ;pointer playing Mod to A1
                  
                  move.l a1,a2 ;pointer plaing MOD to A2
                  add #1084,a2 ;pointer 1.st pattern MOD to A2
                  
                  move.b #31,d1
                  lea spmPointers(pc),a3
                  move.b 950(a1),d0
                  mulu.w #1024,d0
                  add.w #1084,d0
                  move.l d0,(a3)+
                  ; dbf d1,
                  
                  
                  
                  patternData ;play data from pattern
                  
                  move.l (a2)+,d4 ;channel 0-3, pattern data to D4
                  bne processCahnnel ;zero data in whole channel?
                  dbf d2,patternData ;yes, process another channel
                  
                  
                  processCahnnel
                  move.w d4,d0 ;lower 4 bits SMP number in D0
                  rol.w #4,d0 ;lower 4 bits SMP to first 4 bits D0
                  
                  move.w d4,d1 ;effect command bits in D1
                  and.w #$0fff,d1 ;only effect command bits in D1
                  
                  ;in this version without efect command!!!
                  
                  swap d4 ;upper 4 bits SMP number & 12 bits period in-
                  ;-lower 2 bytes D0
                  move.w d4,d1 ;upper 4 bits SMP number to D1
                  rol.w #8,d1 ;upper 4 bits SMP to upper 4 bits D1
                  and.b #$0f,d0 ;only lower 4 bits SMP in lower 4 bits D0
                  and.b #$f0,d1 ;only upper 4 bits SMP in upper 4 bits D1
                  or.b d1,d0 ;8 bits SMP number in D0
                  ; move.b d0,d0 ;zero flag in D0? = no playing SMP?
                  beq processSmpEnd ;yes, skip sample setup = zero flag
                  
                  mulu #30,d0 ;for correct offset of sample number in MOD
                  lea smpChannel(pc),a0
                  move.l 0(a0,d3.w),a0
                  jsr (a0)
                  bra processSmpEnd
                  
                  smpCh0 ;channel 0
                  move.w 42(a1,d0.w),$dff0a4 ;sampleLenght to HW register
                  move.b 45(a1,d0.w),$dff0a9 ;preset sampleVolume to HW register
                  rts
                  smpCh1
                  move.w 42(a1,d0.w),$dff0b4 ;same for channel 1
                  move.b 45(a1,d0.w),$dff0b9
                  rts
                  smpCh2
                  move.w 42(a1,d0.w),$dff0c4 ;same for channel 2
                  move.b 45(a1,d0.w),$dff0c9
                  rts
                  smpCh3
                  move.w 42(a1,d0.w),$dff0d4 ;same for channel 3
                  move.b 45(a1,d0.w),$dff0d9
                  rts
                  
                  
                  processSmpEnd
                  and.w #$0fff,d4 ;only 12 bit note period in D4
                  beq processPeriodEnd
                  
                  lea periodChannel(pc),a0
                  move.l 0(a0,d3.w),a0
                  jsr (a0)
                  bra processPeriodEnd
                  
                  periodCh0 move.w d4,$dff0a6 ;note period to register - channel 0
                  rts
                  
                  periodCh1 move.w d4,$dff0b6 ;same for channel 1
                  rts
                  
                  periodCh2 move.w d4,$dff0c6 ;same for channel 2
                  rts
                  
                  periodCh3 move.w d4,$dff0d6 ;same for channel 3
                  rts
                  
                  
                  processPeriodEnd
                  addq #4,d3
                  dbf d2,patternData ;process next music channel
                  
                  
                  move.b #$00,$bfde00 ;CIA primary timer, 2000=1/100 second
                  move.b #$7f,$bfdd00 ;
                  move.b #$00,$bfd400 ;
                  move.b #$00,$bfd500 ;
                  move.b #$09,$bfde00 ;
                  primaryTimer ;
                  btst.b #0,$bfdd00 ;
                  beq primaryTimer ;
                  
                  
                  spmPointers
                  dc.l $00000000,$00000000,$00000000,$00000000,$00000000 ;smp 1-5
                  dc.l $00000000,$00000000,$00000000,$00000000,$00000000 ;smp 6-10
                  dc.l $00000000,$00000000,$00000000,$00000000,$00000000 ;smp 11-15
                  dc.l $00000000,$00000000,$00000000,$00000000,$00000000 ;smp 16-20
                  dc.l $00000000,$00000000,$00000000,$00000000,$00000000 ;smp 21-25
                  dc.l $00000000,$00000000,$00000000,$00000000,$00000000, $00000000 ;smp 26-31
                  
                  
                  smpChannel
                  dc.l smpCh0, smpCh1, smpCh2, smpCh3
                  
                  periodChannel
                  dc.l periodCh0, periodCh1, periodCh2, periodCh3
                  
                  numberMod
                  dc.l $0, $3647c
                  
                  songs
                  
                  dc.l $00A05000, $00F02F91, $00A01F05, $00A03C10; 00
                  dc.l $00000000, $00000000, $00000000, $00000A10; 01
                  dc.l $00000000, $00000000, $00A01C20, $00000A10; 02
                  dc.l $00000000, $00000000, $00000000, $00000A10; 03
                  dc.l $00000000, $00000000, $00A01C08, $00000A10; 04
                  dc.l $00000000, $00000000, $00000000, $00000A10; 05
                  dc.l $00000000, $00000000, $00A01C14, $00000A10; 06
                  dc.l $00000000, $00000000, $00000000, $00000A10; 07
                  dc.l $00A06000, $00000000, $00A01000, $00000A10; 08
                  dc.l $00000000, $00000000, $00000000, $00000A10; 09
                  dc.l $00000000, $00000000, $00A01C10, $00000A10; 10
                  dc.l $00000000, $00000000, $00000000, $00000A10; 11
                  dc.l $00000000, $00000000, $00A01C08, $00000A10; 12
                  dc.l $00000000, $00000000, $00000000, $00000A10; 13
                  dc.l $00A07000, $00000000, $00A01000, $00000A10; 14
                  dc.l $00000000, $00000000, $00000000, $00000A10; 15
                  dc.l $00A05000, $00000000, $00A01C10, $00000A10; 16
                  dc.l $00000000, $00000000, $00000000, $00000A10; 17
                  dc.l $00A06000, $00000000, $00A01C08, $00000A10; 18
                  dc.l $00000000, $00000000, $00000000, $00000A10; 19
                  dc.l $00A05000, $00000000, $00A01000, $00000A10; 20
                  dc.l $00000000, $00000000, $00000000, $00000A10; 21
                  dc.l $00000000, $00000000, $00A01C10, $00000A10; 22
                  dc.l $00000000, $00000000, $00000000, $00000A10; 23
                  dc.l $00A06000, $00000000, $00A01C08, $00000A10; 24
                  dc.l $00000000, $00000000, $00000000, $00000A10; 25
                  dc.l $00000000, $00000000, $00A01000, $00000A10; 26
                  dc.l $00000000, $00000000, $00000000, $00000A10; 27
                  dc.l $00000000, $00000000, $00A01C08, $00000A10; 28
                  dc.l $00000000, $00000000, $00000000, $00000A10; 29
                  dc.l $00000000, $00000000, $00A01C18, $00000A10; 30
                  dc.l $00000000, $00000000, $00000000, $00000A10; 31
                  dc.l $00A05000, $00000000, $00A01000, $00000000; 32
                  dc.l $00000000, $00000000, $00000000, $00000000; 33
                  dc.l $00A05000, $00000000, $00A01C20, $00000000; 34
                  dc.l $00000000, $00000000, $00000000, $00000000; 35
                  dc.l $00000000, $00000000, $00A01C08, $00000000; 36
                  dc.l $00000000, $00000000, $00000000, $00000000; 37
                  dc.l $00A05000, $00000000, $00A01C14, $00000000; 38
                  dc.l $00000000, $00000000, $00000000, $00000000; 39
                  dc.l $00A06000, $00000000, $00A01000, $00000000; 40
                  dc.l $00000000, $00000000, $00000000, $00000000; 41
                  dc.l $00000000, $00000000, $00A01C10, $00000000; 42
                  dc.l $00000000, $00000000, $00000000, $00000000; 43
                  dc.l $00000000, $00000000, $00A01C08, $00000000; 44
                  dc.l $00000000, $00000000, $00000000, $00000000; 45
                  dc.l $00A07000, $00000000, $00A01000, $00000000; 46
                  dc.l $00000000, $00000000, $00000000, $00000000; 47
                  dc.l $00A05000, $00000000, $00A01C10, $00000000; 48
                  dc.l $00000000, $00000000, $00000000, $00000000; 49
                  dc.l $00A06000, $00000000, $00A01C08, $00000000; 50
                  dc.l $00000000, $00000000, $00000000, $00000000; 51
                  dc.l $00A05000, $00000000, $00A01000, $00000000; 52
                  dc.l $00000000, $00000000, $00000000, $00000000; 53
                  dc.l $00000000, $00000000, $00A01C10, $00000000; 54
                  dc.l $00000000, $00000000, $00000000, $00000000; 55
                  dc.l $00A06000, $00000000, $00A01C08, $00000000; 56
                  dc.l $00000000, $00000000, $00000000, $00000000; 57
                  dc.l $00000000, $00000000, $00A01000, $00000000; 58
                  dc.l $00000000, $00000000, $00000000, $00000000; 59
                  dc.l $00000000, $00000000, $00A01C08, $00000000; 60
                  dc.l $00000000, $00000000, $00000000, $00000000; 61
                  dc.l $00000000, $00000000, $00A01C18, $00000000; 62
                  dc.l $00000000, $00000000, $00000000, $00000000; 63
                  
                  
                  
                  mods incbin "DH1:MOD T02X3/T02X3.MOD"
                  incbin "DH1:MOD T02X3/T02X3.MOD"


                  Amiga - PMD 85

                  Komentovat


                    Section bss pouze alokuje paměť. Příklad:
                    Code:
                        section bss
                    MyBuffer ds.b 1000
                    Na adrese MyBuffer budeš mít naalokovaný blok paměti o velikosti 1000 bajtů. Pozor, myslím, že ve standartu je, že blok je neinicializovaný, takže bych nepočítal s tím, že tam jsou nuly!
                    Section data obsahuje data. Příklad:
                    Code:
                        section data
                    MyBuffer dc.b 10, 20, 30
                    Na adrese MuBuffer budeš mít tři bajty 10, 20 a 30.
                    Dají se použí i parametry bss_c (alokuje se v chip-ram) a data_c (data se načtou do chip-ram).

                    Komentovat


                      Zatim mam netestovany kod, ale tak nejak bych jiz mel mit zpracovani samplu z MODu ok. Frekvence tonu (periody) taky. Jednotlive pointre na sample mam ulozeny v pameti za sebou, aby jsem k nim mel rychlý pristup. Technicky by mi vice vyhovovalo zpracovavat data z efektů drive nez ze samplu, ale musim nejdrive zpracovat sample, protoze v efektu muze byt zmena hlasitosti samplu a ta se musi zadat az po samotnem samplu kde je taky hodnota hlasitosti, ale prednastavena hodnota hlasitosti a ta bude pouzita, pokud se pri hrani noveho tonu nebude nastavovat hlasitost samplu ze samotneho efektu. A pokud se nebude nastavovat hlasitost z efektu, zustane nastavena hlasitost prednastavena z dat pro sampl. Kdyby jsem to udelal obracene, prepsal by jsem si nastavenou hlasitost z efektu prednastavenou hlasitosti ze samplu co by byla blbost. Tohle dodrzeni spravneho poradi zpracovani dat samplu a efektu mne stalo 1 SWAP (instrukci) navíc, protoze nejdrive potrebuji zpracovat vyssí 2 bajty z Longu (ze 4 bajtů) a pak nižší 2 bajty. Ale zustavam u pomocných promennych na 2 datovych registrech a nemusim načít třetí jak jsem psal ve vlákně o Chaos Guns. Chvili jsem si myslel, ze musim udelat tabulku pro frekvence tonu, ale nemusim, v MODu je vlastne kompletne hodnota cele periody, tak tohle by melo byt taky ok. Jak bude cas, pokusim se to roztocit (bez efektů v MODu) a jsem zvedav, kde vsude jsem nasekal po programove strance nejake hovadiny

                      První pointr na sampl (misto kde se sampl v MODu nachazi) mi zacina na druhe pozici v pameti (prvni pozice 4 bajtu je na 0), aby jsem v programu usetril 1 instrukci SUBQ.
                      Naposledy upravil Lisiak; 23.10.2023, 16:29:39.
                      Amiga - PMD 85

                      Komentovat


                        Autorem citovaného textu je Defor Přejít na původní příspěvek
                        Jen jsem se na to podíval z rychlíku.
                        Myslím, že používání or.l a and.l na nastavování nebo mazání jednoho bitu v datovém registru je pomalejší než k tomu použít instrukce bset.l a bclr.l.


                        Tohle je fajn a již používám (použitý zatím BSET). I instrukci BCHG (překlopení bitu) jsem v minulosti programoval a tedy to dělal složitě

                        @ALL: V rámci programování nové hudební rutiny hrající MODy jsem se drobátko potrápil se správným načtením samplů z MODu, ale přesně tohle jsem předpokládal, že to nedám napoprvé. Nicméně dnes, jak jsem si sedl k programování se to již tváří rozumně a já si dle všeho zahrál první řádek z prvního patternu správně. Zaměřil jsem se teď hlavně na práci se samply a ostatní je poslechově zatím taky ok. Přidal jsem zatím přeci jen 1 datový register jako pomocnou proměnnou. Tedy registre pro pomocnou proměnnou v kódu jsou: D0, D1 a nově ted i D2. Pomocný adresový registr je zatím jeden a to A0.

                        Amiga - PMD 85

                        Komentovat


                          Autorem citovaného textu je ObiWanKen Přejít na původní příspěvek
                          Tak SWAP je isto rychlejsie ako MOVEM. To uz je na tebe ktory sposob si vyberies. Ja si orientacne pozeram cas tu:

                          https://oldwww.nvg.ntnu.no/amiga/MC6...000timing.HTML
                          Celkovy pocet taktov je teda ked spocitam cislo pred zatvorkou s cislom v zatvorke? Viem, ze mi aj Defor daval odkaz na tabulku a myslim, ze vyzerala inak, ale nejako som jeho odkaz nedohladal a na nete som nasiel len tabulku rovnaku s tou, co si daval odkaz Ty.


                          EDIT:

                          dotaz 1:
                          V odkaze "Standard Instruction Execution Times"
                          nerozumiem poznamke:

                          ** The base time of six clock periods is increased to eight
                          if the effective address mode is register direct or
                          immediate (effective address time should also be added)​

                          Počet taktov v tabule je teda úplný, alebo sa tam ešte niečo pripočítáva?

                          dotaz 2:
                          V odkaze " Bit Manipulation Instruction Execution Times"
                          Čo je myslené tým rozdelením dynamic a static?
                          Nejak som toto nedohladal.

                          Autorem citovaného textu je sailor Přejít na původní příspěvek

                          řekla bych že je to takto:

                          - pokud <ea>= register direct, tj. An nebo Dn, místo 6 ticků je to 8, ale effective address time je v tomto případě =0
                          tj. ADD.L Ax,An ... ADD.L Dx,An .. ADD.L Ax,Dn a ADD.L Dx,Dn bude vždy =8.

                          - pokud <ea>= register indirect, například (An), je to takto:
                          ADD.L (Ax),Dn = 8 base + 4 ( délka výpočtu ea (An)) = 12
                          připočtená hodnota může být 0 až 10, podle té první tabulky - Effective Address Calculation Times
                          No jo, já ten nadpis "Effective Address Calculation Times" u te tabulky nejak odfiltroval... ,díky


                          @ALL: Do hudebni rutiny jsem dnes pridal timer pro 1 pattern a zahral jej v zakladu. Jsou to takove useknute tony a sample. Kdyz pridam timer pro rychlost hrani skladby, melo by se to zlepsit, ale nevyresi se uplne vse a premyslim, že soubezne s radky patternu skladby budu spracovavat po 1 bajtu na 1 radek patternu data zvlast jiz v kodu. Bude tam pouze info o tom, kdy ztlumit sampl, pokud ho bude treba ztlumit. Pokud to pak budu mit vyladeny, mohl bych to vlozit primo do MODu, protoze ta informace by byla v casti, kam se zapisuje vyska tonu pro sampl a v ten moment tam budou vzdy same nuly, ale k tomuhle reseni se zatim nechystam.

                          Zatim mam v programu stale 4 promenne ve 2 datovych registrech, na kazdou promennou 2 bajty, v dalsim datovem registru 4 bajty dat z patternu MODu a 3 adresove registre so stalymi adresami na pattern, sample a dodatocne data k samplům. Pomocne promenne 3 datove a 1 adresovy registr.

                          Dnes mne vyškolila instrukce DBF, kde jsem predpokladal, ze po opusteni programove smycky mi necha v datovem registry nulu, ale ono nastava opet snizeni, tedy v ramci 2 bajtu tam bude hodnota FFFF hexa, pokud tedy chceme nastavit hodnotu rychlou instrukci ADDQ.w, musí se dát +1 vůči hodnotě kterou chceme nastavit
                          Naposledy upravil Lisiak; 29.10.2023, 16:55:24.
                          Amiga - PMD 85

                          Komentovat


                            dotaz 2:
                            V odkaze " Bit Manipulation Instruction Execution Times"
                            Čo je myslené tým rozdelením dynamic a static?
                            Nejak som toto nedohladal.​
                            Instrukce pro bitové operace mají první parametr číslo bitu a druhý parametr cíl operace.
                            Static tady znamená, že je číslo bitu pomocí osmi bitů obsaženo přímo v kódu instrukce (např. btst.l #3,d0).
                            Dynamic znamená, že je číslo bitu uloženo v operandu (např. btst.l d1,d0).
                            Kódování bitových instrukcí třeba zde
                            Naposledy upravil Defor; 31.10.2023, 17:24:48.

                            Komentovat


                              Tak dnes jsem primárně dohledal 1 chybu, kvuli ktere mi MOD nehrál jak mel. Tou chybou bylo o 1 sampl posunute parametre pro delku samplu a prednastavenou hlasitost samplu. Tak jsem nejdříve hodnotu zpracovaneho samplu ponizil o 1 a ted jak jsem si k tomu sedl udeal drobnou upravu, ktera mne hned dodatecne napadla, jen jsem jiz na to nemel cas a to, ze jsem ponizil zaverecny skok na tyhle data. Ten skok se zadavat musi, tedy jsem jen snizil cislo pro dany skok a usetril tak 1 instrukci s odectem 1 o kterou jsem ponižoval hodnotu hrajiciho samplu, ktera je zadana primo v MODu a tedy tuhle hodnotu z programu ponizit jako ten primy skok v programu na data v MODu.

                              Pridal jsem v kodu data pro ztlumovani samplu a s kazdym radkem patternu z MODu se nacita i 1 bajt primo z programu ktery říká, jestli se ma nejaky sampl ztlumit aby nehrál. Tedy na 1 pattern pripada 64 bajtů. Tohle reseni je mozne jen kdyz vite, ktere skladby chcete hrat. Takhle se da jednoduse samotny format MODu rozsirovat o nejake dodatecne funkce, ale to ted nemam v planu a to ztlumovani samplu je nutnosti a zatim jednoduche a ucelne reseni. V tehle jednoduche skladbe je treba v 1 hudebnim kanalu v 1 patternu skladajiciho se ze 64 radku ztlumit dodatecne sampl na 2 mistech. Oproti starsi rutine hrajici muj format musim sampl ztlumovat o 1 radek v patternu drive, co znamena, ze tahle hudebni rutina hrajici format MOD je rychlesi, minimalne prozatim, ale i bude rychlejsi.

                              Ode dneška hraji 1 hudebni kanal v 1 patternu celkem verne (bez efektů), tak mam celkem radost. Ostatní příště
                              Amiga - PMD 85

                              Komentovat


                                Dnes jsem dokončil práci s patterny, tedy již hraju skladbu v její celkovych 2 patternech. Z 1 kanalu jiz hraji 2 kanaly (všechny kanaly již naprogramovany jen postupne pridavam, jak se mi to libi v poslechu). V druhem pridanem kanalu se mi ne vzdy nacetl sampl do HW registru, tak jsem klasicky pridal zpomaleni pomoci casovace CIA mezi ukonceni DMA prenosu a nactenim samplu. CIA mam na hodnote zatim 10 hexa. Sample se ted jiz nacitaji zatim vsechny. Toto zpomaleni jsem pridal pro vsechny hudebni kanaly. CIA časovač s 10 hexa jsem dal do podprogramu. Skladba se na jeji konci v hrani vrati na zacatek. Dovolil jsem si zjednodusit tuhle funkci na podminku, kdy neni umozneno pouzit posledni mozny pattern co umoznuje format MOD, ale to je 128.pattern, tak mi to asi nijak nevadi. Jednoduse na te pozici testuji pomoci jiz pouziteho MOVE nulový bajt, který mi oznacuje poslední vyuzity pattern v skladbe.

                                Jak bude čas, zpracuji praci s hlasitostí, kterou doposud beru jen jako prednastavenou z formatu MOD, ale ne ze samotneho radku patternu.

                                Naposledy upravil Lisiak; 07.11.2023, 13:56:52.
                                Amiga - PMD 85

                                Komentovat

                                Zpracovávám...
                                X