1000 ';********************************************************************
1010 ';*　  　 　　多分役に立つだろう機械語サブルーチン　Ｎｏ．４ 　      *
1020 ';*                                                                  *
1030 ';*                     サウンド再生機械語ルーチン                   *
1040 ';*                                1995年８月15日（火） by 渡辺 良一 *
1050 ';********************************************************************
1060 '
1070 '
1080 ';***ＰＣＭ音源の音声モード設定*********
1090 '    call SET_GS_EDI_FS
1100 '    mov  eax,dword ptr [esp+8]
1110 '    mov  bl,al
1120 '    mov  ah,21h
1130 '    call pword ptr fs:[80h]
1140 '    ret
1150 '
1160 '
1170 ';***ＳＮＤデータ再生*******************
1180 '    call SET_GS_EDI_FS
1190 '
1200 '   ;チャンネル番号(64〜71)
1210 '    mov  eax,dword ptr [esp+12]
1220 '    mov  bl,al
1230 '
1240 '
1250 '   ;指定のチャンネルで再生中のＰＣＭの再生中断
1260 '    mov  ah,27h
1270 '    call pword ptr fs:[80h]
1280 '
1290 '
1300 '   ;発音位置設定(０〜127)  0[左]−64[中央]−127[右]
1310 '    mov  eax,dword ptr [esp+24]
1320 '    mov  dl,al
1330 '    mov  ah,03h
1340 '    call pword ptr fs:[80h]
1350 '
1360 '
1370 '   ;音程(０〜127)  標準 61
1380 '    mov  eax,dword ptr [esp+16]
1390 '    mov  dh,al
1400 '   ;音量(１〜127)
1410 '    mov  eax,dword ptr [esp+20]
1420 '    mov  dl,al
1430 '   ;SNDデータアドレス
1440 '    mov  eax,14h
1450 '    mov  ds,ax
1460 '    mov  esi,dword ptr [esp+ 8]
1470 '   ;コール
1480 '    mov  ah,25h
1490 '    call pword ptr fs:[80h]
1500 '    ret
1510 '
1520 '
1530 '
1540 ';***波形ＲＡＭ初期化*******************
1550 '    call SET_GS_EDI_FS
1560 '    mov  edx,ffffffffh
1570 '    mov  ah,23h
1580 '    call pword ptr fs:[80h]
1590 '    ret
1600 '
1610 '
1620 '
1630 ';***ＳＮＤデータ再生状況***************
1640 '    call SET_GS_EDI_FS
1650 '    mov  eax,dword ptr [esp+ 8]
1660 '    mov  bl,al
1670 '    mov  ah,28h
1680 '    call pword ptr fs:[80h]
1690 '    mov  al,dl
1700 '    ret
1710 '
1720 '
1730 '
1740 ';***レジスタに必要な値をセットする*****
1750 'SET_GS_EDI_FS:
1760 '    mov  eax,14h
1770 '    mov  gs,ax
1780 '    mov  edi,dword ptr [esp+4]
1790 '    push 110h
1800 '    pop  fs
1810 '    ret
