Stvorkanalova hudobna rutinka pre EAR

Zdrojový kód


3      5b00            *s
4      5b00            ;== Stvorkanalovy zvukovy program ZX-10  Bytepack Bratislava ==;
5      5b00                   org  34000
6      84d0 f3         p      di
7      84d1 dd21f784   obs    ld   ix,sc1
8      84d5 21b785            ld   hl,adst
9      84d8 0e04              ld   c,4
10     84da c5         o1     push bc
11     84db cd3a85            call p1
12     84de c1                pop  bc
13     84df 23                inc  hl
14     84e0 23                inc  hl
15     84e1 23                inc  hl
16     84e2 0d                dec  c
17     84e3 20f5              jr   nz,o1
18     84e5 3ef7              ld   a,247
19     84e7 dbfe              in   a,(254)
20     84e9 2f                cpl
21     84ea e60f              and  15
22     84ec c23885            jp   nz,kon
23     84ef 210004            ld   hl,1024
24     84f2 d9         sc     exx
25     84f3 0d         sc0    dec  c
26     84f4 c22885            jp   nz,s1
27     84f7 0e00       sc1    ld   c,0
28     84f9 2e00              ld   l,0
29     84fb 05         l1     dec  b
30     84fc c22c85            jp   nz,s2
31     84ff 0600       sc2    ld   b,0
32     8501 2e00              ld   l,0
33     8503 1d         l2     dec  e
34     8504 c23085            jp   nz,s3
35     8507 1e00       sc3    ld   e,0
36     8509 2e00              ld   l,0
37     850b 15         l3     dec  d
38     850c c23485            jp   nz,s4
39     850f 1600       sc4    ld   d,0
40     8511 2e00              ld   l,0
41     8513 7d         l4     ld   a,l
42     8514 e610              and  #10
43     8516 cb25              sla  l
44     8518 d3fe              out  (254),a
45     851a d9                exx
46     851b 2b                dec  hl
47     851c 7c                ld   a,h
48     851d b5                or   l
49     851e d9                exx
50     851f c2f384            jp   nz,sc0
51     8522 d3fe              out  (254),a
52     8524 d9                exx
53     8525 c3d184            jp   obs
54     8528 00         s1     nop
55     8529 c3fb84            jp   l1
56     852c 00         s2     nop
57     852d c30385            jp   l2
58     8530 00         s3     nop
59     8531 c30b85            jp   l3
60     8534 00         s4     nop
61     8535 c31385            jp   l4
62     8538 fb         kon    ei
63     8539 c9                ret
64     853a 7e         p1     ld   a,(hl)
65     853b b7                or   a
66     853c ca4b85            jp   z,p2
67     853f 35                dec  (hl)
68     8540 ddcb0326          sla  (ix+3)
69     8544 ddcb03e6          set  4,(ix+3)
70     8548 c38885            jp   psix
71     854b e5         p2     push hl
72     854c 23                inc  hl
73     854d 4e                ld   c,(hl)
74     854e 23                inc  hl
75     854f 46                ld   b,(hl)
76     8550 0a                ld   a,(bc)
77     8551 03                inc  bc
78     8552 70                ld   (hl),b
79     8553 2b                dec  hl
80     8554 71                ld   (hl),c
81     8555 feef              cp   #ef
82     8557 cc8e85            call z,odzac
83     855a ddcb02a6          res  4,(ix+2)
84     855e 21d085            ld   hl,frq
85     8561 4f                ld   c,a
86     8562 e60f              and  15
87     8564 fe0f              cp   15
88     8566 2004              jr   nz,pp0
89     8568 ddcb02e6          set  4,(ix+2)
90     856c 5f         pp0    ld   e,a
91     856d 1600              ld   d,0
92     856f 19                add  hl,de
93     8570 7e                ld   a,(hl)
94     8571 cb61              bit  4,c
95     8573 2802              jr   z,p3
96     8575 cb3f              srl  a
97     8577 dd7701     p3     ld   (ix+1),a
98     857a 79                ld   a,c
99     857b 07                rlca
100    857c 07                rlca
101    857d 07                rlca
102    857e 07                rlca
103    857f e60e              and  14
104    8581 3c                inc  a
105    8582 e1                pop  hl
106    8583 77                ld   (hl),a
107    8584 dd36031f          ld   (ix+3),#1f
108    8588 110800     psix   ld   de,8
109    858b dd19              add  ix,de
110    858d c9                ret
111    858e 110c00     odzac  ld   de,12
112    8591 19                add  hl,de
113    8592 4e                ld   c,(hl)
114    8593 23                inc  hl
115    8594 46                ld   b,(hl)
116    8595 b7                or   a
117    8596 ed52              sbc  hl,de
118    8598 e5                push hl
119    8599 60                ld   h,b
120    859a 69                ld   l,c
121    859b 7e                ld   a,(hl)
122    859c 23                inc  hl
123    859d be                cp   (hl)
124    859e 2b                dec  hl
125    859f 2004              jr   nz,odzc1
126    85a1 af                xor  a
127    85a2 77                ld   (hl),a
128    85a3 1801              jr   odzc2
129    85a5 34         odzc1  inc  (hl)
130    85a6 3c         odzc2  inc  a
131    85a7 eb                ex   de,hl
132    85a8 6f                ld   l,a
133    85a9 2600              ld   h,0
134    85ab 29                add  hl,hl
135    85ac 19                add  hl,de
136    85ad 4e                ld   c,(hl)
137    85ae 23                inc  hl
138    85af 46                ld   b,(hl)
139    85b0 e1                pop  hl
140    85b1 0a                ld   a,(bc)
141    85b2 03                inc  bc
142    85b3 70                ld   (hl),b
143    85b4 2b                dec  hl
144    85b5 71                ld   (hl),c
145    85b6 c9                ret
146    85b7 00         adst   db   0
147    85b8 cf85              dw   sx
148    85ba 00                db   0
149    85bb cf85              dw   sx
150    85bd 00                db   0
151    85be cf85              dw   sx
152    85c0 00                db   0
153    85c1 cf85              dw   sx
154    85c3 00                db   0
155    85c4 e285              dw   ma
156    85c6 00                db   0
157    85c7 e685              dw   mb
158    85c9 00                db   0
159    85ca ea85              dw   mc
160    85cc 00                db   0
161    85cd ee85              dw   md
162    85cf ef         sx     db   #ef
163    85d0 fff1e3d6   frq    db   255,241,227,214
164    85d4 cabfb4aa          db   202,191,180,170
165    85d8 a1988f87          db   161,152,143,135
166    85dc 7f78726b          db   127,120,114,107
167    85e0 ffef       fax    db   #ff,#ef
168    85e2 0001e085   ma     dw   #0100,fax
169    85e6 0001e085   mb     dw   #0100,fax
170    85ea 0001e085   mc     dw   #0100,fax
171    85ee 0001e085   md     dw   #0100,fax
172    85f2             
173    85f2            ;4-kanalovy hudobny generator
174    85f2            ;          ZX-10
175    85f2            ;      J.Deak (c)1989
176    85f2            ;    Bytepack Bratislava
177    85f2            ;
178    85f2            ;skladbu treba rozlozit na bloky
179    85f2            ;pre jednotlive kanaly
180    85f2            ;zaciatok bloku treba oznacit
181    85f2            ;navestim a blok napisat vo for-
182    85f2            ;me:
183    85f2            ;bl1a  db #00,#00,#00,#00
184    85f2            ;      db #00,#00,#00,#00  atd
185    85f2            ;za #00 sa napisu noty
186    85f2            ;hexacisla maju takuto strukturu
187    85f2            ;- prava cislica (4bity)
188    85f2            ;  udava ton 0-e  (beep 0-14)
189    85f2            ;              f medzera
190    85f2            ;
191    85f2            ;- druha cislica:
192    85f2            ;        1bit 0-nizsia 1-vyssia
193    85f2            ;                  oktava
194    85f2            ;            (pre medzeru 1)
195    85f2            ;
196    85f2            ;        2-4bit dlzka noty
197    85f2            ;            (bin)000-1doba
198    85f2            ;                 011-4doby
199    85f2            ;                 111-8dob
200    85f2            ;
201    85f2            ; !!!!cislo #ef ukoncuje blok!
202    85f2            ;
203    85f2            ;priklad : #72  ton:d
204    85f2            ;               okt:vyssia
205    85f2            ;              doby:4
206    85f2            ;          #60  ton:c
207    85f2            ;               okt:nizsia
208    85f2            ;              doby:4
209    85f2            ;
210    85f2            ;do ma,mb,mc,md treba napisat
211    85f2            ;adresy blokov (navestia)
212    85f2            ;v tom poradi,v akom budu hrane
213    85f2            ;
214    85f2            ;(a,b,c,d-kanaly)
215    85f2            ;
216    85f2            ;napr.
217    85f2            ;ma   dw  #0300,fax
218    85f2            ;     dw  fa1,fa1
219    85f2            ;
220    85f2            ;     #03-pocet adres
221    85f2            ;      fax-medzera na zaciatku
222    85f2            ;      fa1-navestie bloku
223    85f2            ;(ak ma byt niekt.kanal v urc.
224    85f2            ;case vypnuty,treba napisat blok
225    85f2            ;zlozeny zo samych medzer
226    85f2            ;
227    85f2            ;!!!hrane bloky sa musia casovo
228    85f2            ;   kryt!!!
229    85f2            ;   tempo  ln=19  (ld hl,xxxx)
230    85f2                   end

 adst   85b7  *  fax    85e0  *  frq    85d0  *  kon    8538  *
 l1     84fb  *  l2     8503  *  l3     850b  *  l4     8513  *
 ma     85e2  *  mb     85e6  *  mc     85ea  *  md     85ee  *
 o1     84da  *  obs    84d1  *  odzac  858e  *  odzc1  85a5  *
 odzc2  85a6  *  p      84d0  *  p1     853a  *  p2     854b  *
 p3     8577  *  pp0    856c  *  psix   8588  *  s1     8528  *
 s2     852c  *  s3     8530  *  s4     8534  *  sc     84f2  *
 sc0    84f3  *  sc1    84f7  *  sc2    84ff  *  sc3    8507  *
 sc4    850f  *  sx     85cf  *                                

Bytes:290  labels:34  errors:0   


Popis
Toto je hradlo umoznujuce pisat stvorkanalovu hudbu na Spektre 48k v rozsahu dvoch oktav s volume obalkami. Podrobny popis ako pisat hudbu je napisany na konci zdrojaku.

Poznámky
Ak mate zaujem o nejaku ukazku, skuste Turecky pochod zdrojak, ukazka v MP3).

Poslal
Bytepack