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 >
Text File  |  1992-06-28  |  5KB  |  132 lines

  1. #$4
  2.           Az ST hanggenerátora
  3. #$1
  4.  
  5.      Az ATARI ST-ben is a General Indus-
  6. try Corporation (GIC) igen elterjedt AY 
  7. 3-8910-ese zenél. Ugyanez (pontosabban 
  8. az olcsóbb AY 3-8912) adja a ZX Spectrum 
  9. 128 és a HT 1080Z hengjat is. Az IC két 
  10. jól elkülöníthetö részre bomlik: a prog-
  11. ramozható hanggenerátorra (PSG) és egy 
  12. 16 bites ki/bemenetre (PIO). A két vál-
  13. tozat az utóbbiban tér el, mivel az AY 
  14. 3-8912-ben a PIO csak 8 bites. Az ST-nek 
  15. mind a 16 bitre szüksége van, hiszen 
  16. csak a printer adatbitjeihez lefoglal 8-
  17. at, a többi vezérlés, illetve néhány 
  18. szabadon programozható, az ST mûködésé-
  19. hez nem szükséges feltétlenül. A PSG 3 
  20. oszcillátorból, három D/A átalakítóból, 
  21. egy zajgenerátorból és egy burkológörbe-
  22. generátorból áll.
  23.      Programozása 16 (0-15) regiszteren 
  24. keresztül történik, az elsô 14 a PSG, a 
  25. 14-es és a 15-ös a PIO regiszterei. Ki-
  26. emelt szerepe van a 7-es regiszternek, 
  27. ez állítja be a PSG és a PIO üzemmódja-
  28. it. Elsô három bitje az oszcillátorokat 
  29. rendeli hozzá a D/A kimenetekhez (A hoz-
  30. zárendelést a 0 jelenti!), a következô 
  31. három bit a zajgenerátort kapcsolja rá a 
  32. D/A kimenetekre. A 6.bit a PIO alsó 8 
  33. bitjének mûködését állítja be (1-kime-
  34. net, 0-bemenet), ugyanezt a feladatot 
  35. látja el a 7. bit, de a felsô 8 bitre. 
  36. Az oszcillátorok periódusidejét az elsô 
  37. 6 regiszter szabályozza páronként alsó/
  38. felsô osztásban, 12 biten. A periódusi-
  39. dôt a frekvenciából (=f) a következô 
  40. képlet alapján számolhatjuk ki:
  41.  
  42.                  85800/f
  43.  
  44.      A zenei hangok frekvenciaértékeit  
  45. megtalálhatjuk a négyjegyû függvénytáb-
  46. lázatokban.
  47.      A zajgenerátor periódusidejét a 6-
  48. os regiszter állítja be 5 biten.
  49.      A D/A kimenetek jelszintjét a 8.,9. 
  50. és 10.regiszterek alsó 4 bitjei állítják 
  51. be, ha a 4-es bit 0 értékû. Ellenkezô e-
  52. setben a kimenetekre a burkológörbe-ge-
  53. nerátor fog hatni (ilyenkor az alsó 4 
  54. bit közül az legalább az egyiknek 1-es-
  55. nek kell lennie, mert a PSG a D/A-k re-
  56. gisztereinek alsó négy nullájából a csa-
  57. torna kikapcsolt állapotára következ-
  58. tet).
  59.      A burkológörbe periódusidejét a 11-
  60. es és 12-es regiszterek állítják, alsó/
  61. felsô osztásban, 16 biten. Igen sajátos 
  62. módon szabályozható a burkológörbe hul-
  63. lámformája, ehhez elôbb a burkológörbe-
  64. generátor mûködését kell megismerni. A 
  65. PSG a burkológörbéit 32 periódus idôtar-
  66. tamú fázisokból építi fel, amelyek két, 
  67. egyenként 16 periódus idôtartamú blokk-
  68. ból tevôdnek össze. A 13-as regiszter 0. 
  69. bitje állítja be, hogy a burkológörbe 
  70. fázisai ismétlôdjenek (0), vagy az elsô
  71. fázis elsô blokkja után a hang állandó 
  72. amplitúdójú legyen (1). Elsô esetben az
  73. 1.bit a fázisok második blokkjának tar-
  74. talmát határozza meg (1=felfutás, 0=le-
  75. csengés), második esetben az állandó 
  76. amplitúdót (0=0, 1=15). A 2.bit a fázi-
  77. sok elsô blokkját határozza meg (1=fel-
  78. futás, 0=lecsengés). Ha a harmadik bit 
  79. 1-es, akkor a PSG az elsô fázis elsô 
  80. blokkjának az elejérôl indítja a burko-
  81. lógörbét, ellenkezô esetben csak a hul-
  82. lámformát állítja át, de nem indítja e-
  83. lôlrôl.  
  84.      A 14. és 15.regiszterek a PIO a-
  85. datregiszterei (alsó/felsô), ezek ki-
  86. osztásával most nem foglalkozunk.
  87. #$3
  88.            Gyakorlati tanácsok 
  89.       az AY 3-8910 alkalmazásához
  90. #$1
  91.      Igazán szép zenét úgy kaphatunk,  
  92. hogy a D/A-kat  közvetlenül programoz-
  93. zuk (a 7.regiszterben mindkét hozzáren-
  94. delést tiltjuk), de ez leköti a procesz-
  95. szort (azért a billentyûfigyelés megold-
  96. ható!).   
  97.      Ne használjuk a burkológörbe-gene-
  98. rátort (szerény lehetôségei miatt), he-
  99. lyette a hangerôt állítgassuk (mondjuk  
  100. minden videomegszakításban).
  101.    Ha egy csatornát el akarunk hallgat-
  102. tatni (szünet), ne a hozzárendeléseket 
  103. tiltsuk, mert ekkor kattan egyet (na mi-
  104. ért?), hanem a hozzá tartozó D/A regisz-
  105. ter alsó 4 bitjét nullázzuk ki.
  106. #$2
  107.      P.S.
  108. #$1
  109.      Ez mind nagyon szép és jó, mondhat-
  110. juk, de hogyan állítgathatjuk szeretett 
  111. AY 3-8910-esünk regisztereit?! Nos, ezt  
  112. legkényelmesebben az operációs rendszer 
  113. 32-es rendszerhívásával tehetjük meg. Az 
  114. XBIOS (32, Címbyte(felsô), Címbyte (al-
  115. só))-val kijelöljük azt a címet, ahol a 
  116. zene kezdôdik.
  117.      A zene a következôképpen tárolódik:  
  118. a 255-ös byte várakozást jelöl, melynek 
  119. hosszát az ezt követô byte-ból olvassa 
  120. ki a GEM. Az idôtartamot 1/50 másodperc-
  121. ben kell megadni, a 0 várakozás a zene 
  122. végét jelenti. A regiszterekre számukkal 
  123. hivatkozunk, a számot követô byte kerül 
  124. az adott regiszterbe.
  125.  
  126.             Jó zene-bonálást!
  127.  
  128.                               DÅNYA
  129.      
  130.       
  131.  
  132.