I/Oポートの各ポートに割り当てられた機能 キーボードとサウンド、割り込みコントローラのみ実装済み(キーボードは一部未実装) キーボード 0x80-0x84,0x8F: IN 0x8E: OUT 80: フラグ { b0: キーは入力されたか b1: Cancel(trl+break) b2: BS b3: Tab b4: Enter b5: Shift b6: Ctrl b7: Alt } 81: 入力されたキーのID(wparam) 82: 入力されたキーのサブID(lparam) 83: フラグ2 { b0: Caps LK b1: ESC b2: Space b3: PG up b4: PG dw b5: END b6: HOME } 84: 入力されたキーのサブID(iparam) 85-8D 予約済み 8E: 動作制御 { b0: キー入力受け付け } 8F: データ破棄 マウス 未実装 10-1F 予約済み ディスクドライブ(I/O両方) 20-2F: IN 30-3F: OUT 20: 31で実行された操作 21: エラーコード { 0x00 エラーはありせん 0x01 無効なファンクションです 0x03 メディアは書き込み保護されています 0x04 セクタが見つかりませんでした 0x05 リセットが失敗しました 0x06 メディアが変更されました 0x0A ハードディスクに不良セクタがあります 0x0B ハードディスクに不良トラックがあります 0x0C 無効なフロッピーディスクのメディアタイプです 0x0D 無効なセクタ数です 0x10 復旧不能な読み込みエラーが発生しました(CRCの不一致) 0x11 復旧可能なデータエリアです(CRCが一致) 0x20 フロッピーディスクコントローラで失敗しました 0x30 ドライブはメディアの検出機能をサポートしていません(Phoenix4.0 BIOS) 0x31 ドライブにメディアが挿入されていません(Phoenix4.0 BIOS) 0x32 ドライブはメディアタイプをサポートしていません(Phoenix4.0 BIOS) 0x40 シーク時に無効なトラックがありました 0x80 タイムアウトしました 0xAA ハードドライブは使用できません 0xBB 未知のハードドライブエラーが発生しました 0xCC ハードドライブ書き込みエラーが発生しました 0xE0 ハードドライブのステータスレジスタエラーが発生しました 0xFF ハードドライブ検出に失敗しました } 22---25: 読み込みデータ 26---29: 書込みデータ 2A-2B: 各種データ(ドライブ状態、種類など) 30: 対象のディスク番号 31: 操作 { 0x00: フロッピーメディアタイプ取得 0x01: リセット 0x02: ステータス読み込み 0x03: ロングワード読み込み 0x04: ロングワード書込み 0x05: アクセス可否検査 0x06: ドライブの状態変化の確認 0x07: ドライブ種類取得 0xFF: 初期状態 } シリアルポート 40-4F: IN 50-5F: OUT 40: 51の操作 41: エラーコード { 0x00: 正常 0x01: 接続要求なし 0x02: サーバー準備ができてない 0x03: 受信状態ではない 0x04: 受信状態への移行に失敗 0x05: クライアントとの接続に失敗 0x11: 未知のエラー 0x12: サーバーの初期化に失敗 0x13: バインドに失敗 0x21: 未知のエラー 0x22: クライアントの初期化に失敗 0x23: サーバー名の取得に失敗 0x24: クライアントとして接続できない 0xFF: 未知のエラー } 42: 状態 { 0x00: 待機中 0x01: データ送受信完了 0x02: 切断された 0x03: タイムアウト } 43: 送受信したデータ 50: 対象のポート 51: 操作 { 0x00: サーバーとして初期化 0x01: 1バイト送信 0x02: 1バイト受信 0x03: ソケットの終了 0x04: クライアントとして初期化 } 52: 各種信号 { b0: DTR信号 b1: RTS信号 } サウンド 0x60-0x62: OUT 0x60: 操作 { 0x00: 初期化(0x61、0x62に値を入れてから) 0x01: 0x61で指定した周波数の音を、0x62で指定した時間鳴らす } 0x61: 周波数(0x25~0x7FFF) 0x62: 鳴らす時間[ms] プリンタ 未実装(0x70-7Fまで予約済み) 割り込みコントローラ 0xF0-0xF7: OUT 0xF0: 待機(OUT) 指定した時間[ms]処理を待つ