このエントリーをはてなブックマークに追加

その他のBIOS

マウスBIOS INT 33H

J-3100のマウスはシリアルポートにつなぐJ-3100用専用マウスを使ってください。J-3100のシリアルポートは、FM TOWNSやX68000で使われるアタリ規格のマウスと同一のD-Sub9ピンオスですが、規格自体まったくの別物です。アタリ規格のマウスは接続しないでください。

DOS/V用のマウスは、PS/2ポートに接続するマウスです。現在(2011年)でも、古いPC/AT互換機にはまだ使われているかもしれません。ただし、東芝ダイヤル3100によると、同梱のマウスかマイクロソフト社製のマウスのみをサポートするそうです。ちなみにテラドライブ用のマウスは動作しませんでした。

J-3100用マウスとDOS/V用マウスは別物で、ドライバーも別物です。J-3100用マウスドライバーは、日本語MS-DOS3.1か日英DOS5.0に入っているMOUSE.SYSをCONFIG.SYSで組み込みますが、DOS/V用マウスドライバーは東芝DOS6.2/Vに入っているMOUSE.COMをAUTOEXEC.BATや直接コマンドライン操作で組み込みます。

日英DOS5.0には、MOUSE.SYSとMOUSE.COMが両方入ってます。J-3100用シリアルマウスを使う時はMOUSE.SYS、PS/2マウスを使う時はMOUSE.COMを組み込んでください。東芝DOS6.2/VにはMOUSE.COMしか入ってなかったように記憶してますので、東芝DOS6.2/VではPS/2マウスを使ってください。
AX=0000H 初期設定
入力 出力
AX 0000H AX ステータス
 0000H マウスが使用できない
 FFFFH マウスが使用できる
BX ボタンの数
マウスドライバーを初期化し、マウスが使用できるかどうかを返します。BXレジスターにはボタンの数が返ります、が、J-3100用のシリアルマウスには2ボタンタイプのものしかなかったように記憶しています。
AX=0001H マウスカーソル表示
入力 出力
AX 0001H
AX=0002H マウスカーソル消去
入力 出力
AX 0002H
AX=0003H マウスの現在位置およびボタンの情報を取得
入力 出力
AX 0003H BX ボタンの情報
 ビット0: 左ボタンの情報
 ビット1: 右ボタンの情報
CX マウスのX座標
DX マウスのY座標
マウスの座標とボタンの情報を取得します。ボタンの情報はBXレジスターのビットで表しますので、個々のボタンの情報が必要な時はANDを使って抽出してください。
AX=0004H マウスの位置を設定
入力 出力
AX 0004H
CX マウスのX座標
DX マウスのY座標
マウスの座標を設定します。という事はつまり、強制的にマウスカーソルを移動します。
AX=0005H ボタンが押された時の座標を取得
入力 出力
AX 0005H
BX ボタン指定
 0左ボタン
 1右ボタン
AX ボタンの情報
 ビット0: 左ボタンの情報
 ビット1: 右ボタンの情報
BX ボタンが押された回数
CX マウスのX座標
DX マウスのY座標
BXレジスタで指定したボタンを押した時のマウスカーソル座標と、ボタンの情報、指定したボタンが押された回数を取得します。
AX=0006H ボタンが離された時の座標を取得
入力 出力
AX 0006H
BX ボタン指定
 0左ボタン
 1右ボタン
AX ボタンの情報
 ビット0: 左ボタンの情報
 ビット1: 右ボタンの情報
BX ボタンが押された回数
CX マウスのX座標
DX マウスのY座標
BXレジスタで指定したボタンが離された時のマウスカーソル座標と、ボタンの情報、指定したボタンが押された回数を取得します。
AX=0007H マウスカーソルの水平方向の移動範囲の指定
入力 出力
AX 0007H
CX 最大値
DX 最小値
AX=0008H マウスカーソルの垂直方向の移動範囲の指定
入力 出力
AX 0008H
CX 最大値
DX 最小値
AX=0009H マウスカーソルの形状の設定
入力 出力
AX 0009H
BX X座標のカーソルの指示点
CX Y座標のカーソルの指示点
ES:DX スクリーンマスクとカーソルマスクの情報
マウスカーソルの形状を設定します。

カーソルの指示点
矢印の先っぽがどこにあるかを指定します。

DCGAでは指示点は-16~+16の範囲で指定しますが、VGAでは指示点は-127~+128まで設定可能です。

スクリーンマスク

1列2バイト×16列で、32バイトで指定します。スクリーンマスクと画面のANDが取られます。つまり、ビットが0の部分が消えます。これは、マウスカーソルを見やすくするためのフチの部分になります。今(Windows)でこそマウスカーソルに影があって目立つのですが、なにぶんこの頃は単色でしたので、フチで目立たせるしかなかったのでした。

カーソルマスク

1列2バイト×16列で、32バイトで指定します。カーソルマスクと画面のXORが取られます。つまり、ビットが1の部分のビットが反転します。

スクリーンマスクとカーソルマスクは、ES:DXレジスターで示したアドレスに、スクリーンマスク32バイトに続いてカーソルマスク32バイト、計64バイトで指定します。
AX=000BH マウスの移動量を読む
入力 出力
AX 000BH
CX X方向の移動量
DX Y方向移動量
直近にこのAX=000BHのファンクションが呼ばれてから再度呼ばれるまでの、マウスのX方向とY方向の移動量を返します。X座標は右方向が正、Y座標は下方向が正になります。
AX=000CH マウス割り込みの発生
入力 出力
AX 000CH
CX 割り込みの原因
ES:DX 割り込み処理ルーチン
CXレジスターで指定したイベントが発生すると、ES:DXで示したアドレスにて割り込み処理を行います。この割り込みを設定する前に、ES:DXに割り込み処理ルーチンを常駐させておかねばなりません。

割り込みの原因はCXレジスタのビットで指定します。
ビット 意味
4 右ボタンが離された
3 右ボタンが押された
2 左ボタンが離された
1 左ボタンが押された
0 マウスカーソルの位置が変化した
割り込み処理はFARコールで呼び出されます。割り込み処理の最後はRETFで終わらせてください。割り込み処理では、最初にAXレジスタに割り込みの原因、BXレジスタにボタンの状態、CXにマウスのX座標、DXにマウスのY座標が返ります。ボタンの状態については、AX=0003Hのファンクションところの出力を見てください。
AX=000DH ライトペンエミュレーションオン
入力 出力
AX 000DH
このファンクションはVGA専用です。マウスの両方のボタンを押すと、ライトペンを接触させている事になります。
AX=000EH ライトペンエミュレーションオン
入力 出力
AX 000EH
このファンクションはVGA専用です。ライトペンのエミュレーションをオフにします。
AX=000FH マウスのカーソルの移動量を設定
入力 出力
AX 000FH
CX X方向の移動量/ピクセル比
DX Y方向の移動量/ピクセル比
マウスの移動量とカーソルのピクセルの比率を設定します。デフォルトは8で、1~32767まで設定できます。1を指定すると、マウスの移動量1に対して1ピクセルとなり、最も遅くなります。32767を指定すると、マウスの移動量1に対して32767ピクセル移動し最も速くなります。
AX=0010H マウスのカーソルの表示しないエリアの設定
入力 出力
AX 0010H
CX 左上X座標
DX 左上Y座標
SI 右下X座標
DI 右下Y座標
このファンクションはVGA専用です。マウスカーソルを表示しないエリアを設定します。
AX=0014H マウス割り込みルーチンの変更
入力 出力
AX 0014H
CX 割り込みの原因
ES:DX 割り込み処理ルーチン
CX もともとの割り込みの原因
ES:DX もともとの割り込み処理ルーチン
このファンクションはVGA専用です。AX=000CHで設定した割り込みルーチンのアドレスを変更し、もとのアドレスともとの割り込み発生の原因を取得します。
AX=0015H 状態退避バッファサイズの取得
入力 出力
AX 0015H BX 必要なバッファサイズ
このファンクションはVGA専用です。AX=0016Hで退避するのに必要なサイズを取得します。
AX=0016H ドライバ状態の退避
入力 出力
AX 0016H ES:DX ドライバ退避する場所
このファンクションはVGA専用です。ES:BXにはAX=0015Hで取得したサイズのメモリーが確保してある必要があります。
AX=0017H 退避されていたドライバの復元
入力 出力
AX 0017H
ES:DX 退避していたバッファのアドレス
このファンクションはVGA専用です。AX=0016Hで退避させたドライバを復元します。
AX=0018H 代替マウス割り込みルーチンの設定
入力 出力
AX 0018H
CX 割り込みの原因
ES:DX 割り込み処理ルーチン
このファンクションはVGA専用です。AX=000CHの拡張版で、Shift、Ctrl、Altキーを押しながらボタンが押されたかどうかの判断ができます。
ビット 意味
7 Altキーを押しながらボタンが押された
6 Ctrlキーを押しながらボタンが押された
5 Shiftキーを押しながらボタンが押された
4 右ボタンが離された
3 右ボタンが押された
2 左ボタンが離された
1 左ボタンが押された
0 マウスカーソルの位置が変化した
AX=0019H 割り込みサブルーチンアドレスの取得
入力 出力
AX 0019H
CX 割り込みの原因
AX 設定状況
 FFFFH 設定されていない
CX 割り込みの原因
BX:DX 割り込み処理ルーチンのアドレス
このファンクションはVGA専用です。AX=0018Hにて設定した割り込みルーチンのアドレスを取得します。AXにFFFFHが返った時は、設定されていません。
AX=001AH マウスの感度の設定
入力 出力
AX 001AH
BX X方向の感度
CX Y方向の感度
このファンクションはVGA専用です。マウスの感度を1~100で設定します。初期値は50です。
AX=001BH マウスの感度の取得
入力 出力
AX 001BH
BX X方向の感度
CX Y方向の感度
このファンクションはVGA専用です。マウスの感度を取得します。
AX=001DH マウスのカーソルを表示するV-RAMの設定
入力 出力
AX 001DH
BX 表示するV-RAM
このファンクションはVGA専用です。マウスカーソルを表示させるV-RAMのプレーンを設定します。
ビット 意味
3 プレーンI
2 プレーンR
1 プレーンG
0 プレーンB
AX=001EH マウスのカーソルを表示するV-RAMの取得
入力 出力
AX 001EH BX 表示するV-RAM
このファンクションはVGA専用です。マウスカーソルを表示させるV-RAMのプレーンを取得します。
AX=001FH マウスドライバーの停止
入力 出力
AX 001FH AX 復元状態
 FFFFH 停止できない
ES:BX 元のINT 33Hの割り込みベクタ
このファンクションはVGA専用です。マウスドライバーを無効にして、INT 33Hの割り込みベクタアドレスをマウスドライバーが常駐する前の状態に戻します。それまでマウスドライバーが使っていたINT 33Hの割り込みベクタアドレスが、ES:BXに返ります。
AX=0020H マウスドライバーの再開
入力 出力
AX 0020H
このファンクションはVGA専用です。AX=001FHで停止したマウスドライバーを再開します。
AX=0021H ソフトウェアリセット
入力 出力
AX 0021H AX マウスドライバーの状態
 FFFFH 導入されている
 0033H 導入されていない
BX ボタンの数
このファンクションはVGA専用です。基本的にはAX=0000Hと同じですが、マウスに対して初期化信号を送出しません。
AX=00FEH マウス割り込みの禁止/許可
入力 出力
AX 00FEH
BX 禁止/許可の設定
 0 禁止
 1 許可
このファンクションはDCGA専用です。マウス割り込みを禁止するか許可するかを設定します。禁止にするとマウスカーソルは消され、マウスを動かしてもドライバーの認識している現在位置は変わりません。要するにドライバーが休止状態になるわけですね。

マウス割り込みが禁止中でも、マウスの現在位置の設定、マウスカーソルの形状の設定、割り込み処理の設定、マウスカーソルの移動範囲の設定、マウスカーソルの移動量の設定は可能です。

ハードコピー、装置情報のリード、実メモリサイズのリード

ハードコピー INT 5H
101キー、106キーでは[Prin Screen]、84キーでは[Shift]を押しながら[PrtSC*]を押すとINT 5H割り込みが発動します。また、ユーザープログラム中でもINT 5Hコマンドを発行するとハードコピー割り込みに入ります。

ハードコピードライバーを一切組み込まないと、DCGAにしろVGAにしろ画面上のテキスト(それも英文字)のみのコピーになります。英語圏の人にとってはそれで十分なのですが、日本人にとって日本語が文字化けしてしまうのでは使い物になりません。そこで、ハードコピードライバーを組み込む必要があります。

J-3100では標準に GRAPHICS.COMというドライバーがあるのですが、これがDCGA専用でしかもコンベンショナルメモリーを湯水のように食うので、これは使わず当サイトにて公開しているハードコピードライバーを組み込んだ方が良いでしょう。これはコンベンショナルメモリーの使用を抑えるだけでなく、DCGA、VGAの両対応です。

装置情報のリード INT 11H
INT 11H割り込みをかけると、AXレジスタに装置情報が返ります。これは、DCGA、VGAともに使えます。
ビット 意味
15 プリンタの接続台数
14
13 予約
12 GAME アダプタの有無
11 RS-232Cの搭載チャンネル数
10
9
8 予約
7 FDDの接続台数
6
5 表示モード
01: 40×25
10: 80×25
11: モノクロ
4
3 予約
2 マウスの有無
1 高プロの有無
0 予約
実メモリサイズのリード INT 12H
INT 12Hを呼ぶと、AXレジスタにメモリーサイズが返ってきます。ただし、キロバイト単位です。じゃあ64MB以上のメモリーが搭載されていたらどうするんだ?というかもしれませんが、どうなるんでしょう??

参考文献
『J-3100解析ハンドブック』 1989年 土屋勝著 ナツメ社
『DOS/Vテクニカル・リファレンス・マニュアル』 1993年 芦達剛著 ソフトバンク
『J-3100シリーズ・テクニカルマニュアル』 1994年 南部武彦著 ソフトバンク
『ATOK読本』 1994年 山田祥平 ジャストシステム
『東芝パソコンハンドブック94年版』 平成6年3月1日
このページの先頭へ
  広告