Rev 3235 Rev 3255
1 // Tento soubor definuje vse potrebne pro ulozeni skladeb do pameti programu. 1 // Tento soubor definuje vse potrebne pro ulozeni skladeb do pameti programu.
2 // Dale definuje pislusna makra pro snadne definice. Tyto definice jsou voleny 2 // Dale definuje pislusna makra pro snadne definice. Tyto definice jsou voleny
3 // zamerne tak, aby mohl byt pouzit stejny soubor s definici skladby jak 3 // zamerne tak, aby mohl byt pouzit stejny soubor s definici skladby jak
4 // pro vlozeni primo do firmwaru v dobe prekladu tak i k dodatecnemu nahrani 4 // pro vlozeni primo do firmwaru v dobe prekladu tak i k dodatecnemu nahrani
5 // skladby pres seriovou linku. 5 // skladby pres seriovou linku.
6   6  
7 // Definice hranic pameti pro ulozeni pisnicek 7 // Definice hranic pameti pro ulozeni pisnicek
8 #define STARTMEM 0x600 // Zde zacina pametoa oblast pro pisnicky 8 #define STARTMEM 0x600 // Zde zacina pametoa oblast pro pisnicky
9 #define ENDMEM 0x7ff // Zde konci pametova oblast pro pisnicky 9 #define ENDMEM 0x7ff // Zde konci pametova oblast pro pisnicky
10   10  
11 // Definice konstant pro kodovani dat 11 // Definice konstant pro kodovani dat
12 #define ENDOFDATA 0x3FFF // Priznak konce pisnicek (prazdna pamet) 12 #define ENDOFDATA 0x3FFF // Priznak konce pisnicek (prazdna pamet)
13 #define DATABEGIN 0x2000 // Kod zacatku skladby 13 #define DATABEGIN 0x2000 // Kod zacatku skladby
14 #define MASKBEGIN 0x3800 14 #define MASKBEGIN 0x3800
15 #define DATATEMPO 0x2800 // Kod pro nastaveni tempa 15 #define DATATEMPO 0x2800 // Kod pro nastaveni tempa
16 #define MASKTEMPO 0x3800 16 #define MASKTEMPO 0x3800
17 #define DATAPAUSE 0x3000 // Kod pro nastaveni mezery mezi notami 17 #define DATAPAUSE 0x3000 // Kod pro nastaveni mezery mezi notami
18 #define MASKPAUSE 0x3800 18 #define MASKPAUSE 0x3800
19 #define MASKNOTE 0x2000 // Nejvissi bit 0 urcuje, ze jde o notu 19 #define MASKNOTE 0x2000 // Nejvissi bit 0 urcuje, ze jde o notu
20   20  
21 // Pseudomakra pro jednoduchy zapis skladeb do zdrojaku jazyka C 21 // Pseudomakra pro jednoduchy zapis skladeb do zdrojaku jazyka C
22 #define BEGIN DATABEGIN+ // Zacatek pisnicky + posunuti oktav 22 #define BEGIN DATABEGIN+ // Zacatek pisnicky + posunuti oktav
23 #define TEMPO DATATEMPO+ // Delka nejskratsi noty v ms 23 #define TEMPO DATATEMPO+ // Delka nejskratsi noty v ms
24 #define PAUSE DATAPAUSE+ // Delka mezery mezi notami 24 #define PAUSE DATAPAUSE+ // Delka mezery mezi notami
25 #define END // Konec skladby, zde nic neznamena 25 #define END // Konec skladby, zde nic neznamena
26   26  
27 // Pseudomakra pro zapis not, zapisuje se cislo oktavy, nota, delka noty 27 // Pseudomakra pro zapis not, zapisuje se cislo oktavy, nota, delka noty
28 #define C *16 + SOUND_C + 128 * 28 #define C *16 + SOUND_C + 128 *
29 #define Cis *16 + SOUND_Cis + 128 * 29 #define Cis *16 + SOUND_Cis + 128 *
30 #define D *16 + SOUND_D + 128 * 30 #define D *16 + SOUND_D + 128 *
31 #define Dis *16 + SOUND_Dis + 128 * 31 #define Dis *16 + SOUND_Dis + 128 *
32 #define E *16 + SOUND_E + 128 * 32 #define E *16 + SOUND_E + 128 *
33 #define F *16 + SOUND_F + 128 * 33 #define F *16 + SOUND_F + 128 *
34 #define Fis *16 + SOUND_Fis + 128 * 34 #define Fis *16 + SOUND_Fis + 128 *
35 #define G *16 + SOUND_G + 128 * 35 #define G *16 + SOUND_G + 128 *
36 #define Gis *16 + SOUND_Gis + 128 * 36 #define Gis *16 + SOUND_Gis + 128 *
37 #define A *16 + SOUND_A + 128 * 37 #define A *16 + SOUND_A + 128 *
38 #define Ais *16 + SOUND_Ais + 128 * 38 #define Ais *16 + SOUND_Ais + 128 *
39 #define H *16 + SOUND_H + 128 * 39 #define H *16 + SOUND_H + 128 *
40 #define Space SOUND_Space + 128 * 40 #define Space SOUND_Space + 128 *
41   41  
42 // Pametova oblast 42 // Pametova oblast
43 #ORG 0x600,0x7FF {} // Vyhrazeni oblasti pameti pro ulozeni pisnicek 43 #ORG 0x600,0x7FF {} // Vyhrazeni oblasti pameti pro ulozeni pisnicek
44 #ROM 0x600 = { // Naplneni oblasti pameti daty 44 #ROM 0x600 = { // Naplneni oblasti pameti daty
45   45  
46 // Pisnicky jako soucast firwaru se vkladaji sem 46 // Pisnicky jako soucast firwaru se vkladaji sem
47 // Museji mit stejny format jako uvedene priklady aby zafungovaly makra 47 // Museji mit stejny format jako uvedene priklady aby zafungovaly makra
48 #include "Skladby\TheFinalSoundDown.txt" 48 #include "Skladby\TheFinalSoundDown.txt"
49 #include "Skladby\BednaOdWhisky.txt" 49 #include "Skladby\BednaOdWhisky.txt"
50 #include "Skladby\KdyzMeBaliZaVojacka.txt" 50 #include "Skladby\KdyzMeBaliZaVojacka.txt"
51 #include "Skladby\Medvedi.txt" 51 #include "Skladby\Medvedi.txt"
52   52  
53 // Koncova znacka a konec oblasti pro skladby 53 // Koncova znacka a konec oblasti pro skladby
54 ENDOFDATA 54 ENDOFDATA
55 } 55 }
56   56  
57 // Zruseni definic maker pro definici skladeb 57 // Zruseni definic maker pro definici skladeb
58 // V dalsim programu uz nebudou potreba 58 // V dalsim programu uz nebudou potreba
59 #undef BEGIN 59 #undef BEGIN
60 #undef TEMPO 60 #undef TEMPO
61 #undef PAUSE 61 #undef PAUSE
62 #undef END 62 #undef END
63 #undef C 63 #undef C
64 #undef Cis 64 #undef Cis
65 #undef D 65 #undef D
66 #undef Dis 66 #undef Dis
67 #undef E 67 #undef E
68 #undef F 68 #undef F
69 #undef Fis 69 #undef Fis
70 #undef G 70 #undef G
71 #undef Gis 71 #undef Gis
72 #undef A 72 #undef A
73 #undef Ais 73 #undef Ais
74 #undef H 74 #undef H
75 #undef Space 75 #undef Space