home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
No Fragments Archive 10: Diskmags
/
nf_archive_10.iso
/
MAGS
/
BOMBA
/
BOMBA2.MSA
/
BOMBA2_DOCUMENT_AY38910.2
< prev
next >
Wrap
Text File
|
1992-06-28
|
5KB
|
132 lines
#$4
Az ST hanggenerátora
#$1
Az ATARI ST-ben is a General Indus-
try Corporation (GIC) igen elterjedt AY
3-8910-ese zenél. Ugyanez (pontosabban
az olcsóbb AY 3-8912) adja a ZX Spectrum
128 és a HT 1080Z hengjat is. Az IC két
jól elkülöníthetö részre bomlik: a prog-
ramozható hanggenerátorra (PSG) és egy
16 bites ki/bemenetre (PIO). A két vál-
tozat az utóbbiban tér el, mivel az AY
3-8912-ben a PIO csak 8 bites. Az ST-nek
mind a 16 bitre szüksége van, hiszen
csak a printer adatbitjeihez lefoglal 8-
at, a többi vezérlés, illetve néhány
szabadon programozható, az ST mûködésé-
hez nem szükséges feltétlenül. A PSG 3
oszcillátorból, három D/A átalakítóból,
egy zajgenerátorból és egy burkológörbe-
generátorból áll.
Programozása 16 (0-15) regiszteren
keresztül történik, az elsô 14 a PSG, a
14-es és a 15-ös a PIO regiszterei. Ki-
emelt szerepe van a 7-es regiszternek,
ez állítja be a PSG és a PIO üzemmódja-
it. Elsô három bitje az oszcillátorokat
rendeli hozzá a D/A kimenetekhez (A hoz-
zárendelést a 0 jelenti!), a következô
három bit a zajgenerátort kapcsolja rá a
D/A kimenetekre. A 6.bit a PIO alsó 8
bitjének mûködését állítja be (1-kime-
net, 0-bemenet), ugyanezt a feladatot
látja el a 7. bit, de a felsô 8 bitre.
Az oszcillátorok periódusidejét az elsô
6 regiszter szabályozza páronként alsó/
felsô osztásban, 12 biten. A periódusi-
dôt a frekvenciából (=f) a következô
képlet alapján számolhatjuk ki:
85800/f
A zenei hangok frekvenciaértékeit
megtalálhatjuk a négyjegyû függvénytáb-
lázatokban.
A zajgenerátor periódusidejét a 6-
os regiszter állítja be 5 biten.
A D/A kimenetek jelszintjét a 8.,9.
és 10.regiszterek alsó 4 bitjei állítják
be, ha a 4-es bit 0 értékû. Ellenkezô e-
setben a kimenetekre a burkológörbe-ge-
nerátor fog hatni (ilyenkor az alsó 4
bit közül az legalább az egyiknek 1-es-
nek kell lennie, mert a PSG a D/A-k re-
gisztereinek alsó négy nullájából a csa-
torna kikapcsolt állapotára következ-
tet).
A burkológörbe periódusidejét a 11-
es és 12-es regiszterek állítják, alsó/
felsô osztásban, 16 biten. Igen sajátos
módon szabályozható a burkológörbe hul-
lámformája, ehhez elôbb a burkológörbe-
generátor mûködését kell megismerni. A
PSG a burkológörbéit 32 periódus idôtar-
tamú fázisokból építi fel, amelyek két,
egyenként 16 periódus idôtartamú blokk-
ból tevôdnek össze. A 13-as regiszter 0.
bitje állítja be, hogy a burkológörbe
fázisai ismétlôdjenek (0), vagy az elsô
fázis elsô blokkja után a hang állandó
amplitúdójú legyen (1). Elsô esetben az
1.bit a fázisok második blokkjának tar-
talmát határozza meg (1=felfutás, 0=le-
csengés), második esetben az állandó
amplitúdót (0=0, 1=15). A 2.bit a fázi-
sok elsô blokkját határozza meg (1=fel-
futás, 0=lecsengés). Ha a harmadik bit
1-es, akkor a PSG az elsô fázis elsô
blokkjának az elejérôl indítja a burko-
lógörbét, ellenkezô esetben csak a hul-
lámformát állítja át, de nem indítja e-
lôlrôl.
A 14. és 15.regiszterek a PIO a-
datregiszterei (alsó/felsô), ezek ki-
osztásával most nem foglalkozunk.
#$3
Gyakorlati tanácsok
az AY 3-8910 alkalmazásához
#$1
Igazán szép zenét úgy kaphatunk,
hogy a D/A-kat közvetlenül programoz-
zuk (a 7.regiszterben mindkét hozzáren-
delést tiltjuk), de ez leköti a procesz-
szort (azért a billentyûfigyelés megold-
ható!).
Ne használjuk a burkológörbe-gene-
rátort (szerény lehetôségei miatt), he-
lyette a hangerôt állítgassuk (mondjuk
minden videomegszakításban).
Ha egy csatornát el akarunk hallgat-
tatni (szünet), ne a hozzárendeléseket
tiltsuk, mert ekkor kattan egyet (na mi-
ért?), hanem a hozzá tartozó D/A regisz-
ter alsó 4 bitjét nullázzuk ki.
#$2
P.S.
#$1
Ez mind nagyon szép és jó, mondhat-
juk, de hogyan állítgathatjuk szeretett
AY 3-8910-esünk regisztereit?! Nos, ezt
legkényelmesebben az operációs rendszer
32-es rendszerhívásával tehetjük meg. Az
XBIOS (32, Címbyte(felsô), Címbyte (al-
só))-val kijelöljük azt a címet, ahol a
zene kezdôdik.
A zene a következôképpen tárolódik:
a 255-ös byte várakozást jelöl, melynek
hosszát az ezt követô byte-ból olvassa
ki a GEM. Az idôtartamot 1/50 másodperc-
ben kell megadni, a 0 várakozás a zene
végét jelenti. A regiszterekre számukkal
hivatkozunk, a számot követô byte kerül
az adott regiszterbe.
Jó zene-bonálást!
DÅNYA