hoot PC-98ドライバ仕様 ■ NP2クラス仕様 (\\hoot\np2)  サポート   ・ベースクロック 2.5MHz   ・PIC   ・PIT   ・OPN/OPNA   ・BEEP  hoot option   cpuclock 動作クロック数   extramsize EMSサイズ   dummysndrom 1で ダミーのサウンドROMを利用する   beep_mix BEEP音量   opn_mix OPN音量   opna_mix OPNA音量   fm_mix FM音源ヴォリューム   ssg_mix SSG音源ヴォリューム   rhy_mix RHYTHM音源ヴォリューム  hoot専用I/O   0x07e0 IN - 割り込み要因   0x07e2〜0x07e5 IN - CODE   0x07e8 OUT - HOOT Function    0x80 - Hoot 割り込み無効    0x81 - Hoot 割り込み有効    0x82 - normal clock mode     cpuclock/秒動作モード。     PC-98のI/Oがすべてクロック依存で動作する。    0x83 - burst clock mode     cpuclock/イベント動作モード。     I/Oタイミングは全く保証しない。 ■ PC-98generic仕様 (\\hoot\drivers\pc98.cpp)  pc98vx   初期設定    PIC: ノーマル    clock: ノーマルモード  pc98 (互換性の為に存在、通常はpc98vxを使用すること)   初期設定    PIC: 自動EOI    clock: バーストモード  ファイル   code メインコード offset = アドレス   binary バイナリパッチ offset = アドレス   string 文字列パッチ offset = アドレス   bgm プラリマリBGMファイル offset = データ番号 bgm2 セカンダリBGMファイル offset = データ番号 strlist 文字列リスト offset = データ番号  オプション   bootcs 開始セグメント   bootip 開始オフセット   funcvect hoot割り込みベクタ   addressing アドレス指定方法 (0=フラット 1=リアルモード) dataaddr プラリマリデータアドレス   filesize プラリマリデータサイズ data2addr セカンダリデータアドレス   file2size セカンダリデータサイズ   datamax データ数   strlistmax 文字列リストサイズ  動作手順   ブート    1.ファイルを読む    2.bootcs bootipへ ジャンプする   再生    1.割り込み要因0でhoot割り込みをする。    2.code(LSB16bit)の番号の bgm/bgm2をロードする     (ロードアドレスが0であれば無視する)    3.ロードが行なわれた場合にのみ、割り込み要因1でhoot割り込みをする   停止    1.割り込み要因2でhoot割り込みをする。  I/O   0x07d0 IN - ステータス   0x07d0 OUT - 機能   0x07d2〜0x07d3 IN/OUT - パラメータ1   0x07d4〜0x07d5 IN/OUT - パラメータ2   0x07d6〜0x07d7 IN/OUT - パラメータ3   機能    0x10 - dataaddr設定     プライマリBGMデータのロードアドレスを設定する      IN パラメータ1L: プラリマリ=0 / セカンダリ=1      OUT パラメータ2: オフセット      OUT パラメータ3: セグメント      IN ステータス : 成功で0x00 失敗で0xff    0x11 - dataaddr取得     プライマリBGMデータのロードアドレスを取得する      IN パラメータ1L: プラリマリ=0 / セカンダリ=1      IN パラメータ2: オフセット      IN パラメータ3: セグメント      IN ステータス : 成功で0x00 失敗で0xff    0x18 - strlist取得     xmlで指定した文字列を取得する      IN パラメータ1: 文字番号      IN パラメータ2: オフセット      IN パラメータ3: セグメント      IN ステータス : 成功で0x00 失敗で0xff    0x20 - プラリマリBGMロード    0x21 - セカンダリBGMロード     プラリマリ/セカンダリBGMデータを指定番地にロードする      IN パラメータ1: 番号      IN パラメータ2: ロードオフセット      IN パラメータ3: ロードセグメント      IN ステータス : 成功で0x00 失敗で0xff    0x30 - プラリマリBGM拡張ロード    0x31 - セカンダリBGM拡張ロード     プラリマリ/セカンダリBGMデータを指定番地にロードする      IN パラメータ1: 番号      IN パラメータ2: パラメータオフセット      IN パラメータ3: パラメータセグメント      IN ステータス : 成功で0x00 失敗で0xff      パラメータ       +00番地 WORD ロードオフセット       +02番地 WORD ロードセグメント       +04番地 DWORD ロードするファイルの位置       +08番地 DWORD ロードサイズ ■ PC-98 DOS仕様 (\\hoot\drivers\pc98dos.cpp)  pc98dos   初期設定    PIC: ノーマル    clock: ノーマルモード  ファイル   code メインコード offset = アドレス   binary バイナリパッチ offset = アドレス   string 文字列パッチ offset = アドレス   file ファイル名 offset = 最初から開いているハンドル   conin コンソール入力 offset = 最初から開いているハンドル   device config.sysのdevice=に相当   shell command.comのコマンドラインに相当  オプション   funcvect hoot割り込みベクタ   addressing アドレス指定方法 (0=フラット 1=リアルモード)   initseg 拡張初期化アドレス   initoff 拡張初期化アドレス (device実行前にfar callされるアドレス)   dosmemory DOSがアクセスするメモリ上限   files ファイルハンドル数(config.sysのfiles相当)  入力ファイル定義例   [filename]    ・ファイル[filename]を登録。    ・ファイルは開かれていないので、dos callでオープンする必要がある。      mov ax, 3d00h      mov dx, offset filename      int 21h   [filename]    ・ファイル[filename]を登録。    ・ファイルハンドル[number]番にバインドする。      mov ah, 3fh      mov bx, [number]      mov cx, read_size      mov dx, offset readaddress      int 21h   [conin text]    ・[conin text]をファイルハンドル[number]番にバインドする。    ・シーク可能な仮想入力であり、ファイルではない。      mov ah, 3fh      mov bx, [number]      mov cx, -1      mov dx, offset readaddress      int 21h      で [conin text]がメモリへ読み込まれる。(NULLは含まない)  動作手順   ブート    1.initseg/initoffが定義されていた場合 far callを行なう    2.device, shellで起動ファイルを指定する   再生    1.code(LSB16bit)の番号の ファイルハンドルを coninへ二重化する    2.割り込み要因0でhoot割り込みをする。   停止    1.割り込み要因2でhoot割り込みをする。