GeneralSound/docs/Руководство по программированию v.1.3.doc
2025-02-15 18:26:49 +03:00

372 lines
40 KiB
Plaintext

{\rtf1\ansi\ansicpg1251\uc1 \deff0\deflang1033\deflangfe1049{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times New Roman};}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}{\f134\froman\fcharset0\fprq0{\*\panose 00000000000000000000}Times New Roman Cyr{\*\falt Times New Roman};}{\f135\froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times New Roman};}{\f136\froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times New Roman};}{\f138\froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times New Roman};}{\f139\froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times New Roman};}{\f140\froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times New Roman};}{\f141\fswiss\fcharset238\fprq2 Arial CE;}{\f142\fswiss\fcharset204\fprq2 Arial Cyr;}{\f144\fswiss\fcharset161\fprq2 Arial Greek;}{\f145\fswiss\fcharset162\fprq2 Arial Tur;}{\f146\fswiss\fcharset186\fprq2 Arial Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar\widctlpar\adjustright \f134\fs20\lang1049\cgrid \snext0 Îáû÷íûé;}{\s1\sb240\sa60\keepn\nowidctlpar\widctlpar\adjustright \b\f1\fs28\lang1049\kerning28\cgrid \sbasedon0 \snext0 çàãîëîâîê 1;}{\*\cs10 \additive Îñíîâíîé øðèôò;}}{\*\listtable{\list\listtemplateid1102467452\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent283{\leveltext\'03\'00. ;}{\levelnumbers\'01;}\b0\i0\f134\fs20\ulnone\fbias0 \fi-283\li283 }{\listname ;}\listid1716738721}}{\*\listoverridetable{\listoverride\listid1716738721\listoverridecount0\ls1}}{\info{\title GENERAL SOUND}{\author Çîíîâ Ñ.Þ.}{\operator Çîíîâ Ñ.Þ.}{\creatim\yr1998\mo10\dy6\hr11\min20}{\revtim\yr1998\mo10\dy6\hr11\min20}{\printim\yr1998\mo2\dy19\hr18\min25}{\version2}{\edmins0}{\nofpages6}{\nofwords2783}{\nofchars15868}{\*\company SC}{\nofcharsws19487}{\vern73}}\paperw11906\paperh16838\margl567\margr567\margt454\margb454 \widowctrl\ftnbj\aenddoc\lytprtmet\formshade\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot \fet0\sectd \sbknone\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \qc\nowidctlpar\widctlpar\adjustright \f134\fs20\lang1049\cgrid {\b\fs36 GENERAL SOUND
\par }\pard \qr\nowidctlpar\widctlpar\adjustright {\b (ñ) STINGER}{
\par }\pard \qc\nowidctlpar\widctlpar\adjustright {\b Ðóêîâîäñòâî ïî ïîäêëþ÷åíèþ è ïðîãðàììèðîâàíèþ}{\b\f0\lang1033 }{\b General Sound.
\par }\pard \qc\nowidctlpar\widctlpar\adjustright {\b Âåðñèÿ v1.03. Ðåäàêöèÿ 003.
\par }\pard\plain \s1\sb240\sa60\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \b\f1\fs28\lang1049\kerning28\cgrid {\f142 1. Êðàòêèå òåõíè÷åñêèå õàðàêòåðèñòèêè GS.
\par }\pard\plain \nowidctlpar\widctlpar\adjustright \f134\fs20\lang1049\cgrid {Ïðîöåññîð: Z80, 12MHz, áåç öèêëîâ wait.
\par }\pard \nowidctlpar\widctlpar\adjustright {ROM: 32k, - 27256
\par RAM: Static Ram 128k ,èç íèõ 112k äîñòóïíî äëÿ ìîäóëåé è}{\f0\lang1033 }{ñýìïëîâ â áàçîâîé âåðñèè.
\par INT : 37.5 KHz
\par Êàíàëû: 4 íåçàâèñèìûõ 8-ìè áèòíûõ êàíàëà, êàæäûé ñ 6-è áèòíûì êîíòðîëåì ãðîìêîñòè.
\par }\pard\plain \s1\sb240\sa60\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \b\f1\fs28\lang1049\kerning28\cgrid {\lang1033 2.}{\f142 Ïîäêëþ÷åíèå ê êîìïüþòåðó
\par }\pard\plain \sl-200\slmult0\nowidctlpar\widctlpar\adjustright \f134\fs20\lang1049\cgrid {\b\lang1033 GS }{âûïîëíåí â âèäå ñëîòà äëÿ êîìïüþòåðîâ ñ ñèñòåìíîé øèíîé â ñòàíäàðòå }{\f0\lang1033 Scorpion.
\par }{\i\ul Âíèìàíèå!}{ Î÷åíü ïîëåçíî ïðîêîíòðîëèðîâàòü íàïðÿæåíèå ïèòàíèÿ Âàøåãî êîìïüþòåðà. ×àñòî îíî î÷åíü çàíèæåíî (âïëîòü äî 4.5 âîëüò âìåñòî 5.0âîëüò) Ýòî ìîæåò ñêàçàòüñÿ íà êà÷åñòâå ðàáîòû }{\b\f0\lang1033 GS}{\f0\lang1033 }{âïëîòü äî ñáîåâ â ðàáîòå. Óñòîé÷èâàÿ ðàáîòà}{\b }{\b\f0\lang1033 GS}{\f0\lang1033 }{ãàðàíòèðóåòñÿ ïðè íàïðÿæåíèè ïèòàíèÿ íå ìåíåå 4.8 âîëüò.
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {Óáåäèòåëüíàÿ ïðîñüáà, âñå ïîäêëþ÷åíèÿ ïðîèçâîäèòü ïðè âûêëþ÷åííîì ïèòàíèè êîìïüþòåðà. Ïðè ïîäêëþ÷åíèè ê ñèñòåìíîìó ðàçúåìó ñëåäèòü çà ñîâïàäåíèåì êîíòàêòîâ, òàê êàê ñèñòåìíûé ðàçúåì íå èìååò êëþ÷à îò íåïðàâèëüíîãî ïîäêëþ÷åíèÿ.
\par }{\b\f0\lang1033 GS}{\f0\lang1033 }{âñòàâëÿåòñÿ òàêèì îáðàçîì, ÷òî åãî ìèêðîñõåìû ñìîòðÿò íà ìèêðîñõåìû êîìïüþòåðà.
\par Òåñò ïðàâèëüíîñòè ïîäêëþ÷åíèÿ}{\f0\lang1033 :
\par }\pard \fi851\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {\b 10 }{\b\f0\lang1033 OUT 187,244
\par 15 PAUSE 100
\par 20 PRINT IN 179
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {Íà ýêðàíå äîëæíî ïîÿâèòñÿ ÷èñëî 3}{\lang1033
\par }\pard\plain \s1\sb240\sa60\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \b\f1\fs28\lang1049\kerning28\cgrid {\lang1033 3}{\f142 . Êðàòêîå îïèñàíèå GS, èëè ìíîãî âñÿêîé ëàáóäû.
\par }\pard\plain \nowidctlpar\widctlpar\adjustright \f134\fs20\lang1049\cgrid {\b GS}{-ìóçûêàëüíàÿ êàðòî÷êà, ïðåäíàçíà÷åííàÿ äëÿ ïðîèãðûâàíèÿ ìóçûêàëüíûõ ìîäóëåé è}{\f0\lang1033 }{îòäåëüíûõ ñýìïëîâ(ýôôåêòîâ).
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {Ìîäóëè äëÿ }{\b GS}{ - ýòî ñòàíäàðòíûå Àìèæíûå}{\f0\lang1033 }{è PCøíûå 4-õ êàíàëüíûå MOD ôàéëû, à ñýìïëû - êàê Àìèæíûå signed sample, òàê è PCøíûå unsigned sample. Ïðîèãðûâàòåëü MOD ôàéëîâ â GS ÿâëÿåòñÿ}{\f0\lang1033 }{ïðàêòè÷åñêè ïîëíûì àíàëîãîì ProTracker'à}{\f0\lang1033 }{íà Àìèãå è ñîçäàâàëñÿ ïðè èíòåíñèâíîì èñïîëüçîâàíèè èñõîäíèêîâ ProTracker'a. (Èñõîäíèêè áûëè èç Protracker'à v2.1A by Lars}{\f0\lang1033 }{"ZAP" Hamre - Amiga Freelancers)
\par }\pard \nowidctlpar\widctlpar\adjustright {MOD Player ïîääåðæèâàåò âñå êîìàíäû Pro}{\f0\lang1033 }{Tracker'à, çà èñêëþ÷åíèåì äâóõ:
\par }{\b Å01 Filter On}{- Àìèãà-ñïåöèôè÷íàÿ êîìàíäà, âêëþ÷àåò ôèëüòð âûñîêèõ ÷àñòîò.
\par }{\b EFX Invert Loop}{ ß åùå íå âèäåë ïëåéåðà,}{\f0\lang1033 }{êîòîðûé áû ïîääåðæèâàë ýòó êîìàíäó. Âîçìîæíî, îíà ïîääåðæèâàåòñÿ íà êàêèõ-òî ñòàðûõ ïëåéåðàõ.
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {\b GS}{ ïðåäñòàâëÿåò èç ñåáÿ, ïî-ñóòè, ìèêðîïðîöåññîðíûé êîìïëåêñ ñî ñâîèì ïðîöåññîðîì, ÏÇÓ, ÎÇÓ è ïîðòàìè, è àáñîëþòíî íå}{\f0\lang1033 }{çàâèñèò îò ãëàâíîãî ïðîöåññîðà Ñïåêòðóìà,}{\f0\lang1033 }{÷òî ïîçâîëÿåò, íàïðèìåð, çàãðóçèòü ñâîé}{\f0\lang1033 }{ëþáèìûé ìîäóëü, ñáðîñèòü Ñïåêòðóì, çàãðóçèòü àññåìáëåð è òâîðèòü ïîä ëþáèìóþ ìóçûêó. Soft âíóòðè GS ïîëíîñòüþ áåðåò íà ñåáÿ}{\f0\lang1033 }{çàäà÷è ïðîèãðûâàíèÿ çâóêà, èíòåðïðåòàöèè}{\f0\lang1033 }{ìîäóëÿ è ò.ä. Ïðîãðàììèðîâàíèå GS'à ñâîäèòñÿ ê ïåðåäà÷å áàéò çà áàéòîì ìîäóëÿ}{\f0\lang1033 }{è/èëè ñýìïëîâ, à çàòåì òðåáóåòñÿ òîëüêî}{\f0\lang1033 }{ïîäàâàòü êîìàíäû òèïà: çàïóñòèòü ìîäóëü, óñòàíîâèòü ãëîáàëüíóþ ãðîìêîñòü ïðîèãðûâàíèÿ ìîäóëÿ, çàïóñòèòü ñýìïë #09 â}{\f0\lang1033 }{êàíàëå #02 è ò.ä.
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {Åñëè ïðåäïîëàãàåòñÿ çàãðóçèòü ìîäóëü}{\f0\lang1033 }{âìåñòå ñ ñýìïëàìè, òî ÎÁßÇÀÒÅËÜÍÎ òðåáóåòñÿ çàãðóæàòü âíà÷àëå ìîäóëü, à çàòåì ñýìïëû. Ïðè çàãðóçêå ìîäóëÿ î÷åíü ðåêîìåíäóåòñÿ}{\f0\lang1033 }{îñòàâèòü ñâîáîäíûìè 2ê ïàìÿòè, ò.å. çàãðóæàòü ìîäóëè äëèíîé ìàêñèìóì 110K. Ýòî óñëîâèå íå ÿâëÿåòñÿ íåîáõîäèìûì, íî åãî èñïîëíåíèå î÷åíü æåëàòåëüíî â öåëÿõ ñîâìåñòèìîñòè ñ ïîñëåäóþùèìè âåðñèÿìè.
\par Àíàëîãè÷íî î÷åíü ðåêîìåíäóåòñÿ îñòàâëÿòü}{\f0\lang1033 }{ïî 80 áàéò äëÿ êàæäîãî ñýìïëà, íàïðèìåð,}{\f0\lang1033 }{åñëè òðåáóåòñÿ çàãðóçèòü 63-õ êèëîáàéòíûé}{\f0\lang1033 }{ìîäóëü è 18 ñýìïëîâ, òî èìååì:
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Total_Sample_Length=112*1024-63*1024-2*1024-18*80=46688 áàéò}{\f0\lang1033 }{
\par Ýòî ñóììàðíàÿ äëèíà ñýìïëîâ, êîòîðûå ïðè}{\f0\lang1033 }{òàêîì ïîëîæåíèè âåùåé ìîãóò áûòü çàãðóæåíû.Åñëè æå, íàïðèìåð, òðåáóåòñÿ âû÷èñëèòü,}{\f0\lang1033 }{ñêîëüêî ïîìåñòèòñÿ â ïàìÿòü }{\b GS}{ 2-õ êèëîáàéòíûõ ñýìïëîâ, òî ýòî âû÷èñëÿåòñÿ ñëåäóþùèì îáðàçîì:
\par }\pard \nowidctlpar\widctlpar\adjustright {112*1024/(2048+80)=53 ñýìïëà.
\par  GS'å èìåþòñÿ 4 ôèçè÷åñêèõ êàíàëà, êîòîðûå è ïðîèãðûâàþò çâóê.
\par Êàíàëû 0 è 1 - ëåâûå, à 2 è 3 - ïðàâûå.}{\f0\lang1033 }{
\par }\pard\plain \s1\sb240\sa60\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \b\f1\fs28\lang1049\kerning28\cgrid {\f142 4. Èíòåðôåéñ ñî Ñïåêòðóìîì.
\par }\pard\plain \qj\nowidctlpar\widctlpar\adjustright \f134\fs20\lang1049\cgrid {Íà ìèð GS ñìîòðèò ïðè ïîìîùè 4 ðåãèñòðîâ:
\par {\pntext\pard\plain\f134\fs20\cgrid \hich\af134\dbch\af0\loch\f134 1. \tab}}\pard \qj\fi-283\li283\nowidctlpar\widctlpar{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec\pnb0\pni0\pnf134\pnfs20\pnstart1\pnindent283\pnhang{\pntxta . }}\ls1\adjustright {\b Command register}{ - ðåãèñòð êîìàíä, äîñòóïíûé äëÿ çàïèñè ïîðò ïî àäðåñó 187. Â}{\f0\lang1033 }{ýòîò ðåãèñòð çàïèñûâàþòñÿ êîìàíäû.}{\f0\lang1033
\par {\pntext\pard\plain\f134\fs20\cgrid \hich\af134\dbch\af0\loch\f134 2. \tab}}\pard \qj\fi-283\li283\nowidctlpar\widctlpar{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec\pnb0\pni0\pnf134\pnfs20\pnstart1\pnindent283\pnhang{\pntxta . }}\ls1\adjustright {\b Status register }{- ðåãèñòð ñîñòîÿíèÿ,}{\f0\lang1033 }{äîñòóïíûé äëÿ ÷òåíèÿ ïîðò ïî àäðåñó 187.
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {\ul Áèòû ðåãèñòðà}{:
\par }\pard \qj\fi1701\nowidctlpar\widctlpar\adjustright {7 - }{\b Data bit}{, ôëàã äàííûõ
\par 6 - Íåîïðåäåëåí
\par 5 - Íåîïðåäåëåí
\par 4 - Íåîïðåäåëåí
\par 3 - Íåîïðåäåëåí
\par 2 - Íåîïðåäåëåí
\par 1 - Íåîïðåäåëåí
\par 0 - }{\b Command bit}{, ôëàã êîìàíä
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Ýòîò ðåãèñòð ïîçâîëÿåò îïðåäåëèòü ñîñòîÿíèå }{\b GS}{, â ÷àñòíîñòè ìîæíî ëè ïðî÷èòàòü}{\f0\lang1033 }{èëè çàïèñàòü î÷åðåäíîé áàéò äàííûõ, èëè}{\f0\lang1033 }{ïîäàòü î÷åðåäíóþ êîìàíäó, è ò.ï.}{\f0\lang1033 }{
\par 3.}{\b Data register}{ - ðåãèñòð äàííûõ, äîñòóïíûé äëÿ çàïèñè ïîðò ïî àäðåñó 179. Â ýòîò}{\f0\lang1033 }{ðåãèñòð Ñïåêòðóì çàïèñûâàåò äàííûå, íàïðèìåð, ýòî ìîãóò áûòü àðãóìåíòû êîìàíä.
\par 4.}{\b Output register}{ - ðåãèñòð âûâîäà, äîñòóïíûé äëÿ ÷òåíèÿ ïîðò ïî àäðåñó 179. Èç}{\f0\lang1033 }{ýòîãî ðåãèñòðà Ñïåêòðóì ÷èòàåò äàííûå,}{\f0\lang1033 }{èäóùèå îò }{\b G}{S.
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {\b Command bit}{ â ðåãèñòðå ñîñòîÿíèé óñòàíàâëèâàåòñÿ àïïàðàòíî ïîñëå çàïèñè êîìàíäû}{\f0\lang1033 }{â ðåãèñòð êîìàíä. Ñáðàñûâàòüñÿ â 0 îí ìîæåò òîëüêî èç }{\b GS}{, ÷òî ñèãíàëèçèðóåò îá îïðåäåëåííîì ýòàïå èñïîëíåíèÿ êîìàíäû.}{\f0\lang1033 }{
\par }{\b Data bit}{ â ðåãèñòðå ñîñòîÿíèé ìîæåò áûòü}{\f0\lang1033 }{óñòàíîâëåí èëè ñáðîøåí êàê ïî æåëàíèþ}{\f0\lang1033 }{Ñïåêòðóìà, òàê è ïî æåëàíèþ }{\b GS}{: ïðè çàïèñè}{\f0\lang1033 }{Ñïåêòðóìîì â ðåãèñòð äàííûõ îí àïïàðàòíî}{\f0\lang1033 }{óñòàíàâëèâàåòñÿ â 1, à ïîñëå ÷òåíèÿ }{\b GS}{'îì èç ýòîãî ðåãèñòðà ñáðàñûâàåòñÿ â 0. Ïðè}{\f0\lang1033 }{çàïèñè GS â ðåãèñòð âûâîäà îí (âñå òîò æå}{\f0\lang1033 }{\b Data bit}{) àïïàðàòíî óñòàíàâëèâàåòñÿ â 1, à}{\f0\lang1033 }{ïîñëå ÷òåíèÿ èç ýòîãî ïîðòà Ñïåêòðóìîì}{\f0\lang1033 }{ñáðàñûâàåòñÿ àïïàðàòíî â 0. Íåñìîòðÿ íà òî, ÷òî ðåãèñòð äàííûõ è ðåãèñòð âûâîäà ðàñïîëîæåíû â ïðîñòðàíñòâå}{\f0\lang1033 }{àäðåñîâ ïîðòîâ ïî îäíîìó è òîìó æå àäðåñó}{\f0\lang1033 }{è âîçäåéñòâóþò íà îäèí è òîò æå áèò äàííûõ, îíè ÿâëÿþòñÿ äâóìÿ íåçàâèñèìûìè ðåãèñòðàìè. Çíà÷åíèå, îäèí ðàç çàïèñàííîå â}{\f0\lang1033 }{îäèí èç ýòèõ ðåãèñòðîâ, îñòàåòñÿ íåèçìåííûì â íåì äî íîâîé çàïèñè.
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Ñîñòîÿíèå áèòà äàííûõ î÷åíü ÷àñòî íåîïðåäåëåíî, è åñëè â ñïåöèôèêàöèè êîìàíä íå}{\f0\lang1033 }{îïðåäåëåíû çíà÷åíèÿ ýòîãî áèòà íà îïðåäåëåííûõ ýòàïàõ èñïîëíåíèÿ êîìàíäû, íåäîïóñòèìî äåëàòü êàêèå-ëèáî ïðåäïîëîæåíèÿ îòíîñèòåëüíî çíà÷åíèÿ ýòîãî áèòà.
\par }\pard\plain \s1\sb240\sa60\keepn\nowidctlpar\widctlpar\outlinelevel0\adjustright \b\f1\fs28\lang1049\kerning28\cgrid {\f142 5. Ñèñòåìà êîìàíä GS.
\par }\pard\plain \qj\fi284\nowidctlpar\widctlpar\adjustright \f134\fs20\lang1049\cgrid { íà÷àëå ïîçâîëþ ñåáå íåáîëüøîå îòñòóïëåíèå îò ñîáñòâåííî ñèñòåìû êîìàíä. GS, êàê èçâåñòíî, ïðåäíàçíà÷åí â îñíîâíîì äëÿ ïðîèãðûâàíèÿ ìîäóëåé è ñýìïëîâ.  äàííîé âåðñèè (1.03) GS ROM äîïóêàåòñÿ çàãðóçêà îäíîãî ìîäóëÿ è/èëè äî 32 ñýìïëîâ. Êàæäûé ñýìïë ïðè çàãðóçêå åãî â ïàìÿòü ïîëó÷àåò ñâîé óíèêàëüíûé èäåíòèôèêàòîð, êîòîðûé îäíîçíà÷íî îïðåäåëÿåò îáðàùåíèå ê äàííîìó ñýìïëó â êîìàíäàõ, êîòîðûå òðåáóþò íîìåð ñýìïëà. Ñàìûé ïåðâûé çàãðóæåííûé ñýìïë ïîëó÷àåò íîìåð (handle) = 1, ñëåäóþùèé - íîìåð 2, è ò.ä.
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {Òî æå ñàìîå ïðèìåíèìî è ê ìîäóëÿì, è ýòîò åäèíñòâåííûé çàãðóæåííûé ìîäóëü áóäåò èìåòü handle=1 ïîñëå çàãðóçêè. Îñîáåííîñòüþ äàííîé âåðñèè ÿâëÿåòñÿ òàêæå òî, ÷òî âíà÷àëå òðåáóåòñÿ çàãðóæàòü ìîäóëü, à çàòåì óæå ñýìïëû. Îñîáåííîñòè îïèñàíèÿ êîìàíä:
\par }\pard \nowidctlpar\widctlpar\adjustright {Êîìàíäû îïèñûâàþòñÿ ñëåäóþùèì îáðàçîì:
\par 1. Hex êîä êîìàíäû
\par 2. Íàçâàíèå êîìàíäû
\par 3. Âûïîëíÿåìûå äåéñòâèÿ ïðè èñïîëíåíèè êîìàíäû
\par 4. Ôîðìàò êîìàíäû
\par 5. Êîììåíòàðèè ê êîìàíäå
\par Ôîðìàò êîìàíäû îïèñûâàåòñÿ ñëåäóþùèì îáðàçîì:
\par }\pard \qc\nowidctlpar\widctlpar\adjustright {\b
\par }\pard \qc\nowidctlpar\widctlpar\box\brdrs\brdrw60\brsp20 \adjustright {\b GSCOM\tab EQU\tab 187
\par GSDAT \tab EQU \tab 179}{\f0\lang1033
\par }\pard \qc\nowidctlpar\widctlpar\adjustright {\f0\lang1033
\par }{\b \sect }\sectd \sbknone\linex0\headery709\footery709\cols2\colsx567\linebetcol\endnhere\sectdefaultcl \pard\plain \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 \f134\fs20\lang1049\cgrid {\b SC #NN}{\f0\lang1033 - }{Ïîñëàòü êîä êîìàíäû â ðåãèñòð êîìàíä
\par }\pard \fi1701\nowidctlpar\widctlpar\adjustright {LD A,#NN
\par OUT (GSCOM),A}{\f0\lang1033
\par }\pard \fi1701\nowidctlpar\widctlpar\adjustright {
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b WC}{\f0\lang1033 -}{ Îæèäàíèå ñáðîñà Command bit
\par }\pard \nowidctlpar\widctlpar\adjustright {WCLP}{\f0\lang1033 :\tab }{IN A,(GSCOM)
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {RRCA
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {JR C,WCLP}{\f0\lang1033
\par }\pard \fi2410\nowidctlpar\widctlpar\adjustright {
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b SD Data}{ }{\f0\lang1033 -}{ Ïîñëàòü äàííûå â ðåãèñòð äàííûõ
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {LD A,Data
\par OUT (GSDAT),A}{\f0\lang1033
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {\f0\lang1033
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b WD}{\b\f0\lang1033 -}{Îæèäàíèå ñáðîñà Data bit, ïî}{\f0\lang1033 }{ñóòè, îæèäàíèå, ïîêà }{\b GS}{\f0\lang1033 }{íå ïðèìåò ïîñëàííûå åìó äàííûå}{\f0\lang1033 }{
\par }\pard \nowidctlpar\widctlpar\adjustright {WDLP}{\f0\lang1033 :}{ }{\f0\lang1033 \tab }{IN A,(GSCOM)
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {RLCA
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {JR C,WDLP}{\f0\lang1033
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b GD Data}{ }{\f0\lang1033 - }{Ïðèíÿòü äàííûå èç ðåãèñòðà}{\f0\lang1033 }{äàííûõ
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {IN A,(GSDAT)}{\f0\lang1033
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {WN}{\f0\lang1033 - }{Îæèäàíèå óñòàíîâêè Data bit, ïî}{\f0\lang1033 }{ñóòè, îæèäàíèå î÷åðåäíûõ äàííûõ}{\f0\lang1033 }{îò }{\b GS}{
\par }\pard \nowidctlpar\widctlpar\adjustright {WNLP}{\f0\lang1033 :}{ }{\f0\lang1033 \tab }{IN A,(GSCOM)
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {RLCA
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {JR NC,WNLP\sect }\sectd \sbknone\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl \pard\plain \qc\nowidctlpar\widctlpar\box\brdrs\brdrw60\brsp20 \adjustright \f134\fs20\lang1049\cgrid {\b Êîìàíäû GS}{\b\f0\lang1033
\par }\pard \qc\nowidctlpar\widctlpar\adjustright {\b\f0\lang1033
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b \sect }\sectd \sbknone\linex0\headery709\footery709\cols2\colsx340\linebetcol\endnhere\sectdefaultcl \pard\plain \qc\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 \f134\fs20\lang1049\cgrid {\b #00 Reset flags}{
\par }\pard \nowidctlpar\widctlpar\adjustright {Ñáðàñûâàåò ôëàãè Data bit è Command}{\f0\lang1033 }{bit.
\par }\pard \fi567\nowidctlpar\widctlpar\adjustright {SC #00
\par }\pard \fi567\nowidctlpar\widctlpar\adjustright {WC
\par }\pard \nowidctlpar\widctlpar\adjustright {(Data bit=0, Command bit=0)
\par }{\f0\lang1033
\par }\pard \qc\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #0E Go in Covox mode}{\b\f0\lang1033 }{\b
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïåðåõîäèò â ðåæèì }{\b Ñ}{\b\f0\lang1033 ovox}{, íàïðÿìóþ}{\f0\lang1033 }{êîïèðóåò ðåãèñòð äàííûõ â ÖÀÏû äâóõ (ïðàâîãî è ëåâîãî) êàíàëîâ.}{\f0\lang1033 }{Âûõîä èç ýòîãî ðåæèìà - çàïèñü #00}{\f0\lang1033 }{ â ðåãèñòð êîìàíä.
\par }\pard \fi567\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {SC #0E
\par }\pard \fi567\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {WC
\par SD \\
\par SD \\
\par ...}{\f0\lang1033 - }{ / Ýòî âûâîä â ÖÀÏû
\par SD /
\par SC #00
\par WC
\par }\pard \nowidctlpar\widctlpar\adjustright {
\par }\pard \qc\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #F3 Warm restart
\par }\pard \nowidctlpar\widctlpar\adjustright {Ñáðàñûâàåò ïîëíîñòüþ }{\b GS}{, íî ïðîïóñêàåò}{\f0\lang1033 }{ýòàïû îïðåäåëåíèÿ êîëè÷åñòâà ñòðàíèö}{\f0\lang1033 }{ïàìÿòè è èõ ïðîâåðêè, ÷òî î÷åíü ñèëüíî}{\f0\lang1033 }{ óñêîðÿåò ïðîöåññ èíèöèàëèçàöèè.}{\f0\lang1033 }{
\par }\pard \fi567\nowidctlpar\widctlpar\adjustright {SC #F3
\par }\pard \fi567\nowidctlpar\widctlpar\adjustright {WC
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #F4 Cold restart
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïîëíûé ïåðåçàïóñê GS ñî âñåìè ïðîâåðêàìè. Ïî ñóòè, JP #0000.
\par }\pard \fi567\nowidctlpar\widctlpar\adjustright {SC #F4
\par }\pard \fi567\nowidctlpar\widctlpar\adjustright {WC}{\f0\lang1033
\par }\pard \fi567\nowidctlpar\widctlpar\adjustright {
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #20 Get total RAM
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïîëó÷èòü îáùèé îáúåì äîñòóïíîé ïàìÿòè}{\f0\lang1033 }{íà GS. (  áàçîâîé âåðñèè ýòî 112ê)}{\f0\lang1033 }{
\par }\pard \fi567\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {SC #20
\par }\pard \fi567\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {WC
\par GD RAM.L(Ìëàäøàÿ ÷àñòü)
\par WN
\par GD RAM.M(Ñðåäíÿÿ ÷àñòü)
\par WN
\par GD RAM.H(Ñòàðøàÿ ÷àñòü)
\par }\pard \nowidctlpar\widctlpar\adjustright {Total RAM=65536*RAM.H+256*RAM.M+RAM.L
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #21 Get free RAM
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïîëó÷èòü îáùèé îáúåì ñâîáîäíîé ïàìÿòè}{\f0\lang1033 }{ íà GS.
\par }\pard \fi567\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {SC #20
\par }\pard \fi567\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {WC
\par GD RAM.L(Ìëàäøàÿ ÷àñòü)
\par WN
\par GD RAM.M(Ñðåäíÿÿ ÷àñòü)
\par WN
\par GD RAM.H(Ñòàðøàÿ ÷àñòü)
\par Free_RAM=65536*RAM.H+256*RAM.M+RAM.L
\par }\pard \nowidctlpar\widctlpar\adjustright {
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #23 Get number of RAM Pages
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïîëó÷èòü ÷èñëî ñòðàíèö íà GS.
\par }\pard \nowidctlpar\widctlpar\adjustright {SC #23
\par WC
\par GD Number_RAM_Pages
\par  áàçîâîé âåðñèè 3 ñòðàíèöû.}{\f0\lang1033 }{
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #2A Set Module Master Volume
\par }\pard \nowidctlpar\widctlpar\adjustright {Óñòàíîâèòü ãðîìêîñòü ïðîèãðûâàíèÿ}{\f0\lang1033 }{ìîäóëåé.
\par }\pard \nowidctlpar\widctlpar\adjustright {SD Module_Master_Volume [#00..#40]}{\f0\lang1033
\par }\pard \nowidctlpar\widctlpar\adjustright {SC #2A
\par }\pard \nowidctlpar\widctlpar\adjustright {WC
\par [GD Old_Master_Volume] - Ñòàðàÿ ãðîìê}{\f0\lang1033
\par }\pard \nowidctlpar\widctlpar\adjustright {Ìàëåíüêèé ïðèìåð èñïîëüçîâàíèÿ äàííîé}{\f0\lang1033 }{ êîìàíäû:
\par }\pard \nowidctlpar\widctlpar\adjustright {(Ïðåäïîëàãàåòñÿ, ÷òî èãðàåòñÿ ìîäóëü)}{\f0\lang1033 }{
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {LD B,#40
\par }\pard \nowidctlpar\widctlpar\adjustright {LOOP:\tab LD A,B
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {OUT (GSDAT),A
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {LD A,#2A
\par OUT (GSCOM),A
\par EI
\par HALT
\par DJNZ LOOP
\par }\pard \nowidctlpar\widctlpar\adjustright {
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {LD A,#32
\par }\pard \fi720\nowidctlpar\widctlpar\adjustright {OUT (GSCOM),A
\par }\pard \nowidctlpar\widctlpar\adjustright {Âûøåîïèñàííîå ïëàâíî ñíèæàåò ãðîìêîñòü}{\f0\lang1033 }{èãðàþùåãî ìîäóëÿ, à çàòåì îñòàíàâëèâàåò}{\f0\lang1033 }{åãî.
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #2B Set FX Master Volume
\par }\pard \nowidctlpar\widctlpar\adjustright {Óñòàíîâèòü ãðîìêîñòü ïðîèãðûâàíèÿ}{\f0\lang1033 }{ýôôåêòîâ.
\par }\pard \nowidctlpar\widctlpar\adjustright {SD FX_Master_Volume [#00..#40]
\par SC #2B
\par WC
\par [GD Old_FX_Volume] - Ñòàðàÿ ãðîìêîñòü
\par Àíàëîãè÷íî ïðåäûäóùåé êîìàíäå, íî äåéñòâóåò íà ñýìïëû.Ñ ïîìîùüþ ýòèõ äâóõ êîìàíä ìîæíî ðåãóëèðîâàòü áàëàíñ ãðîìêîñòåé ìîäóëÿ è ñýìïëîâ,}{\f0\lang1033 }{è ò.ï.
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #2E Set Current FX
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Óñòàíîâèòü òåêóùèé ýôôåêò. Ïðîñòî}{\f0\lang1033 }{ïðèñâàèâàåò ïåðåìåííîé CURFX ýòî çíà÷åíèå. Åñëè êàêàÿ-ëèáî êîìàíäà òðåáóåò íîìåð ñýìïëà (sample handle), òî}{\f0\lang1033 }{ìîæíî âìåñòî ýòîãî íîìåðà ïîäàòü åé}{\f0\lang1033 }{#00 è èíòåðïðåòàòîð ïîäñòàâèò âìåñòî}{\f0\lang1033 }{ýòîãî íóëÿ çíà÷åíèå ïåðåìåííîé CURFX.}{\f0\lang1033 }{(Ñì. êîìàíäû #38, #39, #40-#4F äëÿ}{\f0\lang1033 }{ïîíèìàíèÿ âûøåèçëîæåííîãî.)
\par }\pard \nowidctlpar\widctlpar\adjustright {SD Cur_FX
\par SC #2E
\par WC
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #30 Load Module}{\b\f0\lang1033 }{\b
\par }\pard \nowidctlpar\widctlpar\adjustright {Çàãðóçêà ìîäóëÿ â ïàìÿòü.
\par }\pard \nowidctlpar\widctlpar\adjustright {SC #30
\par WC
\par [GD Module_Handle]-íîìåð ìîäóëÿ
\par (Command bit=0, Data bit=0)
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b SC #D1 Open Stream
\par }\pard \nowidctlpar\widctlpar\adjustright {Îòêðûòü ïîòîê WC
\par }\pard \nowidctlpar\widctlpar\adjustright {SD \\
\par WD \\
\par ... Áàéòû ìîäóëÿ
\par SD /
\par WD /
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b SC #D2 Close Stream
\par }\pard \nowidctlpar\widctlpar\adjustright {Çàêðûòü ïîòîêWC
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïðèìåð:
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LD HL,Mod_adress
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LD DE,0-Mod_length
\par LD C,GSCOM
\par LD A,#30
\par CALL SENDCOM
\par LD A,#D1
\par CALL SENDCOM
\par LD A,(HL)
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LOOP:\tab IN B,(C)
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {JP P,READY
\par IN B,(C)
\par JP M,LOOP
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {READY:OUT (GSDAT),A
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {INC HL
\par LD A,(HL)
\par INC E
\par JP NZ,LOOP
\par INC D
\par JP NZ,LOOP
\par WAIT:\tab IN B,(C) ; Æäåì ïðèíÿòèÿ
\par JP M,WAIT ;ïîñëåäíåãî áàéòà
\par LD A,#D2
\par CALL SENDCOM
\par IN A,(GSDAT) ; Íîìåð ìîäóëÿ
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {OUT (GSDAT),A
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LD A,#31
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {SENDCOM:\tab OUT (GSCOM),A
\par WAITCOM:\tab IN A,(GSCOM)
\par }\pard \fi720\li720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {RRCA
\par JR C,WAITCOM
\par RET
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #31 Play module
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïðîèãðûâàíèå ìîäóëÿ.
\par }\pard \nowidctlpar\widctlpar\adjustright {SD Module_Handle - íîìåð ìîäóëÿ
\par SC #31
\par WC
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #32 Stop module
\par }\pard \nowidctlpar\widctlpar\adjustright {Îñòàíîâèòü ïðîèãðûâàíèå ìîäóëÿ.
\par }\pard \nowidctlpar\widctlpar\adjustright {SC #32
\par WC
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #33 Continue module
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïðîäîëæèòü ïðîèãðûâàíèå ìîäóëÿ ïîñëå îñòàíîâêè.
\par }\pard \nowidctlpar\widctlpar\adjustright {SC #33
\par WC
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #38 Load FX
\par }\pard \nowidctlpar\widctlpar\adjustright {Çàãðóçêà ñýìïëà ýôôåêòà â ïàìÿòü.
\par }\pard \nowidctlpar\widctlpar\adjustright {Çàãðóæàåò áåççíàêîâûå ñýìïëû
\par (PC type)
\par SC #38
\par WC
\par [GD FX_Handle]-íîìåð ñýìïëà
\par (Command bit=0, Data bit=0)
\par SC #D1 (Open Stream-îòêðûòü ïîòîê)
\par WC
\par SD \\
\par WD \\
\par ... Áàéòû ñýìïëà
\par SD /
\par WD /
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b SC #D2 Close Stream
\par }\pard \nowidctlpar\widctlpar\adjustright {Çàêðûòü ïîòîê
\par }\pard \nowidctlpar\widctlpar\adjustright {WC
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Ïðè çàãðóçêå êàæäîãî ñýìïëà, â ïàìÿòè }{\b GS}{ ñîçäàåòñÿ äëÿ ýòîãî ñýìïëà çàãîëîâîê, â êîòîðîì îïèñûâàþòñÿ ðàçëè÷íûå ïàðàìåòðû ñýìïëà. Ïîñëå çàãðóçêè ýòè ïàðàìåòðû óñòàíàâëèâàþòñÿ â îïðåäåëåííûå çíà÷åíèÿ, êàê òî: }{\b Note}{=60, }{\b Volume}{=#40, }{\b FineTune}{=0, }{\b Seek- First}{=#0F, }{\b SeekLast}{=#0F, }{\b Priority}{=#80, }{\b No Loop}{ è âíóòðåííÿÿ ïåðåìåííàÿ }{\b CurFX}{ óñòàíàâëèâàåòñÿ ðàâíîé }{\b FX_Handle}{.
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Çàòåì êîìàíäàìè #40, #41, #42, #45, #46 è #47 ìîæíî ýòè çíà÷åíèÿ ïî óìîë÷àíèþ ñìåíèòü íà ñâîè. Ýòî òðåáóåòñÿ ïîòîìó ÷òî êîìàíäà #39 äëÿ èíèöèàöèè ïðîèãðûâàíèÿ ñýìïëà èñïîëüçóåò çíà÷åíèÿ ïàðàìåòðîâ èç çàãîëîâêà ñýìïëà.
\par  ñâîåì åñòåñòâåííîì âèäå ñýìïëû îáû÷íî ïëîõî ïàêóþòñÿ êîìïðåññîðàìè, íî ñæèìàåìîñòü îáû÷íî ìîæíî ïîäíÿòü, åñëè ïåðåâåñòè ñýìïë â Delta-âèä, ò.å. õðàíèòü íå àáñîëþòíûå çíà÷åíèÿ ñýìïëà, à îòíîñèòåëüíîå ñìåùåíèå îòíîñèòåëüíî ïðåäûäóùåãî áàéòà. Ïðèìåðíî âîò òàê ìîæíî ïåðåâåñòè ñýìïë â Delta-âèä:
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LD HL,Start_of_sample
\par LD DE,0-Length_of_sample
\par LD C,#00
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LOOP:\tab LD A,(HL)
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {SUB C
\par LD C,(HL)
\par LD (HL),A
\par INC E
\par JP NZ,LOOP
\par INC D
\par JP NZ,LOOP
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {À âîò êàê ìîæíî çàêà÷àòü ñýìïë:
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LD IX,Parameters
\par LD HL,Sample_adress
\par LD DE,0-Sample_length
\par LD C,GSCOM
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LD A,#38
\par CALL SENDCOM
\par LD A,#D1
\par CALL SENDCOM
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LD A,(HL)
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LOOP:\tab IN B,(C)
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {JP P,READY
\par IN B,(C)
\par JP M,LOOP
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {READY:\tab OUT (GSDAT),A
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {INC HL
\par ADD A,(HL)
\par INC E
\par JP NZ,LOOP
\par INC D
\par JP NZ,LOOP
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {WAIT:\tab IN B,(C) ; Æäåì ïðèíàòèÿ
\par }\pard \li709\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {JP M,WAIT ;ïîñëåäíåãî áàéòàLD A,#D2CALL SENDCOM
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {; Òåïåðü ïåðåîïðåäåëÿåì ïàðàìåòðû ñýìïëà ïî óìîë÷àíèþ ñâîèìè çíà÷åíèÿìè
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {LD A,(IX+#00)
\par }\pard \fi720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {OUT (GSDAT),A ; Íîòà
\par LD A,#40
\par CALL SENDCOM
\par LD A,(IX+#01)
\par OUT (GSDAT),A ; Ãðîìêîñòü
\par LD A,#41SENDCOM:\tab OUT (GSCOM), AWAITCOM:\tab IN A,(GSCOM)
\par RRCA
\par JR C,WAITCOM
\par RET
\par
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #39 Play FX
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïðîèãðûâàíèå ýôôåêòà.SD FX_Handle - íîìåð ñýìïëàSC #39WC
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {Ïðè èñïîëíåíèè ýòîé êîìàíäû ïðîèñõîäèò ñëåäóþùåå: ñìîòðÿòñÿ êàíàëû, óêàçàííûå â SeekFirst ïàðàìåòðå íàøåãî ñýìïëà, è åñëè õîòÿ-áû îäèí èç íèõ ñâîáîäåí, â íåì è ïðîèãðûâàåòñÿ ñýìïë, â ïðîòèâíîì ñëó÷àå ñìîòðÿòñÿ êàíàëû, óêàçàííûå â SeekLast è åñëè îäèí èç íèõ ñâîáîäåí, â íåì è èãðàåòñÿ ñýìïë, åñëè ñâîáîäíûõ íåò, òî ïðîñìàòðèâàþòñÿ âñå êàíàëû, óêàçàííûå SeekLast, èç íèõ âûáèðàåòñÿ êàíàë ñ íàèìåíüøèì ïðèîðèòåòîì è ñðàâíèâàåòñÿ ñ ïðèîðèòåòîì íàøåãî ñýìïëà (èìååòñÿ â âèäó ñýìïë, êîòîðûé ìû õîòèì ïðîèãðàòü), åñëè ó ýòîãî ñýìïëà áóäåò áîëüøèé ïðèîðèòåò, ÷åì ó ñýìïëà, óæå èãðàþùåãî â êàíàëå, òî èãðàþùèé â êàíàëå ñýìïë áóäåò îñòàíîâëåí, à íàø ñýìïë áóäåò çàïóùåí â ýòîì êàíàëå âìåñòî ñòàðîãî ñýìïëà. Âîò òàêàÿ âîò ïðèîðèòåòíàÿ ñõåìà. Êîãäà ñýìïë çàïóñêàåòñÿ â êàíàëå, òî åãî íîòà, ãðîìêîñòü è ò.ï. ïàðàìåòðû çàïèñûâàþòñÿ â îáëàñòü äàííûõ êàíàëà èç çàãîëîâêà ñýìïëà.}{\f0\lang1033 }{ îáùåì ñëó÷àå, ÷òîáû ïðîèãðàòü ñýìïë ñ íóæíûìè ïàðàìåòðàìè, âû ìîæåòå óñòàíîâèòü ýòè ïàðàìåòðû ïîñëå çàãðóçêè ñýìïëà è ñìåëî èñïîëüçîâàòü êîìàíäó #39. Åñëè æå ïàðàìåòðû äîëæíû ìåíÿòüñÿ, òî ìîæíî ïîñòóïàòü ñëåäóþùèì îáðàçîì: êîìàíäîé #2E ñäåëàòü òåêóùèì òðåáóåìûé ñýìïë, êîìàíäàìè #4x èçìåíèòü åãî ïàðàìåòðû, à çàòåì óæå çàïóñêàòü åãî êîìàíäîé #39.
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {Àëüòåðíàòèâíûé ìåòîä çàïóñêà ñýìïëîâ ïðåäîñòàâëÿþò êîìàíäû #80..#9F, ïðè èñïîëíåíèè ýòèõ êîìàíä âû ïðÿìî â êîäå êîìàíäû óêàçûâàåòå, â êàêîì êàíàëå òðåáóåòñÿ çàïóñòèòü ñýìïë, è êðîìå ýòîãî, âû ìîæåòå òàêæå óêàçàòü ñ êàêîé íîòîé è/èëè ãðîìêîñòüþ òðåáóåòñÿ çàïóñòèòü ñýìïë.
\par }\pard \qj\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #3A Stop FX in channels
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Îñòàíîâêà ïðîèãðûâàíèÿ ýôôåêòîâ â çàäàííûõ êàíàëàõ, êîòîðûå óêàçûâàþòñÿ â ìàñêå êàíàëîâ (Channel Mask).
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Â íåé åäèíèöà â n-íîì áèòå óêàçûâàåò íà òî, ÷òî ýôôåêò â n-íîì êàíàëå òðåáóåòñÿ îñòàíîâèòü
\par }\pard \nowidctlpar\widctlpar\adjustright {SD Channel_MaskSC #3AWCÎïèñàííîå âûøå åñòü èäåàëüíûé âàðèàíò ðàáîòû äàííîé êîìàíäû, íî ê ñîæàëåíèþ íå âñå òàê ïðîñòî â ýòîì ìèðå, è ýòà êîìàíäà äåéñòâóåò íå òàê, à èìåííî: åäèíèöà â áèòå 7 îñòàíàâëèâàåò ñýìïë â íóëåâîì êàíàëå, è ò.ï. Â ñëåäóþùèõ âåðñèÿõ ýòî áóäåò èñïðàâëåíî, à ïîêà ÿ ìîãó ïîðåêîìåíäîâàòü îñòàíàâëèâàòü âîîáùå âñå ñýìïëû ìàñêîé #FF.
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #3E Load FX (Extended version)
\par }\pard \nowidctlpar\widctlpar\adjustright {Çàãðóçêà ñýìïëà ýôôåêòà â ïàìÿòü. Ïîçâîëÿåò çàãðóæàòü ñýìïëû ñî çíàêîì.(Amiga type)SD #01 (Signed sample)SC #3EWC[GD FX_Handle]-íîìåð ñýìïëà(Command bit=0, Data bit=0)SC #D1 (Open Stream-îòêðûòü ïîòîê)WCSD \\WD \\ ... Áàéòû ñýìïëàSD /WD /
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b SC #D2 (Close Stream-çàêðûòü ïîòîê)
\par }\pard \nowidctlpar\widctlpar\adjustright {WC
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #40 Set FX Sample Playing Note
\par }\pard \nowidctlpar\widctlpar\adjustright {Óñòàíîâêà íîòû ïî óìîë÷àíèþ äëÿ òåêóùåãî ýôôåêòà.SD Note [0..95]SC #40}{\f0\lang1033
\par }{WC}{\f0\lang1033
\par }\pard \sl-200\slmult0\nowidctlpar\widctlpar\adjustright {Note=}{\f0\lang1033 \tab }{0 C-0}{\f0\lang1033
\par }\pard \li720\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {1 C#012 C-124 C-236 C-3 (C-1 â Àìèãå)48 C-4 (C-2 â Àìèãå)60 C-5 (C-3 â Àìèãå)72 C-684 C-7}{\f0\lang1033
\par }\pard \nowidctlpar\widctlpar\adjustright { äàííîé âåðñèè Sound Generators Wave 2, 3 ìîãóò âîñïðîèçâåñòè îêòàâû 3, 4 è 5, ïîýòîìó äîïóñòèìûì çíà÷åíèåì ïàðàìåòðà Note ÿâëÿåòñÿ äèàïàçîí îò 36 äî 71.
\par }\pard \nowidctlpar\widctlpar\adjustright {
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #41 Set FX Sample Volume
\par }\pard \nowidctlpar\widctlpar\adjustright {Óñòàíîâêà ãðîìêîñòè ïî óìîë÷àíèþ äëÿ òåêóùåãî ýôôåêòà.SD FX_Volume [#00..#40]SC #41WC
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #45 Set FX Sample Priority
\par }\pard \nowidctlpar\widctlpar\adjustright {Óñòàíîâêà ïðèîðèòåòà äëÿ òåêóùåãî ýôôåêòà.(Ñì. êîìàíäó #39)SD FX_Priority [#01..#fe]SC #45WC
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #46 Set FX Sample Seek First parameter
\par }\pard \nowidctlpar\widctlpar\adjustright {Óñòàíîâêà ïàðàìåòðà Seek First äëÿ òåêóùåãî ýôôåêòà.(Ñì. êîìàíäó #39)SD FX_SeekFirstSC #46WC
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #47 Set FX Sample Seek Last parameter
\par }\pard \nowidctlpar\widctlpar\adjustright {Óñòàíîâêà ïàðàìåòðà Seek Last äëÿ òåêóùåãî ýôôåêòà.(Ñì. êîìàíäó #39)SD FX_SeekLastSC #47WC
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #60 Get Song Position
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïîëó÷åíèå çíà÷åíèÿ ïåðåìåííîé Song_Position â òåêóùåì ìîäóëå.SC #60WCGD Song_Position [#00..#FF]
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {Ìîæíî èíòåðïðåòèðîâàòü êàê êîëè÷åñòâî ïðîèãðàííûõ ïàòòåðíîâ ìîäóëÿ. Ïîñëå ñòàðòà ìîäóëÿ ïðèíèìàåò çíà÷åíèå 0 è óâåëè÷èâàåòñÿ íà åäèíèöó ïîñëå ïðîèãðûâàíèÿ î÷åðåäíîãî ïàòòåðíà. Ýòà ïåðåìåííàÿ ìîæåò èñïîëüçîâàòüñÿ äëÿ ñèíõðîíèçèðîâàíèÿ ïðîöåññîâ â Ñïåêòðóìå ñ ïðîèãðûâàíèåì ìîäóëÿ. Äëÿ ýòîãî ìîæíî, íàïðèìåð, â íà÷àëå ïðîöåäóðû îáðàáîòêè ïðåðûâàíèÿ ñäåëàòü SC #60, çàòåì âûïîëíèòü ïðîöåäóðû ðàçëè÷íûõ îïåðàöèé ñ ýêðàíîì, ñêðîëëèíãà ñòðî÷åê è ò.ï. (ò.å. ÷òîáû áûëà äîñòàòî÷íàÿ äëÿ âûïîëíåíèÿ êîìàíäû çàäåðæêà), à çàòåì ïðî÷èòàòü çíà÷åíèå ïîðòà 179 (}{\b GD Song_Position}{), è ñðàâíèòü åãî ñ òðåáóåìûì è, â ñëó÷àå ðàâåíñòâà, ïåðåéòè íà ñëåäóþùóþ ÷àñòü äåìû, ò.å.if (Song_Position==My_Position)
\par }\pard \qj\nowidctlpar\widctlpar\adjustright { \tab then goto Next_Part_Of_Demo
\par }\pard \qj\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #61 Get Pattern Position
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Ïîëó÷åíèå çíà÷åíèÿ ïåðåìåííîé Pattern_Position â òåêóùåì ìîäóëå.SC #61WCGD Pattern_Position [#00..#3F]Ïîëó÷èòü çíà÷åíèå ñìåùåíèÿ â ïàòòåðíå (òåêóùèé ROW), èñïîëüçîâàíèå - àíàëîãè÷íî ïðåäûäóùåé êîìàíäå, îäíàêî òðåáóåòñÿ çàìåòèòü, ÷òî ýòà âåëè÷èíà èçìåíÿåòñÿ äîâîëüíî áûñòðî, è ïîýòîìó}{\f0\lang1033 :}{
\par }\pard \qj\nowidctlpar\widctlpar\adjustright { if (Pattern_Position>=My_Position)
\par }\pard \qj\fi720\nowidctlpar\widctlpar\adjustright { then goto Next_Part_Of_Demo
\par }\pard \qj\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #62 Get Mixed Position
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Ïîëó÷èòü çíà÷åíèå Pattern_Position, íåìíîãî ñìåøàííîé ñ Song_Position. SC #62WCGD Mixed_PositionMixed_Position: (ïî áèòàì)
\par }\pard \qj\li720\nowidctlpar\widctlpar\adjustright {7-Song_Position.16-Song_Position.05-Pattern_Position.54-Pattern_Position.43-Pattern_Position.32-Pattern_Position.21-Pattern_Position.10-Pattern_Position.0
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {Ò.å. åñëè ïîëó÷èòü Mixed_Position è ñäåëàòü ñ íèì AND #3F, òî ïîëó÷èòñÿ âûëèòûé Pattern_Position, à åñëè ïîñëå ïîëó÷åíèÿ åãî íåìíîãî RLCA, RLCA, AND #02 - òî ýòî áóäóò ìëàäøèå äâà áèòà Song_Position. Ñì. ïðèìå÷àíèÿ ê êîìàíäàì #60 è #61.
\par }\pard \nowidctlpar\widctlpar\adjustright {
\par }\pard \nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #63 Get Channel Notes
\par }\pard \nowidctlpar\widctlpar\adjustright {Ïîëó÷èòü íîòû âñåõ êàíàëîâ ìîäóëÿ.SC #63WCGD Note_of_channel_0WNGD Note_of_channel_1WNGD Note_of_channel_2WNGD Note_of_channel_3
\par }\pard \qj\fi284\nowidctlpar\widctlpar\adjustright {Åñëè â êàêîì-ëèáî êàíàëå çíà÷åíèå íîòû èçìåíèëîñü ñ ïîñëåäíåãî èñïîëíåíèÿ êîìàíäû #63, òî áèò 7 ïîëó÷åííîãî çàíà÷åíèÿ Note_of_channel_N áóäåò â íóëå, åñëè æå ýòî çíà÷åíèå òî æå ñàìîå, ÷òî è áûëî ðàíüøå, òî ýòîò áèò áóäåò â åäèíèöå. Ìëàäøèå ñåìü áèòîâ è åñòü ñîáñòâåííî íîòà îò 0 äî 95; åñëè ýòî çíà÷åíèå ðàâíî 127, òî ýòî îçíà÷àåò, ÷òî íèêàêèå ñýìïëû â êàíàëå íå èãðàþò. Äàííàÿ êîìàíäà ïðåäíàçíà÷åíà â îñíîâíîì äëÿ ïîñòðîåíèÿ íà åå îñíîâå ðàçëè÷íûõ àíàëèçàòîðîâ.
\par }\pard \qj\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #64 Get Channel Volumes
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Ïîëó÷èòü ãðîìêîñòè âñåõ êàíàëîâ ìîäóëÿ.SC #64WCGD Volume_of_channel_0WNGD Volume_of_channel_1WNGD Volume_of_channel_2WNGD Volume_of_channel_3Ñì. îïèñàíèå êîìàíäû #63
\par }\pard \qj\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #80 Direct Play FX Sample (#80..#83)
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Ïðîèãðûâàíèå ñýìïëà â çàäàííîì êàíàëå.SD Sample_NumberSC #80..#83 (Ìëàäøèå áèòû îïðåäåëÿþò íåïîñðåäñòâåííî íîìåð êàíàëà, â êîòîðîì òðåáóåòñÿ èãðàòü ñýìïë)WC
\par }\pard \qj\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #88 Direct Play FX Sample (#88..#8B)
\par }\pard \qj\nowidctlpar\widctlpar\adjustright {Ïðîèãðûâàíèå ñýìïëà â çàäàííîì êàíàëå ñ çàäàííîé íîòîé.SD Sample_NumberSC #88..#8B (Ìëàäøèå áèòû îïðåäåëÿþò íåïîñðåäñòâåííî íîìåð êàíàëà, â êîòîðîì òðåáóåòñÿ èãðàòü ñýìïë)WCSD Note [0..95]WD
\par }\pard \qj\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #90 Direct Play FX Sample (#90..#93)
\par }\pard \qj\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {Ïðîèãðûâàíèå ñýìïëà â çàäàííîì êàíàëå ñ çàäàííîé ãðîìêîñòüþ.SD Sample_NumberSC #90..#93 (Ìëàäøèå áèòû îïðåäåëÿþò íåïîñðåäñòâåí íî íîìåð êàíàëà, â êîòîðîì òðåáóåòñÿ èãðàòü ñýìïë)WCSD Volume [#00..#40]WD
\par }\pard \qj\nowidctlpar\widctlpar\box\brdrs\brdrw15\brsp20 \adjustright \shading2000 {\b #98 Direct Play FX Sample (#98..#9B)
\par }\pard \qj\sl-200\slmult0\nowidctlpar\widctlpar\adjustright {Ïðîèãðûâàíèå ñýìïëà â çàäàííîì êàíàëå ñ çàäàííîé íîòîé è ãðîìêîñòüþ.SD Sample_NumberSC #88..#8B (Ìëàäøèå áèòû îïðåäåëÿþò íåïîñðåäñòâåííî íîìåð êàíàëà, â êîòîðîì òðåáóåòñÿ èãðàòü ñýìïë)WCSD Note [0..95]WDSD Volume [#00..#40]WD --------------------îïðåäåëÿþò íåïîñðåäñòâåííî íîìåð êàíàëà, â êîòîðîì òðåáóåòñÿ èãðàòü ñýìïë)WC SD Note [0..95]}{\b \sect }\sectd \sbknone\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl \pard\plain \qj\nowidctlpar\widctlpar\adjustright \f134\fs20\lang1049\cgrid {
\par }}