0から作るソフトウェア開発

日々勉強中。。。

0から作るOS開発

環境準備

環境設定

ブートローダ

カーネルローダ

GRUB

カーネル

ドライバーその他

Tips BIOSサービス割り込み一覧 ビデオサービス 文字コード書き込み(テレタイプモード)

BIOSサービス割り込み一覧

INT命令で割り込み番号を指定して実行するとBIOSのサービス割り込みが利用できます

リンクをクリックすると表の下に詳細が表示されます

BIOSサービス割り込み一覧
割り込み番号 サービス名
(英語)
サービス名
(日本語)
説明
0x10 Video Services ビデオサービス ビデオ機能が使用できます
0x11 Equipment List Service システムデバイス情報取得 プログラムが利用可能なシステムのデバイス情報を取得します
0x12 Low Memory Size Service ローメモリサイズ取得 1MB以下の物理メモリ領域のメモリサイズを取得します
0x13 Disk Services ディスクサービス FDD、HDD、ROMディスク、RFDディスクなどにアクセスできます
0x14 Serial Port Services シリアルポートサービス シリアルポートにアクセスできます
0x15 General System Services システムサービス システムデバイスへの要求やデバイスの処理待ち要求などを行います
0x16 Keyboard Services キーボードサービス キーボードを制御することができます
0x17 Parallel Port Services パラレルポートサービス パラレルポートにアクセスすることができます
0x18 Boot Fault Routine ブートフォルト処理 OS起動に失敗した場合に、呼び出される処理です
0x19 Bootstrap Routine ブートストラップ処理 ブートローダをロードする処理です
0x1A Time/Date Services 時刻・日付サービス 時刻や日付などを取得します
0x1B Control-Break Signal コントロール・ブレイク信号 コントロールキーとブレイクキーの同時押しを検出したときに呼び出されます
0x1C User Timer Interrupt ユーザタイマ割り込み タイマとして利用することができます
0x1D Video Parameter Table(VPT) ビデオパラメータテーブル 6845CRT制御レジスタの設定に使用します
0x1E Floppy Diskette Parameter Table(DPT) フロッピーディスクパラメータテーブル 各種のフロッピーディスクを制御するために使用されます
0x1F Video Graphics Character Table(VGCT) ビデオグラフィック文字テーブル フォントを変更するときに使用します
0x41/0x46 Fixed Disk Parameter Tables(FDPTs) 固定ディスクパラメータテーブル IDEのプライマリ/セカンダリドライブに使用するパラメータです
0x4A Real Time Software Interrupt リアルタイムクロック割り込み
0x4F VBE(Video Bios Extension) Function VBEファンクション VBEファンクションを実行します。


ビデオサービス(Video Services)

ビデオ関連のBIOSサービスです。AHレジスタにファンクションコードを指定します

オペランドが必要なファンクションの場合はその他のレジスタにオペランドを格納してから

INT 0x10命令を実行することで、ビデオサービス処理を呼び出せます

処理結果はビデオモードやビデオコントローラによって違います

ビデオサービスのファンクションの一覧は次の表のようになります

リンクをクリックすると表の下に詳細が表示されます

ビデオサービスのファンクション一覧
ファンクション番号 ファンクション名
(英語)
ファンクション名
(日本語)
説明
0x00 Set Video Mode ビデオモード設定 ビデオモードを設定します
0x01 Set Cursor Size カーソルサイズ設定 カーソルサイズを設定します
0x02 Set Cursor Position カーソル位置設定 カーソルの位置を設定します
0x03 Return Cursor Position カーソル位置取得 カーソルの位置を取得します
0x04 Return Light Pen Condition ライトペン状態取得
(標準BIOSサービスではありません)
ライトペンの位置を取得します
通常のBIOSでは特に何もしません
0x05 Set Current Video Page (現在の)ビデオページ設定 ビデオバッファのページを設定します
0x06 Scroll Up Region 上方向スクロール スクリーンを上方向にスクロールします
0x07 Scroll Down Region 下方向スクロール スクリーンを下方向にスクロールします
0x08 Return Character and Attribute 文字コードとアトリビュート取得 指定した位置の文字コードとアトリビュートを取得します
0x09 Write Character and Attribute 文字コードとアトリビュート書き込み カーソルの位置に文字コードとアトリビュートを書き込みます
0x0A Write Character 文字コード書き込み 指定したページに文字コードを書き込みます
0x0B Set Color Palette カラーパレット設定 カラーパレットを設定します
0x0C Write Graphic Pixel ピクセル単位の書き込み
(標準BIOSサービスではありません)
行と列を指定して色情報を書き込みます
0x0D Read Graphic Pixel ピクセル単位の読み込み
(標準BIOSサービスではありません)
行と列を指定して色情報を読み込みます
0x0E Write Teletype Mode 文字コード書き込み(テレタイプモード) カーソルに位置に文字コードのみの書き込み、カーソルを次の行に移動させます
0x0F Return Video Display Mode ビデオディスプレイモード取得 ビデオモードを取得します
0x13 Write String 文字列書き込み
Phoenix BIOS4.0
文字列を書き込みます


各ファンクションで使用されるビデオモードについてはビデオモードを参照してください

文字コード書き込み(テレタイプモード)(Write Teletye Mode)

文字コード書き込み(テレタイプモード)ファンクションを呼出すことで

現在のカーソル上に文字コードを書き込みます。この処理が実行された後は

カーソルが次の列に移動します。現在のカーソルがスクリーンの一番右端にあった場合は

カーソルを表示する列は0にリセットし、次の列に移動します。現在のカーソルがスクリーンの

1番右端で、1番下にあった場合は画面をスクロールさせます

入力

下記表のレジスタに値を設定してINT命令を実行します

文字コード書き込み(テレタイプモード)ファンクション(入力)
レジスタ 設定値 説明
AH 0x0E 文字コード書き込み(テレタイプモード)ファンクションを指定します
AL ** 書き込む文字コードを指定します
BL 0-15 フォアグランドカラーの値を設定します
(グラフィックモードのみ)
BH ** ビデオページ番号を指定します(0始まり)


出力

INT命令を実行した後、BIOSは下記表のレジスタに値を設定します

文字コード書き込み(テレタイプモード)ファンクション(出力)
レジスタ 出力値 説明
なし - 出力はありません


inserted by FC2 system