1 | ****************************************
|
---|
2 | * *
|
---|
3 | * R E P L A Y *
|
---|
4 | * Crunched/6 bits *
|
---|
5 | * -------------------------- *
|
---|
6 | * (c) 12.9.1991 by Doctor Lô / HCL *
|
---|
7 | * *
|
---|
8 | ****************************************
|
---|
9 | * *
|
---|
10 | * REPLAY joue une série de "segments" *
|
---|
11 | * dont la structure permet de composer *
|
---|
12 | * de véritables musiques : *
|
---|
13 | * *
|
---|
14 | * BANK (1o): La Bank où est le segment *
|
---|
15 | * TEMPO (1o): "Vitesse" (0 ->23.8 KHz) *
|
---|
16 | * START (2o): (Adresse de début)-1 !!! *
|
---|
17 | * SIZE (2o): Longueur en "quadruplets" *
|
---|
18 | * *
|
---|
19 | * La fin de la liste de segments est *
|
---|
20 | * codée: ($80+BANK du premier segment) *
|
---|
21 | * et la musique boucle tant qu'aucune *
|
---|
22 | * touche n'est frappée au clavier. *
|
---|
23 | * - *
|
---|
24 | * REPLAY accepte en entrée 2 pointeurs *
|
---|
25 | * dans la liste des segments: *
|
---|
26 | * -> on commence à jouer à partir de U *
|
---|
27 | * -> pour boucler, on reprend à X. *
|
---|
28 | * ------- *
|
---|
29 | * *
|
---|
30 | * L'intervalle entre deux "notes" est *
|
---|
31 | * TOUJOURS de 42+5*TEMPO microsecondes *
|
---|
32 | * réparties comme suit: *
|
---|
33 | * 31: Avant validation de la hauteur. *
|
---|
34 | * 4: Validation de la hauteur du son. *
|
---|
35 | * 7+5*TEMPO: boucle de temporisation. *
|
---|
36 | * *
|
---|
37 | ****************************************
|
---|
38 |
|
---|
39 |
|
---|
40 |
|
---|
41 | ORG $9F00 Last byte in $9F80
|
---|
42 | REPLAY PSHS U,Y,X,DP,B,A,CC
|
---|
43 | LDA #$E7
|
---|
44 | TFR A,DP
|
---|
45 | STX PLAY4-4 sgmnt début boucle
|
---|
46 | PULU A,B,X,Y
|
---|
47 | STA <$E5 bank du 1er sgmnt
|
---|
48 | PSHS B val. temporisation
|
---|
49 | BRA PLAY1
|
---|
50 |
|
---|
51 | *******début*de**la*boucle*REPLAY*******
|
---|
52 |
|
---|
53 | PLAY3 LDA ,X+ 6
|
---|
54 | ASLA 2
|
---|
55 | ASLA 2
|
---|
56 | STA *+8 5
|
---|
57 | LDA ,X 4
|
---|
58 | ANDA #3 2
|
---|
59 | ORA #0 2
|
---|
60 | STA <$CD 4------------note3
|
---|
61 | LDB ,S 4
|
---|
62 | BEQ *+5 3
|
---|
63 | DECB
|
---|
64 | BNE *-1
|
---|
65 |
|
---|
66 |
|
---|
67 | * Répartition du son sur le quadruplet:
|
---|
68 | *
|
---|
69 | * [54321010] [54325432] [54321010] *
|
---|
70 | * X:^^^^^^ *
|
---|
71 |
|
---|
72 | LDD ,X 5
|
---|
73 | LEAY -1,Y 5 fin de segment ?
|
---|
74 | BEQ NEWBNK 3
|
---|
75 | LDB [D,Y]
|
---|
76 | BRA PLAY4
|
---|
77 | NEWBNK LDB ,U 4 nouvelle Bank
|
---|
78 | BMI *+4 3 fin de musique ?
|
---|
79 | BRA *+5 non:continue
|
---|
80 | LDU #0 3 oui:recommence
|
---|
81 | STB <$E5 4
|
---|
82 | PLAY4 LSRA 2
|
---|
83 | LSRA 2
|
---|
84 | STA <$CD 4------------note4
|
---|
85 | LDB ,S 4
|
---|
86 | BEQ *+5 3
|
---|
87 | DECB
|
---|
88 | BNE *-1
|
---|
89 |
|
---|
90 |
|
---|
91 | * Répartition du son sur le quadruplet:
|
---|
92 | *
|
---|
93 | * [54321010] [54325432] [54321010] *
|
---|
94 | *X+1:^^^^^^ *
|
---|
95 |
|
---|
96 | LEAY ,Y 4 fin de segment ?
|
---|
97 | BEQ NEWSEG 3 oui:re-paramètre
|
---|
98 | MUL non:continue
|
---|
99 | JMP PLAY1
|
---|
100 | NEWSEG PULU A,B,X,Y 11 début;longueur;
|
---|
101 | STB ,S 4 nouveau tempo
|
---|
102 | PLAY1 LDA 1,X 5
|
---|
103 | LSRA 2
|
---|
104 | LSRA 2
|
---|
105 | STA <$CD 4------------note1
|
---|
106 | LDB ,S 4
|
---|
107 | BEQ *+5 3
|
---|
108 | DECB
|
---|
109 | BNE *-1
|
---|
110 |
|
---|
111 |
|
---|
112 | * Répartition du son sur le quadruplet:
|
---|
113 | *
|
---|
114 | * [54321010] [54325432] [54321010] *
|
---|
115 | *X+1: ^^ ^^^^ *
|
---|
116 |
|
---|
117 | LEAX 1,X 5
|
---|
118 | BRN * 3
|
---|
119 | PLAY2 LDA ,X+ 6
|
---|
120 | ANDA #3 2
|
---|
121 | STA *+8 5
|
---|
122 | LDA ,X 4
|
---|
123 | LSRA 2
|
---|
124 | LSRA 2
|
---|
125 | ORA #0 2
|
---|
126 | STA <$CD 4------------note2
|
---|
127 | LDB ,S 4
|
---|
128 | BEQ *+5 3
|
---|
129 | DECB
|
---|
130 | BNE *-1
|
---|
131 |
|
---|
132 |
|
---|
133 | * Répartition du son sur le quadruplet:
|
---|
134 | *
|
---|
135 | * [54321010] [54325432] [54321010] *
|
---|
136 | * X: ^^^^ ^^ *
|
---|
137 |
|
---|
138 | LDA $E7C8 5 touche frappée ?
|
---|
139 | BEQ PLAY3 3 non: on continue
|
---|
140 |
|
---|
141 | ********fin*de*la*boucle*REPLAY*********
|
---|
142 |
|
---|
143 | PULS B dépile le TEMPO
|
---|
144 | PULS CC,A,B,DP,X,Y,U,PC retour
|
---|