Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO ■サウンド機能 解説 o サウンド機能の種類 --------------------------+---------------------------------------- タイプ |I/Oポートに接続されている機能 --------------------------+---------------------------------------- PC-9801-26型 (*1)|YM2203(*7) PC-98DO+内蔵型 |機能識別ID,YM2608(*7) PC-9801-73型 (*2)|機能識別ID,YM2608,μPD6380(*8) PC-9801-86型 (*3)|機能識別ID,YM2608,86型PCM 98MULTi CanBe内蔵型 (*4)|機能識別ID,YMF288(*9),CS4231(*10) PC-9821X・N内蔵型 (*5)|機能識別ID,CS4231・CS4232 PC-9821XE-E02 (*6)|機能識別ID,CS4231 98MULTi CanBe3内蔵型 (*4)|機能識別ID,YMF288(*9),CS4232(*10) --------------------------+---------------------------------------- *1:PC-9801-26初代・K,PC-9801U-03,FM音源内蔵のPC-9801,PC-98DOが該当 *2:PC-98GS内蔵音源は機能的に同等。また、PC-9801-76(マルチメディア エンジンセット)に含まれているPC-9801-73も同じ *3:PC-9821Aシリーズ、PC-9821初代・Ce・Ce2・Cs2の内蔵音源も機能的に同等 *4:PC-9821Cf・Cx・Cb・Cx2・Cb2・Na7・Nx内蔵音源 *5:PC-9821Xt・Xa・Xf・Xn・Xp・Xs・Nf・Np・Xa10・Xa9・Xa7・Xt13・Xe10/C4・Xa12・Xa7e 内蔵音源 *6:PC-9821Xe10/4,PC-9801BX4用オプション PC-9821Xb10用オプション-B01 *7:FM音源用LSI *8:オーディオ用DSP *9:YM2608互換FM音源用LSI *10:Microsoft社製Windows Sound Systemボード互換PCM音源LSI o サウンド機能の種類は、以下のI/Oポートを読み出して調べることができる。 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- A460h |BYTE| R |サウンド機能識別用ID読みだし -----------+----+---+-------------------------------------------------- [FM音源LSI(YM2203,YM2608)の概要] o YM2203はヤマハ製のFM音源LSIで、FM音源3声、SSG音源3声の同時発声が可能。 o YM2608はYM2203の上位互換製品で、FM音源6声、SSG音源3声、リズム音源6声、 ADPCM音源1声を同時発声可能(ただし、YM2608を搭載したPC-9800(本体, ボードとも)ではADPCM用のバッファメモリを搭載していないため、ADPCM機能 は使用不可)。 YMF288は、YM2608と機能的な差異はないため、ここではYM2608とまとめて 記述する。 o FM音源LSIが使用するI/Oアドレスは以下の通り。 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- 0188h |BYTE| R |ステータスフラグ 0188h |BYTE| W |レジスタ指定 018Ah |BYTE|R/W|データ入出力 018Ch |BYTE| R |拡張ステータスフラグ(YM2608のみ) 018Ch |BYTE| W |拡張バンク レジスタ指定(YM2608のみ) 018Eh |BYTE|R/W|データ入出力(YM2608のみ) -----------+----+---+-------------------------------------------------- * PC-9801-73・86は、0188〜018EhのI/Oポートを0288〜028Ehに変更可能。 o FM音源LSIの詳細は、メーカ発行のデータシート参照。 o YM2608搭載機では、YM2203と互換性を保つため、リセット時にYM2608で拡張 されたレジスタのI/Oポートがマスクされる。YM2608で拡張された機能を 使用するためには、I/O A460hでマスクを解除する必要がある。 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- A460h |BYTE| W |YM2608機能のマスク制御 -----------+----+---+-------------------------------------------------- o FM音源LSIを搭載した本体・ボード上には、サウンド機能を制御するための サウンドBIOS ROMが用意されている。このサウンドBIOSは、YM2203相当の 機能のサポートのみで、YM2608の拡張部分やPCMはサポートしていない。 拡張サウンドドライバ(AVSDRV.SYS,AVSDRV.EXE)を利用すれば、PC-9801-86で 拡張された機能まで利用できる。 関連: INT D2h [オーディオ用DSP(μPD6380)の概要] o PC-9801-73型サウンド機能は、オーディオ用DSP(μPD6380)を使用している。 DSPを利用して、ADPCMやリアルタイムエフェクト機能を実現している。DSP制御 は、拡張サウンドドライバ(AVSDRV.SYS,AVSDRV.EXE)がサポートしている。 o DSPが使用するI/Oアドレスは以下の通り。 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- A462h |BYTE|R/W|詳細不明 A464h |BYTE|R/W|詳細不明 -----------+----+---+-------------------------------------------------- o DSPの詳細は、メーカ発行のデータシート参照。 [86型PCMの概要] o PC-9801-86型サウンド機能は、独自のPCM音源(86型PCM)を使用している。 ステレオ、標本化周波数レート=44.10kHz,33.08kHz,22.05kHz,16.54kHz, 11.03kHz,8.27kHz,5.52kHz,4.13kHz、量子化ビット数=8ビット,16ビットの 録再能力がある。 PCM音源とCPUは、FIFOを介してデータを転送する。 o YM2608出力、CD-DA出力、ライン入力、ライン出力等のミキサ(アナログ電子 ボリューム)機能も含む。 o 86型PCMが使用するI/Oアドレスは以下の通り。 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- A466h |BYTE| R |FIFOステータス A466h |BYTE| W |電子ボリューム制御 A468h |BYTE|R/W|FIFO制御 A46Ah |BYTE|R/W|D/Aコンバータ制御 A46Ah |BYTE| W |FIFO割込タイミング設定 A46Ch |BYTE|R/W|FIFO入出力 A66Eh |BYTE|R/W|サウンド出力ミュート制御 -----------+----+---+-------------------------------------------------- [PC-9821X・N内蔵型音源の概要] o PC-9821Cf・Cx・Cb・Nf・Np・Xt・Xa・Xf・Xn・Xp・Xs・Xa10・Xa9・Xa7・Xe10/C4・Xt13・Xa12・ Xa7e・Na7・Nxは、Crystal Semiconductor社製CS4231を使用している。CS4231は Microsoft社のWindows Sound System互換のPCM音源LSI。 o PC-9821Cf・Cx・Cb・Cx2・Cb2・Na7・Nx搭載のサウンド機能は、PC-9801-86型サウ ンド機能の独自PCM部分を、CS4231に置き換えたもの。 o CS4231が使用するI/OアドレスはI/O 0C2Bh,0C2Dhで自由に設定できる。 起動時のデフォルトではI/O 0F40〜0F47hを使用するように設定されるが、 これはIBM PC/AT互換機用のMicrosoft社製Windows Sound Systemボードが 使用するI/Oアドレスと同じ。 o CS4231は、CD-DA出力、ライン入力、ライン出力等のミキサ(アナログ電子 ボリューム)機能も含む。 o PC-9821X・N内蔵型音源が使用するI/Oアドレスは以下の通り。 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- 0C24h |BYTE|R/W|PC-9821X・N内蔵型音源の制御 0C2Bh |BYTE|R/W|再配置するI/Oアドレス下位8bit 0C2Dh |BYTE|R/W|再配置するI/Oアドレス上位8bit 0F40h |BYTE|R/W|PCM音源の割り込みアドレス設定 0F43h |BYTE|R/W|(CS4231)Windows Sound System ID 0F44h |BYTE|R/W|(CS4231)Index Address register 0F45h |BYTE|R/W|(CS4231)Indexed Data register 0F46h |BYTE|R/W|(CS4231)Status register 0F47h |BYTE|R/W|(CS4231)PIO Data register 0F48h |BYTE| |不明 0F49h |BYTE| |不明 -----------+----+---+-------------------------------------------------- I/O A460h 名前 サウンド機能識別用IDフィールド/OPNAマスク設定 対象 全機種 チップ 機能 ●[READ]サウンド機能識別用ID読みだし bit 7〜4: サウンド機能識別用ID 0000b= PC-98DO+内蔵音源 0001b= PC-98GS内蔵音源 0010b= PC-9801-73(I/Oポート018xh時) 0011b= PC-9801-73・76(I/Oポート028xh時) 0100b= PC-9821初代・Ap・As・Ae・Af・Ap2・As2・An・Ap3・As3・Ce・Cs2・Ce2 内蔵音源,PC-9801-86(I/Oポート018xh時) 0101b= PC-9801-86(I/Oポート028xh時) 0110b= PC-9821Nf・Np内蔵音源 0111b= PC-9821Xt・Xa・Xf・Xn・Xp・Xs・Xa10・Xa9・Xa7・Xt13・Xe10/C4・ Xa12・Xa7e内蔵音源,PC-9821XE10-B?? 1000b= PC-9821Cf・Cx・Cb・Cx2・Cb2・Cx3・Cb3・Na7・Nx内蔵音源 1111b= 音源機能なし、またはPC-9801-26相当機能あり bit 3,2: 未使用 bit 1: YM2608(OPNA)マスク設定 1= YM2608(OPNA)をマスクしている 0= YM2608(OPNA)をマスクしていない(リセット状態) bit 1: YMF278(OPL3)部分機能■[PC-9821Cx3・Cb3・Na12・Na9,PC-9801-118] 1= 0= bit 0: YM2608(OPNA)拡張部分機能 1= YM2608(OPNA)拡張部分も使用する 0= YM2203(OPN)相当部分のみ使用する(リセット状態) 解説 o サウンド機能IDを読み出す。 o PC-9801-26はこのポートをサポートしていないので、実装の有無を このポートから判断することはできない。 ●[WRITE]YM2608(OPNA)マスク設定 bit 7〜2: 未使用(読み出した値を保存すること) bit 1: YM2608(OPNA)マスク設定 0= YM2608(OPNA)をマスクしない 1= YM2608(OPNA)をマスクする * 1を設定するとOPNAが切り放される bit 0: YM2608(OPNA)拡張部分機能 0= YM2203(OPN)相当部分のみ使用する 1= YM2608(OPNA)拡張部分も使用する 解説 o YM2608搭載機で、YM2608の拡張部分のマスクを設定/解除する 関連 I/O 0188h,018Ah I/O 018Ch,018Eh I/O 0288h,028Ah I/O 028Ch,028Eh I/O 0188h(0288h) 名前 レジスタ指定/ステータスフラグ 対象 YM2203, YM2608搭載機 チップ YM2203, YM2608 機能 ●[READ]ステータスフラグ bit 7: BUSY 1= ビジー中 0= ビジー中でない bit 6〜2: 未定義 bit 1: FLAG B 1= タイマーBがオーバーフローした 0= タイマーBはオーバーフローしていない bit 1: FLAG A 1= タイマーAがオーバーフローした 0= タイマーAはオーバーフローしていない 解説 o FM音源IC(YM2203またはYM2608)のステータスを読み出す。 ●[WRITE]レジスタ指定 bit 7〜0: FM音源レジスタ指定 * YM2608の場合は、バンク#0(YM2203互換バンク)のレジスタを指定 解説 o I/O 018Ahでリード/ライトするFM音源LSIの内部レジスタ番号を 設定する。 解説 o PC-9801-73・86は、0188〜018EhのI/Oポートを0288〜028Ehに変更可能。 どちらのI/Oポート番号を使用しているかは、I/O A460hで判別できる。 関連 I/O 018Ah I/O 018Ch I/O A460h bit 1 I/O A466h I/O A66Eh bit 0 I/O 018Ah(028Ah) 名前 データ入出力 対象 YM2203, YM2608搭載機 チップ YM2203, YM2608 機能 [READ/WRITE] bit 7〜0: FM音源LSIの内部レジスタの読み書き * I/O 0188hで指定したレジスタを読み書きする ------------+---+---------------------- レジスタ番号 |R/W|内容 ------------+---+---------------------- 00h |R/W|Channel-A Fine Tune 01h |R/W|Channel-A Coarse Tune 02h |R/W|Channel-B Fine Tune 03h |R/W|Channel-B Coarse Tune 04h |R/W|Channel-C Fine Tune 05h |R/W|Channel-C Coarse Tune 06h |R/W|Period Control 07h |R/W|IN/OUT・Noise・Tone 08h |R/W|Channel-A Amplitude 09h |R/W|Channel-B Amplitude 0Ah |R/W|Channel-C Amplitude 0Bh |R/W|Envelop Period Fine Tune 0Ch |R/W|Envelop Period Coarse Tune 0Dh |R/W|Envelop Shape Cycle 0Eh |R/W|I/O PortA | |bit 7,6: IRST0,1 | | 11b= INT6 | | 10b= INT5 | | 01b= INT4 | | 00b= INT0 | |bit 5: TRG2 | |bit 4: TRG1 | |bit 3: RIGHT | |bit 2: LEFT | |bit 1: DOWN | |bit 0: UP 0Fh |R/W|I/O PortB | |bit 7: OUTE | |bit 6: INSL | |bit 5: OUT23 | |bit 4: OUT13 | |bit 3: OUT22 | |bit 2: OUT21 | |bit 1: OUT12 | |bit 0: OUT11 ------------+---+---------------------- 10h | W |Dump/rhythm KON ■[YM2608のみ] 11h | W |Rhythm Total Level ■[YM2608のみ] 12h | W |LSI TEST ■[YM2608のみ] 18〜1Dh | W |Output Select/Instrument Level ■[YM2608のみ] ------------+---+---------------------- 21h | W |TEST 22h | W |LFO ■[YM2608のみ] 24h | W |TIMER-A上位8bit 25h | W |TIMER-A下位4bit 26h | W |TIMER-B 27h | W |TIMER-A/B Control/CH3 MODE 28h | W |Key-ON/OFF Control 29h | W |IRQ Enable,SCH ■[YM2608のみ] 2Dh | W |プリスケーラーをセット 2Eh | W |1/3,1/6分周の選択 2Fh | W |1/2分周の選択 ------------+---+---------------------- 30〜3Eh | W |Detune/Multiple 40〜4Eh | W |Total Level 50〜5Eh | W |Key Scale/Attack Rate 60〜6Eh | W |Decay Rate/AMON 70〜7Eh | W |Sustain Rate 80〜8Eh | W |Sustain Level/Release Rate 90〜9Eh | W |SSG-Type Envelop Control A0〜A2h | W |F-Num1 A4〜A6h | W |BLOCK/F-Num2 A8〜AAh | W |3CH*F-Num1 AC〜AEh | W |3CH*BLOCK/F-Num2 B0〜B2h | W |Self-Feedback/Connection B4〜B6h | W |PMS/AMS/LR ■[YM2608のみ] ------------+---+---------------------- FFh | R |ID NO. ■[YM2608のみ] | |不定= YM2203 | |01h= YM2608 ------------+---+---------------------- 解説 o I/O 0188hで設定したレジスタを読み書きする。レジスタ番号によって、 読み書き可能(00〜0Fh)、書き込みのみ(10〜B6h)、読み出しのみ(FFh)の 3種類がある。 o レジスタ0Ehを通して、ジョイスティック、割り込みアドレスの情報を 読み出すことができる。 o PC-9801-73・86は、0188〜018EhのI/Oポートを0288〜028Ehに変更可能。 どちらのI/Oポート番号を使用しているかは、I/O A460hで判別できる。 関連 I/O 0188h I/O A466h I/O A66Eh bit 0 I/O 018Ch(028Ch) 名前 拡張レジスタ指定/拡張ステータスフラグ 対象 YM2608搭載機 チップ YM2608 機能 ●[READ]拡張ステータスフラグ bit 7: BUSY 1= ビジー(I/Oライト不可) 0= 非ビジー bit 6: 未定義 bit 5: PCM BUSY bit 4: ZERO bit 3: BRDY bit 2: EOS bit 1: FLAG B 1= タイマーBがオーバーフローした 0= タイマーBはオーバーフローしていない bit 0: FLAG A 1= タイマーAがオーバーフローした 0= タイマーAはオーバーフローしていない 解説 o YM2608のステータスを読み出す。読み出されるステータスのうち、 bit 7,1,0はI/O 0188hと同じ。 u bit 5〜2の各フラグは、YM2608のADPCM機能のためのもの。PC-9800で はADPCM用のRAMを搭載していないので無意味。 ●[WRITE]拡張レジスタ指定 bit 7〜0: FM音源レジスタ指定 * YM2608のバンク#1(拡張バンク)のレジスタを指定 解説 o I/O 018Ehで読み書きするFM音源LSIの内部レジスタ番号を 設定する。 解説 o YM2203搭載機種との互換性のため、このI/Oポートは起動時にはマスクされて いる。このI/Oポートを使用するためには、I/O A460h bit 0によってマスクを 解除しなくてはならない。 u YM2203を内蔵した機種の一部で、I/O 018ChにI/O 0188hのイメージが 現れるものがある。 o PC-9801-73・86は、0188〜018EhのI/Oポートを0288〜028Ehに変更可能。 どちらのI/Oポート番号を使用しているかは、I/O A460hで判別できる。 関連 I/O 0188h, 018Eh I/O A460h bit 1,0 I/O A466h I/O A66Eh bit 0 I/O 018Eh(028Eh) 名前 データ入出力 対象 YM2608搭載機 チップ YM2608 機能 [READ/WRITE] bit 7〜0: FM音源LSIの内部レジスタの読み書き * I/O 018Chで指定した拡張バンクのレジスタを読み書きする ------------+---+---------------------- レジスタ番号 |R/W|内容 ------------+---+---------------------- 00h | W |CONTROL 1 01h | W |CONTROL 2 02h | W |START ADR(L) 03h | W |START ADR(H) 04h | W |STOP ADR(L) 05h | W |STOP ADR(H) 06h | W |PRESCALE(L) 07h | W |PRESCALE(H) 08h |R/W|ADPCM-DATA 09h | W |DELTA-N(L) 0Ah | W |DELTA-N(H) 0Bh | W |EG CTRL 0Ch | W |LIMIT ADR(L) 0Dh | W |LIMIT ADR(H) 0Eh | W |DAC DATA 0Fh | R |PCM DATA 10h | W |FLAG CONTROL ------------+---+---------------------- 30〜B6h | W |表バンク(I/O 018Ah)と同じ ------------+---+---------------------- 解説 o I/O 018Chで設定したレジスタを読み書きする。レジスタ番号によって、 読み書き可(08h)、書き込みのみ(00〜07h,09〜0Eh,10h,30〜B6h)、 読み出しのみ(0Fh)の3種類がある。 o YM2203搭載機種との互換性のため、このI/Oポートは起動時にはマスクされて いる。このI/Oポートを使用するためには、I/O A460h bit 0によってマスクを 解除しなくてはならない。 u YM2203を内蔵した機種の一部で、I/O 018EhにI/O 018Ahのイメージが 現れるものがある。 o PC-9801-73・86は、0188〜018EhのI/Oポートを0288〜028Ehに変更可能。 どちらのI/Oポート番号を使用しているかは、I/O A460hで判別できる。 関連 I/O 018Ch I/O A460h bit 1,0 I/O A466h I/O A66Eh bit 0 I/O A462h 名前 オーディオ用DSP(μPD6380)制御 Undocumented 対象 PC-98GS,PC-9801-73 チップ μPD6380 機能 [WRITE] bit 7: Command/data control. bit 6: DSPEXT-R read flag. bit 5: DSP reset flag. bit 1: SO2 output on/off. bit 0: SO1 output on/off. [READ] bit 7: Command/data status. bit 6: DSP read busy flag. bit 5: I-RAM modify status. bit 3: DSP write ready flag. bit 1: DSP GF. bit 0: DSP OVF. 解説 o I/O A464h 名前 オーディオ用DSP(μPD6380)制御 Undocumented 対象 PC-98GS,PC-9801-73 チップ μPD6380 機能 [READ/WRITE] bit 7〜0: DSPデータポート 解説 o I/O A466h 名前 86型PCM - FIFOステータス/電子ボリューム制御 Undocumented 対象 PC-9801-86,PC-9801-86型音源搭載機 チップ 機能 [READ] FIFOステータス bit 7: FIFOフル 1= FIFOは満杯(FIFO内のデータが32Kバイトちょうどのとき) 0= FIFOは満杯でない bit 6: FIFOエンプティ 1= FIFOは空 0= FIFOは空でない bit 5: FIFOオーバーフロー(録音時のみ) 1= FIFOがオーバーフローした 0= FIFOはオーバーフローしていない bit 4〜1: 未使用 bit 0: L/Rクロック * I/O A468hで設定したサンプリングレートに同期して 反転を繰り返す 解説 o PCM FIFOのステータスを読み出す。 [WRITE] 電子ボリューム制御 bit 7〜5: 電子ボリューム選択 000b= VOL1(FM音源直接出力レベル) 001b= VOL2(FM音源間接出力レベル) 010b= VOL3(CD-DA(MULTiのみ),LINE直接出力レベル) 011b= VOL4(CD-DA(MULTiのみ),LINE間接出力レベル) 101b= VOL6(PCM直接出力レベル) bit 3〜0: ボリューム設定値 0000b= 音量最大 : 1111b= 音量最小 解説 o 各電子ボリュームのアッテネート値を設定する。 関連 I/O A46Ch I/O A468h 名前 86型PCM - FIFO制御 Undocumented 対象 PC-9801-86,PC-9801-86型音源搭載機 チップ 機能 [READ/WRITE] bit 7: FIFO動作設定 1= FIFO動作 0= FIFO停止 bit 6: FIFO方向モード 1= FIFO→CPU(録音モード) 0= CPU→FIFO(再生モード) bit 5: FIFO割り込み許可フラグ 1= FIFO割り込み許可 0= FIFO割り込み禁止 bit 4: FIFO割り込み要求フラグ 1= FIFO割り込み要求あり 0= FIFO割り込み要求なし * 0を書き込むとFIFO割り込み要求がクリアされる bit 3: FIFO初期化フラグ 1= FIFOリセットを設定 0= FIFOリセットを設定しない(通常) * 1を書き込んだら、0に戻す必要がある bit 2〜0: 標本化周波数レート 111b= 4.13kHz 110b= 5.52kHz 101b= 8.27kHz 100b= 11.03kHz 011b= 16.54kHz 010b= 22.05kHz 001b= 33.08kHz 000b= 44.10kHz 解説 o PCM FIFOを制御する。 関連 I/O A46Ah I/O A46Ch I/O A46Ah 名前 86型PCM - D/Aコンバータ制御/FIFO割り込みタイミング設定 Undocumented 対象 PC-9801-86,PC-9801-86型音源搭載機 チップ 機能 [READ/WRITE] D/Aコンバータ制御 ■I/O A468h bit 5が0のとき bit 7: PCMクロック * 通常1に設定する bit 6: PCM量子化ビット数 1= 8ビット 0= 16ビット bit 5,4: PCM出力イネーブル 11b= L/R-chとも出力(ステレオ) 10b= L-chのみ出力 01b= R-chのみ出力 00b= PCM出力しない bit 3: 未使用(常にに0) bit 2〜0: PCMモード * PCMを録再するときは010bに設定する。 AVSDRVのファンクション0Dh,0EhのPCMモードで設定される。 モード0のとき101b、モード1,6,7のとき010b。 解説 o リード時は、I/O A468h bit 5の状態に関らずD/Aコンバータ制御の 設定値が読める。 [WRITE] FIFO割り込みタイミング設定 ■I/O A468h bit 5が1のとき bit 7〜0: FIFO割り込みタイミングの設定値 解説 o FIFOの残りバイト数が[FIFO割り込みタイミングの設定値]*128 バイトになったとき、割り込みが発生する。 関連 I/O A468h I/O A46Ch 名前 86型PCM - FIFO入出力 Undocumented 対象 PC-9801-86,PC-9801-86型音源搭載機 チップ 機能 [READ/WRITE] bit 7〜0: FIFOとデータの入出力を行う。 解説 o PCM FIFOとの入出力を行う。FIFOメモリのサイズは32Kバイト。 関連 I/O A466h bit 7〜5 I/O A468h bit 6 I/O A66Eh 名前 86型PCM - サウンド出力ミュート制御 Undocumented 対象 PC-9801-86,PC-9801-86型音源搭載機 チップ 機能 [READ/WRITE] bit 7〜1: 未使用 bit 0: ミュートフラグ 0= サウンド出力をミュートしない 1= サウンド出力をミュートする 解説 o サウンド出力のミュートを行う。ミュートを解除してから音量が通常の レベルに復帰するまで、若干時間がかかる。 I/O 0C24h 名前 PC-9821X・N内蔵型音源の制御 Undocumented 対象 CS4231搭載機 チップ 機能 [READ/WRITE] bit 7: サウンドの使用 1= 使用する 0= 使用しない bit 6: 不明 bit 5: I/Oアドレス再配置許可 * I/O 0C24h bit 4〜0とI/O 0C2Bh,0C2DhでI/Oアドレスの 再配置を行うことを許可する。 bit 4〜0: 各種I/Oアドレス再配置モード 10000b= CS4231 I/Oアドレス再配置 10001b= サウンド機能識別用IDのI/Oアドレス再配置 * デフォルトはA460h ■[PC-9821Np除く] 10010b= 不明■[PC-9821Np除く] 10100b= YMF288 I/Oアドレス再配置■[PC-9821Cf・Cx・Cb] 10101b= リモコンコントローラI/Oアドレス配置 ■[PC-9821Cf・Cx・Cb・Cx2・Cb2・Na7・Nx] 解説 o サウンド機能を使用するかどうかの設定を行う。 o CS4231,YMF288が使用する各種I/Oポートの再配置を行う。 bit 4〜0に再配置するI/Oの種別を設定したあと、I/O 0C2Bh,0C2Dhで I/Oアドレスの再配置を行うことができる。 o 通常、以下のように初期設定されている。 OUT 0C24h,0E5h OUT 0C2Bh,04Ah OUT 0C2Dh,00Fh OUT 0C24h,0E4h OUT 0C2Bh,088h OUT 0C2Dh,001h OUT 0C24h,0E2h OUT 0C2Bh,048h OUT 0C2Dh,00Fh OUT 0C24h,0E1h OUT 0C2Bh,060h OUT 0C2Dh,0A4h OUT 0C24h,0E0h OUT 0C2Bh,040h OUT 0C2Dh,00Fh 関連 I/O 0C2Bh,0C2Dh I/O 0C2Bh,0C2Dh 名前 CS4231,YMF288 I/Oアドレス再配置 Undocumented 対象 CS4231搭載機 チップ 機能 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- 0C2Bh |BYTE|R/W|再配置するI/Oアドレス下位8bit 0C2Dh |BYTE|R/W|再配置するI/Oアドレス上位8bit -----------+----+---+-------------------------------------------------- 解説 o PCM音源チップCS4231などが使用するI/Oアドレスを定義するために使用する。 関連 I/O 0C24h I/O 0F40h 名前 PCM音源の割り込みアドレス設定 Undocumented 対象 CS4231搭載機 チップ 機能 [READ/WRITE] bit 7: 未使用 bit 6: 不明 bit 5〜3: PCM音源割り込みアドレス 000b= サウンド機能を使用しない 001b= INT0を使用する 010b= INT2を使用する 011b= INT41を使用する 100b= INT5を使用する bit 2〜0: DMAチャネル設定 000b= DMAを使用しない 001b= DMA#0 010b= DMA#1■[PC-9821Np除く] 011b= DMA#3 100b= 未定義 101b= 未定義 110b= 未定義 111b= DMAを使用しない 解説 o 内蔵PCM音源が使用する割り込みアドレス,DMAチャネルを設定する。 o 割り込みアドレス、DMAチャネルは他のデバイスと競合しないように 設定する必要がある。 u このI/OはPC-9821Npではレジューム時に保存されない。レジューム復帰後に 再設定する必要がある。 u I/O 0C24hでこのI/Oアドレスを変更することができる。 関連 ■[PC-9821Np] I/O 881Eh bit 6 I/O 881Eh bit 4,3 I/O 0F43h 名前 Windows Sound System ID Undocumented 対象 CS4231搭載機 チップ CS4231 機能 [READ] bit 7,6: 未使用 bit 5〜0: Windows Sound System ID * IDとして000100bが読み出せる 解説 o Windows Sound System互換であることを示すIDが下位6ビットから読み出せる。 o このI/Oポートに対して書き込みを行ってはならない。 u I/O 0C24hでこのI/Oアドレスを変更することができる。 関連 I/O 0F44h 名前 Index Address register Undocumented 対象 CS4231搭載機 チップ CS4231 機能 [READ/WRITE] bit 7: INIT 1= 初期化中 0= 初期化終了 * このビットは読み出しのみ bit 6: MCE 1= モード変更許可 0= モード変更禁止 bit 5: TRD 1= INT期間中のDMA転送禁止 0= INT期間中のDMA転送許可 bit 4〜0: I4〜I0 * CS4231内の間接レジスタ番号の指定 解説 o I/O 0F45hとペアで2段階I/O操作を行う。 u I/O 0C24hでこのI/Oアドレスを変更することができる。 関連 I/O 0F45h 0F45h 名前 Indexed Data register Undocumented 対象 CS4231搭載機 チップ CS4231 機能 [READ/WRITE] [WRITE] bit 7〜0: --------+------------------------------------- Index |Register Name --------+------------------------------------- 00h |Left ADC Input Control 01h |Right ADC Input Control 02h |Left Aux #1 Input Control 03h |Right Aux #1 Input Control 04h |Left Aux #2 Input Control 05h |Right Aux #2 Input Control 06h |Left DAC Output Control 07h |Right DAC Output Control 08h |Fs & Playback Data Format 09h |Interface Configuration 0Ah |Pin Control 0Bh |Error Status and Initialization 0Ch |MODE and ID(MODE2 bit) 0Dh |Loopback Control 0Eh |Playback Upper Base Count 0Fh |Playback Lower Base Count --------+------------------------------------- 10h |Alternate Feature Enable I 11h |Alternate Feature Enable II 12h |Left Line Input Control 13h |Right Line Input Control 14h |Timer Low Byte 15h |Timer High Byte 16h |RESERVED 17h |RESERVED 18h |Alternate Feature Status 19h |Version / Chip ID 1Ah |Mono Inpu & Output Control 1Bh |RESERVED 1Ch |Capture Data Format 1Dh |RESERVED 1Eh |Capture Upper Base Count 1Fh |Capture Lower Base Count --------+------------------------------------- 解説 o I/O 0F44hで指定された間接レジスタの内容を読み書きする。 u I/O 0C24hでこのI/Oアドレスを変更することができる。 関連 I/O 0F44h I/O 0F46h 名前 Status register Undocumented 対象 CS4231搭載機 チップ CS4231 機能 [READ] bit 7: CU/L 1= 下位8bitをサンプリング済み 0= 上位8bitをサンプリング済み、または8bitPCM bit 6: CL/R 1= Rchをサンプリング済み 0= Lchをサンプリング済み、またはモノラルPCM bit 5: CRDY 1= データの引き取りは可能 0= データの引き取りは不可能 bit 4: SER 1= サンプリングエラー発生 0= 通常 bit 3: PU/L 1= 下位8bitを再生済み 0= 上位8bitを再生済み、または8bitPCM bit 2: PL/R 1= Rchを再生済み 0= Lchを再生済み、またはモノラルPCM bit 1: PRDY 1= データの送出は可能 0= データの送出は不可能 bit 0: INT 1= 割り込み発生中 0= 通常 [WRITE] bit 7〜0: 任意 * INTフラグをリセットする 解説 o CS4231のステータスレジスタの読み出しを行う。 u I/O 0C24hでこのI/Oアドレスを変更することができる。 関連 I/O 0F47h 名前 PIO Data register Undocumented 対象 CS4231搭載機 チップ CS4231 機能 [READ] bit 7〜0: CD7〜CD0(キャプチャしたPCMデータ) [WRITE] bit 7〜0: PD7〜PD0(再生するPCMデータ) 解説 o PIOモードでPCMデータの転送を行うとき、このI/Oを通してPCMデータを 転送する。 u I/O 0C24hでこのI/Oアドレスを変更することができる。 関連 I/O 0F48h,0F49h 名前 CS4231制御? Undocumented 対象 CS4231搭載機 チップ 機能 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- 0F48h |BYTE|R/W|詳細不明 0F49h |BYTE|R/W|詳細不明 -----------+----+---+-------------------------------------------------- 解説 o 詳細不明 ------------------------------------------------------------------------------- ■サウンド機能制御 対象 PC-98GS PC-9821初代・Ap・As・Ae・Ce・Af・Ap2・As2・Cs2・Ce2・An・Ap3・As3・Cf・Cx・Cb・Cx2・Cb2 PC-9821Na7・Nx 解説 o もともとはPC-98GSの各種拡張機能を制御するためのI/Oであったが、 PC-9821初代以降の機種では多用途で使われている。 I/O AC6Ch 名前 サウンド機能制御[INDEX] Undocumented 機能 [READ/WRITE] bit 15〜8: 不明 * 54hに固定 bit 7〜0: サウンド制御レジスタ指定 解説 o I/O AC6Ehとペアでサウンド関係の機能を制御する。 関連 I/O AC6Eh I/O AC6Eh 名前 サウンド機能制御[DATA] Undocumented 機能 [READ/WRITE] bit 7〜0: サウンド制御データ --------+------------------------------------------------------ Index |内容 --------+------------------------------------------------------ 00h |EEPROM制御■[PC-98GS,PC-9821初代・Ce] |(ナショナルセミコンダクタ NM93C06N) |bit 7〜3: 未使用 |bit 2: CS | * EEPROMのチップセレクト |bit 1: CLK | * EEPROMへのクロック入力 |bit 0: DI,DO | * EEPROMからのシリアルデータ入出力 | |これらの機種に搭載されたEEPROMの各ビット数を示す | --------------------- | スタートビット 1bit | オペコード 2bit | アドレス 6bit | データ 16bit | --------------------- | |以下に、EEPROMのオペコードを示す。 | ----------------+---------------- | コマンド |オペコード | ----------------+---------------- | READ(リード) |10AAAAAA | ----------------+---------------- | WRITE(ライト) |01AAAAAA | |DDDDDDDDDDDDDDDD | ----------------+---------------- | ERASE(消去) |11AAAAAA | ----------------+---------------- | EWEN(書込許可) |0011xxxx | ----------------+---------------- | EWDS(書込禁止) |0000xxxx | ----------------+---------------- | ERAL(全消去) |0010xxxx | ----------------+---------------- | WRAL(全書込) |0001xxxx | |DDDDDD・・・・・ | ----------------+---------------- | * Aはアドレスを示す | Dはデータを示す | xは不定 --------+------------------------------------------------------ 10h |サウンド機能マスク■[PC-98GS除く] |bit 7〜6: 不明 |bit 5: 不明■[PC-9821初代・Ce] | 1= SCSIを使用しないとき | 0= SCSIを使用するとき |bit 4: 不明 |bit 3: サウンド機能マスク | 1= 使用しない | 0= 使用する | * I/Oポート0188〜018Eh,A460〜A46Ch,A66Ehを | 切り離すかどうかの設定を行う。 |bit 2,1: 不明 |bit 0: 未使用 --------+------------------------------------------------------ 12h |内蔵メモリ容量取得■[PC-9821Cs2・Ce2] |bit 7,6: 未使用 |bit 5,4: LED制御 | 11b= オレンジ | 10b= 赤 | 01b= 緑 | 00b= 消灯 |bit 3,2: 未使用 |bit 1,0: 内蔵メモリ容量 | 00b= 1.6MB | 01b= 3.6MB | 10b= 5.6MB | 11b= 3.6MB | * マザーボード上に搭載されているメモリの | 容量を取得する。 |機種判別等■[PC-9821Cf・Cx・Cb] |bit 7〜5: 不明 |bit 4: ROMバンク設定 | 1= 表 | 0= 裏 |bit 3,2: 不明 |bit 1: 機種判別ビット | 1= PC-9821Cb | 0= PC-9821Cf・Cx |bit 0: 内蔵メモリ容量 | 1= 3.6MB■[実際には存在しない] | 0= 7.6MB | * マザーボード上に搭載されているメモリの | 容量を取得する。 --------+------------------------------------------------------ 20h |内蔵SCSIインターフェースI/Oアドレス■[PC-9821初代・Ce] |bit 7〜3: 不明 |bit 2: 不明 |bit 1,0: 内蔵SCSIインターフェースI/Oポート | 00b= I/O 0CC0h,0CC2h,0CC4h | 01b= I/O 0CD0h,0CD2h,0CD4h | 10b= I/O 0CE0h,0CE2h,0CE4h | 11b= I/O 0CF0h,0CF2h,0CF4h --------+------------------------------------------------------ 21h |不明■[PC-9821初代Ce・Ap・As・Ae・Af・Ap2・As2・An] |bit 7〜3: 不明 |bit 2〜0: 不明■[PC-9821初代・Ce] | 111b= SCSIを使用しないとき | 000b= SCSIを使用するとき --------+------------------------------------------------------ 30h |サウンド機能制御■[PC-98GS除く] |bit 7: サウンド機能■[PC-9821Ap・As・Ae・Af・Ap2・As2 | Na7・Na9・Na12 | 1= 使用しない | 0= 使用する | * このビットの詳細は不明。実際には1にしても | I/Oポートは切り離されず割り込みおきる。 |bit 6〜1: 未使用 |bit 0: サウンド割り込み | 1= INT5(デフォルト) | 0= INT6 | * OPNAのレジスタ0Ehから読み出す割り込みアド | レスを設定する。ただしINT6に設定すると実際 | には割り込みは発生しない。 --------+------------------------------------------------------ 32h |マイクボリューム制御■[PC-9821Cs2・Ce2・An] |bit 7〜0: マイクボリューム | * 数値が大きいほどヴォリュームが大きくなる | システムセットアップメニューの16段階のボリュー | ムの値は以下のように対応する。 | 小←00h,5Fh,6Bh,77h,83h,90h,9Fh,AFh,C5h | CBh,D0h,CBh,D0h,D6h,DEh,E5h,F0h,FFh→大 --------+------------------------------------------------------ 33h |マイクALC制御■[PC-9821Cs2・Ce2・An] |bit 7〜3: 未使用(つねに0にすること) |bit 2: マイクALC | 1= ON | 0= OFF | * マイクのAutoLevelControllerを使用するか | どうか設定する |bit 1: マイクスルー | 1= スルーする | 0= スルーしない |bit 0: 未使用(つねに0にすること) --------+------------------------------------------------------ 40h |不明■[PC-98GS除く] --------+------------------------------------------------------ 50h |CPUモード■[PC-9821初代・Ce] |bit 7〜3: 不明 |bit 2〜0: CPUモードフラグ | 001b= lowモード | 010b= middleモード | 100b= highモード --------+------------------------------------------------------ 52h |不明■[PC-9821Ce] --------+------------------------------------------------------ F0h |不明■[PC-9821Ce] |■[PC-9821Cf・Cx・Cb] --------+------------------------------------------------------ F1h |不明■[PC-9821Cf・Cx・Cb] --------+------------------------------------------------------ F2h |不明■[PC-9821Cf・Cx・Cb] --------+------------------------------------------------------ FFh |ミュートコントロール■[PC-98GS, PC-9821Cf・Cx・Cb] |bit 7〜1: 未使用 |bit 0: ミュートコントロール | 1= ミュートする | 0= ミュートしない --------+------------------------------------------------------ 解説 o I/O AC6Chとペアでサウンド関係の機能を制御する。 関連 I/O AC6Ch