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割り込みをする。