動的ハード構成変更

Neko Project 21/W は特定のI/Oポートを操作することにより、エミュレータ本体で設定する必要がある項目(CPUクロック倍率、使用するサウンドボードなど)を動的に変更できます。 これらの動的設定変更はリセットで元に戻りますので、特定のディスクイメージに合わせた設定に一時的に変更するなどの用途で使用可能です。

一般のユーザーがI/Oポートを操作することは容易ではありませんので、この操作を行うプログラムを用意しています。

Neko Project 21/W ユーティリティ&ディスクイメージ

NPCNGCLK.EXE, NPCNGCFG.EXEは汎用的なプログラムで、それぞれCPUクロック倍率とハードウェア構成を変更できます。 NPCxxx.COMは引数なしの固定設定にしてプログラムサイズを小さくしたものです。こちらはIPLwareへの登録も可能です。 NPCxxx.SYSはNPCxxx.COMのデバイスドライバ版です。AUTOEXEC.BATでは手遅れな場合に使用してください。ただし、180byteほどメモリを占有します。

これ以降はI/Oポートの仕様について説明します。

Neko Project II システムポート

Neko Project IIは2つのI/Oポート 7EDhと7EFhをエミュレータ本体との通信のために使用します。 動的ハード構成変更はこのポートの機能を拡張して実装されています。

I/Oポート役割
7EDhコマンドパラメータの書き込み
7EFhコマンド文字列の書き込みとコマンド結果の読み取り

なお、未知のコマンドの場合、エミュレータ側は何もしない仕様となっています。 つまり、本家Neko Project IIで対応していないコマンドを送っても問題はありません(何も起こりません)。

また、実機の場合はI/Oポート7EDhと7EFhに何もいなければ問題ありません(何も起こりません)。

Neko Project II システムポートとの通信方法

Neko Project II システムポートとの通信は以下の手順で行います。

  1. I/Oポート7EDhにコマンドのパラメータをByteで書き込みます。パラメータが不要の場合は書き込まなくても問題ありません。
  2. I/Oポート7EFhにコマンドの文字列を順に書き込みます。コマンド書き込みが終わった瞬間にコマンドが実行されます。
  3. 戻り値があるコマンドで、戻り値が必要な場合はI/Oポート7EFhからデータをByteで読み取ります。0(NULL文字)が来たら読み取り完了です。

Neko Project II システムポートのコマンド

Neko Project II 共通コマンドは、機能カットなどが行われていない限り、本家から派生した全てのNeko Project II/Neko Project 21で使用できます。

Neko Project 21/W 拡張コマンドはNeko Project 21/W/Neko Project II/Wでのみ使用できます。本家で実行しても何も起こりません。

Neko Project II 共通コマンド

コマンドパラメータ戻り値機能
"NP2"なし"NP2"Neko Project IIまたはその派生であるかの判定に使用する。
"ver"なしバージョン番号文字列Neko Project IIのバージョン番号を文字列で取得する。
"poweroff"なしなしNeko Project IIを終了する。
"hardwarereset"なしなしNeko Project IIをリセットする。Emulate→Resetの操作と同じです。
"cpu"なしCPU型番文字列CPU型番を文字列で取得する。
"clock"なし動作クロック数文字列動作クロック数を文字列で取得する。
"multiple"なし動作クロック倍率文字列動作クロック倍率を文字列で取得する。

Neko Project 21/W 拡張コマンド

コマンドパラメータ戻り値機能
"changeclockmul"クロック倍率の値(1byte)設定されているクロック倍率の文字列CPUクロック倍率を設定する。パラメータは文字列ではなく1byteの数値である事に注意。パラメータに0を渡すと設定変更せずに現在値が返ります。
"changeconfig"可変長(後述)可変長(後述)Neko Project 21/Wの設定を変更する。ここで加えた変更はハードリセットで元に戻ります。
"getconfig"可変長(後述)可変長(後述)Neko Project 21/Wの設定を取得する。

動的ハード構成変更コマンドについて

動的ハード構成変更コマンド"changeconfig"と、現在の設定を読み取るコマンド"getconfig"は可変長の引数と戻り値となっています。このため、扱いがやや特殊です。

これらのコマンドは以下のような流れで使用します。 先に、下記の機能番号表から設定したいものを探し、その機能番号に対応するパラメータ値を調べておきます。

"changeconfig"コマンド

  1. I/Oポート7EDhに機能番号に対応するパラメータ値をbyte列(リトルエンディアン)で書き込みます。文字列ではないので注意してください。
  2. 続いて、I/Oポート7EDhに機能番号(1byte)を書き込みます。文字ではないので注意してください。
  3. I/Oポート7EFhに"changeconfig"を順に書き込みます。コマンド書き込みが終わった瞬間にコマンドが実行されます。
  4. 戻り値が必要な場合はI/Oポート7EFhからデータを文字列で読み取ります。0(NULL文字)が来たら読み取り完了です。

"getconfig"コマンド

  1. I/Oポート7EDhに機能番号(1byte)を書き込みます。文字ではないので注意してください。
  2. I/Oポート7EFhに"getconfig"を順に書き込みます。コマンド書き込みが終わった瞬間にコマンドが実行されます。
  3. I/Oポート7EFhからデータを文字列で読み取ります。0(NULL文字)が来たら読み取り完了です。

"changeconfig"コマンドと"getconfig"コマンドの機能番号表

機能番号パラメータ戻り値機能
1CL-GD54xxウィンドウアクセラレータ機種ID (2byte)設定されているウィンドウアクセラレータ機種IDの文字列CL-GD54xxウィンドウアクセラレータの種類を変更する。
2サウンドボードID (1byte)設定されているサウンドボードIDの文字列サウンドボードの種類を変更する。
31 (1byte)なしHRTIMERをコマンド実行時のホスト時刻と同期する。
4有効=1, 無効=0 (1byte)有効="1", 無効="0"PCIバスの有無を設定する。
61 (1byte)なしサウンドROMを強制的に無効にする。

機能番号1 CL-GD54xxウィンドウアクセラレータ機種ID(2byte)表

ID種類
80PC-9821 Bp,Bs,Be,Bf内蔵
88PC-9821 Xe内蔵
89PC-9821 Cb内蔵
90PC-9821 Cf内蔵
91PC-9821 Xe10,Xa7e,Xb10内蔵
92PC-9821 Cb2内蔵
93PC-9821 Cx2内蔵
96PC-9801-96(PC-9801B3-E02)
160PC-9821 PCI CL-GD5446(要PCI)
256MELCO WAB-S
257MELCO WSN-A2F
258MELCO WSN-A4F
512I-O DATA GA-98NBI/C
513I-O DATA GA-98NBII
514I-O DATA GA-98NBIV
65527自動選択(Xe10, GA-98NBI/C, PCI)
65528自動選択(Xe10, GA-98NBII, PCI)
65529自動選択(Xe10, GA-98NBIV, PCI)
65530自動選択(Xe10, WAB-S, PCI)
65531自動選択(Xe10, WSN-A4F, PCI)
65532自動選択(Xe10, WSN-A2F, PCI)
65533自動選択(Xe10, WAB-S)
65534自動選択(Xe10, WSN-A2F)
65535自動選択(Xe10, WSN-A4F)

機能番号2 サウンドボードID(1byte)表

ID種類
0サウンドボード無し
1PC-9801-14
2PC-9801-26K
4PC-9801-86
6PC-9801-86 + 26K
8PC-9801-118
20PC-9801-86 with ADPCM(ちびおと)
32Speak board
36PC-9801-86 + Speak board
50SOUND ORCHESTRA
64Spark board
65Sound Blaster 16
66PC-9801-86 + Mate-X PCM(B460) + Sound Blaster 16
67Mate-X PCM(B460) + Sound Blaster 16
68PC-9801-86 + Sound Blaster 16
69PC-9801-118 + Sound Blaster 16
70PC-9801-86 + PC-9801-118(B460) + Sound Blaster 16
96Mate-X PCM
100PC-9801-86 + Mate-X PCM(B460)
104PC-9801-86 + PC-9801-118(B460)
112WaveStar
128AMD-98
130SOUND ORCHESTRA-V

資料集に戻る

トップに戻る